Skip to content

Releases: henryyeh182/evidra

v0.3.4

Choose a tag to compare

@henryyeh182 henryyeh182 released this 06 Aug 13:47

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

Choose a tag to compare

@henryyeh182 henryyeh182 released this 06 Aug 13:15

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

Choose a tag to compare

@henryyeh182 henryyeh182 released this 06 Aug 06:39

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/ and packages/ are compiled and minified into a single dist/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.json is 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

Choose a tag to compare

@henryyeh182 henryyeh182 released this 04 Aug 05:34

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.1 by default. It bound every interface
    while printing "local only", which on a shared network answered unauthenticated
    requests from other machines. MCP_HOST exposes 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 named packages/db that 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

Choose a tag to compare

@henryyeh182 henryyeh182 released this 03 Aug 13:09

Bug fixes on top of v0.1.0.

Fixed

  • A scheduled session supplied without type or intensity no 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.missing and lower the confidence, instead of being filled in with a stand-in value. The gap was reaching no caller.
  • Apple Health parsing: 511 is 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

  1. Download evidra.mcpb below
  2. Open Claude Desktop → Settings → Extensions and install the file
  3. 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

Choose a tag to compare

@henryyeh182 henryyeh182 released this 02 Aug 10:06

First release of the Evidra desktop extension for Claude Desktop.

Install

  1. Download evidra.mcpb below
  2. Open Claude Desktop → Settings → Extensions and install the file
  3. 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.