Skip to main content
Glama

FinchNode Synthetic Health Records

Server Details

Synthetic EHR: medications, labs, conditions, allergies, immunizations, FHIR R4. No API key.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation3/5

There is real overlap: get_demo_health_record aggregates the same categories served by the eight single-category getters, get_demo_record is a legacy duplicate of get_demo_health_record, and get_demo_fhir_bundle/search_demo_fhir/get_demo_health_record all return FHIR data for a scenario. Descriptions do explicitly steer ('prefer this over several single-category tools', legacy marker), which keeps it usable, but boundaries remain fuzzy.

Naming Consistency5/5

Every tool is snake_case verb_noun following a clear demo-domain prefix (get_demo_*, list_demo_scenarios, search_demo_fhir, simulate_demo_connect). The convention is uniform across the whole set.

Tool Count4/5

14 tools sits comfortably in the appropriate range and each maps to a distinct data category or workflow step. The eight single-category getters are somewhat redundant next to the aggregate health_record tool, making it slightly heavier than strictly needed.

Completeness4/5

The surface covers the full FHIR record lifecycle: demographics, conditions, meds, labs, vitals, allergies, immunizations, encounters, plus bundle export, raw type search, scenario listing, and connect simulation. Coverage is strong, with only minor gaps (e.g. procedures/referrals) that agents could work around.

Available Tools

14 tools
get_demo_allergiesGet synthetic allergiesA
Read-onlyIdempotent
Inspect

Use this to get only the allergies of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Allergies and intolerances, normalized from FHIR R4 AllergyIntolerance. No account or API key. To get allergies together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.5/5.0
Behavior3/5

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 covered. The description adds that it returns normalized data from FHIR R4 AllergyIntolerance and that it's synthetic, which is useful. However, it doesn't describe the output structure or whether the data is paginated, but the output schema exists to cover that.

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

Conciseness5/5

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

The description is compact and front-loaded with the key purpose. It names the scenario, the data source, the auth requirement, and the alternative in two sentences without waste.

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?

For a parameterless read-only tool with an output schema and annotations covering safety, the description is complete. It tells the agent exactly what data it will get, that it's synthetic, and how to get a broader record if needed.

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

Parameters4/5

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

The tool has 0 parameters, so there are no parameter semantics to document. The description still explains the fixed scope (baseline-adult scenario) and data source, which is more than necessary for a parameterless tool.

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 clearly states the tool returns allergies for baseline-adult, one of FinchNode's 12 synthetic scenarios, and specifies the data source (FHIR R4 AllergyIntolerance). It distinguishes itself from sibling tools by noting it returns only allergies, not other categories.

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?

The description explicitly says when to use this tool (to get only allergies) and when to use an alternative (get_demo_health_record to get allergies with other categories). It also notes no account or API key is needed, which is useful context.

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

get_demo_conditionsGet synthetic conditionsA
Read-onlyIdempotent
Inspect

Use this to get only the conditions of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Diagnoses and problem list, normalized from FHIR R4 Condition. No account or API key. To get conditions together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context beyond those: it specifies the synthetic scenario, the source systems, and the absence of authentication requirements. This is helpful without contradicting 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.

Conciseness5/5

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

Two sentences with no redundancy. The first sentence states the purpose and scope; the second gives the alternative and the auth note. Information is front-loaded and every sentence earns its place.

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?

For a 0-parameter tool with an output schema and annotations covering safety, the description fully covers what an agent needs: the scenario, the source, the scope, and the alternative for broader queries. Nothing critical is missing.

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

Parameters4/5

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

The tool has 0 parameters, and schema coverage is 100% vacuously. The description doesn't need to explain parameters, and the baseline of 4 applies. It adds no parameter-specific info because none is needed.

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?

States a specific verb (get), a specific resource (conditions), and scopes it to the baseline-adult scenario. It explicitly says 'only the conditions' and names the synthetic sources, distinguishing it from sibling tools that retrieve other categories.

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?

Explicitly states when to use this tool (to get conditions alone) and when to use the alternative (get_demo_health_record for multiple categories at once). Also notes that no account or API key is required, which is a clear prerequisite.

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

