FHIR MCP Server
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Each request_<resource>_resource tool targets a distinct FHIR resource type, and the Pinecone/LOINC tools have clear separate purposes. However, the many similar request_resource wrappers could lead to accidental selection of the wrong resource, and request_generic_resource may be confused with the specific ones.
Naming Consistency3/5The dominant request_<resource>_resource pattern is consistent, but get_loinc_codes, add_document_to_pinecone, and search_pinecone deviate with different verb styles, creating a mixed naming convention. This is readable but not fully predictable.
Tool Count5/513 tools is well-scoped for a FHIR MCP server, covering common clinical resources plus LOINC lookup and document search. Each tool has a clear purpose and the count is neither too thin nor overwhelming.
Completeness4/5The server covers a broad set of FHIR resources (Patient, Observation, Medication, Condition, AllergyIntolerance, Encounter, Immunization, DocumentReference, FamilyMemberHistory) and provides a generic fallback for any other resource. Minor gaps exist (no dedicated cross-resource search or batch operations) but agents can work around them.
Average 4.2/5 across 13 of 13 tools scored. Lowest: 3.4/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 2 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is failing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions that the embedding model is loaded into cache (causing delay), that the index may take up to 1 minute to update, and describes the return values. This provides substantial insight beyond the schema, though the 'search operation' wording slightly tarnishes clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness3/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into sections (IMPORTANT note, description, rules, args, returns) but is verbose. The opening note is long and confusing, and the phrase 'This tool should be used to ingest new documents' is somewhat redundant. The overall structure is usable but not concise or tightly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose, usage, latency expectations, index update behavior, and return values. It lacks mention of prerequisites (e.g., FHIR DocumentReference existence) but is otherwise fairly complete for a document ingestion tool. The combination of annotations being absent and the output schema not being shown increases the usefulness of the provided Returns section.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single required 'document' object with nested fields (url, fhir_document_id, format), but the description's Args section lists 'url', 'fhir_document_id', and 'format' as if they were top-level parameters. This misrepresents the input structure and could lead the agent to pass arguments incorrectly. The description does add value by explaining each field, but the structural mismatch is a significant issue.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose3/5Does the description clearly state what the tool does and how it differs from similar tools?
The main sentence 'Adds a document to the Pinecone vector index for the specified FHIR DocumentReference ID' clearly states the verb and resource. However, the opening IMPORTANT note refers to 'this search operation', which is misleading since the tool is for adding documents, not searching. This contradicts the tool's name and confuses the agent's understanding of what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'This tool should be used to ingest new documents into the Pinecone index', giving clear usage context. It also provides a rule about setting format to None when unknown. However, it does not explicitly mention when not to use this tool or alternatives like search_pinecone, though the distinction is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It includes important rules: requiring explicit user data for create/update, confirmation for delete, and providing app (not api) links. It also states the return type. While it doesn't elaborate on side effects or error handling, the given rules cover key behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Rules, Args, and Returns sections, and it front-loads the purpose. Some redundancy exists (e.g., 'use only data explicitly provided' and 'Do not guess' are similar), but the overall length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage rules, and return type, which is useful. However, it fails to explain the required 'request' wrapper parameter, making the invocation structure unclear. Given the nested schema and output schema present, this omission impacts completeness for correct tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists 'method', 'path', and 'body' as direct arguments, but the input schema defines a single required 'request' object containing these fields. This omission is misleading and could cause an agent to construct arguments incorrectly. The description does provide examples for path and clarifies body usage, but the missing wrapper structure is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool makes HTTP requests to the FHIR server and performs CRUD operations specifically on the Encounter resource. The phrase 'only on the FHIR Encounter resource' differentiates it from sibling tools for other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('to perform CRUD operations only on the FHIR Encounter resource') and provides operation-specific rules (e.g., confirm before delete, use only user-provided data for create/update). However, it does not explicitly mention alternatives or when not to use it beyond the resource restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds meaningful context around data integrity (no guessing/auto-filling), deletion confirmation, and response linking. However, it does not cover auth requirements, error handling, or rate limits, so it is not fully comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description has a clear structure: purpose, rules, args, and return value. It is somewhat verbose but every rule adds useful behavioral guidance. The front-loaded purpose makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is resource-specific and the description covers key CRUD safety rules and return type. However, it omits the nested request parameter structure, authentication/error behavior, and lacks a detailed output schema. Given the complexity of a generic FHIR request tool, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema defines a single required 'request' object containing method, path, and body, but the description lists 'method', 'path', and 'body' as top-level Args without mentioning the 'request' wrapper. This mismatch can mislead an agent into constructing an invalid call. The schema descriptions are minimal, and the description adds only path examples, not enough to compensate for the confusing structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it makes HTTP requests to the FHIR server and restricts usage to CRUD operations on the FHIR Patient resource only. This specific verb+resource combination distinguishes it from sibling tools like request_observation_resource or request_medication_resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage rules: do not auto-fill data when creating/updating, require confirmation before deletion, and provide app links in responses. It also explicitly scopes the tool to Patient only, which serves as an exclusion for other resources, but it does not name alternative tools explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It explains important behaviors: no auto-filling missing data, delete confirmation requirement, and providing app links. It stops short of discussing authentication, error handling, or the direct HTTP proxy nature, but covers the most safety-relevant aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized: purpose, rules, args, return. It is front-loaded with the key purpose and every section adds value. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a good overall picture, including CRUD constraints and return type, but the input structure mismatch means an agent cannot reliably invoke it without inspecting the schema closely. Given the tool's simplicity and available output schema, this is a moderate gap rather than severe incompleteness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists method, path, and body as if they were top-level arguments, but the input schema expects a single 'request' object containing these fields. This mismatch could mislead an agent into constructing an invalid request. The description does add useful examples and constraints for the nested fields, but the missing wrapper is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool makes HTTP requests to a FHIR server and is specifically for CRUD operations on the Observation resource. It distinguishes itself from sibling tools by naming the resource type and explicitly limiting scope to Observation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on when to use the tool ('only on the FHIR Observation resource'), and gives concrete behavioral rules such as using only user-provided data and asking confirmation before deletion. It does not name alternatives explicitly, but the resource-specific scoping makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does a good job: it discloses the HTTP/CRUD nature, instructs to use only user-provided data, requires confirmation before deletion, and mentions providing links. It stops short of discussing authentication or error behavior, but covers important side-effect-related rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for purpose, rules, args, and returns. It is slightly lengthy due to operational rules, but each sentence adds meaningful guidance and none is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's CRUD nature and absence of annotations, the description covers key usage constraints and return type. The lack of explicit auth notes and the args/schema mismatch are minor gaps, but overall it provides enough context for safe use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists method, path, and body with examples and notes body is optional, which adds some value. However, it presents them as direct args while the actual input schema requires a single 'request' wrapper object, which could mislead an agent about the invocation structure. The schema also already provides descriptions for these nested properties.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it makes HTTP requests for CRUD operations specifically on the FHIR AllergyIntolerance resource, using a specific verb ('Makes an HTTP request') and resource. The name and sibling tools confirm distinct resource-specific purpose, so it is well differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this tool to perform CRUD operations only on the FHIR AllergyIntolerance resource,' which provides clear scope and exclusion. It also includes operational rules (e.g., confirmation before delete, no auto-filling data), but does not explicitly name alternative tools for other resource types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses important behaviors: no auto-fill of missing data, mandatory user confirmation for deletions, and the requirement to return app links. However, it omits details like authentication, error handling, or rate limits, so it is not fully comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a brief opening, a rules list, and an args section. It is longer than average but every sentence adds useful information. The rules are clear and easy to follow, though the args section could be more concise by matching the schema hierarchy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's resource scope, core behaviors, and return format, which is good. However, the mismatch between the described arguments and the actual nested schema is a significant gap. It lacks a concrete example of a full JSON request object, making end-to-end invocation less certain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema's top-level parameter 'request' has no description (0% coverage), so the description must compensate. It lists method, path, and body with examples and says body is optional, which adds value. However, it presents them as flat arguments, not nested under 'request', which contradicts the actual schema structure and could mislead an agent into constructing an invalid invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool makes an HTTP request to the FHIR server and limits usage to CRUD operations on the FamilyMemberHistory resource. The phrase 'only on the FHIR FamilyMemberHistory resource' explicitly distinguishes it from sibling resource-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/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage rules: it is for CRUD on FamilyMemberHistory, and it gives specific behavioral guidance (e.g., use only user-provided data, do not guess, ask confirmation before delete, provide app links). This clearly states when to use and when to confirm, though it does not name alternatives beyond the resource scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It goes beyond basic HTTP request semantics by stating that missing data must not be guessed, deletion requires user confirmation, and final responses must include app links rather than API links. These are useful behavioral constraints. It does not cover error handling or authorization, but the provided rules are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a purpose sentence, a usage condition, concise numbered rules, an Args section, and a Returns line. It is front-loaded with the most important information and avoids fluff. The Args section duplicates some schema content but is acceptable for a generic tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a generic FHIR CRUD operation, and the description covers purpose, scope, safety rules, parameters, and return type. An output schema exists, so return details are already structured. It lacks error handling details and concrete resource path examples, but for a fallback generic tool, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The top-level schema parameter 'request' has no description (0% coverage), so the description must compensate. The 'Args' section lists method, path, and body with brief explanations, and clarifies that body is optional for POST/PUT. However, this adds little beyond the nested schema's existing field descriptions, and it does not explain path formatting or provide examples. It is adequate but not rich.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Makes an HTTP request to the FHIR server' and explicitly says it performs 'CRUD operations on any FHIR resource'. It distinguishes from siblings by adding 'ONLY if the other tools are not applicable', which positions it as a fallback for any resource not covered by 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 Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use this tool ... ONLY if the other tools are not applicable'. It also provides practical rules for deletion (ask for confirmation) and data integrity (do not guess or auto-fill). It does not name the specific alternative sibling tools, so it is slightly less explicit than the high standard, but the conditional is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses critical behaviors: do not guess or auto-fill missing data, require confirmation before deletion, and provide app links rather than API links. It does not cover auth or error behavior, but the key safety-relevant behaviors are well documented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a purpose statement, a rules list, and an Args section. The rules are detailed but each adds operational value, so the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, and the description covers resource scope, CRUD operations, data fidelity, and deletion confirmation. For a resource-specific CRUD tool with multiple siblings, this is fairly complete, though it omits authentication requirements and explicit handling of the request-wrapping parameter structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section gives useful examples for path (e.g., '/Immunization?patient=Patient/123') and clarifies body usage for POST/PUT. However, it lists method/path/body as top-level arguments and fails to mention the required 'request' wrapper object from the schema, which could lead to incorrect invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it makes HTTP requests and 'perform[s] CRUD operations only on the FHIR Immunization resource,' using a specific verb and resource. This clearly distinguishes it from sibling tools like request_patient_resource or request_generic_resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use the tool: for CRUD operations on the Immunization resource only. It also provides operational rules around creating/updating (use only provided data) and deleting (require user confirmation), but it does not explicitly name alternative tools for non-Immunization resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It specifies that only user-provided data should be used, not to guess or auto-fill missing data, to ask for confirmation before deleting, and to provide app links rather than api links. These are critical safety and usage behaviors beyond basic CRUD.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, bullet-point rules, and an Args list. It is somewhat long but every section contributes value. The main purpose is front-loaded, making it easy for an agent to quickly understand the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a solid overview of the tool's purpose, parameters, return value, and special rules. It could include more about response format or error handling, but for a FHIR CRUD tool, the given information is sufficient for basic invocation. The presence of an output schema reduces the need for detailed return descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an Args section that lists method, path, and body with examples and constraints, such as body being optional for POST/PUT. Although the schema provides some descriptions for these inner fields, the outer 'request' parameter is not self-explanatory, and the description's explicit examples add meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool makes HTTP requests and is specifically for CRUD operations on the FHIR Condition resource. This distinguishes it from sibling tools like request_patient_resource, which target other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it 'only on the FHIR Condition resource', giving clear when-to-use guidance. It also provides operational rules for create/update/delete. However, it does not directly name alternative tools for other resources, though the 'only on' phrasing implies 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behavioral rules: not to guess missing data, ask for deletion confirmation, and provide app links. These are valuable beyond the schema. However, it does not mention error handling or response structure, but the output schema covers the latter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a brief intro, a clear 'Rules:' section, and an Args list. It is concise but includes necessary behavioral rules. Every sentence adds value, though the opening sentence is slightly redundant with the second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage rules, parameters, and return value. It is complete for a CRUD tool with clear resource constraints, and the presence of an output schema reduces the need to describe return details. Minor gaps include authentication or pagination, but these are likely handled elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by giving a concrete path example ('/DocumentReference?patient=Patient/123') and clarifying that body is for POST/PUT. The schema itself has basic descriptions, but the description's Args section enhances understanding. Despite low schema description coverage, the description compensates adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs CRUD operations specifically on the FHIR DocumentReference resource, distinguishing it from sibling resource-specific tools like request_patient_resource. It uses a specific verb ('Makes an HTTP request') and resource scope ('only on the FHIR DocumentReference resource').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool (for CRUD on DocumentReference) and provides rules: use only provided data, require confirmation for deletion, and return app links. This gives clear usage context and exclusions, even though it does not name alternatives explicitly, the 'only' suffices to differentiate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals critical behaviors: not auto-filling missing data during create/update, requiring user confirmation before deletion, and returning app links instead of API links. These are non-obvious behaviors that an agent must know to invoke the tool safely and correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening statement, a rules list, and an Args section. It is slightly longer than necessary but every sentence provides value, and the formatting improves scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage rules, parameter semantics, and return type. It lacks explicit error-handling or edge-case information, but given that an output schema exists and the tool is straightforward CRUD, it is sufficiently complete for an agent to invoke it correctly in most scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema contains descriptions, the context signal reports 0% schema description coverage. The description compensates by providing an Args section with examples for path ('/Medication', '/Medication?code=aspirin') and clarifying that body is optional for POST/PUT. This adds practical meaning beyond the schema's bare definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it makes HTTP requests to the FHIR server and explicitly limits usage to CRUD operations on the Medication resource. This differentiates it from sibling resource-specific tools such as request_patient_resource, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this tool to perform CRUD operations only on the FHIR Medication resource,' which is a direct usage directive. It also provides conditional rules: do not guess data for create/update, ask for confirmation before delete, and provide app links in responses. These guidelines clearly indicate when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must reveal behavior. It discloses automatic STATUS='ACTIVE' filtering, COMMON_TEST_RANK sorting, popularity ordering, error key behavior, and authentication failure handling. This is rich and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy and contains some redundancy (e.g., 'Don't automatically pick the first' appears in both Strategy and Rules). However, it is structured with headings and front-loaded with the core purpose. The length is mostly justified by the tool's complexity, but minor trimming would improve clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and a multi-step usage pattern, the description covers purpose, behavior, error handling, parameter adjustment, and agent decision-making. It even discusses how to interpret results and select codes, making it complete for the intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has only names and defaults; the description adds meaning via an Args section: component_name example, max_codes as 'maximum number to return', max_fetch as 'maximum number to fetch from API'. It also explains how parameters interact (increase max_fetch progressively), fully compensating for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific statement: 'Get the most relevant LOINC codes for a given observation name.' This identifies the verb, resource, and purpose. It further elaborates on automatic filtering and sorting, distinguishing it from sibling FHIR resource 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/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides extensive guidance: a step-by-step strategy for selecting codes, handling errors, adjusting parameters, and when to suggest using the agent's own knowledge. It explicitly states when to stop (authentication errors) and suggests alternatives, exceeding the minimum for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the embedding model loading delay and instructs to warn the user, auto-triggering of add_document_to_pinecone on missing document, query translation, strict answer grounding, and clarification handling. This is rich behavioral context beyond a simple search operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an IMPORTANT note and bulleted rules. Every sentence serves a purpose—covering user warnings, usage context, prerequisites, error handling, and query processing rules. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all three parameters, return type (list of PineconeSearchResponse), error handling, and the full workflow from preparation to answer generation. It is self-sufficient even without annotations or explicit output schema detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The Args section explains each parameter with meaning and default: query is the user's search query, fhir_document_id matches the FHIR DocumentReference ID, and top_k defaults to 10. Since schema description coverage is 0%, this parameter detail is essential and fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Searches the Pinecone vector index for information related to the given document by FHIR DocumentReference ID.' This specifies the verb, resource, and scope, and differentiates from sibling tools like add_document_to_pinecone and resource requesters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool ('when the user requests information from the documents, notes'), provides prerequisites (prepare fhir_document_id by running the appropriate tool), and describes when not to use it (unrelated questions). It also names the alternative add_document_to_pinecone for error handling, making the usage guidance comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/maheshbalan/fhir-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server