Pacevera Fitness Decision Engine
Pacevera is a deterministic fitness decision engine exposed through the Model Context Protocol (MCP). It receives normalized training and health evidence supplied by the calling AI host, evaluates recovery and training constraints, and returns a structured decision.
The primary operation is to evaluate an existing scheduled session. A decision describes the change from the scheduled session to the resulting session:
scheduled session (from) -> resulting session (to)
Each decision includes the relevant evidence, applied rules, confidence, signal coverage, and limitations.
Scope
Pacevera provides the following capabilities:
- Deterministic calculation of recovery state, readiness, muscle-group fatigue, and training load.
- Session decisions with the types
keep,adjust,substitute,defer, andadvance. - Constraint handling for injuries, equipment, available time, and exercise substitutions.
- Training-plan generation and caller-owned plan adjustment through preview and commit operations.
- Structured decision provenance through rule identifiers, measured values, source information, and version metadata.
- Normalization support for Apple Health, Google Health Takeout, Garmin, Strava, Oura, and WHOOP data shapes.
Pacevera does not connect to these providers on behalf of the user. The calling host must obtain and normalize provider exports or API responses before passing them to an MCP tool.
Architecture
AI host
└─ Collects the user's question and evidence
└─ MCP server / desktop extension
├─ Evidence normalization
├─ Fitness-state calculation
├─ Training-load calculation
├─ Deterministic rule evaluation
├─ Decision and plan operations
└─ Structured result: Decision / Action / Reason
The AI host is responsible for interpreting the user's request, collecting evidence, selecting tools, and presenting the result. Pacevera performs the calculations and rule evaluation; it does not call a model to generate a decision. Given the same code, rule set, and input, the result is deterministic.
Decision and recommendation
| Type | Description |
|---|---|
| Recommendation | A training suggestion generated without a required prior session or plan. |
| Decision | A traceable change applied to an existing scheduled session or plan. |
decide_session requires scheduledSession to establish the prior state. If no scheduled session is provided, the tool returns no_scheduled_session rather than creating a session. Use generate_plan when a plan is required.
Decision output follows five layers:
Evidence -> Fitness State -> Decision -> Action -> Reason
Decision intent and resulting action are separate fields. The same intent may produce different actions depending on the user's equipment, available time, injuries, and scheduled session.
MCP tools
Decision and planning tools
| Tool | Description |
|---|---|
assess_fitness_state | Returns recovery, readiness, muscle-group fatigue, and training-load state. |
decide_session | Evaluates a scheduled session and returns the resulting session. |
decide_exercise_substitution | Selects a replacement movement subject to injury and equipment constraints. |
generate_plan | Generates a periodized training plan. |
preview_adjust_plan | Returns a deterministic patch and diff for a caller-owned plan. |
commit_adjust_plan | Validates the plan version and applies a caller-owned patch. |
Supporting and read tools
| Tool | Description |
|---|---|
get_evidence_coverage | Reports available and missing evidence signals. |
explain_decision | Returns the process-local rule and source trace for a previous decision. |
submit_outcome | Accepts an observed outcome for a prior case; storage is bounded and local to the configured environment. |
search_exercises / get_exercise | Queries the exercise catalog and graph relationships. |
search_workouts / get_workout | Queries structured workout content. |
get_user_profile | Returns caller-supplied user constraints and training settings. |
get_training_history / get_training_context | Returns training history and related context. |
Evidence and output
Evidence is supplied by the calling host. It may include recovery measurements, vendor-computed assessments, completed workouts, scheduled sessions, goals, and constraints.
Important input rules:
- Only measured or explicitly provided values should be sent. Missing signals are reported in
signalCoverageand may lowerconfidence. - A workout without a training-load value is not treated as zero load and is excluded from muscle-group fatigue calculations.
- RPE may be retained as evidence but is not a term in training-load or muscle-fatigue calculations.
- Vendor-computed values such as readiness, recovery, and Body Battery are used as reported and are not recomputed by Pacevera.
A typical decide_session response has this shape:
{
"decision": { "type": "adjust", "intent": "reduce_today_intensity" },
"action": {
"from": { "focus": "Tempo Run", "durationMinutes": 50, "intensity": "high" },
"to": { "focus": "Moderate run", "durationMinutes": 50, "intensity": "moderate" },
"changed": ["focus", "intensity"]
},
"confidence": "high",
"signalCoverage": {
"recovery": { "usable": ["readiness"], "missing": ["sleep"] },
"training": { "usable": ["trainingLoad"], "missing": [] }
},
"decisionBasis": {
"governingRule": {
"ruleId": "EVD-R-002",
"measured": { "quantity": "readiness_score", "value": 48 }
}
}
}
Pacevera does not fill missing values with defaults. signalCoverage.recovery describes current recovery-signal availability; signalCoverage.training describes whether recent workouts include the training-load data required for fatigue calculations.
Deployment status
| Deployment mode | Status | Boundary |
|---|---|---|
| Local desktop extension | Available | Runs through stdio on the user's computer. The Pacevera process does not fetch provider data, persist Evidence, or make model calls. |
| User-controlled private deployment | Planned | Intended to run in a device, private network, or VPC controlled by the user or organization. |
| Hosted remote deployment | Not available | The repository contains resource-server readiness code, but production deployment, authorization infrastructure, and hosted privacy controls are not complete. |
The desktop extension has no runtime dependencies beyond the Node.js standard library. It does not use analytics, telemetry, crash reporting, provider accounts, or provider OAuth tokens.
Privacy
The desktop extension processes the minimum health-related Evidence supplied by the caller for the requested fitness decision. It does not retain, sell, use for model training, or use Evidence for unrelated purposes.
The extension does not make outbound network requests or persist Evidence. The AI host, operating system, imported files, and any host conversation history are outside the extension's control and are governed by their respective policies.
See PRIVACY.md for the complete policy and deployment scope.
Pacevera is not a medical device and does not provide medical advice. It is intended for general fitness and training purposes only.
Installation
Pacevera is distributed as a Claude Desktop extension (.mcpb).
-
Download
pacevera.mcpbfrom Releases. -
Optionally verify the SHA-256 checksum published in the release notes:
shasum -a 256 pacevera.mcpb -
In Claude Desktop, open Settings -> Extensions and install the file.
-
Restart Claude Desktop after installing or upgrading the extension.
The extension requires Node.js 20 or newer. Two capabilities need Node.js 22.5 or newer, which is where node:sqlite exists: the local plan decision (evidra_local_decide_today) and local persistence of decision traces and outcomes. On Node 20 or 21 the extension installs and runs, that tool is simply not offered, and reading your selected export folder for a decision is unaffected.
Claude Desktop and other local MCP hosts are supported through the desktop extension. Mobile and hosted remote use cases require a remote deployment, which is not currently available for public use.
Release status
The current public release is v0.5.2, using Decision Engine 1.6.0 and base_rules@1.1.0. It includes ten public tools, bounded local continuity, personalized single-workout generation, decision traces, and package validation/dry-run/rollback. The Oura and WHOOP readers were implemented from their published API specifications and have not yet been validated against real responses; Apple Health, Garmin, Google Health, and Strava readers were developed from real export files.
Support
- Bug reports and technical questions: GitHub Issues
- Privacy requests: evidramcp@icloud.com
License
Pacevera is proprietary software. See LICENSE for the applicable terms.
Pacevera v0.5.2
The Claude Desktop extension includes Today’s Brief, evidence-first local export reading, and plain-language tool titles. During installation, choose Your exported health data folder and select the parent folder containing any of these optional subfolders:
Your exported health data folder/
├── export_apple_health/ # Apple Health export.xml
├── export_garmin/ # Garmin Export Your Data / DI_CONNECT
├── export_strava/ # Strava activities.csv
└── export_google_health/raw/ # Google Health API JSON
Pacevera reads the selected folder locally; missing sources are reported as unavailable rather than guessed. The MCPB checksum is published in the release notes.
v0.5.2 adds the source chain to every reading — where Pacevera read it, and which app wrote it, so a Garmin figure synced into Apple Health is not reported as Apple Health's own. A reading whose writer the export does not name is reported as unnamed rather than guessed. Decisions also carry a small continuity record that a later conversation can hand back; Pacevera checks whether it still describes your current state and says so when it does not. It is checked, never merged: the decision always comes from the evidence held now.