get_demo_demographicsGet synthetic basic details (demographics)A
Read-onlyIdempotent
Inspect

Use this to get only the basic details (demographics) of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Name, birth date, sex, contact information, normalized from FHIR R4 Patient. No account or API key. To get basic details together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to repeat those. It adds useful behavioral context beyond annotations: no account/API key required, data is synthetic, and the output is normalized from FHIR R4 Patient. These details help the agent set expectations for access and data shape.

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

Conciseness5/5

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

The description is compact and front-loaded with the core purpose in the first sentence. Every sentence adds value: field list defines scope, synthetic source sets expectations, and the final sentence gives a clear alternative. No filler or redundant restatement.

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?

With a present output schema, empty input schema, and strong safety annotations, the description covers all remaining decision-relevant context: synthetic environment, authentication-free access, normalized format, and the aggregate alternative. Nothing needed for correct invocation is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema description coverage is 100%, so there is no parameter documentation burden. The baseline for zero parameters is 4; the description adds relevant context by noting there is no account or API key, which is the only access-related requirement an agent might otherwise look for.

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 states a specific verb and resource: 'get only the basic details (demographics)' and lists the exact fields returned (Name, birth date, sex, contact information). It also defines the data source and scenario context, which distinguishes it clearly from sibling category-specific tools.

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?

The description explicitly frames when to use it: 'Use this to get only the basic details.' It also names the alternative, get_demo_health_record, and gives the exact condition for choosing that tool instead, which fully covers routing behavior.

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

get_demo_encountersGet synthetic visits (encounters)A
Read-onlyIdempotent
Inspect

Use this to get only the visits (encounters) of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Encounters, appointments, and care teams, normalized from FHIR R4 Encounter, Appointment, CareTeam. No account or API key. To get visits together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds that no authentication is required ('No account or API key') and clarifies the data is synthetic, which is useful behavioral context beyond the annotations. There is no contradiction.

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

Conciseness5/5

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

The description is concise yet comprehensive, front-loading the core purpose and then efficiently covering the scenario, data types, authentication, and alternative usage. Every sentence adds value without redundancy.

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?

With no parameters and an existing output schema, the description fully covers what the tool returns, the scenario it applies to, and the conditions for use. It also points to the alternative tool for broader needs, making it complete for an agent to decide when to invoke it.

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

Parameters4/5

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

There are zero parameters, so the description has nothing to add about parameter usage. Per the rubric, 0 params grants a baseline score of 4. The description does not need to compensate for missing schema details.

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 clearly identifies the tool's function: retrieving synthetic encounters (visits) for the 'baseline-adult' scenario, and specifies the included data types (encounters, appointments, care teams) and source systems. It also differentiates from siblings by explicitly noting that for multiple categories, get_demo_health_record should be used instead.

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?

It explicitly states when to use this tool ('get only the visits') and provides a clear alternative for broader data needs ('call get_demo_health_record once instead'). The 'No account or API key' note also clarifies the authentication requirement, which is a usage guideline.

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

get_demo_fhir_bundleGet synthetic FHIR BundleA
Read-onlyIdempotent
Inspect

Use this when a prototype or test needs the complete fictional FinchNode FHIR R4 Bundle for one scenario and its resource references. Behaviors apply to record reads only, so every scenario returns its Bundle.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioNoOptional scenario id from list_demo_scenarios. Omitted means baseline-adult.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bundleYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that behaviors apply to record reads only and that every scenario returns its Bundle, reinforcing the read-only nature without contradicting annotations. This is useful but not extensive; no additional behavioral details like error handling or rate limits are provided.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary purpose and usage condition are front-loaded in the first sentence, and the behavioral clarification is in the second. Every sentence contributes meaningfully, and the length is appropriate for the tool's simplicity.

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 simple with one optional parameter, rich annotations, and an output schema. The description covers the essential usage context (when to use, what it returns) and does not need to explain return format (output schema exists) or parameter enumeration (schema does). The presence of list_demo_scenarios as a sibling is implicitly referenced in the schema, so no additional context is missing for an agent to correctly invoke the tool.

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% for the single optional 'scenario' parameter, including an enum and description. The tool description does not add parameter-specific details beyond what the schema already provides, so the baseline of 3 applies. The schema's mention of 'from list_demo_scenarios' is not repeated in the description, which is acceptable given the schema coverage.

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 clearly states the tool returns the complete fictional FHIR R4 Bundle for a given scenario, explicitly distinguishing it from sibling tools that fetch individual resources (e.g., get_demo_allergies, get_demo_conditions). The phrase 'complete fictional FinchNode FHIR R4 Bundle' names the specific resource and scope, making it unambiguous.

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

