Releases: henryyeh182/evidra
Release list
v0.3.4
Display name only: Evidra Fitness.
The MCP registry already listed an Evidra when this one arrived — a DevOps flight recorder, published five months earlier, titled the same word. The identifiers were never ambiguous; the name a person reads in a directory listing was. It now says which one this is, in the registry, in the Claude Desktop extension list, and as the connector name once connected.
No behaviour changed from v0.3.3. The tool names, the repository, the download URLs and the privacy policy links are all unchanged, so an existing install keeps working exactly as it did.
`sha256 3ce93d94f98caa97471b32302b3ab576d033c2b3701030e1a6bfc2f398704265`
v0.3.3
A decision no longer rests on a recovery reading nobody sent.
With no sleep, HRV, resting heart rate or stress signal, Evidra used to score recovery as 50 — and nothing downstream could tell that 50 from a measured one. Readiness came out 50, the rule that lowers intensity below 60 fired, and an athlete who had supplied one hike and no physiology was told their readiness was below the line and watched their VO₂max session become a moderate run.
Recovery and readiness are now unscored when nothing was measured. The rules that read them do not fire, the number never enters the evidence as though it had been observed, and the decision lands on what actually arrived: muscle fatigue, acute:chronic load, and time since the last session. The same hike now comes back as keep the session, with a limit saying which rules sat out and why.
Also in this release
- The maximum heart rate behind a Strava export says when it was seeded from 220-age rather than measured. Heart-rate-derived load is scaled against that ceiling, so a decision resting on those figures inherits the assumption — it is now stated instead of silent.
- Missing signals are named in words rather than field names: "No HRV, resting heart rate or stress readings were supplied for today", not
hrv, restingHeartRate, stress. - Fewer and shorter caveats. Two that always fired together are one sentence; one that explained something that had not happened now speaks only when it applies.
- The wording throughout leads with what to do rather than what Evidra declines to do. A refusal that reads as a finished sentence gets read aloud, and "this server does not fetch, store, or invent health data" reached one athlete as "anything I say now is made up".
- Health sources are named even-handedly. The old list led with Strava and named Oura and Whoop while omitting Google Health, which Evidra actually reads.
The extension ships as one compiled server file. Requires Node.js 20 or newer, and restart Claude Desktop completely after installing.
sha256 606f86f6ce044f1b5090fae63ce93b66f260b17e1ba253e984cd4056b68931c2
v0.3.0
The extension now ships as one compiled server file instead of a readable module tree. Same decisions, same tools, same six names — 30 files in the archive instead of 87.
What changed for you: nothing in how it behaves. Install it the same way, and restart Claude Desktop completely after installing.
What changed inside:
apps/andpackages/are compiled and minified into a singledist/evidra-server.mjs. The rule library travels inside it as data rather than as a JSON file of its own.- The HTTP transport source no longer travels in the archive. It was never reachable from the extension's entry point and could not run; now it is not there at all.
server.jsonis no longer packed. It carries the archive's own SHA-256, which an archive cannot contain and still agree with.
Privacy statement updated with it. Two of its disclosures described files that no longer ship, so they were replaced with claims checkable against the file that does: the compiled server imports no networking module, and contains no call that writes to disk. It also says plainly what minifying costs — the shipped code is no longer pleasant reading, and the policy says why these particular claims survive that.
Requires Node.js 20 or newer.
sha256 66b6b1f88dd2712b93b2b1d59119cfc49b31ba36a878029596944586ad94a3eb
v0.2.0
Every tool is now named evidra_*.
A host can have several MCP servers connected at once, and generate_plan is a
name any planner might use — a model holding two of them can pick the wrong one.
The six tools are evidra_assess_fitness_state, evidra_decide_session,
evidra_decide_exercise_substitution, evidra_generate_plan,
evidra_preview_adjust_plan, and evidra_commit_adjust_plan.
The old names still work. v0.1.0 and v0.1.1 shipped them, so anything that
learned them keeps resolving.
Also in this release
- Every tool declares its output shape. Results now come back as structured
content as well as text, so an assistant reads the decision as data instead of
parsing it out of a paragraph. - A caller mistake is answerable now. A movement the catalog does not carry, a
plan tool called without your plan, a change the plan cannot take, a preview
built against an older version — each used to surface as "Failed to call tool",
which told the assistant nothing it could act on. Each now comes back naming
what was wrong and what shape the argument takes. - The source you state is reported back. A reading sent with
source: "garmin"now appears in the response's provenance; it used to be
stored and never mentioned. - Evidence fields are typed. The metric names, the required timestamps, and
the numeric values are declared in the schema rather than described in a
sentence, so a mistake is catchable before the call. - Shared guidance is sent once, in the server's initialize instructions,
instead of repeated in three tool descriptions. - The version a client is told is read from the package manifest — it reported
0.1.0 while the bundle was 0.1.1. - The HTTP transport binds to
127.0.0.1by default. It bound every interface
while printing "local only", which on a shared network answered unauthenticated
requests from other machines.MCP_HOSTexposes it deliberately. - Privacy policy: two claims narrowed to match the code exactly. The bundle ships
the source of an HTTP transport that the extension never reaches or starts, and
a folder namedpackages/dbthat holds no database and no database client —
both are now stated rather than left to be found.
Verifying this download
sha256 aab0f5efc88a9829efffb96924bede551a83da397796a8788a2f533dbbf1d803
size 264328 bytes
files 88
v0.1.0 and v0.1.1 remain published and unchanged, so anyone who verified an
earlier checksum still matches.
Requires Node.js 20 or newer. After installing, restart Claude Desktop
completely — closing the window is not enough.
v0.1.1
Bug fixes on top of v0.1.0.
Fixed
- A scheduled session supplied without
typeorintensityno longer produces a decision that reports a change it did not make. Previously a missing intensity was silently treated as low, and the decision said it had lowered the session. - Sessions supplied without a training load are now reported in
signalCoverage.training.missingand lower the confidence, instead of being filled in with a stand-in value. The gap was reaching no caller. - Apple Health parsing:
511is read as the not-measured sentinel it is, the device that wrote a reading is carried through, and an absent HRV baseline is described as unestablished rather than unsupported.
The bundled README is also refreshed; it had been carrying the test count from packaging day.
Install
- Download
evidra.mcpbbelow - Open Claude Desktop → Settings → Extensions and install the file
- Ask something that needs a decision — for example, "I've got VO₂max intervals scheduled today. Am I in shape for them?"
Requires Node.js 20 or newer.
What it does
Evidra turns the evidence you already have into a training decision — a from → to change against the session already on your calendar, with the evidence and the rule behind it. Six tools: assess_fitness_state, decide_session, decide_exercise_substitution, generate_plan, preview_adjust_plan, commit_adjust_plan.
Any single evidence source works. Missing signals are reported in signalCoverage and lower the confidence — they are never filled in with defaults.
Where this is
The decision logic is covered by a deterministic test and evaluation suite. It has not yet been validated over extended real-world training blocks — if a decision reads wrong to you, that is the most useful thing you can report.
Evidra does not connect to any fitness service on your behalf. You or your assistant supply the evidence in the call. If you already have exported data from Apple Health, Garmin or Strava, Evidra can evaluate that as input as well.
Privacy
Runs locally and does not retain your evidence. Evidra itself performs no outbound network requests, does not persist your evidence, and has no dependencies, telemetry, model calls, or accounts. See PRIVACY.md.
Not a medical device. Intended for general fitness and training purposes only.
Verify your download
SHA-256 af6c142b09378ca9ee28b8a1ddec4d6de2018f2c7b3e9e8d739ac8be185f1217
Licensed under Terms of Use.
Evidra v0.1.0
First release of the Evidra desktop extension for Claude Desktop.
Install
- Download
evidra.mcpbbelow - Open Claude Desktop → Settings → Extensions and install the file
- Ask something that needs a decision — for example, "I've got VO₂max intervals scheduled today. Am I in shape for them?"
Requires Node.js 20 or newer.
What it does
Evidra turns the evidence you already have into a training decision — a from → to change against the session already on your calendar, with the evidence and the rule behind it. Six tools: assess_fitness_state, decide_session, decide_exercise_substitution, generate_plan, preview_adjust_plan, commit_adjust_plan.
Any single evidence source works. Missing signals are reported in signalCoverage and lower the confidence — they are never filled in with defaults.
Where this is
First public release. The decision logic is covered by a deterministic test and
evaluation suite. It has not yet been validated over extended real-world
training blocks — if a decision reads wrong to you, that is the most useful
thing you can report.
Evidra does not connect to any fitness service on your behalf. You or your
assistant supply the evidence in the call. If you already have exported data
from Apple Health, Garmin or Strava, Evidra can evaluate that as input as well.
Privacy
Runs locally and does not retain your evidence. Evidra itself performs no outbound network requests, does not persist your evidence, and has no dependencies, telemetry, model calls, or accounts. See PRIVACY.md.
Not a medical device. Intended for general fitness and training purposes only.
Verify your download
SHA-256 6affeab9f60707ad1f7dda50921369f3c5e1e529f06de255df74c3988caa9351
Licensed under Terms of Use.