Delx Living Body
Delx Living Body is a meta-MCP server that unifies data from up to 15 wellness connectors (Whoop, Oura, Garmin, etc.) into a single interface for AI agents. It uses deterministic, rule-based synthesis (no LLM calls) to ensure stable, privacy-first outputs.
With this server you can:
Ask wellness questions (
living_body_ask) – Get synthesized answers with reasoning trace and confidence from all installed connectors.Get a daily wellness brief (
living_body_daily_brief) – Receive a Markdown summary aggregating daily highlights.Compose a unified wellness context (
living_body_compose_context) – Fetch a normalizeddelx-wellness-context/v1data shape merging recovery, sleep, body battery, and more.Detect installed connectors (
living_body_status) – See which local wellness connectors are available without making API calls.Check health of all connectors (
living_body_health_check) – View status and install hints for all 15 supported connectors.View server capabilities (
living_body_capabilities) – Self-description including per-connector availability matrix and recommended agent flows.Onboard AI agents (
living_body_agent_manifest) – Machine-readable instructions for clients like Claude, Cursor, etc.Quick connection readiness (
living_body_connection_status) – Snapshot of connector detection without vendor API calls.Browse data inventory (
living_body_data_inventory) – Static inventory of supported domains and privacy modes.Filter by source – Restrict composition to specific connectors.
Control privacy – All data tools support
summary,structured, orrawprivacy modes.Multiple transports – Supports stdio (default) and HTTP.
CLI commands – Run as MCP server, demo mode, doctor (detect connectors), setup, version.
The server is privacy-first: it never reads child tokens, strips secrets, and children run with structured privacy modes.
Allows AI agents to access Apple Health data including steps, sleep, and other health metrics via the Apple Health MCP connector.
Integrates with Eight Sleep to retrieve sleep tracking and smart bed data via the Eight Sleep MCP connector.
Provides access to Fitbit health and fitness data such as activity, sleep, and recovery metrics via the Fitbit MCP connector.
Enables AI agents to query Garmin health metrics like recovery, body battery, and training data via the Garmin MCP connector.
Connects to Google Health to access health and wellness data via the Google Health MCP connector.
Allows AI agents to use Samsung Health data including steps, sleep, and activity via the Samsung Health MCP connector.
Integrates with Strava to retrieve training and activity data such as runs, rides, and more via the Strava MCP connector.
delx-living-body
Meta-MCP that turns 15 wellness MCPs into one unified body data layer for AI agents.
Today, answering "should I train hard today?" forces an agent to orchestrate WHOOP recovery, Garmin Body Battery, Oura sleep, Nourish nutrition, and cycle phase across five separate MCP servers. That's brittle for users and confusing for the agent.
delx-living-body is one MCP server that:
Auto-detects which of 15 Delx Wellness connectors you already have installed locally — no manual config
Composes parallel calls to the right subset
Synthesizes a natural-language answer plus a structured reasoning trace and per-source confidence — using rule-based reasoning, no LLM calls
Install it once. Get a unified body data layer. Works with whatever wellness MCPs you already have.
Compose matrix (which children have *_series vs summary-only): docs/compose-matrix.md.
Pin drift: docs/pin-drift.md.
If it helps your agent workflow, star the repo. Stars make the single-entry Delx Wellness path easier for other AI builders to find.
HTTP (v2 stateless)
Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:
npx -y delx-living-body --http
# GET http://127.0.0.1:3030/health
# POST http://127.0.0.1:3030/mcp (sessionless)Env: LIVING_BODY_MCP_HOST, LIVING_BODY_MCP_PORT, LIVING_BODY_MCP_TRANSPORT=http.
Try it now, no accounts —
npx -y delx-living-body demo("Should I train hard today?")Run it in Claude · Cursor · ChatGPT · Hermes · OpenClaw — see agent setup examples
Local-first —
delx-living-bodynever reads your tokens; children read their own creds (privacy)Which connector should I use? — start at the Delx Wellness front door
The three flagship connectors this composes over: google-health-mcp (google-health-mcp-unofficial), garmin-mcp (garmin-mcp-unofficial), and wellness-nourish (wellness-nourish).
Related MCP server: health-mcp
Install
npx -y delx-living-bodyThat's the whole install. No OAuth flow, no API keys — delx-living-body has no auth of its own. Each child connector handles its own credentials.
See the full agent demo → "Should I train hard today?" (no accounts needed)
npx -y delx-living-body demoOne command, no clone. The demo boots the real MCP server, fakes three
installed connectors (WHOOP + Oura + Garmin, backed by a bundled stub child that
carries synthetic body data), and drives it over stdio exactly the way an agent
does. No real accounts, API keys, or network. Add --scenario=red to see the
low-readiness ("back off today") path; demo --help lists options. Captured
output lives at
examples/demo-what-should-i-do-today.txt:
2) living_body_ask question="What should I do today?"
────────────────────────────────────────────────────────────────
Recommendation:
Today at a glance: recovery 74, sleep 83, body battery 68.
Confidence: high Sources: whoop, oura, garmin
3) living_body_ask question="Should I train hard today?"
────────────────────────────────────────────────────────────────
Recommendation:
Green light for a hard session. Recovery and sleep both support high intensity.
Confidence: high Sources: whoop, oura, garmin
Reasoning trace (rule-based, no LLM):
Intent classified as: training_readiness
- (rec_high) Recovery 74 supports a high-intensity day.
- (sleep_good) Sleep score 83 is supporting recovery.One question in → one synthesized answer composed across all three connectors, with a stable reasoning trace and zero LLM calls. This is the Body-vertical entrypoint: install once, ask in plain language, get a unified answer.
Tools (6)
Tool | Purpose |
| Which connectors are detected? Safe; no subprocess spawning. |
| Main tool. Spawns detected children in parallel, returns synthesized answer. Requires |
| Markdown brief built from each connector's |
| Normalized |
| All 15 known connectors with install hints for missing ones. |
| Self-description + per-connector availability matrix. |
How detection works
For each known connector, delx-living-body checks:
~/.<vendor>-mcp/tokens.jsonexists~/.<vendor>-mcp/config.jsonexists (password-based connectors like Eight Sleep)An export file at the path in the vendor's env var (Apple Health, Samsung Health)
~/.delx-wellness/profile.jsonlists the device
If any check passes → detected. Otherwise → missing (with install hint). Stateless connectors (Cycle Coach) are always considered available.
Detection results cache for 60s (DELX_LIVING_BODY_DETECT_TTL).
Known connectors (15)
ID | Package | Category |
|
| recovery |
|
| sleep |
|
| recovery |
|
| training |
|
| recovery |
|
| multi |
|
| multi |
|
| multi |
|
| multi |
|
| training |
|
| sleep |
|
| nutrition |
|
| environment |
|
| cycle |
|
| glucose |
Composition flow
When living_body_ask or living_body_compose_context runs:
Detect installed connectors.
For each, spawn it as a child MCP via
npx -y <package>over StdioClientTransport.Call the child's
*_wellness_context(or*_daily_summary) tool in parallel.Normalize results into a
delx-wellness-context/v1shape with merged scores.Run the synthesizer (rule-based, offline) to produce a recommendation + reasoning trace.
Critically: delx-living-body never calls an LLM. Synthesis is deterministic so downstream agents can reason on top of a stable trace.
Synthesizer rules
14 heuristic rules, each with a stable rule_id that appears in the reasoning trace:
rec_low/rec_mid/rec_high— recovery score bandsbb_low/bb_high— Garmin Body Battery bandssleep_poor/sleep_good— sleep score bandsstrain_high— WHOOP strain ≥ 18cycle_luteal/cycle_follicular— cycle phase signalsload_high/load_low— aggregate training loadno_data— nothing installed, advisory onlyconflict— sources disagree → low confidence
Privacy & security
delx-living-bodynever reads child connector tokens or config files — children read their own credentials independently.Upstream secret env vars (
*_CLIENT_SECRET,*_ACCESS_TOKEN,*_REFRESH_TOKEN,*_API_KEY,*_PASSWORD) are stripped before spawning children.Children are spawned with
privacy_mode=structuredby default.rawis only honored when the caller setsexplicit_user_intent: trueonliving_body_ask.Child responses are not logged verbatim — only counts and summary fields.
Per-child call timeout: 30s. A hanging child is marked
timeoutand skipped.Cache lives at
~/.delx-living-body/cache.sqlite(chmod 600), 5 min TTL. Disable withDELX_LIVING_BODY_NO_CACHE=true.No phone-home from
delx-living-bodyitself.
See SECURITY.md for the full threat model.
Env vars
Variable | Default | Purpose |
|
| Detection cache TTL in seconds |
| unset | Disable SQLite response cache |
|
| Override cache path |
|
| Override npm runner for child spawning |
| unset | Override child binary path (testing only) |
|
| HTTP transport bind address |
CLI
living-body-mcp-server # MCP stdio server (default)
living-body-mcp-server --http # Local HTTP transport
living-body-mcp-server doctor # Detect installed connectors
living-body-mcp-server doctor --json # JSON output
living-body-mcp-server setup # Print profile path + install hints
living-body-mcp-server demo # Zero-secret end-to-end demo (--scenario=red, --help)
living-body-mcp-server versionUse with Claude Desktop
{
"mcpServers": {
"living-body": {
"command": "npx",
"args": ["-y", "delx-living-body"]
}
}
}Use with Cursor
{
"mcpServers": {
"living-body": { "command": "npx", "args": ["-y", "delx-living-body"] }
}
}Not medical advice
Outputs are operational context for training/recovery/sleep/nutrition agents. Not for medical diagnosis or clinical use.
License
MIT — see LICENSE. Built by David Mosiah.
Dense series
When child connectors expose *_series tools (agent-safe-series/v1), prefer them over raw stream dumps.
Skill or MCP
Same package, two doors. MCP registers tools on stdio/HTTP. The skill can drive the same tools through the CLI when the client has no MCP:
npx -y delx-living-body call living_body_connection_status --json '{}'Copy skill/SKILL.md into your agent skills dir.
Available Tools
9 toolsliving_body_agent_manifestLiving Body — Agent ManifestARead-onlyIdempotent
Machine-readable install and operating instructions for AI agents. Call first when onboarding.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | generic | |
| response_format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is safe and non-destructive. The description adds that it returns 'install and operating instructions,' which is useful context but not essential beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise—two sentences with no fluff. It is front-loaded with the core purpose. However, it could be slightly expanded to cover parameter hints without losing concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no required params, no output schema, rich annotations), the description is largely complete. It explains what the tool is and when to use it. The only minor gap is parameter semantics, but overall it covers the essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning parameter properties lack descriptions. The description does not elaborate on the parameters (client, response_format). While the enum values are somewhat self-explanatory, the description fails to add meaning for an agent to choose appropriate values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear purpose: 'Machine-readable install and operating instructions for AI agents' with a specific usage directive 'Call first when onboarding.' This distinguishes it from sibling tools like status, health_check, and capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call first when onboarding,' providing clear when-to-use guidance. It does not explicitly state when not to use or name alternatives, but given the sibling tool list, the usage context is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_askLiving Body — AskARead-only
Ask a wellness question; composes detected connectors in parallel and returns a synthesized answer + reasoning trace. Spawns subprocesses — requires explicit_user_intent.
| Name | Required | Description | Default |
|---|---|---|---|
| sources | No | Restrict composition to a subset of detected connectors. Defaults to all detected. | |
| question | Yes | Natural language question about training, recovery, sleep, nutrition or readiness. | |
| privacy_mode | No | Passed down to child connectors. Defaults to 'structured'. 'raw' is only honored with explicit_user_intent and is discouraged for routine composition. | |
| response_format | No | markdown | |
| explicit_user_intent | Yes | Required confirmation that the caller is acting on explicit user intent. living_body_ask spawns multiple wellness MCP subprocesses; agents must not call it speculatively. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reasoning | Yes | |
| confidence | Yes | |
| generated_at | Yes | |
| sources_used | Yes | |
| data_snapshot | Yes | |
| recommendation | Yes | |
| sources_failed | Yes | |
| child_tool_mode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals that the tool composes connectors in parallel, spawns subprocesses, and returns both a synthesized answer and a reasoning trace. These are meaningful behavioral traits an agent would not infer from readOnlyHint/openWorldHint alone. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, roughly 25 words, with the primary verb and resource up front and the critical caveat at the end. Every clause contributes to agent understanding, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior, parallel composition, subprocess side effect, and the intent gate. Since an output schema exists, return values are already specified elsewhere. It does not mention optional parameter defaults like sources defaulting to all detected connectors, but those are documented in the schema, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80% and each parameter already has its own descriptive text, so the schema carries most of the semantic load. The tool description reinforces that `question` is a natural-language query and `explicit_user_intent` is mandatory, but it does not add new information about sources, privacy_mode, or response_format beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair ('Ask a wellness question') and describes the core mechanism: composing detected connectors in parallel and returning a synthesized answer plus reasoning trace. This clearly distinguishes it from sibling tools like status, capabilities, or data inventory, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly identifies the use case (a wellness question) and the critical precondition that the caller must have explicit user intent ('Spawns subprocesses — requires explicit_user_intent'). It does not explicitly name alternatives or exclusions, but the intent requirement and question-oriented purpose provide strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_capabilitiesLiving Body — CapabilitiesARead-onlyIdempotent
Self-description of this MCP, including the per-connector availability matrix.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | |
| tools | Yes | |
| creator | Yes | |
| project | Yes | |
| mcp_name | Yes | |
| auth_model | Yes | |
| unofficial | Yes | |
| api_boundary | Yes | |
| privacy_modes | Yes | |
| contribution_paths | Yes | |
| recommended_agent_flow | Yes | |
| per_connector_availability_matrix | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds useful context about the per-connector availability matrix, but does not disclose other behavioral details such as output size, latency, or whether the availability data is cached or dynamically computed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the core purpose and immediately adds the most relevant distinguishing detail, the per-connector availability matrix.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a low-complexity introspection tool with strong annotations and a response_format schema, and an output schema exists. The description is adequate for basic invocation, but it leaves the reader without explicit guidance on when to prefer this over sibling status/health tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the sole parameter response_format. However, the schema itself supplies an enum of 'markdown' and 'json' plus a default, making the parameter largely self-explanatory, so the lack of parameter description is not a major usability gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a self-description of the MCP and specifies the key content of a 'per-connector availability matrix'. It is distinguishable from most siblings because it focuses on capabilities rather than status, health, or data inventory, though it does not explicitly name or contrast siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Self-description of this MCP' implies the tool should be used when an agent needs to discover what the MCP can do and which connectors are available. However, it provides no explicit guidance about when not to use it or how it differs from sibling tools like living_body_status or living_body_health_check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_compose_contextLiving Body — Compose ContextARead-only
Return the normalized delx-wellness-context/v1 shape merged across all detected sources. Spawns child MCP processes — requires explicit_user_intent: true.
| Name | Required | Description | Default |
|---|---|---|---|
| sources | No | ||
| child_tool | No | Child compose mode. series prefers agent-safe-series tools when the connector declares one. | |
| privacy_mode | No | ||
| response_format | No | markdown | |
| explicit_user_intent | Yes | Required confirmation that the caller is acting on explicit user intent. living_body_ask spawns multiple wellness MCP subprocesses; agents must not call it speculatively. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| source | Yes | |
| per_source | Yes | |
| cycle_phase | No | |
| sleep_score | No | |
| body_battery | No | |
| context_type | Yes | |
| generated_at | Yes | |
| sources_used | Yes | |
| strain_score | No | |
| recovery_score | No | |
| sources_failed | Yes | |
| recommended_handoff | No | |
| recent_training_load | Yes | |
| context_contract_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and destructiveHint already provided by annotations, the description adds meaningful behavioral context: it says the tool spawns child MCP processes, which implies real execution cost and process orchestration. It also surfaces the explicit-user-intent precondition. No annotation contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the core purpose and uses an em dash for the operational caution. There is no filler or repeated schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return shape, annotations cover safety, and the description covers scope, side-effect, and prerequisite, which is enough for basic invocation. The main gap is optional-parameter meaning, particularly privacy_mode and whether sources limits or expands the detected-source set, but these are not required for a default call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description must compensate for undocumented parameters. It indirectly clarifies sources by saying 'across all detected sources' and repeats explicit_user_intent, but privacy_mode, response_format, and sources array behavior are not meaningfully explained. This leaves most optional parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete operation and output contract: it returns the normalized delx-wellness-context/v1 shape merged across all detected sources. This is specific and actionable. It does not explicitly differentiate from siblings like living_body_ask or living_body_daily_brief, but the compose-context purpose is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the key invocation condition: requires explicit_user_intent: true, and the schema adds that agents must not call speculatively because it spawns child MCP processes. This gives clear when-to-use context. It does not name alternatives or exclusion cases, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_connection_statusLiving Body — Connection StatusARead-onlyIdempotent
Ready/not-ready snapshot of local connector detection without calling vendor APIs or child data tools.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, non-destructive behavior. The description adds context that this tool does not call vendor APIs or child data tools, which is a behavioral trait beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and key constraint. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and absence of output schema, the description adequately covers the core functionality. However, it omits the response format parameter and does not explain return format, which would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. However, it does not mention the single parameter 'response_format' or its allowed values, leaving the agent to infer it from the schema alone. The description adds no semantic value for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a ready/not-ready snapshot of local connector detection, avoiding vendor APIs or child data tools. It is specific about the resource and action, but does not explicitly differentiate from siblings like 'living_body_status' or 'living_body_health_check'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for quick status checks without external calls, but does not provide explicit guidance on when to use this tool versus alternatives. No when-not or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_daily_briefLiving Body — Daily BriefBRead-only
Synthetic daily briefing aggregating each detected connector's daily summary/context. Spawns child MCP processes — requires explicit_user_intent: true.
| Name | Required | Description | Default |
|---|---|---|---|
| sources | No | ||
| privacy_mode | No | ||
| response_format | No | markdown | |
| explicit_user_intent | Yes | Required confirmation that the caller is acting on explicit user intent. living_body_ask spawns multiple wellness MCP subprocesses; agents must not call it speculatively. |
Output Schema
| Name | Required | Description |
|---|---|---|
| highlights | Yes | |
| generated_at | Yes | |
| sources_used | Yes | |
| data_snapshot | Yes | |
| brief_markdown | Yes | |
| sources_failed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool spawns child MCP processes and requires explicit user intent, which is useful behavioral context beyond the readOnly/openWorld annotations. It does not contradict the annotations, and the safety profile is already covered by readOnlyHint=true and destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The core purpose is front-loaded, and the process/safety caveat about spawning child processes and requiring explicit intent is placed immediately after.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape is covered. However, for a tool that spawns subprocesses and has four parameters with only 25% schema coverage, the description leaves out important context: default sources, behavior across privacy modes, how child processes are handled, and when to use this instead of related tools. It is minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate for the undocumented sources, privacy_mode, and response_format parameters. The phrase 'each detected connector' gives some hint about sources, but the description does not explain how sources are selected, what privacy_mode levels mean, or how response_format affects the output. This is a significant gap given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool produces a synthetic daily briefing by aggregating each detected connector's daily summary/context. This identifies the action (aggregate/synthesize) and the resource (daily briefings from health connectors), though it does not explicitly contrast itself with sibling tools like living_body_ask or living_body_compose_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an important precondition: it spawns child MCP processes and requires explicit_user_intent: true. This implies the caller must have explicit user intent and should not call it speculatively, but it does not clearly state when to choose this tool over alternatives such as living_body_ask or living_body_compose_context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_data_inventoryLiving Body — Data InventoryARead-onlyIdempotent
Static inventory of composed domains, known connectors, privacy modes and recommended first calls. No live child calls.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces these with 'Static inventory' and 'No live child calls', adding modest context about non-live behavior. It does not contradict annotations and adds some value, but the annotations carry most of the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads key information (static inventory, contents) and ends with a clear no-live-calls qualifier. No extraneous words or redundant structures.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a static inventory tool with one optional parameter and rich annotations, the description adequately covers the tool's purpose and behavior. It lists included contents but does not specify the output structure or how the response_format parameter varies the response. This is a minor gap given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the response_format parameter. Although the parameter is simple and self-explanatory via its enum values, the description fails to explain its impact on output. Given the low coverage, the description should have compensated but did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'static inventory' listing specific items (domains, connectors, privacy modes, recommended first calls) and explicitly distinguishes it from tools that make live calls. The verb 'inventory' combined with the contents list provides a precise, actionable purpose that differentiates from siblings like living_body_connection_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving static configuration data and warns against expecting live calls, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it reference alternative sibling tools. The context from sibling names is available but not leveraged.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_health_checkLiving Body — Health Check (all known connectors)ARead-onlyIdempotent
Returns status for every known connector — including missing ones — with install hints.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| connectors | Yes | |
| total_known | Yes | |
| generated_at | Yes | |
| total_active | Yes | |
| total_missing | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond those annotations: it explicitly says missing connectors are reported rather than silently skipped, and that install hints are included in the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core action, the full scope, the treatment of missing connectors, and the presence of install hints. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and annotations cover return values and safety, and the single optional parameter is self-explanatory. However, with eight sibling tools including other status-related tools, the description lacks guidance on when this health check should be selected over them, so the overall context is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, response_format, is fully constrained by the schema's enum and default, so the agent does not need additional description to use it correctly. The description adds no parameter-level meaning, but the schema provides enough semantics on its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns status for every known connector, including missing ones, and includes install hints. This clearly differentiates it from sibling tools like living_body_connection_status and living_body_status by emphasizing the comprehensive, all-connector scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to use this tool versus the sibling status/connection tools. The phrase 'including missing ones — with install hints' implies a diagnostic use case, but the description does not state conditions, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
living_body_statusLiving Body — Connector DetectionARead-onlyIdempotent
Detect which Delx Wellness connectors are installed locally. Safe, no subprocess spawning.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| missing | Yes | |
| detected | Yes | |
| total_known | Yes | |
| generated_at | Yes | |
| total_active | Yes | |
| total_installed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds the key behavioral detail 'no subprocess spawning', which reassures safety beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the purpose, no wasted words. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description covers the core purpose but omits any mention of the parameter or output, leaving the agent to rely solely on the schema. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not mention the single parameter 'response_format'. The parameter is simple with an enum, but the description adds no value for parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Detect' and the resource 'which Delx Wellness connectors are installed locally'. This distinguishes it from siblings like living_body_capabilities or living_body_health_check, which likely address other aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The note 'Safe, no subprocess spawning' implies safety but does not contextualize usage relative to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Three tools—connection_status, status, and health_check—all report connector availability and can be easily confused. Similarly, agent_manifest, data_inventory, and capabilities all serve self-description/onboarding purposes, making the tool boundaries unclear.
All tools share the living_body_ prefix and snake_case, which is helpful, but the pattern is mostly noun phrases with occasional verb forms like ask and compose_context. The naming is readable but not a consistent verb_noun convention.
Nine tools is within the ideal range, but several status and metadata tools overlap significantly, making the set feel slightly padded. The count is not excessive overall.
The core workflows—discovering connectors, checking health, asking wellness questions, and composing context—are covered. Minor gaps like direct per-connector data access or configuration tools exist, but agents can likely work around them.
Maintenance
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Collect Apple Health data from your wearables through the Context app and query it via MCP
Authenticated, user-scoped MCP connectors for 30+ business systems.
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceSelf-hosted MCP server that aggregates personal health data from Google Health, Oura, and Withings into a single, provider-attributed interface with configurable source of truth preferences.MIT
- AlicenseNot gradedqualityDmaintenanceExposes personal Garmin wellness data through MCP tools for accessing summary, sleep, HRV, heart rate, stress, body battery, and historical data.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes Garmin Connect health and activity data (steps, sleep, stress, activities, etc.) via tools for querying, analysis, and visualization.Apache 2.0
- AlicenseAqualityCmaintenanceMCP server for the Withings Health API with per-user OAuth2, enabling users to securely access their own health data (measures, activity, sleep, workouts, heart rate, devices, and goals) and optionally add measurements.12Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/davidmosiah/delx-living-body'
If you have feedback or need assistance with the MCP directory API, please join our Discord server