Usage Guidelines4/5

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

The description opens with 'Use this when a prototype or test needs the complete... Bundle,' providing a clear trigger condition. It implies that for single-resource needs, the sibling get_demo_* tools are more appropriate, though it does not explicitly list exclusions or alternatives. The guidance is sufficient but could be more explicit about when not to use it.

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

get_demo_health_recordGet platform-shaped synthetic health recordA
Read-onlyIdempotent
Inspect

Get any mix of demographics, medications, conditions, labs, vitals, allergies, immunizations, encounters in one call — prefer this over several single-category tools. Builds a record view using the authenticated API normalized data shape (schemaVersion 2). Fictional patients only; pick one with scenario. Consent and sync are simulated, with no usable change cursor. Empty categories describe the fixture only.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioNoOptional scenario id from list_demo_scenarios. Omitted means baseline-adult. Behavior scenarios (rate-limited, consent-revoked, consent-partial, source-unavailable) answer with the same scripted error or partial result as the REST demo.
categoriesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.9/5.0
Behavior5/5

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

The annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond these: it explains the output is a 'record view using the authenticated API normalized data shape (schemaVersion 2)', that consent and sync are simulated with no usable change cursor, and that empty categories describe the fixture only. It also clarifies that behavior scenarios (rate-limited, consent-revoked, etc.) produce scripted errors or partial results. This is rich behavioral disclosure that complements, not contradicts, 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.

Conciseness5/5

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

The description is compact—three sentences that front-load the core purpose and usage guidance, followed by critical behavioral caveats. Every sentence earns its place: the first explains what it does and why to prefer it; the second describes the output shape; the third covers fixture and behavior notes. There is no redundancy or filler.

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 the tool has an output schema (so return values are defined there), the description thoroughly covers what an agent needs to call it correctly: the ability to request multiple categories, the scenario picker, the simulated behavior, and the absence of a change cursor. It addresses the key constraints (fictional patients, consent/sync simulation) and clarifies edge cases (empty categories, behavior scenarios). Nothing essential is missing.

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

Parameters4/5

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

Schema description coverage is 50%: the 'scenario' parameter has a description, but 'categories' does not. The description compensates by listing the category types (demographics, medications, conditions, labs, vitals, allergies, immunizations, encounters) and implying the 'mix' concept, though it omits 'documents' and 'claims' from the wording even though they appear in the enum. The 'scenario' meaning is covered explicitly ('pick one with scenario', with behavior scenarios noted). Given the partial schema coverage and the added clarity about scenario selection, the description goes beyond the schema but stops short of fully matching the enum list, so a 4 is appropriate.

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 states a specific verb ('Get') with a clear resource ('any mix of demographics, medications, conditions, labs, vitals, allergies, immunizations, encounters') and explicitly differentiates from sibling single-category tools ('prefer this over several single-category tools'). It goes beyond a generic statement by naming the data shape (schemaVersion 2) and the fictional-patient constraint. An agent can immediately tell what this tool does and how it relates to the other get_demo_* tools.

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?

It explicitly says to prefer this over single-category tools when multiple categories are needed. It also instructs to 'pick one with scenario' and warns about simulated consent/sync and lack of a change cursor. It names the alternative (single-category tools) and provides clear conditions for use. This is explicit, actionable guidance that eliminates ambiguity.

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

get_demo_immunizationsGet synthetic immunizationsA
Read-onlyIdempotent
Inspect

Use this to get only the immunizations of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Vaccination history, normalized from FHIR R4 Immunization. No account or API key. To get immunizations together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.7/5.0
Behavior4/5

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 covered. The description adds useful context: no account or API key is needed, and the data is normalized from FHIR R4 Immunization. It also clarifies the data source is synthetic. The only minor gap is not describing the output format, but the output schema exists and covers that.

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

