0.0 / 30
What changed in the harness
Selection accuracy 93→96, token cost up 1%, unconfirmed writes 0%→0%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
25.8 / 30
03Economics
14.1 / 20
04Discoverability
16.5 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
4 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
cgm_agent_manifest |
params_unexplained |
Returns the wellness-cgm-mcp agent manifest: tool list, supported clients, env vars, recommended first calls, capabilities, privacy posture, and community links. `client` (optional) tailors the setup guidance to a specific host app (claude, codex, cursor, windsurf, hermes, openclaw, or generic); omit for a generic manifest. |
cgm_authorize_url |
params_unexplained |
Builds the Dexcom OAuth authorize URL for the user to open in a browser and grant access; read-only, does not exchange tokens. Returns the URL to open, or a hint with the required env vars if Dexcom credentials are missing. `state` (optional) is an opaque value echoed back by Dexcom on redirect, used for CSRF protection / correlating the callback to this request. |
cgm_quickstart |
params_unexplained |
Returns a personalized 3-step walkthrough for moving wellness-cgm-mcp from mock mode to live mode (Dexcom); call this first when the user asks how to connect their CGM. `client` (optional) tailors the steps to a specific host app (claude, codex, cursor, windsurf, hermes, openclaw, or generic); omit for generic instructions. |
cgm_profile_update |
no_return_description |
Persists a partial patch to the shared Delx Wellness profile (~/.delx-wellness/profile.json) and returns the updated profile document, or a rejection error if a disallowed field (oauth/token/secret/password/cookie/refresh/api_key/session) is present. Requires explicit_user_intent: true, set only after the user has explicitly asked to save or update profile data. |
Selection evidence
Confusable tool pairs.
9 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
cgm_connection_status |
cgm_libre_status |
high | Both report whether Libre is configured and whether reads will be mock vs live; a task like 'is my Libre CGM connected?' could plausibly route to either the generic connection_status or the Libre-specific status tool. |
cgm_libre_status |
cgm_libre_login |
medium | A task like 'check if my Libre account works' could trigger either the passive config check (status) or the active authentication + connection listing (login), since login also 'confirms the path works end-to-end'. |
cgm_glucose_now |
cgm_glucose_window |
medium | Requests like 'what's my glucose been doing' are ambiguous between the single latest reading (now) and a recent time-range of readings (window). |
cgm_agent_manifest |
cgm_capabilities |
medium | Both describe what the server supports (tools/providers/env vars/privacy modes); a broad 'what can this CGM tool do' query could match either the manifest or the capabilities listing. |
cgm_profile_get |
cgm_onboarding |
medium | For a user with no profile yet, 'set up/get my wellness profile info' is ambiguous between reading the (empty) profile and starting the onboarding question flow that creates it. |
cgm_capabilities |
cgm_quickstart |
low | Both are informational entry points about supported providers/setup; 'how do I get this working' could be answered by either capabilities listing or the quickstart walkthrough, though quickstart is explicitly the first-call recommendation for connection questions. |
cgm_agent_manifest |
cgm_quickstart |
low | Manifest includes 'recommended first calls' which overlaps conceptually with quickstart's walkthrough purpose, risking confusion for 'how do I start using this' style requests. |
cgm_glucose_window |
cgm_hypo_events |
low | A request like 'show me my low glucose readings from the last day' could be served by manually filtering glucose_window or by the purpose-built hypo_events detector, though naming makes hypo_events fairly distinguishable. |
cgm_daily_summary |
cgm_meal_response |
low | Both return glucose statistics; 'how was my glucose after lunch today' sits near the boundary between a daily summary and a meal-specific response, though meal_response requires a meal_time and is more clearly targeted. |
Compare the field