Skip to main content
Glama

Metriport MCP by usefulapi

Server Details

Read and write patients, facilities, medical documents, and consolidated FHIR records in Metriport.

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
83.0% over 76 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target a distinct resource+action (create/get/list patient, get/list facility, document vs consolidated queries), so boundaries are largely clear. Minor overlap between metriport_get_document_query_status and metriport_list_consolidated_queries, and between the two start_*_query tools, but descriptions specify the differing query types.

Naming Consistency5/5

Every tool follows a strict metriport_<verb>_<noun> pattern with consistent snake_case (create_patient, get_facility, list_documents, start_consolidated_query). Verbs are used predictably: get for single reads, list for collections, start for async initiation.

Tool Count5/5

12 tools is well within a comfortable range and each maps to a distinct API endpoint covering patients, facilities, documents, and queries. No redundant or filler tools; each earns its place.

Completeness3/5

Core read/write workflows are covered (create/get/list patient, list documents, start and check queries), but patient update and delete are absent, and facilities are read-only. These are notable gaps in the lifecycle an agent might expect for a medical records API.

Available Tools

12 tools
metriport_create_patientCreate patientA
Destructive
Inspect

Creates a Patient in Metriport (writes PHI and initiates health-information-exchange queries). Medical API: POST /medical/v1/patient (facilityId is a required query param).

