Skip to main content
Glama

log_lab_results

Log one or more blood test or biomarker results. use: requested logging/import of lab values or a concrete result to record. Review/interpretation alone: no write.

GLUCOSE ROUTING: use this tool for glucose only when it is an actual lab/blood-draw result or part of a reported lab panel. Finger-stick, CGM, home meter, wearable, Apple Health, or Health Connect glucose — including a manual correction to daily glucose — belongs in log_wearable as blood_glucose_mg_dl, not here.

REQUIRED WORKFLOW: 1) call list_lab_markers for canonical names and LOINC codes. 2) for each marker the user provides, find the best match and use its canonical marker_name and loinc_code. 3) if no match exists, use the name as stated and omit loinc_code.

If the user says they have lab results but hasn't shared them, prompt: "You can paste the text from your lab report PDF, or upload a photo of the results page — I'll parse all the values at once."

collection_date: report or explicit user context; missing: ask, never substitute report_date or today. infer: panel_name from matched marker or context. extract: flag (H/L/HH/LL/A), ref_range_low/high and lab_name only when reported.

FASTING: fasting_status is only 'fasting' or 'non_fasting' when the user explicitly states it ("I fasted for this", "hadn't eaten"). Never infer it from time of day, a meal mention in notes, or the draw being in the morning — omit the field (leaves it unknown) whenever it wasn't stated. report_date (when the lab reported results, if given separately from the collection date) and draw_id (only when the user is adding a marker to a draw already logged in this conversation) are also optional, omit otherwise.

Submit all markers from a single lab visit in one call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultsYesArray of individual lab marker results. Required — submit all markers from the visit in a single call.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYesHuman-readable result text returned by the tool.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / results / items / properties / result_comparator
      Added value: +{
      +  "description": "For a result printed as an inequality such as \"<9\", give the number as result_value and the symbol here. Optional.",
      +  "enum": [
      +    "<",
      +    ">",
      +    "<=",
      +    ">="
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / results / items / properties / draw_id / description
      Previous value: -"Groups this marker with others from the same draw. See FASTING above. Optional."New value: +"Opaque label of your choosing to group this marker with others from the same draw, normalized server-side. See FASTING above. Optional."
  3. Changed3 schema fields changed
    • addedInput schema / properties / results / items / properties / draw_id
      Added value: +{
      +  "description": "Groups this marker with others from the same draw. See FASTING above. Optional.",
      +  "type": "string"
      +}
    • addedInput schema / properties / results / items / properties / fasting_status
      Added value: +{
      +  "description": "See FASTING above. Optional, omit to leave unknown.",
      +  "enum": [
      +    "fasting",
      +    "non_fasting",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / results / items / properties / report_date
      Added value: +{
      +  "description": "Report/result date, if stated separately from the collection date. Format: YYYY-MM-DD. See FASTING above. Optional.",
      +  "type": "string"
      +}
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only state flags (readOnlyHint=false, etc.). The description adds substantial behavioral rules: required workflow order, handling unknown markers (use name as stated, omit LOINC), never inferring fasting status, never substituting report_date for collection_date, and batching all markers in one call. It also explicitly states what is *not* allowed, which goes well beyond the structured annotations.

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?

The description is long but tightly organized with clear headings (GLUCOSE ROUTING, REQUIRED WORKFLOW, FASTING) and every sentence earns its place. Some minor repetition of 'omit otherwise' and the explicit prompt text add length, but overall it is efficiently structured and front-loaded with the core purpose.

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?

The tool is highly complex with many conditional fields and routing rules. The description covers the required pre-step, handling of missing data, field-specific semantics, and batching, and an output schema exists to explain return values. Nothing an agent needs to invoke this correctly is left out.

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

Parameters5/5

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

Schema coverage is 100%, but the description enriches every parameter. It clarifies that fasting_status must be omitted unless explicitly stated, explains when draw_id applies, specifies that loinc_code must come from list_lab_markers, and gives rules for panel_name inference. This adds meaning far beyond the bare schema descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Log one or more blood test or biomarker results.' It immediately contrasts with review/interpretation ('Review/interpretation alone: no write') and explicitly routes glucose readings to log_wearable, distinguishing it from the main sibling. An agent can tell exactly what this tool does without opening the schema.

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

Usage Guidelines5/5

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

Provides explicit when-to-use ('requested logging/import of lab values or a concrete result to record') and when-not-to-use ('Review/interpretation alone'). It also names the sibling alternative for glucose (log_wearable), mandates a pre-step with list_lab_markers, and gives a ready-made prompt for incomplete user input. This is textbook usage guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.