Conciseness5/5

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

The description is two sentences and every clause earns its place. The first sentence states the exact scope and source, and the second sentence provides the routing alternative. It is front-loaded with the most important information (what this tool returns) and wastes no words.

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?

For a zero-parameter, read-only tool with an output schema, the description is complete. It tells the agent what data is returned, from which scenario, from which systems, that no auth is needed, and when to use a sibling instead. There is nothing an agent needs to know to call this tool correctly that is missing.

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

Parameters4/5

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

The tool has zero parameters, so the schema is trivially complete. The description adds context about what the returned data represents (vaccination history normalized from FHIR R4 Immunization) and the scenario scope. With no parameters to document, the description's job is to clarify the data scope, which it does well.

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 clearly states the tool returns immunizations from a specific synthetic scenario (baseline-adult) and names the source systems. It also distinguishes itself from the broader get_demo_health_record tool by explicitly saying it gets 'only' immunizations. The verb 'get' plus the resource 'immunizations' and the scope 'baseline-adult' make the purpose unambiguous.

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?

The description explicitly tells the agent when to use this tool: when only immunizations are needed from the baseline-adult scenario. It also provides a clear alternative: use get_demo_health_record when multiple categories are needed. This is strong usage guidance that prevents the agent from calling several tools unnecessarily.

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

get_demo_labsGet synthetic lab results (labs)A
Read-onlyIdempotent
Inspect

Use this to get only the lab results (labs) of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Laboratory observations and reports, normalized from FHIR R4 Observation, DiagnosticReport. No account or API key. To get lab results together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive). The description adds useful context: it's a synthetic scenario, requires no account/API key, and data is normalized from FHIR R4. This goes beyond annotations without contradicting them.

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

Conciseness5/5

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

Two sentences with no filler. The purpose and usage are front-loaded, and the alternative is given in the second sentence. Every phrase adds value.

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?

For a no-param getter with an output schema, the description fully covers what it returns, the scenario, source systems, auth requirements, and the alternative for combined data. Nothing an agent needs is missing.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is 100% by default. The description doesn't need to explain parameters; it correctly focuses on the data scope. Per baseline for 0-param tools, a 4 is appropriate.

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 clearly states the verb 'get' and the resource 'lab results (labs)', specifies the scenario 'baseline-adult' and the source systems. It differentiates from siblings by naming the alternative get_demo_health_record and stating the scope is only labs.

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?

Explicitly states when to use this tool ('get only the lab results') and when not to (for combined categories, use get_demo_health_record). This provides clear routing among siblings.

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

get_demo_medicationsGet synthetic medicationsA
Read-onlyIdempotent
Inspect

Use this to get only the medications of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Active and past prescriptions, normalized from FHIR R4 MedicationRequest, MedicationDispense, MedicationAdministration. No account or API key. To get medications together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real value beyond that: no account or API key is required, the scenario is fixed at baseline-adult, and the data is normalized from three FHIR R4 resource types.

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?

Purpose and scope are front-loaded, and the second sentence delivers the routing rule efficiently. The first sentence is dense with provenance detail that could be trimmed, but nothing is redundant.

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

Completeness4/5

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

With no parameters and an output schema present, the description only needs to establish scope, data source, and access requirements, all of which it does. The one gap is that it never tells the agent how to reach medications for the other 11 scenarios, which list_demo_scenarios presumably enables.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly signals that scenario selection is not a parameter of this call.

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?

States a specific verb+resource (get medications) scoped to the baseline-adult synthetic scenario, and names the data provenance (FHIR R4 MedicationRequest, MedicationDispense, MedicationAdministration). It also explicitly differentiates itself from the broader sibling get_demo_health_record, so an agent can choose without opening either schema.

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

Usage Guidelines4/5

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

Clear routing guidance: use this for medications only, and call get_demo_health_record once if multiple categories are needed. It does not address the other near-neighbors (get_demo_record, get_demo_fhir_bundle, search_demo_fhir) or explain how to target a scenario other than baseline-adult, so it stops short of full when/when-not coverage.

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

