Read one FHIR resource
canvas_readFetch a single FHIR resource by type and id. Canvas: GET /{resource}/{id}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The resource's id. | |
| resource | Yes | Which FHIR resource type to read. |
canvas_readFetch a single FHIR resource by type and id. Canvas: GET /{resource}/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The resource's id. | |
| resource | Yes | Which FHIR resource type to read. |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile. The description adds the HTTP endpoint mapping GET /{resource}/{id}, but does not describe error behavior, return payload, or any special read constraints. This is modest added context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first states the action and scope, the second adds the endpoint mapping. No filler; front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only lookup with a fully documented schema and no output schema, the definition supplies the essential operation and endpoint. It leaves some niceties unstated, such as error handling and routing to siblings, but is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters, including the resource enum and id field. The description only restates 'by type and id' and adds no syntax or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names the verb 'Fetch', the resource 'single FHIR resource', the lookup keys 'by type and id', and the underlying endpoint. It distinguishes a direct single-resource read from sibling search and bundle operations such as canvas_search and canvas_get_patient_everything.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/when-not guidance or named alternative. The 'single' and 'by type and id' phrasing implies it is for direct lookup when both identifiers are known, but the agent must infer that canvas_search is for broader queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.