DICOM/HL7/FHIR Interoperability MCP Server
This MCP server is a healthcare interoperability toolkit bridging DICOM, HL7v2, and FHIR standards, with optional PACS connectivity.
Free (Reference) Tools
DICOM Tag Lookup/Explanation – Look up any DICOM tag by number or keyword (VR, VM, description, usage, vendor quirks for GE/Siemens/Philips)
HL7 Message Parsing – Parse raw HL7 v2.x pipe-delimited messages into human-readable segments with field names, values, and table lookups
HL7 Segment Explanation – Explain any HL7 segment (e.g., PID, OBX, ORC) with field positions, data types, and optionality
HL7 Table Lookup – Look up HL7 coded table values (e.g., Table 0001 = Administrative Sex)
Premium Mapping & Generation Tools
DICOM → HL7 Mapping – Map DICOM tags to HL7 v2 segment fields with data type conversion notes
HL7 → FHIR Mapping – Map HL7 v2 fields to FHIR R4 resource elements with ConceptMap references
Mirth Connect Channel Generation – Generate complete channel XML with source/destination connectors, transformers, and filters
HL7 Message Validation – Validate HL7 v2.x messages for required fields, data types, table values, and cross-segment consistency
Integration Pattern Explanation – Explain patterns (ADT feed, radiology workflow, order-to-result, patient merge, etc.) with flow diagrams and best practices
Private Tag Decoding – Decode vendor-specific private DICOM tags (Philips, GE, Siemens, Fuji, Agfa, Canon/Toshiba, Hologic)
Sample HL7 Message Generation – Generate realistic sample HL7 messages (ADT, ORM, ORU, MDM, SIU, DFT) for testing
Premium PACS Connectivity Tools
PACS Echo – Verify PACS connectivity via C-ECHO (DIMSE) or HTTP ping (DICOMweb)
PACS Query – Search for studies/series by patient ID, name, accession number, date range, modality, or description via C-FIND or QIDO-RS
PACS Metadata Retrieval – Retrieve detailed DICOM header metadata for a study or series via WADO-RS or C-FIND
PACS Retrieve (C-MOVE) – Initiate C-MOVE to transfer images to a destination AE title (disabled by default, requires explicit opt-in)
PACS Study Summary – Query a study and receive a full interoperability package: PACS metadata + DICOM→HL7 mapping + HL7→FHIR mapping + a pre-filled ORM^O01 message skeleton
PHI Safety Features: Built-in log redaction, result warnings, optional output redaction, and C-MOVE disabled by default.
Enables decoding of Siemens-specific private DICOM tags, supporting specialized medical imaging informatics and interoperability workflows.
Provides support for decoding Toshiba-specific private DICOM tags, ensuring accurate data mapping and integration for healthcare systems using Toshiba equipment.
DICOM/HL7/FHIR Interoperability MCP Server
The only MCP server that bridges DICOM, HL7v2, and FHIR in one package — with optional PACS connectivity.
Built by a healthcare IT engineer with 16 years of PACS, RIS, and integration experience. This isn't a wrapper around a FHIR API or a DICOM tag dictionary — it's the interoperability knowledge that takes years on the job to build, plus the ability to connect to real PACS systems.
What Makes This Different
Capability | This Server | DICOM-only servers | FHIR-only servers |
DICOM tag lookup + vendor quirks | Yes | Yes | No |
HL7v2 message parsing | Yes | No | No |
FHIR R4 resource mapping | Yes | No | Yes |
DICOM ↔ HL7v2 mapping | Yes | No | No |
HL7v2 → FHIR conversion | Yes | No | No |
Mirth Connect channel generation | Yes | No | No |
PACS connectivity (C-FIND/C-MOVE) | Yes | Some | No |
DICOMweb (QIDO-RS/WADO-RS) | Yes | No | No |
Query PACS + auto-map to HL7/FHIR | Yes | No | No |
Vendor private tag decoding (GE, Siemens, Philips) | Yes | Some | No |
Integration pattern knowledge (IHE SWF, ADT flows) | Yes | No | No |
Related MCP server: DICOM API MCP Server
Tools
Reference Tools (Free)
Tool | What It Does |
| Look up any DICOM tag by number or keyword |
| Detailed tag explanation with vendor quirks and gotchas |
| Parse HL7 v2.x messages into human-readable format |
| Explain segment fields, data types, and usage |
| Look up HL7 table values (Administrative Sex, Patient Class, etc.) |
Mapping & Generation Tools (Premium)
Tool | What It Does |
| Map DICOM tags to HL7 v2 fields with conversion notes |
| Map HL7 v2 fields to FHIR R4 resources |
| Generate Mirth Connect channel configurations |
| Validate HL7 messages against the standard |
| Explain healthcare integration patterns with flow diagrams |
| Decode vendor private DICOM tags (GE, Siemens, Philips, etc.) |
| Generate realistic sample HL7 messages for testing |
PACS Connectivity Tools (Premium)
Tool | What It Does |
| Verify PACS connectivity (C-ECHO or DICOMweb ping) |
| Search for studies/series by patient, date, modality, accession |
| Retrieve detailed study/series metadata from PACS |
| C-MOVE images to a destination AE title |
| Query a study + auto-map through DICOM→HL7→FHIR with generated ORM |
Installation
Reference tools only (no PACS connectivity):
pip install dicom-hl7-mcpWith PACS connectivity (adds pynetdicom + httpx):
pip install dicom-hl7-mcp[pacs]Configuration
Basic (Reference Tools Only)
Add to your Claude Desktop config:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"dicom-hl7-assistant": {
"command": "uvx",
"args": ["dicom-hl7-mcp"]
}
}
}With Premium License
{
"mcpServers": {
"dicom-hl7-assistant": {
"command": "uvx",
"args": ["dicom-hl7-mcp"],
"env": {
"DICOM_HL7_LICENSE_KEY": "your-license-key-here"
}
}
}
}With PACS Connectivity (Traditional DICOM)
Connect to a PACS using C-FIND/C-MOVE/C-ECHO:
{
"mcpServers": {
"dicom-hl7-assistant": {
"command": "uvx",
"args": ["--with", "dicom-hl7-mcp[pacs]", "dicom-hl7-mcp"],
"env": {
"DICOM_HL7_LICENSE_KEY": "your-license-key-here",
"DICOM_HL7_PACS_AE_TITLE": "YOUR_PACS",
"DICOM_HL7_PACS_HOST": "pacs.hospital.org",
"DICOM_HL7_PACS_PORT": "4242",
"DICOM_HL7_LOCAL_AE_TITLE": "CLAUDE_MCP"
}
}
}
}With PACS Connectivity (DICOMweb)
Connect to a DICOMweb-capable PACS (QIDO-RS/WADO-RS):
{
"mcpServers": {
"dicom-hl7-assistant": {
"command": "uvx",
"args": ["--with", "dicom-hl7-mcp[pacs]", "dicom-hl7-mcp"],
"env": {
"DICOM_HL7_LICENSE_KEY": "your-license-key-here",
"DICOM_HL7_DICOMWEB_URL": "https://pacs.hospital.org/dicom-web",
"DICOM_HL7_DICOMWEB_AUTH": "bearer",
"DICOM_HL7_DICOMWEB_TOKEN": "your-auth-token"
}
}
}
}Environment Variables
Variable | Required | Default | Description |
| For premium | — | Premium license key |
| No |
| Logging level |
Traditional DICOM | |||
| For DIMSE | — | Remote PACS AE title |
| For DIMSE | — | Remote PACS hostname/IP |
| For DIMSE | — | Remote PACS port |
| No |
| This server's AE title |
DICOMweb | |||
| For DICOMweb | — | DICOMweb base URL |
| No |
| Auth type: |
| For bearer | — | Bearer token |
| For basic | — | Basic auth username |
| For basic | — | Basic auth password |
Safety | |||
| No |
| Protocol: |
| No |
| Enable C-MOVE ( |
| No |
| Redact patient name/ID in output |
PHI Safety
When connected to a real PACS, query results contain Protected Health Information (PHI).
Log redaction: PHI fields are automatically stripped from all log output
Result warnings: Every PACS query result includes a PHI warning banner
Optional redaction: Set
DICOM_HL7_PHI_REDACT=trueto replace patient name/ID with[REDACTED]in tool outputNo disk caching: PACS query results are never written to disk
C-MOVE is disabled by default: Must explicitly set
DICOM_HL7_PACS_ALLOW_RETRIEVE=true
Important: Do not use PACS connectivity with cloud-hosted LLMs unless your organization's policies permit sending PHI to that LLM provider. For on-premises deployments or local LLM setups, this is not a concern.
Real-World Examples
"What is DICOM tag (0008,0050)?"
AccessionNumber — SH — RIS-generated number that identifies the order. THE key field for matching RIS orders to PACS studies.
Parse an HL7 message
"Parse this HL7 message:"
MSH|^~\&|RIS|RAD|EMR|HOSP|20240315140000||ORU^R01|MSG003|P|2.5.1 PID|1||MRN12345^^^HOSP^MR||DOE^JOHN||19650315|M OBR|1|ORD001|ACC001|CTABD^CT Abdomen^L|||20240315130000 OBX|1|FT|&GDT^Report||FINDINGS: Normal CT.||||||F
Returns each segment parsed with field names, values, table lookups, and contextual explanations.
Query PACS + Auto-Map to HL7/FHIR (Premium)
"Look up accession number ACC12345 in PACS and show me the HL7/FHIR mapping"
Returns a complete interoperability summary:
Study metadata from PACS (patient, date, modality, description)
DICOM→HL7 field mapping for every key field
HL7→FHIR R4 resource mapping
A pre-filled HL7 ORM^O01 message skeleton
Integration pattern context (IHE SWF workflow)
Map DICOM → HL7 (Premium)
"What HL7 field does DICOM Accession Number map to?"
Returns: OBR-3 / ORC-3 (Filler Order Number) with data type conversion notes (SH → EI) and mapping pitfalls.
Generate a Mirth Channel (Premium)
"Generate a Mirth channel for receiving ADT messages and writing to a FHIR server"
Returns: Complete channel config with MLLP source, FHIR HTTP destination, transformer steps, event filtering, and implementation notes.
Knowledge Base
Standards Coverage
DICOM: ~200 most common tags, SOP Classes, Transfer Syntaxes, private tag ranges for 7 vendors
HL7 v2.x: 15 segments, 20+ tables, message types (ADT, ORM, ORU, MDM, SIU, DFT, BAR), versions 2.3-2.9
FHIR R4: Mappings for Patient, Encounter, ServiceRequest, DiagnosticReport, Observation, AllergyIntolerance, Condition, RelatedPerson, Coverage
Integration Patterns: ADT Feed, Order-to-Result, Radiology Workflow (IHE SWF), Lab Interface, Report Distribution, Patient Merge, Charge Posting
Where the Knowledge Comes From
The tags, segments, and mappings are from published standards (DICOM PS3.6, HL7 v2.5.1, FHIR R4, HL7 v2-to-FHIR IG). The vendor quirks, integration tips, and "watch out for this" notes come from 16 years of building PACS/RIS/HIS interfaces in production healthcare environments.
Premium License
Free tier gives you DICOM tag lookup, HL7 parsing, and segment explanation — the tools you use every day.
Premium unlocks cross-standard mapping, Mirth generation, validation, PACS connectivity, and the deep integration knowledge that takes years to build.
Get your license: nyxtools.gumroad.com
FAQ
Do I need a license for the free tools? No. Install and use the 5 free tools immediately. No account, no sign-up.
Do I need PACS connectivity?
No. The reference and mapping tools work without any PACS connection. PACS connectivity is optional — install with pip install dicom-hl7-mcp[pacs] only if you want to query real PACS systems.
What HL7 versions are supported? v2.3 through v2.9, with focus on v2.5.1 (the most widely deployed in US healthcare).
Is this HIPAA compliant? The reference tools process standards metadata, not patient data. PACS connectivity tools access real patient data — PHI safety measures are built in (log redaction, optional output redaction, C-MOVE disabled by default), but you are responsible for ensuring use complies with your organization's policies.
What PACS systems are supported? Any PACS that supports DICOM C-FIND/C-ECHO (virtually all of them) or DICOMweb (QIDO-RS/WADO-RS). Tested with Orthanc, RamSoft, and DCM4CHEE.
Development
git clone https://github.com/NyxToolsDev/dicom-hl7-mcp-server.git
cd dicom-hl7-mcp-server
pip install -e ".[dev]"
pytestLicense
MIT License. See LICENSE.
Built by NyxTools
Available Tools
17 toolsdecode_private_tagsA
[Premium] Decode vendor-specific private DICOM tags. Returns known private tag meaning for Philips, GE, Siemens, Fuji, Agfa, Canon/Toshiba, Hologic.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Private DICOM tag number (e.g., '0019,100C', '0029,1010'). | |
| vendor | No | Optional vendor hint: 'GE', 'Siemens', 'Philips', 'Fuji', 'Agfa', 'Canon', 'Toshiba', 'Hologic'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses '[Premium]' access restriction and that it 'Returns known private tag meaning', indicating read-only behavior. However, it lacks details on error handling (unknown tags/vendors), return format structure, or rate limits.
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 sentences with zero waste. Front-loaded with access tier '[Premium]', followed by action 'Decode', scope 'vendor-specific private DICOM tags', and return value description. Every word earns its place.
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 2-parameter tool with 100% schema coverage and no output schema, the description adequately covers the basic operation but lacks specifics on return format, error states, or fallback behavior when tags are unknown. Minimum viable for the complexity level.
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%, establishing baseline 3. The description reinforces the vendor parameter by listing supported vendors (Philips, GE, etc.), but does not add syntax details, validation rules, or semantic relationships beyond what the schema already provides.
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 uses specific verb 'Decode' with resource 'vendor-specific private DICOM tags' and explicitly lists supported vendors (Philips, GE, Siemens, etc.). It clearly distinguishes from siblings like lookup_dicom_tag and explain_dicom_tag by specifying 'private' tags versus standard DICOM tags.
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?
Provides clear context by specifying this handles 'private' DICOM tags from specific vendors, implicitly guiding selection when standard tag lookups fail. However, it does not explicitly name sibling alternatives (e.g., 'use lookup_dicom_tag for standard tags') or state exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_dicom_tagA
Get a detailed explanation of a DICOM tag with context, including what it is, when it's used, common values, vendor quirks (Philips, GE, Siemens), gotchas, and related tags.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | DICOM tag identifier (number or keyword). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and succeeds by disclosing specific content domains: vendor-specific quirks (Philips, GE, Siemens), common values, related tags, and gotchas. This gives the agent clear expectations about the explanation's scope and depth.
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?
Single, dense sentence that is appropriately front-loaded with the core action. Every clause (vendor quirks, gotchas, related tags) earns its place by differentiating the tool's output. Slightly information-dense but efficient for the complexity described.
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 single-parameter lookup tool with no output schema, the description adequately compensates by qualitatively describing the detailed explanation content. It appropriately focuses on what the explanation contains rather than structural return values.
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 coverage is 100% ('DICOM tag identifier (number or keyword)'), establishing a baseline of 3. The description references the tag implicitly but does not add syntax examples, format specifications, or validation rules beyond what the schema provides.
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?
States a specific verb ('Get') and resource ('detailed explanation of a DICOM tag') with clear scope. Effectively distinguishes from sibling 'lookup_dicom_tag' by emphasizing depth (vendor quirks, gotchas, context) versus simple lookup.
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?
Provides clear context about the richness of returned information (vendor quirks, common values, gotchas) which implies when to use it (for deep understanding/troubleshooting). Lacks explicit 'when not to use' or named alternatives, though the content description makes the distinction clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_hl7_segmentB
Explain what an HL7 segment does and list all its fields with positions, data types, optionality, table references, and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| segment_name | Yes | HL7 segment identifier (e.g., 'PID', 'OBX', 'MSH', 'ORC'). |
TDQS
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 return structure (fields with positions, data types, etc.) but omits safety characteristics (read-only vs. destructive), error handling for invalid segment names, or idempotency guarantees.
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?
Single dense sentence efficiently packs the purpose and detailed output specification. No filler words; every clause conveys essential information about the tool's function and return value structure.
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?
Given the absence of an output schema, the description adequately compensates by detailing the return value structure (positions, data types, optionality, etc.). However, it could be improved by mentioning error handling for unknown segment names or noting that this is a reference lookup operation.
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 coverage is 100% with the segment_name parameter fully documented in the schema. The description does not add additional parameter context (e.g., case sensitivity, valid character sets, or examples beyond those in the schema), meeting the baseline for high schema coverage.
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 tool explains HL7 segments and specifies the detailed output (fields, positions, data types, optionality, table references). This distinguishes it from sibling tools like parse_hl7_message or validate_hl7_message, though it doesn't explicitly name those alternatives.
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 provides no guidance on when to use this tool versus alternatives like parse_hl7_message (for parsing instances) or lookup_hl7_table (for code lookups). It omits prerequisites or contextual triggers for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_integration_patternA
[Premium] Explain common healthcare integration patterns including message flow diagrams, trigger events, expected segments, common pitfalls, and best practices. Patterns: 'ADT feed', 'order to result', 'radiology workflow', 'lab interface', 'report distribution', 'patient merge', 'charge posting'.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern_name | Yes | Integration pattern name (e.g., 'ADT feed', 'radiology workflow', 'order to result'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and successfully discloses what the tool produces (message flow diagrams, expected segments, common pitfalls, best practices). This gives clear behavioral context about the output format. It does not clarify what [Premium] implies for access restrictions or rate limits, but covers the core behavioral traits.
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 efficiently structured with the [Premium] tag and main purpose front-loaded, followed by a comprehensive list of content deliverables and valid pattern names. Every element earns its place; there is no redundant or wasteful text.
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?
Given the tool's single-parameter simplicity and lack of output schema, the description adequately compensates by detailing what the explanation will contain (diagrams, segments, pitfalls). For an educational tool of this scope, the description provides sufficient context for successful invocation, though it could note the output format structure.
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?
While the schema has 100% description coverage with examples, the description adds significant value by enumerating the complete set of valid pattern options (seven specific patterns) beyond the schema's limited examples. This compensates for the lack of enum constraints in the schema and guides the user toward valid inputs.
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 uses specific verbs ('Explain') and resources ('healthcare integration patterns') and explicitly enumerates included content types (message flow diagrams, trigger events, best practices). It clearly distinguishes from operational siblings like parse_hl7_message or pacs_query by focusing on architectural/educational content rather than data processing.
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 provides an implicit usage guide by listing the seven supported pattern names ('ADT feed', 'order to result', etc.), indicating the tool handles these specific scenarios. However, it lacks explicit when-to-use guidance comparing this educational tool against its siblings or stating prerequisites for the [Premium] designation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_mirth_channelA
[Premium] Generate Mirth Connect channel configuration XML. Creates a channel skeleton with source/destination connectors, transformer steps, filter logic, and implementation notes.
| Name | Required | Description | Default |
|---|---|---|---|
| source_type | Yes | Source data format: 'HL7v2', 'DICOM', 'FHIR', 'Database', or 'File'. | |
| destination_type | Yes | Destination data format: 'HL7v2', 'FHIR', 'Database', 'File', or 'HTTP'. | |
| use_case | Yes | Description of the integration use case (e.g., 'ADT feed from Epic to PACS'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses output structure ('channel skeleton with source/destination connectors, transformer steps, filter logic, and implementation notes'), adding value beyond the schema. However, lacks safety profile (read-only vs destructive), persistence details, or scope limitations.
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 sentences, front-loaded with purpose. '[Premium]' prefix is minor clutter but second sentence efficiently lists output components. No redundant words.
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?
Adequate for a 3-parameter generation tool without output schema. Description compensates by detailing what the generated XML contains (skeleton components). Would benefit from noting whether output is returned as string or saved to file, but sufficient for agent selection.
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 has 100% description coverage (source_type, destination_type, use_case all documented). Description mentions 'source/destination connectors' which conceptually maps to parameters but adds no syntax, validation rules, or format details beyond schema. Baseline 3 appropriate.
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?
Specific verb ('Generate') and resource ('Mirth Connect channel configuration XML') clearly stated. Distinguishes from siblings (all siblings are query/parse/explain tools; this is the only code generation tool for integration engine configuration).
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?
Implies usage context (creating Mirth channel skeletons) but lacks explicit when-to-use guidance or alternatives. No mention of whether to use explain_integration_pattern first, or when this generation might fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_sample_messageA
[Premium] Generate realistic sample HL7 messages for testing. Supports ADT^A01, ADT^A04, ADT^A08, ADT^A03, ADT^A34, ADT^A40, ORM^O01, ORU^R01, MDM^T02, SIU^S12, DFT^P03.
| Name | Required | Description | Default |
|---|---|---|---|
| message_type | Yes | HL7 message type (e.g., 'ADT^A01', 'ORM^O01', 'ORU^R01'). | |
| scenario | No | Optional scenario description (e.g., 'emergency CT', 'routine MRI', 'outpatient X-ray'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Adds critical '[Premium]' access constraint and 'realistic' quality indicator, plus boundary constraints (supported message types list). However, omits error behavior for unsupported types, idempotency, quota/credit consumption, and output format details.
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?
Single sentence with zero waste. Front-loads '[Premium]' status and main verb, follows with supported types list. Every element earns its place; no filler text despite high information density.
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?
Appropriate for a 2-parameter tool without output schema. Covers core functionality, access level, and input constraints. Missing only error handling details and output structure description, which would be nice-to-have given the 'Premium' flag.
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 has 100% description coverage (baseline 3), but description adds significant value by enumerating all supported message_type values (ADT^A01 through DFT^P03) which the schema doesn't constrain as enums. This specific list helps agents select valid inputs.
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?
Clear specific verb ('Generate') + resource ('sample HL7 messages') + context ('for testing'). The exhaustive list of supported message types (ADT^A01, ORM^O01, etc.) effectively distinguishes this from siblings like parse_hl7_message and validate_hl7_message.
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?
Provides implied usage context ('for testing') but lacks explicit when-to-use/when-not-to-use guidance or named alternatives. Doesn't clarify relationship to generate_mirth_channel or when to use real vs. sample data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_dicom_tagA
Look up any DICOM tag by group/element number or keyword. Returns tag number, name, VR, VM, description, common values, and usage notes. Accepts formats: '0010,0010', '(0010,0010)', 'PatientName', 'patient name'.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | DICOM tag number (e.g., '0010,0010') or keyword (e.g., 'PatientName', 'patient name'). |
TDQS
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 effectively compensates for the missing output schema by explicitly listing all returned fields (tag number, name, VR, VM, description, common values, usage notes), giving the agent clear expectations about the tool's output structure.
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 tightly structured with three distinct information units: purpose (sentence 1), return values (sentence 2), and input formats (sentence 3). Every clause earns its place with zero redundancy or filler text, presenting information in order of operational importance.
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 single-parameter lookup tool with no annotations, the description is complete. It covers the tool's function, input flexibility, and return structure comprehensively. The absence of an output schema is adequately mitigated by the detailed return value description, making this sufficient for correct agent 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?
While the schema has 100% coverage and documents the basic parameter, the description adds valuable semantic context by specifying additional valid input formats, particularly the parenthetical syntax '(0010,0010)' which supplements the schema's examples. This helps the agent understand the flexible parsing capabilities.
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 specific action (Look up), target resource (DICOM tag), and input methods (group/element number or keyword). It effectively distinguishes from siblings like pacs_query (which retrieves studies) and decode_private_tags (specific to private tags) by focusing on standard tag dictionary lookup.
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 provides implied usage guidance through detailed input format examples ('0010,0010', '(0010,0010)', 'PatientName'), helping the agent construct valid inputs. However, it lacks explicit differentiation from the sibling explain_dicom_tag tool or clear when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_hl7_tableA
Look up HL7 table values. Returns the table name and all defined values with descriptions. Example: Table 0001 = Administrative Sex.
| Name | Required | Description | Default |
|---|---|---|---|
| table_number | Yes | HL7 table number (e.g., '0001', '0004', '76'). Leading zeros optional. |
TDQS
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 successfully explains the return payload ('Returns the table name and all defined values with descriptions'), which is critical given the lack of an output schema. However, it omits other behavioral traits like whether the operation is idempotent, cached, or if there are rate limits.
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 extremely tight: one sentence for the action, one for the return value, and a concrete example. Every element earns its place. There is no redundancy with the schema or unnecessary verbosity.
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?
Given this is a simple single-parameter lookup tool without an output schema, the description adequately compensates by describing the return structure. It does not need to explain complex nested objects or error scenarios. For its complexity level, the description is complete, though usage guidelines would improve it.
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?
While the input schema has 100% coverage and already documents the table_number format (including examples like '0001'), the description adds valuable semantic context by specifying that Table 0001 corresponds to 'Administrative Sex.' This helps the agent understand what kind of data these tables contain beyond just the numeric identifier.
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 tool 'Look[s] up HL7 table values' with a specific verb and resource type. It distinguishes itself from DICOM siblings (lookup_dicom_tag) and other HL7 siblings (explain_hl7_segment, parse_hl7_message) by focusing on 'tables' rather than segments or messages. The example (Table 0001 = Administrative Sex) clarifies the domain.
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 provides no guidance on when to use this tool versus alternatives like explain_hl7_segment (which explains segment definitions) or other lookup tools. It does not specify prerequisites, such as needing a valid HL7 table number, or when to prefer this over parsing a message directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_dicom_to_hl7A
[Premium] Map DICOM tags to equivalent HL7 v2 fields. Returns corresponding HL7 segment.field, mapping notes, and data type conversions.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | DICOM tag identifier (number or keyword). Example: '0010,0010' or 'PatientName'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses return structure ('HL7 segment.field, mapping notes, and data type conversions') which is valuable without output schema, but omits safety properties (read-only status, idempotency) and operational constraints.
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 efficient sentences with zero waste. Front-loaded with purpose '[Premium] Map...' followed immediately by return value specification. Every clause delivers distinct value (operation, domain, return structure).
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 specialized medical informatics tool without output schema, adequately describes return values. Single parameter is well-documented in schema. Minor gap: [Premium] flag hints at access constraints but description doesn't elaborate on authentication or rate limiting implications.
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 has 100% description coverage with examples ('0010,0010' or 'PatientName'). Description mentions 'DICOM tags' generally but does not augment parameter semantics beyond what the schema provides. Baseline 3 appropriate given schema completeness.
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?
Specific verb ('Map') with clear resources ('DICOM tags', 'HL7 v2 fields') and explicit scope. Distinguishes from sibling explain_dicom_tag (explains vs maps) and map_hl7_to_fhir (different source/target standards).
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?
Provides clear domain context (DICOM-to-HL7 mapping) that implies usage, but lacks explicit when-to-use guidance versus alternatives like explain_dicom_tag or lookup_dicom_tag. No 'when-not' exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_hl7_to_fhirA
[Premium] Map HL7 v2 segments/fields to FHIR R4 resources. Returns FHIR resource, element path, ConceptMap reference, and conversion notes.
| Name | Required | Description | Default |
|---|---|---|---|
| field_ref | Yes | HL7 field reference in SEGMENT-POSITION format (e.g., 'PID-3', 'OBR-4', 'PV1-7'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It compensates by detailing the return structure (FHIR resource, element path, ConceptMap reference, conversion notes), but omits safety traits (read-only status), error handling behavior for invalid field_refs, or implications of the '[Premium]' tag (rate limits, access restrictions).
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 tightly constructed sentences with zero waste: first states the transformation purpose, second states the return values. The '[Premium]' tag is front-loaded and material to usage.
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 single-parameter conversion tool without output schema, the description adequately covers the conversion direction, FHIR version specificity (R4), and return value structure. Minor gap in not describing error scenarios or validation behavior.
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 coverage is 100%, providing complete parameter documentation. The description mentions 'segments/fields' generally but does not add semantic context, constraints, or format guidance beyond what the schema already specifies for 'field_ref'.
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 states a specific verb ('Map') and clear resource types ('HL7 v2 segments/fields' to 'FHIR R4 resources'), distinguishing it from siblings like 'map_dicom_to_hl7' (different direction/format) and 'explain_hl7_segment' (explanation vs. conversion).
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 implies usage through the specific domain (HL7-to-FHIR conversion), but provides no explicit 'when to use' guidance, prerequisites (e.g., understanding SEGMENT-POSITION format), or alternatives to this mapping approach.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacs_echoA
[Premium] Verify PACS connectivity. Sends a C-ECHO (DIMSE) or HTTP ping (DICOMweb) to confirm the PACS server is reachable and accepting connections. Returns success/failure, response time, and connection details.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and succeeds in disclosing the mechanism (C-ECHO/HTTP ping) and return values (success/failure, response time, connection details). Could be improved by mentioning timeout behavior or whether this requires specific network permissions.
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?
Perfectly structured: premium tag, one-sentence purpose, mechanism explanation, and return value disclosure. No wasted words; every clause adds necessary context beyond the structured fields.
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 zero-parameter tool without an output schema, the description adequately compensates by detailing the return values in text. Would benefit from mentioning error conditions or timeout handling, but sufficient for the tool's complexity.
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?
Input schema has zero parameters, establishing a baseline of 4. The description appropriately focuses on behavior and outputs rather than inventing parameter documentation where none exists.
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?
Excellent specificity: 'Verify PACS connectivity' uses a clear verb + resource, and the mention of 'C-ECHO (DIMSE) or HTTP ping' technically distinguishes this from siblings like pacs_query and pacs_retrieve which perform data operations rather than connectivity checks.
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?
Provides implied usage context ('confirm the PACS server is reachable'), suggesting when to use it (before data operations), but lacks explicit guidance like 'Use this before pacs_query' or warnings about when not to use it vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacs_get_metadataA
[Premium] Retrieve detailed metadata for a study or series from PACS. Returns DICOM header information including patient, study, series, and equipment details. Uses WADO-RS metadata (DICOMweb) or series-level C-FIND (DIMSE).
| Name | Required | Description | Default |
|---|---|---|---|
| study_instance_uid | Yes | Study Instance UID to retrieve metadata for. | |
| series_instance_uid | No | Optional Series Instance UID for series-level metadata. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It successfully discloses the return content (DICOM header information with specific categories) and implementation protocols (WADO-RS metadata or DIMSE C-FIND). The '[Premium]' tag indicates access restrictions. However, it lacks details on error handling, rate limits, or response format specifics.
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 efficiently structured across three sentences: the first establishes the core action and access tier ([Premium]), the second details the return payload, and the third specifies the underlying protocols. Every sentence provides distinct value with no redundancy.
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?
Given the absence of an output schema, the description adequately compensates by enumerating the categories of returned DICOM header information. It covers the essential behavioral and protocol context for a 2-parameter read operation. A minor gap remains regarding error conditions or explicit return format specifications.
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 input schema has 100% description coverage, establishing a baseline of 3. The description mentions 'study or series' which aligns with the two parameters (study_instance_uid and series_instance_uid), but does not add semantic clarification, examples, or format constraints beyond what the schema already provides.
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 provides a specific verb ('Retrieve'), clear resource ('detailed metadata for a study or series from PACS'), and distinguishes from siblings like pacs_retrieve and pacs_query by specifying it returns 'DICOM header information' and uses specific protocols (WADO-RS metadata/C-FIND) rather than image retrieval or general study search.
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 provides clear technical context that distinguishes this tool—specifying it returns DICOM header details (patient, study, series, equipment) and uses WADO-RS metadata or C-FIND protocols. This implies when to use it (when header metadata is needed, not images). However, it lacks explicit 'when not to use' guidance or named alternatives (e.g., 'use pacs_retrieve for image data').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacs_queryB
[Premium] Search PACS for studies or series. Supports filtering by patient ID, patient name, accession number, study date (YYYYMMDD or range), modality, and study description. Returns up to 50 results. Uses C-FIND (DIMSE) or QIDO-RS (DICOMweb).
| Name | Required | Description | Default |
|---|---|---|---|
| query_level | No | Query level: 'STUDY' or 'SERIES'. Default: STUDY. | STUDY |
| patient_id | No | Filter by Patient ID. | |
| patient_name | No | Filter by patient name. Supports wildcards (* or ?). | |
| accession_number | No | Filter by accession number. | |
| study_date | No | Filter by study date. YYYYMMDD for exact, YYYYMMDD-YYYYMMDD for range. | |
| modality | No | Filter by modality (CT, MR, US, XR, MG, etc.). | |
| study_description | No | Filter by study description (partial match). | |
| study_instance_uid | No | Filter by Study Instance UID. Required for SERIES level queries. | |
| limit | No | Maximum results to return (1-50). Default: 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It adds crucial behavioral context: the 50-result limit, '[Premium]' tier indicator, and underlying protocols (C-FIND/QIDO-RS). However, it omits safety disclosure (read-only nature), authentication requirements, and what the results contain given no output schema exists.
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?
Well-structured and front-loaded with the '[Premium]' tag and primary purpose. Four sentences efficiently convey scope, filters, limits, and implementation details. Minor redundancy in listing all filter fields that are already well-documented in the schema, but this aids scannability.
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?
With 9 parameters and no output schema, the description adequately covers input capabilities but only minimally addresses return values ('Returns up to 50 results' without describing structure or fields). Given the medical domain complexity, it should describe the return format or study/series object structure since no output schema compensates.
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?
Input schema has 100% description coverage, establishing baseline 3. The description lists the available filters but adds no semantic meaning beyond what the schema already provides (e.g., date format YYYYMMDD is documented in both). No additional parameter syntax or examples are provided.
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?
Clearly states the tool searches PACS for studies or series with specific filtering capabilities. However, it does not explicitly differentiate from sibling tools like 'pacs_retrieve' or 'pacs_study_summary', though the verb 'Search' implies read-only query vs. retrieval.
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?
Provides implied usage through the specific mention of C-FIND/QIDO-RS protocols (query operations) which distinguishes it from retrieval operations. However, lacks explicit guidance on when to use this versus 'pacs_retrieve', 'pacs_get_metadata', or 'pacs_study_summary' for users unfamiliar with DICOM protocol differences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacs_retrieveA
[Premium] Initiate C-MOVE to send images from PACS to a destination AE title. This moves real images across the network — use with care. Only available via DIMSE protocol. Requires DICOM_HL7_PACS_ALLOW_RETRIEVE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| study_instance_uid | Yes | Study Instance UID to retrieve. | |
| destination_ae_title | Yes | Destination AE title to send images to. | |
| series_instance_uid | No | Optional Series Instance UID for series-level retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses network side effects ('moves real images across the network') and configuration prerequisites, but omits execution details like synchronous/asynchronous behavior, error handling, return values, or idempotency characteristics crucial for a network mutation operation.
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?
Four sentences with zero waste: front-loaded action ('Initiate C-MOVE...'), safety warning, protocol constraint, and configuration prerequisite. The '[Premium]' tag efficiently signals feature gating without verbosity.
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 complex network operation with side effects and no output schema, the description should describe success indicators or return behavior. It adequately covers prerequisites and safety but leaves the agent unaware of what constitutes successful invocation or failure modes.
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%, establishing a baseline of 3. The description mentions 'C-MOVE' which provides protocol context for the UID parameters, but does not add semantic details beyond the schema (e.g., AE title formatting rules, UID syntax constraints, or examples).
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 specific action ('Initiate C-MOVE'), resource ('images from PACS'), and destination ('destination AE title'). Mentioning 'C-MOVE' specifically distinguishes it from sibling query tools like pacs_query (likely C-FIND) and pacs_echo.
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?
Provides explicit constraints ('Only available via DIMSE protocol', 'Requires DICOM_HL7_PACS_ALLOW_RETRIEVE=true') and safety warnings ('use with care'). Lacks explicit contrast with siblings (e.g., when to use query vs retrieve), but the technical prerequisites serve as clear usage gates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pacs_study_summaryA
[Premium] Query a study from PACS and show its complete interoperability mapping. Returns: (1) study metadata from PACS, (2) DICOM-to-HL7 field mapping for key fields, (3) HL7-to-FHIR resource mapping, (4) a generated HL7 ORM^O01 message skeleton pre-filled with the study's actual data. This is the bridge between 'what's in PACS' and 'how do I represent it in HL7/FHIR'. Search by Study Instance UID or accession number.
| Name | Required | Description | Default |
|---|---|---|---|
| study_instance_uid | No | Study Instance UID to look up. | |
| accession_number | No | Accession number to look up (alternative to UID). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly enumerates the four return components and uses 'Query' implying read-only behavior, but omits explicit safety declarations, error handling (e.g., study not found), rate limits, or whether the '[Premium]' label affects access/behavior.
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?
Front-loaded with the core action and well-structured with the '[Premium]' tag, main function sentence, return value enumeration, bridge metaphor, and input clarification. Slightly redundant in mentioning search parameters at the end since the schema already documents them, but overall efficient for the complexity described.
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?
Given the lack of an output schema, the description adequately compensates by detailing the four complex return structures (including specific message types like ORM^O01). However, it could improve by noting that at least one identifier is logically required (despite schema showing 0 required parameters) or describing error response behavior.
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 has 100% description coverage for both parameters ('Study Instance UID to look up' and 'Accession number to look up (alternative to UID)'). The description adds minimal semantic value beyond the schema, merely confirming 'Search by Study Instance UID or accession number' without adding format constraints, validation rules, or examples.
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 explicitly states the tool 'Query[ies] a study from PACS and show[s] its complete interoperability mapping' and distinguishes from siblings by detailing four specific return components (metadata, DICOM-to-HL7 mapping, HL7-to-FHIR mapping, and HL7 ORM^O01 skeleton) that combine functionality of separate 'map_*' and 'pacs_*' tools into a single interoperability bridge.
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?
Provides implied usage context by describing itself as 'the bridge between what's in PACS and how do I represent it in HL7/FHIR', but lacks explicit guidance on when to choose this comprehensive tool over simpler alternatives like 'pacs_get_metadata' or the individual 'map_dicom_to_hl7' and 'map_hl7_to_fhir' tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_hl7_messageA
Parse an HL7 v2.x message into human-readable format. Returns parsed segments with field names, values, table lookups, and explanations. Supports MSH, PID, PV1, OBR, OBX, ORC, DG1, AL1, NK1, IN1, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Raw HL7 v2.x message string (pipe-delimited). Segments separated by \r, \n, or \r\n. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and succeeds in detailing the transformation behavior: it performs 'table lookups' and provides 'explanations' beyond raw parsing, and specifies supported segments. It implies read-only behavior ('Parse... Returns'), though it could explicitly state safety properties or error handling for invalid messages.
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?
Three sentences with zero waste: sentence 1 defines the core action, sentence 2 describes the return value, and sentence 3 lists specific segment support. Information is front-loaded with the essential verb and resource immediately stated.
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?
Despite lacking an output schema, the description compensates by detailing the return structure ('parsed segments with field names, values, table lookups, and explanations'). The input parameter is fully documented in the schema. Minor gap: no explicit read-only declaration given the absence of safety annotations.
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 coverage is 100%, providing the baseline. The description aligns with the schema by mentioning 'HL7 v2.x message' but does not add parameter-specific semantics beyond the schema's details about pipe-delimiters and segment separators. The segment list (MSH, PID, etc.) relates to capability rather than parameter semantics.
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 uses a specific verb ('Parse') with clear resource ('HL7 v2.x message') and output format ('human-readable'). It distinguishes from siblings like 'validate_hl7_message' (validation vs parsing) and 'explain_hl7_segment' (single segment vs full message) by emphasizing full message parsing with specific segment examples (MSH, PID, etc.).
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 implies usage through the output specification ('Returns parsed segments...'), but lacks explicit when-to-use guidance versus alternatives. It does not indicate whether to use 'validate_hl7_message' first, or when 'explain_hl7_segment' might be preferable for single-segment analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_hl7_messageA
[Premium] Validate an HL7 v2.x message against the standard. Checks required fields, data types, table values, segment structure, and cross-segment consistency.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Raw HL7 v2.x message string to validate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It successfully discloses the validation scope (5 specific check types) and the '[Premium]' prefix signals potential access restrictions. However, it lacks explicit statements about whether the operation is read-only or what happens on validation failure (error throwing vs. error reporting).
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 efficiently structured with the '[Premium]' tag front-loaded, followed by a clear purpose statement and a specific enumeration of validation behaviors. Every sentence contributes essential information without redundancy.
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?
Given the absence of an output schema, the description should ideally specify the return format (e.g., error list, boolean, validated object) for a validation tool. While the validation scope is well-defined, the lack of output specification leaves a significant gap for agent invocation handling.
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 input schema has 100% coverage with a clear description ('Raw HL7 v2.x message string to validate'). The tool description references the message but does not add semantic meaning, format constraints, or examples beyond what the schema already provides. Baseline 3 is appropriate for high schema coverage.
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 states the specific action ('Validate') and resource ('HL7 v2.x message') clearly. The phrase 'against the standard' and the detailed list of validation checks (required fields, data types, etc.) effectively distinguish this tool from the sibling 'parse_hl7_message', which likely only extracts structure without compliance checking.
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?
While the description implies usage through the detailed validation criteria (use when you need standard compliance checking), it lacks explicit guidance on when to choose this over 'parse_hl7_message' or other siblings. There are no stated prerequisites or conditions for when this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
17 tool updates
v0.2.0- First observed
decode_private_tags - First observed
explain_dicom_tag - First observed
explain_hl7_segment - First observed
explain_integration_pattern - First observed
generate_mirth_channel - First observed
generate_sample_message - First observed
lookup_dicom_tag - First observed
lookup_hl7_table - First observed
map_dicom_to_hl7 - First observed
map_hl7_to_fhir - First observed
pacs_echo - First observed
pacs_get_metadata - First observed
pacs_query - First observed
pacs_retrieve - First observed
pacs_study_summary - First observed
parse_hl7_message - First observed
validate_hl7_message
TDQS
Tools are generally well-differentated by resource and action, though 'lookup_dicom_tag' and 'explain_dicom_tag' could be confused (前者 is for dictionary lookup by number/keyword, latter for detailed educational context). Similarly, 'pacs_get_metadata' and 'pacs_study_summary' both retrieve study data but serve different use cases (raw metadata vs interoperability mapping). Overall boundaries are clear enough for correct selection.
Strong verb_noun convention throughout (e.g., decode_private_tags, explain_hl7_segment, validate_hl7_message). The PACS tools consistently use the 'pacs_' prefix, though 'pacs_study_summary' breaks the otherwise consistent pacs_verb/pacs_verb_noun pattern used by pacs_echo, pacs_query, and pacs_retrieve. Mapping tools follow consistent 'map_x_to_y' structure.
With 17 tools, the set slightly exceeds the ideal 3-15 range, but this is reasonable given the server covers three distinct healthcare standards (DICOM, HL7 v2, FHIR) plus PACS operations. Each tool addresses a specific interoperability need without redundancy; no obvious candidates for merging exist without losing clarity.
Covers the full interoperability lifecycle well: DICOM tag inspection, HL7 parsing/validation, bidirectional mapping between standards, PACS connectivity/query/retrieve, and integration pattern guidance. Minor gaps include lack of direct FHIR resource operations (only mapping to FHIR is provided) and no HL7 message transmission capabilities, though these may be outside the server's documentation-focused scope.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Diagnoses, drugs & lab codes: ICD-11, SNOMED, LOINC, RxNorm, MeSH, ATC, CID-10. 33 tools, MIT.
33112Privacy-preserving synthetic health data generation. FHIR R4/R5 compliant.
Offline US medical code lookup and crosswalk — ICD-10-CM/PCS, HCPCS Level II, RxNorm. Keyless.
49 free agent tools: WHOIS, PDF to text, email checks, FX rates, X12 EDI, JSON repair. No API key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to query, read, download, and move medical imaging data on DICOM servers (PACS, VNA) including patient searches, study retrieval, PDF report extraction, and image transfer to AI endpoints for analysis.MIT
- FlicenseNot gradedqualityDmaintenanceExposes DICOM operations as tools for AI agents to interact with medical imaging systems and PACS. It enables searching for studies and series, querying instance metadata, and retrieving pixel data from DICOM entities.-
- AlicenseNot gradedqualityAmaintenanceIntegrates Taiwan health data and international medical standards, providing 28 MCP tools for diagnostics, drugs, lab tests, and clinical guidelines via FHIR R4.163MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to query and read data on DICOM servers (PACS, VNA, etc.).91MIT
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/NyxToolsDev/dicom-hl7-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server