get_demo_recordGet synthetic health recordA
Read-onlyIdempotent
Inspect

Legacy categorized FHIR response. Kept compatible for existing prototypes. For normalized platform-shaped data, use get_demo_health_record. Fictional patients only; pick one with scenario.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioNoOptional scenario id from list_demo_scenarios. Omitted means baseline-adult. Behavior scenarios (rate-limited, consent-revoked, consent-partial, source-unavailable) answer with the same scripted error or partial result as the REST demo.
categoriesNoOptional subset of normalized record categories.

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only and idempotent behavior. The description adds valuable context: the legacy nature, compatibility purpose, and the fact that only fictional patients are available. It also hints at scenario selection, though the schema handles the scripted behavior scenarios. No contradiction with annotations.

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

Conciseness5/5

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

Three short sentences that immediately state the key differentiator (legacy vs normalized) and provide an alternative. Front-loaded and efficient with zero fluff.

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 has an output schema, so return values are covered. The description explains what the tool returns (categorized FHIR), why it exists (prototype compatibility), and points to the alternative. The scenario parameter's behavior is documented in the schema. An agent has everything needed to decide and call it 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 description coverage is 100% – both parameters have detailed descriptions including enums, defaults, and behavior notes. The description adds nothing beyond the schema's parameter documentation, so the baseline of 3 applies.

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 clearly identifies the tool as returning a 'Legacy categorized FHIR response' and explicitly differentiates it from get_demo_health_record, which provides normalized data. The verb 'get' and resource 'demo record' are specific, and the mention of compatibility for prototypes adds context that distinguishes it from siblings.

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?

The description explicitly tells the agent when NOT to use this tool: 'For normalized platform-shaped data, use get_demo_health_record.' It also implies usage for existing prototypes. This is clear routing to the correct sibling.

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

get_demo_vitalsGet synthetic vital signs (vitals)A
Read-onlyIdempotent
Inspect

Use this to get only the vital signs (vitals) of baseline-adult, one of FinchNode's 12 synthetic scenarios from Northstar Health System (Synthetic) and Quillhaven Medical Group (Synthetic): Blood pressure, heart rate, weight, and similar measures, normalized from FHIR R4 Observation. No account or API key. To get vital signs together with other categories, call get_demo_health_record once instead of calling several of these tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
recordYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare this as read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond those hints: the data is 'normalized from FHIR R4 Observation' and requires no authentication. This gives the agent a fuller picture of the data provenance and invocation requirements without contradicting 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.

Conciseness5/5

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

The description is only two sentences and front-loads the core purpose in the first phrase ('Use this to get only the vital signs'). The alternative tool is named in the same sentence that explains the exclusion condition, and every clause adds useful information without redundancy.

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?

For a zero-parameter, read-only tool with an output schema and comprehensive annotations, this description is complete: it states scope, scenario, data normalization, auth expectations, and the key sibling alternative. Nothing an agent needs to correctly select and call this tool is missing.

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

Parameters4/5

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

The input schema is empty and schema description coverage is 100%, so there are no parameter semantics to explain. The description avoids inventing unnecessary parameter details, which is appropriate for a zero-parameter tool. A 4 reflects that the description need not compensate for any schema gap.

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 names a specific verb and resource ('get only the vital signs (vitals)') and clearly distinguishes itself from sibling category tools by enumerating what counts as vitals: blood pressure, heart rate, weight, and similar measures. It also identifies the target scenario ('baseline-adult') and the source systems, so there is no ambiguity about what this tool returns.

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?

The description explicitly states when to use the tool ('only the vital signs') and when not to ('To get vital signs together with other categories, call get_demo_health_record once instead'). It also provides a useful access prerequisite by noting 'No account or API key', which is relevant context for an agent deciding whether this tool is callable in the current environment.

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

list_demo_scenariosList synthetic demo scenariosA
Read-onlyIdempotent
Inspect