NameRequiredDescriptionDefault
dobYesDate of birth, yyyy-mm-dd.
addressYesOne or more addresses for the Patient.
contactNoOptional contact info (phone / email).
lastNameYesThe Patient's last name(s).
firstNameYesThe Patient's first name(s).
facilityIdYesREQUIRED. The Facility ID where the Patient receives care.
middleNameNoThe Patient's middle name(s).
genderAtBirthYesGender at birth: M, F, O (other), or U (unknown).
personalIdentifiersNoOptional personal IDs (driver's license / SSN).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only supply destructiveHint=true; the description adds substantive context beyond that by disclosing that the call writes PHI and triggers health-information-exchange queries, plus the concrete endpoint. It stops short of covering auth requirements, idempotency, or error behavior, but the key side effects are surfaced.

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?

A single tight sentence with the primary purpose front-loaded, followed by the endpoint and required-param note. Every clause carries information; nothing is padded.

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?

For a 9-parameter mutation with no output schema, the description covers the operation, its side effects, and the endpoint, and the schema fully documents the inputs. The one notable gap is that, with no output schema present, it does not hint at what the call returns (e.g., a patient ID), leaving that to inference.

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 9 parameters (including the 6 required ones) are already documented in the schema. The description only restates that facilityId is required, adding no meaning beyond what the schema provides; baseline 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?

States a specific verb and resource ('Creates a Patient in Metriport') and immediately distinguishes itself from the sibling get_/list_ tools by noting it writes PHI and initiates HIE queries. An agent can identify its role 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 Guidelines2/5

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

There is no explicit when-to-use/when-not guidance and no reference to alternatives (e.g., get_patient or any update path). The implied usage is registration of a new patient, but the agent must infer that from the verb alone.

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

metriport_get_document_query_statusGet document query statusA
Read-only
Inspect

Check the progress/status of a Patient's document query (download + FHIR conversion counts). Medical API: POST /medical/v1/document/query with only patientId (no facilityId) returns current status without starting a new query.

NameRequiredDescriptionDefault
patientIdYesThe Patient ID whose document-query status to check.

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses the underlying endpoint semantics and that the call is non-mutating (does not start a new query) and returns progress counts. It does not cover auth requirements, rate limits, or error/empty-result behavior, but that is a minor gap given the annotation already signals a safe read.

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?

Two sentences, front-loaded with the core purpose before the API-level clarification. The endpoint path detail is somewhat verbose but it is what justifies the 'does not start a query' behavior, so it largely 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 single-parameter, read-only status check with no output schema, the description covers purpose, non-mutating behavior, and the shape of what is returned (counts). An agent has everything needed to 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 coverage is 100% and the single patientId parameter is already documented in the schema, so the baseline is 3. The description adds only a marginal note that no facilityId is required, which clarifies the parameter's scope slightly.

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 (check status/progress) on a specific resource (Patient's document query) and even enumerates what the status reports (download + FHIR conversion counts). This cleanly separates it from start_document_query, which initiates rather than reports.

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?

Explicitly disambiguates use: POSTing with only patientId 'returns current status without starting a new query', which tells the agent this is the read-only counterpart to start_document_query. It doesn't name the sibling tool by name, but the when-not condition is unambiguous.

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

metriport_get_document_urlGet document download URLA
Read-only
Inspect

Get a temporary, downloadable URL for a document by its file name (optionally converting XML/CDA to html or pdf). Medical API: GET /medical/v1/document/download-url.

NameRequiredDescriptionDefault
fileNameYesThe file name of the document (from metriport_list_documents).
conversionTypeNoOptional doc type to convert to, e.g. pdf, html, xml (for XML/CDA files).

TDQS

A4.1/5.0
Behavior4/5

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

readOnlyHint=true already establishes the safe-read profile, and the description adds genuinely new behavioral detail: the URL is temporary, and XML/CDA files can be converted to html or pdf. It omits expiry duration and any auth requirements on the returned URL, so it is helpful but not exhaustive.

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?

One front-loaded sentence carries the purpose, input, and optional conversion behavior. The trailing "Medical API: GET /medical/v1/document/download-url" is mildly redundant with the tool's title but aids endpoint alignment.

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?

No output schema exists, yet the description adequately characterizes the return value (a temporary download URL). For a 2-parameter read tool with readOnlyHint coverage, the missing details are minor: expiry window and any auth needed to fetch the URL.

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 both parameters are already documented in the schema. The description's mention of optional XML/CDA-to-html/pdf conversion largely restates the conversionType schema text; no syntax, defaults, or format constraints are added beyond it.

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 precise resource (temporary downloadable URL for a document), and the lookup key (file name). This is clearly distinguishable from sibling list_documents, which enumerates files rather than producing a download link.

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 names the prerequisite source for the required input ("file name ... from metriport_list_documents"), which routes the agent correctly. It stops short of stating when-not to use it or naming a direct alternative, so it lands at clear-context without exclusions.

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

metriport_get_facilityGet facilityA
Read-only
Inspect

Get a single Facility by its Metriport ID. Medical API: GET /medical/v1/facility/{id}.

NameRequiredDescriptionDefault
idYesThe Metriport Facility ID.

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a safe, non-mutating read. The description adds the underlying API endpoint mapping, which aids traceability, but says nothing about failure behavior (e.g., unknown/404 IDs) or response characteristics beyond what the annotation already covers.

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 short sentences, front-loaded with the action and resource, followed by the endpoint reference. Nothing is redundant or padded.

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?

For a trivial single-parameter read tool with full schema coverage and a readOnlyHint, the description is nearly sufficient. The only gap is the absence of an output shape hint, and since no output schema exists, a brief note on the returned facility object would have fully closed the loop.

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% for the single 'id' parameter, so the schema already explains it as 'The Metriport Facility ID.' The description restates the same idea ('by its Metriport ID') without adding format, source, or lookup guidance, so the baseline of 3 applies.

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?

States a specific verb and resource ('Get a single Facility') and adds the HTTP route, which makes the intent unambiguous. The word 'single' implicitly contrasts with the sibling metriport_list_facilities, but no sibling is named, so differentiation is inferred rather than explicit.

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?

'by its Metriport ID' implies the caller must already have an ID, which is a reasonable usage cue, and the single-vs-list framing hints at when to prefer this over metriport_list_facilities. However, there is no explicit when-to-use statement or guidance on what to do when the ID is unknown.

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

metriport_get_medical_record_summaryGet medical record summaryA
Read-only
Inspect

Get a URL to the Patient's medical record summary rendered as pdf or html. Medical API: GET /medical/v1/patient/{patientId}/medical-record.

NameRequiredDescriptionDefault
patientIdYesThe Metriport Patient ID.
conversionTypeYesThe format to render: pdf or html.

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint=true already tells the agent this is a safe read, but the description adds genuinely useful return semantics beyond the annotation: the tool yields a URL rather than the document itself. It does not cover URL expiry, auth scope, or whether retrieval is synchronous, which keeps it short of a 5.

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?

Two tight sentences with the purpose and output type front-loaded. The trailing REST route is mildly redundant given the tool name, but it is compact and does not bury the essential information.

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?

For a two-parameter, read-only tool with no output schema, the description supplies the missing return-value information (a URL) that an agent needs to chain the call. It omits lifecycle details like URL expiration or regeneration requirements, which is the only real gap.

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% with both parameters documented and one enum, so the schema fully carries parameter meaning. The description only restates the pdf/html format choice, adding no new detail such as defaults or rendering trade-offs; baseline 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 states a specific verb and resource — retrieving a URL to a Patient's medical record summary rendered as pdf or html — and distinguishes it from siblings like metriport_get_document_url by naming the distinct artifact (medical record summary). It even pins the underlying REST route, so the agent knows exactly what is being fetched.

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?

Usage is implied by the artifact requested, but there is no explicit statement of when to prefer this over metriport_get_document_url or metriport_list_documents, nor any prerequisite (e.g., whether the summary must be generated first). The agent must infer the selection context.

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

metriport_get_patientGet patientA
Read-only
Inspect

Get a single Patient by its Metriport ID (demographics + facility IDs). Medical API: GET /medical/v1/patient/{id}.

NameRequiredDescriptionDefault
idYesThe Metriport Patient ID.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds value by disclosing the payload content (demographics + facility IDs) and the backing REST endpoint, but says nothing about error behavior (e.g., unknown ID) or what happens if the patient does not exist.

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 tight sentences, zero filler, with the verb+resource+identifier front-loaded; the endpoint path is a compact secondary 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?

For a one-parameter read with no output schema, the description gives just enough return context ('demographics + facility IDs') and pins the operation to a documented endpoint. It lacks only a note on failure/lookup behavior, which keeps it from a 5.

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% for the single 'id' parameter, so the schema already documents the Metriport Patient ID. The description restates rather than enriches this (no format, prefix, or example), so the baseline 3 applies.

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?

States a specific verb ('Get') and resource ('a single Patient') and clarifies the identifier is a Metriport ID. The word 'single' implicitly separates it from metriport_list_patients, but no sibling is named explicitly, so it stops short of a 5.

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?

Usage is implied: fetch one patient when you already hold a Metriport Patient ID. There is no explicit when-to-use/when-not guidance and no pointer to metriport_list_patients for lookup-by-name, leaving the agent to infer the routing.

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

metriport_list_consolidated_queriesList consolidated queriesB
Read-only
Inspect

Get the status of the Patient's consolidated-data (FHIR) queries. Medical API: GET /medical/v1/patient/{id}/consolidated/query.

NameRequiredDescriptionDefault
idYesThe Metriport Patient ID.

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint=true annotation already establishes this is a safe read, so the description carries less burden. It adds the REST endpoint mapping, but says nothing about what a query status can be, whether results are paginated, or how many queries are returned — the behavior of a polling endpoint is left implicit.

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?

Two short sentences, with the functional purpose front-loaded and the endpoint mapping relegated to second position. Nothing is padded, though the raw URL adds only marginal value beyond the prose.

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

Completeness3/5

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

With no output schema, the description should convey what comes back — a status list, its possible states, or at least that it may be empty before a query is started. The name/purpose mismatch ('list' vs 'get the status') also goes unaddressed, leaving a small interpretive gap for a status-polling 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?

There is a single parameter (id) with full schema description coverage ('The Metriport Patient ID'), so the schema already does the work. The description restates the resource hierarchy via the URL path but adds no new semantic detail about the id parameter.

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?

States a specific verb and resource — retrieving the status of a patient's consolidated-data (FHIR) queries — and pins it to a concrete endpoint (GET /medical/v1/patient/{id}/consolidated/query). It does not, however, differentiate itself from the close sibling metriport_get_document_query_status or explain how 'list' in the name relates to 'get the status'.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus metriport_start_consolidated_query (start vs poll), nor versus metriport_get_document_query_status. The agent must infer that this is the polling/status counterpart to the start tool from the name alone.

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

metriport_list_documentsList documentsA
Read-only
Inspect

List the document references currently available for a Patient at Metriport (optionally filtered by date range and content search). Medical API: GET /medical/v1/document.

NameRequiredDescriptionDefault
dateToNoInclusive end date yyyy-mm-dd.
contentNoText to search within the document reference and contents (min 3 chars).
dateFromNoInclusive start date yyyy-mm-dd.
patientIdYesThe Patient ID whose available documents to list.

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this is a safe read, so the description only needs to add beyond that. It usefully clarifies that the result is document *references*, not document contents, and cites the underlying endpoint, but says nothing about pagination, result limits, or auth/scope requirements.

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?

One sentence with the core action front-loaded, followed by a compact endpoint reference. The parenthetical filter list is genuinely informative rather than filler; little is wasted.

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?

For a read-only listing tool with no output schema, the description is nearly complete: it identifies the required patient scope, the optional filters, and the fact that references rather than contents are returned. Only pagination/response-shape behavior is unaddressed.

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 four parameters (including the date patterns and the 3-char minimum for content) are already documented structurally. The description only restates the date-range and content-search filter categories, adding no syntax or default information beyond the schema.

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?

States a specific verb (List) and resource (document references for a Patient), plus the scope of optional filters. It is distinguishable from the document-query siblings (start_document_query, get_document_query_status, get_document_url) by resource, though it does not name any alternative explicitly.

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?

The phrase 'currently available for a Patient' and the optional date/content filters imply when to use it, but there is no explicit guidance on when to prefer this over get_document_url (to retrieve the actual file) or the query-status siblings. Usage context is implied rather than stated.

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

metriport_list_facilitiesList facilitiesB
Read-only
Inspect

List all Facilities under your Metriport Organization (id, name, npi, address). Medical API: GET /medical/v1/facility.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds no behavioral context beyond that — no pagination behavior for a 'list all' call, no rate limits, no ordering guarantees, and no auth note. The API path is a mapping, not a behavioral trait.

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?

One compact sentence plus an endpoint reference, with the scope and output fields front-loaded. Every element is short, though the endpoint string is arguably redundant for an agent.

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 no output schema, the description usefully enumerates the returned fields (id, name, npi, address), which substitutes for a missing output schema. It stops short of covering pagination or volume expectations for an unfiltered organization-wide list.

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 the baseline is 4. The parenthetical field list describes return values rather than inputs and therefore adds nothing to parameter understanding.

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?

Specific verb (List) plus resource (Facilities) with explicit scope (under your Metriport Organization) and the fields returned. It is distinguishable from metriport_get_facility only by the plural 'List all', so sibling differentiation is implied rather than stated.

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

Usage Guidelines2/5

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

No when-to-use guidance, no preconditions, and no mention of the sibling metriport_get_facility that would be the alternative for fetching a single facility. The agent must infer usage from the name alone.

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

metriport_list_patientsList patientsA
Read-only
Inspect

List Patients — all Patients, or only those at a given Facility if facilityId is supplied. Medical API: GET /medical/v1/patient.

NameRequiredDescriptionDefault
facilityIdNoOptional Facility ID to filter by. Omit to list all patients.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds the underlying REST mapping (GET /medical/v1/patient), which is useful context, but says nothing about pagination, result caps, or ordering — notable gaps for a list endpoint with no output schema.

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?

One tight sentence front-loads the behavioral rule (default = all, filter = facility) with the API path appended as supporting detail. No filler.

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?

For a single-optional-param read tool with no output schema and annotations covering safety, the description covers the essential decision (filter or not). The only real omission is any hint about result size/pagination behavior, which a listing tool's consumer would benefit from.

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 the single parameter is fully documented there ('Optional Facility ID to filter by. Omit to list all patients.'). The description restates the same filter behavior without adding format, type, or edge-case detail, so the baseline 3 applies.

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 gives a specific verb ('List') plus resource ('Patients') and nails down the scope: all patients, or only those at one Facility when facilityId is supplied. That scope distinction implicitly separates it from the singular sibling metriport_get_patient, though no sibling is named explicitly.

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 states the condition that widens or narrows the result ('only those at a given Facility if facilityId is supplied'), which implies the filter contract. There is no explicit when-to-use/when-not guidance and no reference to alternative tools such as metriport_get_patient or metriport_create_patient.

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

metriport_start_consolidated_queryStart consolidated queryA
Destructive
Inspect

Starts a consolidated-data (FHIR) query for the patient. Returns a requestId; the bundle is delivered asynchronously (webhook). Medical API: POST /medical/v1/patient/{id}/consolidated/query.

NameRequiredDescriptionDefault
idYesThe Metriport Patient ID.
dateToNoInclusive end date yyyy-mm-dd.
dateFromNoInclusive start date yyyy-mm-dd.
metadataNoOptional custom string key-value pairs returned in the webhook.
resourcesNoComma-separated, case-sensitive list of FHIR resource types. Omit for all.
conversionTypeNoOutput format: json, pdf, or html.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations only carry destructiveHint=true and a title, so the description does the heavy lifting: it discloses that the call returns a requestId and that the bundle arrives asynchronously via webhook, which is essential for correct orchestration. It still does not say what triggers the destructiveHint (e.g. whether requests can be re-run or cancelled), leaving one annotation unexplained.

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?

Two sentences, front-loaded with the action and immediately followed by the async contract. The trailing endpoint path is marginally redundant with the tool name but is still useful for agents reasoning about the Medical API surface.

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 6 parameters, no output schema, and an async delivery model, the description covers the critical unknowns: the return shape (requestId) and how results arrive (webhook). Gaps remain around follow-up retrieval and any permissions or rate limits, but nothing an agent needs to fire the call correctly is absent.

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%, with id, dateFrom/dateTo, metadata, resources, and conversionType all documented in the schema, so the baseline is 3. The description adds nothing parameter-specific beyond tying metadata implicitly to the webhook, so it does not exceed the schema's contribution.

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?

States a specific verb and resource ('Starts a consolidated-data (FHIR) query for the patient') and names the concrete endpoint, so the agent knows exactly what operation runs. It does not explicitly contrast with the sibling metriport_start_document_query, so the boundary between 'consolidated' and 'document' queries must be inferred.

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

Usage Guidelines2/5

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

The description explains the mechanics but never states when to choose this over metriport_start_document_query, nor what to do afterward. The only implicit guidance is that delivery is asynchronous, hinting the agent should follow up via list_consolidated_queries or a webhook, but that routing is left to inference.

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

metriport_start_document_queryStart document queryA
Destructive
Inspect

Starts a document query — retrieves the patient's medical documents from connected HIE networks. Returns a requestId; results arrive asynchronously. Medical API: POST /medical/v1/document/query (patientId and facilityId are required query params).

NameRequiredDescriptionDefault
metadataNoOptional custom string key-value pairs returned in the webhook.
patientIdYesREQUIRED. The Patient ID to query documents for.
facilityIdYesREQUIRED. The Facility ID where the patient receives care.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations supply only destructiveHint=true, so the description carries most of the burden. It usefully discloses the async return contract (requestId, results delivered later), which goes beyond the annotation, but says nothing about why the call is destructive, what external HIE side effects occur, or whether authorization/consent is required.

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 dense paragraph that front-loads the core action, then the async behavior, then the REST mapping. Nothing is wasted, though the trailing endpoint/param clause is somewhat redundant with the schema.

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 output schema, the description correctly explains the return (a requestId with asynchronous results). For a 3-param tool with full schema coverage and an annotation, this is nearly complete; only the downstream status-check path and side-effect/permission context are absent.

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 patientId, facilityId, and metadata are already documented in the schema. The description only restates that patientId and facilityId are required query params, adding no syntax or format detail beyond the structured fields, so the baseline 3 applies.

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 gives a specific verb+resource ("starts a document query") and clarifies the scope as retrieving medical documents from connected HIE networks, which separates it from siblings like metriport_list_documents or metriport_start_consolidated_query. It does not explicitly name a sibling for contrast, so it stops short of a 5.

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 states that results arrive asynchronously via a requestId, which implies the follow-up use of metriport_get_document_query_status, but never says so explicitly or states when not to use this tool. Usage is inferable rather than spelled out.

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Provides read/write access to any FHIR-compliant healthcare API with built-in validation, supporting resource management, search operations, and granular permissions through natural language.
    5
    1
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables LLM-based agents and MCP-compatible clients to query and manipulate clinical data on a FHIR-compliant backend through CRUD resource tools, document ingestion, semantic search, and terminology lookup.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.