Get a user / patient
healthie_get_userFetch a single user (patient or provider) by id. Read-only. GraphQL: query user(id).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The user id. |
healthie_get_userFetch a single user (patient or provider) by id. Read-only. GraphQL: query user(id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The user id. |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only behavior is already declared via annotations (readOnlyHint: true), and the description redundantly restates it. The addition of 'GraphQL: query user(id)' provides some underlying implementation detail, but no further behavioral traits (e.g., error handling, permissions, pagination) are disclosed. Since annotations cover the safety profile, this is acceptable but not rich.
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?
The description is very brief and front-loaded, consisting of three short clauses. However, 'Read-only' repeats information already present in annotations, and the GraphQL note is somewhat redundant for an AI agent. It is concise, but not perfectly free of waste.
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?
The tool is simple (one parameter, no nested objects, no output schema). The description clearly states what it fetches (a user) and the identifier (id). For a get-by-id operation, this is nearly complete, though it could mention that it returns the full user object or note any error behavior. Given the low complexity, the information is sufficient for correct invocation.
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?
The schema already provides 100% coverage of the 'id' parameter with the description 'The user id.' The description's phrase 'by id' reinforces this but does not add new semantic details such as format, constraints, or examples. The baseline of 3 is appropriate when schema fully documents the parameters.
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?
The description clearly states the action ('Fetch') and the resource ('a single user (patient or provider) by id'). It distinguishes itself from sibling tools like list_patients (which lists) and get_appointment (different resource). The subject is specific and unambiguous.
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?
The description mentions 'by id', which implies the primary use case: retrieving a specific user when the id is known. While it does not explicitly name alternatives or exclusions, the contrast with listing tools (e.g., list_patients) is clear from the singular vs. list phrasing. This provides adequate context for tool selection.
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.