Use this first to choose a fictional scenario: 12 record, behavior (consent, rate-limit, and source-failure errors), and Connect session cases, each with its subject, categories, what it exercises, and links. Pass an id as scenario to the other demo tools. No clinical data. The controls and exercises fields describe the authenticated FinchNode sandbox; this accountless demo cannot perform them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
scenariosYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive); the description adds meaningful non-obvious context: the data is synthetic ('No clinical data') and sandbox-specific fields are not executable in the accountless demo. This helps the agent correctly interpret the returned 'controls' and 'exercises' fields without contradicting 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?

Three sentences front-load the primary directive ('Use this first') and pack the scenario taxonomy, field content, and the sandbox caveat without repetition. Some phrasing is telegraphic ('12 record'), but no sentence is wasted.

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?

With an output schema available, no params, and annotations covering mutation/safety, the description supplies everything needed to invoke and interpret the tool: the scenario categories, the linking behavior to sibling tools, and the accountless sandbox limitation. There are no obvious missing operational details.

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

Parameters4/5

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

The input schema is empty and schema coverage is 100%, so there are no parameters to document; baseline for zero-parameter tools applies. The description still adds the cross-tool convention that a returned scenario id should be passed to the other demo tools.

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 names a concrete resource ('synthetic demo scenarios') and an explicit positional action ('Use this first'), plus enumerates the scenario categories (record, behavior, Connect session) and the fields returned. This distinguishes it from the get_demo_* siblings, which each return a specific artifact rather than an index of scenarios.

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?

It explicitly frames itself as the entry point ('Use this first to choose...') and tells the agent how to connect results to siblings ('Pass an id as scenario to the other demo tools'). This is clear when-to-use guidance and prevents the mistake of treating scenario data as if it could be fetched directly from a getter.

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

search_demo_fhirSearch synthetic FHIR resourcesA
Read-onlyIdempotent
Inspect

Use this to get all resources of one FHIR R4 type for one synthetic scenario's patient (baseline-adult unless patient_id names another).

ParametersJSON Schema
NameRequiredDescriptionDefault
patient_idNoOptional scenario subject from list_demo_scenarios. Omitted searches the baseline-adult Bundle only.
resource_typeYesFHIR R4 resource type present in the synthetic scenario Bundles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bundleYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds the useful default that an omitted patient_id searches only the baseline-adult Bundle, but it says nothing about the scenario edge cases the enum implies (rate-limited, consent-revoked, source-unavailable), which are behavioral traits an agent should know.

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?

A single tight sentence front-loaded with "Use this to", with the default-scenario caveat folded into a parenthetical. Efficient and well-structured, though the parenthetical slightly buries the most decision-relevant detail.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the annotations cover the safety profile. The description covers scope and the default subject adequately; the only gap is guidance on sibling selection and the notable scenario variants (rate-limited, consent-revoked) that could change agent expectations.

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 description coverage is 100% and both parameters are fully documented with enums, so the schema does the heavy lifting. The description reinforces the patient_id default (baseline-adult) but adds no format or syntax detail beyond what the schema already provides, making the baseline 3 correct.

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 states a specific verb and resource: retrieve all resources of one FHIR R4 type for one scenario's patient. It is clear what the tool does, but it does not explicitly differentiate itself from the many per-type siblings (get_demo_conditions, get_demo_allergies, get_demo_labs), leaving the agent to infer that this is the generic cross-type variant.

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?

"Use this to get all resources of one FHIR R4 type" implies the usage context but gives no when/when-not guidance relative to the sibling shortcuts that fetch the same data per type. No exclusions or alternative routing are stated, so the agent must infer whether to prefer this or a specific get_demo_* tool.

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

simulate_demo_connectSimulate FinchNode ConnectA
Read-only
Inspect

Use this to prototype the FinchNode connection journey. Returns a non-persistent synthetic session: complete for a record or behavior scenario, or the connect-cancelled or connect-failed outcome with no patient.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioNoOptional scenario id from list_demo_scenarios. Omitted means baseline-adult; connect-cancelled and connect-failed end without a patient.
categoriesNoRequested fictional record categories.
external_user_idNoOptional non-sensitive prototype identifier. Never send a real patient identifier.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sessionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark it readOnly and non-destructive. The description adds that it returns a 'non-persistent synthetic session' and clarifies that some scenarios yield no patient, which is useful behavioral context beyond the annotations. It doesn't contradict any annotation.

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

