Skip to main content
Glama

Read the health record

read_record
Read-onlyIdempotent

Returns the user's health-roadmap.json including profile, measurements, lab values, medications, supplements, screenings and documents. Filter by metric or date to see active rows as the current truth.

Instructions

Return the user’s health-roadmap.json: profile, measurements, lab values, medications, supplements, screenings and documents. Rows are never deleted here — a superseded value stays with status "entered-in-error", so read status: "active" rows as the current truth. Optionally narrow to one metric or to rows on or after a date. Use each row's current flag for the value the plan counts. Sync bookkeeping is left out. Measurements are SI (units). A catalogued lab is converted to SI; an unknown test keeps the unit it was reported in. On Dropbox the result also lists files in the folder that are not in the record (folder); offer to import them, never do it unasked.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sinceNoOnly rows recorded on or after this day.
metricNoOne metric or test name, e.g. "ldl" or "ferritin". Omit for everything.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
unitsYesEvery measurements[].value is stored in this SI unit, keyed by metricType. A metric the `units` map does not name has no canonical unit: never infer one. A catalogued labValues[] row is stored in its SI unit, converted from what the lab printed; a test the catalogue does not know keeps the unit it was reported in.
folderNoDropbox only: files in the folder root that are not in the record. Offer to import them; never do it unasked.
profileYes
documentsYes
labValuesYes
screeningsYes
medicationsYes
supplementsYes
measurementsYes
schemaVersionYes
medicationHistoryYes
supplementHistoryYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, not open-world), yet the description adds substantial non-obvious behavior: superseded rows persist with status 'entered-in-error', the current flag marks the value the plan counts, sync bookkeeping is excluded, measurements are normalized to SI while unknown labs keep their reported unit, and on Dropbox the result additionally lists folder files not in the record with a do-not-import-unasked rule. This is exactly the kind of context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It opens with what is returned and then layers the non-obvious rules; every sentence carries distinct information (status semantics, current flag, SI units, Dropbox folder listing). It is a dense block rather than bulleted, but there is no filler, so it stays appropriately sized for the amount of behavior disclosed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an existing output schema, the description need not restate the return shape, yet it adds the interpretive layer that matters: which rows represent current truth, how status values should be read, and how units are treated. Combined with annotations carrying the safety profile and full schema coverage on parameters, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (since, metric) are fully documented in the schema, establishing the baseline of 3. The description's line about optionally narrowing to one metric or to rows on or after a date largely restates the schema's own semantics rather than adding syntax, edge cases, or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it returns the user's health-roadmap.json and enumerates the data domains (profile, measurements, lab values, medications, supplements, screenings, documents). This is far beyond a tautology. However, it never explicitly contrasts itself with siblings like get_plan or correct_value, so an agent must infer the boundary from the content list alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear in-tool usage rules (read status:active rows as current, use the current flag, optionally narrow by metric or since date), but it never states when to choose this tool over a sibling such as get_plan or file_results. The one routing-adjacent instruction ('offer to import them, never do it unasked') concerns import_documents behavior, not tool selection, so usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.