Conciseness5/5

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

Two sentences with no redundancy. The purpose is stated first, followed by a concise explanation of possible outcomes. Every word earns its place.

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

Completeness4/5

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

Given the output schema and annotations, the description adequately explains the tool's function and typical outcomes. It could mention how it relates to the sibling get_demo_* tools, but for a simulation tool, the description is sufficient.

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 description coverage is 100%, so all parameters are already well-documented in the input schema. The tool description itself adds no additional parameter guidance. Baseline 3 is appropriate since the schema carries the full load.

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 clearly states the tool's purpose with a specific verb ('prototype') and resource ('FinchNode connection journey'). It distinguishes itself from the get_demo_* siblings by focusing on the connection flow rather than individual record fetching, and mentions the outcome types (complete session or cancelled/failed).

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

Usage Guidelines4/5

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

It explicitly says 'Use this to prototype the FinchNode connection journey,' giving clear context for when to call it. However, it doesn't mention alternatives like get_demo_* tools for retrieving specific records, nor does it state exclusions. The guidance is clear but not exhaustive.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedsearch_demo_fhir1 field changed
      • changedInput schema / properties / resource_type / enum
        Previous value: -[
        -  "AllergyIntolerance",
        -  "Condition",
        -  "DiagnosticReport",
        -  "Encounter",
        -  "Immunization",
        -  "MedicationDispense",
        -  "MedicationRequest",
        -  "Observation",
        -  "Organization",
        -  "Patient",
        -  "Practitioner",
        -  "Provenance"
        -]New value: +[
        +  "AllergyIntolerance",
        +  "Appointment",
        +  "CareTeam",
        +  "Condition",
        +  "Coverage",
        +  "DiagnosticReport",
        +  "DocumentReference",
        +  "Encounter",
        +  "ExplanationOfBenefit",
        +  "Immunization",
        +  "MedicationAdministration",
        +  "MedicationDispense",
        +  "MedicationRequest",
        +  "Observation",
        +  "Organization",
        +  "Patient",
        +  "Practitioner",
        +  "Provenance"
        +]
  2. 14 tool updates
    • Changedget_demo_allergies8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_conditions8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_demographics8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_encounters8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_fhir_bundle1 field changed
      • addedInput schema / properties / scenario
        Added value: +{
        +  "description": "Optional scenario id from list_demo_scenarios. Omitted means baseline-adult.",
        +  "enum": [
        +    "baseline-adult",
        +    "polypharmacy-senior",
        +    "pediatric-asthma",
        +    "multi-source-overlap",
        +    "sparse-record",
        +    "messy-coding",
        +    "rate-limited",
        +    "consent-revoked",
        +    "consent-partial",
        +    "source-unavailable"
        +  ],
        +  "type": "string"
        +}
    • Changedget_demo_health_record9 fields changed
      • addedInput schema / properties / scenario
        Added value: +{
        +  "description": "Optional scenario id from list_demo_scenarios. Omitted means baseline-adult. Behavior scenarios (rate-limited, consent-revoked, consent-partial, source-unavailable) answer with the same scripted error or partial result as the REST demo.",
        +  "enum": [
        +    "baseline-adult",
        +    "polypharmacy-senior",
        +    "pediatric-asthma",
        +    "multi-source-overlap",
        +    "sparse-record",
        +    "messy-coding",
        +    "rate-limited",
        +    "consent-revoked",
        +    "consent-partial",
        +    "source-unavailable"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_immunizations8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_labs8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_medications8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Changedget_demo_record1 field changed
      • addedInput schema / properties / scenario
        Added value: +{
        +  "description": "Optional scenario id from list_demo_scenarios. Omitted means baseline-adult. Behavior scenarios (rate-limited, consent-revoked, consent-partial, source-unavailable) answer with the same scripted error or partial result as the REST demo.",
        +  "enum": [
        +    "baseline-adult",
        +    "polypharmacy-senior",
        +    "pediatric-asthma",
        +    "multi-source-overlap",
        +    "sparse-record",
        +    "messy-coding",
        +    "rate-limited",
        +    "consent-revoked",
        +    "consent-partial",
        +    "source-unavailable"
        +  ],
        +  "type": "string"
        +}
    • Changedget_demo_vitals8 fields changed
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receiptIds / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / maxItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / consent / properties / receipts / minItems
        Removed value: -0
      • removedOutput schema / properties / record / properties / id / const
        Removed value: -"patient-demo-001"
      • addedOutput schema / properties / record / properties / id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • removedOutput schema / properties / record / properties / meta / properties / syncStatus / const
        Removed value: -"simulated"
      • addedOutput schema / properties / record / properties / meta / properties / syncStatus / enum
        Added value: +[
        +  "simulated",
        +  "partial"
        +]
    • Addedlist_demo_scenarios
    • Changedsearch_demo_fhir5 fields changed
      • removedInput schema / properties / patient_id / const
        Removed value: -"patient-demo-001"
      • changedInput schema / properties / patient_id / description
        Previous value: -"Optional fixed sample patient filter."New value: +"Optional scenario subject from list_demo_scenarios. Omitted searches the baseline-adult Bundle only."
      • addedInput schema / properties / patient_id / enum
        Added value: +[
        +  "patient-demo-001",
        +  "patient-demo-polypharmacy",
        +  "patient-demo-pediatric-asthma",
        +  "patient-demo-multi-source",
        +  "patient-demo-sparse",
        +  "patient-demo-messy-coding",
        +  "patient-demo-rate-limited",
        +  "patient-demo-consent-revoked",
        +  "patient-demo-consent-partial",
        +  "patient-demo-source-unavailable"
        +]
      • changedInput schema / properties / resource_type / description
        Previous value: -"FHIR resource type present in the sample EMR."New value: +"FHIR R4 resource type present in the synthetic scenario Bundles."
      • changedInput schema / properties / resource_type / enum
        Previous value: -[
        -  "AllergyIntolerance",
        -  "Condition",
        -  "DiagnosticReport",
        -  "Encounter",
        -  "Immunization",
        -  "MedicationRequest",
        -  "Observation",
        -  "Organization",
        -  "Patient",
        -  "Practitioner",
        -  "Provenance"
        -]New value: +[
        +  "AllergyIntolerance",
        +  "Condition",
        +  "DiagnosticReport",
        +  "Encounter",
        +  "Immunization",
        +  "MedicationDispense",
        +  "MedicationRequest",
        +  "Observation",
        +  "Organization",
        +  "Patient",
        +  "Practitioner",
        +  "Provenance"
        +]
    • Changedsimulate_demo_connect1 field changed
      • addedInput schema / properties / scenario
        Added value: +{
        +  "description": "Optional scenario id from list_demo_scenarios. Omitted means baseline-adult; connect-cancelled and connect-failed end without a patient.",
        +  "enum": [
        +    "baseline-adult",
        +    "polypharmacy-senior",
        +    "pediatric-asthma",
        +    "multi-source-overlap",
        +    "sparse-record",
        +    "messy-coding",
        +    "rate-limited",
        +    "consent-revoked",
        +    "consent-partial",
        +    "source-unavailable",
        +    "connect-cancelled",
        +    "connect-failed"
        +  ],
        +  "type": "string"
        +}
  3. 13 tool updates
    • First observedget_demo_allergies
    • First observedget_demo_conditions
    • First observedget_demo_demographics
    • First observedget_demo_encounters
    • First observedget_demo_fhir_bundle
    • First observedget_demo_health_record
    • First observedget_demo_immunizations
    • First observedget_demo_labs
    • First observedget_demo_medications
    • First observedget_demo_record
    • First observedget_demo_vitals
    • First observedsearch_demo_fhir
    • First observedsimulate_demo_connect

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides safe read-only access to synthetic healthcare data via FHIR R4, enabling AI assistants to search patients, retrieve vitals, and summarize conditions using a public sandbox.
    4
    8 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables exploring a synthetic electronic health record via natural language, including patient demographics, encounters, notes, and medications, with optional write support for adding synthetic progress notes.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables clinical workflows including search and summarization of synthetic FHIR patient records, PubMed literature search, and HIPAA Safe Harbor de-identification of text, via any MCP client.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources