Skip to main content
Glama
edithatogo

Healthpoint MCP Server

by edithatogo

healthpoint-rs

Rust-first tooling for the Healthpoint HL7 FHIR® API: a typed client, CLI, read-only MCP server, and future open-social-data adapter.

This repository is intentionally code-first and data-light:

  • Users bring their own Healthpoint API key/licence.

  • No real Healthpoint API payloads are committed as fixtures.

  • Synthetic FHIR fixtures live in crates/healthpoint-testkit/fixtures/.

  • Local exports are marked with provenance and redistribution status.

  • Open-data publication is opt-in and disabled until licensing/access terms explicitly permit it.

Project shape

healthpoint-rs/
  crates/
    healthpoint-core/         # domain model, query model, provenance, provider traits, URI parsing
    healthpoint-fhir/         # FHIR Bundle/Resource mapping and typed projections
    healthpoint-client/       # HTTP client, auth, request policy, pagination hooks
    healthpoint-export/       # JSON/JSONL/CSV/export manifests
    healthpoint-cli/          # `healthpoint` CLI
    healthpoint-mcp/          # read-only MCP server over the same core/client
    healthpoint-osd-adapter/  # future open_social_data bridge, no hard dependency yet
    healthpoint-testkit/      # synthetic fixtures and offline fixture provider
  conductor/                  # context-management state, decisions, checkpoints, tracks
  docs/                       # access, licensing, MCP, exports, integration roadmap

Related MCP server: Medplum

Installation

Install from crates.io after Rust is available:

cargo install healthpoint-mcp healthpoint-cli

Install from source checkout:

git clone https://github.com/edithatogo/healthpoint-rs.git
cd healthpoint-rs
bin/conductor-setup
cargo install --path crates/healthpoint-mcp
cargo install --path crates/healthpoint-cli

Install through Smithery from the published listing: edithatogo/healthpoint-rs. The Smithery package starts in synthetic mode unless live Healthpoint credentials are supplied.

Usage

First commands

cp .env.example .env
$EDITOR .env
bin/conductor-setup
cargo run -p healthpoint-cli -- doctor
cargo run -p healthpoint-cli -- fixture services --format json
cargo run -p healthpoint-cli -- inspect search-url --text "cervical screening" --snomed 171149006
cargo run -p healthpoint-cli -- search services --text "cervical screening" --format json
cargo run -p healthpoint-cli -- search services --snomed 171149006 --format json
cargo run -p healthpoint-cli -- get service <id> --format json
cargo run -p healthpoint-cli -- get uri healthpoint://service/<id> --format json
cargo run -p healthpoint-mcp

The MCP server is a separate binary so CLI and MCP can evolve independently while sharing the same crates. It starts in synthetic fixture mode when no API key is supplied; set HEALTHPOINT_MODE=live and provide HEALTHPOINT_API_KEY for licensed live API calls.

Configuration

export HEALTHPOINT_MODE="synthetic"                       # synthetic | live
export HEALTHPOINT_API_KEY="..."                         # optional; required only for live mode
export HEALTHPOINT_BASE_URL="https://uat.healthpointapi.com/baseR4/"
export HEALTHPOINT_AUTH_SCHEME="x-api-key"               # bearer | x-api-key | header:<name> | none
export HEALTHPOINT_GEO_SEARCH_MODE="healthpoint-lat-lon" # healthpoint-lat-lon | fhir-near
export HEALTHPOINT_TIMEOUT_SECS="30"
export HEALTHPOINT_EXPORT_POLICY="local-only"            # local-only | licensed-share | open-approved

Healthpoint portal validation on 2026-06-30 confirmed UAT calls use the x-api-key header against https://uat.healthpointapi.com/baseR4/. See docs/healthpoint-api-access.md for observed endpoint and license notes.

CLI examples

healthpoint doctor
healthpoint policy show

healthpoint fixture services --format human
healthpoint schema service-record
healthpoint schema resource-uri

healthpoint inspect search-url \
  --text "cervical screening" \
  --snomed 171149006 \
  --limit 10

healthpoint search services \
  --text "cervical screening" \
  --snomed 171149006 \
  --limit 10 \
  --format json

healthpoint search services \
  --lat -36.8485 \
  --lon 174.7633 \
  --radius-km 10 \
  --format csv

healthpoint get service <service-id> --format json
healthpoint get location <location-id> --format json
healthpoint get organization <organization-id> --format json
healthpoint get uri healthpoint://service/<service-id> --format json

healthpoint export manifest --output .healthpoint/manifest.json
healthpoint export services \
  --text "cervical screening" \
  --limit 25 \
  --format jsonl \
  --output .healthpoint/cervical-screening.jsonl

Tools

Tool

Purpose

healthpoint.diagnostic.status

Show redacted runtime mode, configuration, and readiness.

healthpoint.access.notes

Show non-secret endpoint, auth, and documentation notes.

healthpoint.access.policy

Show the conservative access/export policy before reuse.

healthpoint.services.search

Search HealthcareService records by text, codes, region filters, cursor, and limit.

healthpoint.services.search_snomed

Search HealthcareService records by SNOMED CT code in type, category, or specialty.

healthpoint.services.nearby

Find HealthcareService records near a latitude/longitude point.

healthpoint.service.get

Read one HealthcareService by FHIR id.

healthpoint.location.get

Read one Location by FHIR id.

healthpoint.organization.get

Read one Organization by FHIR id.

healthpoint.resource.read

Read a supported healthpoint:// resource URI.

The MCP server also exposes 3 static resources, 4 resource templates, and 2 prompts. See docs/mcp-tools.md and docs/integrations/mcp-client-configs.md for launch examples.

Claude Desktop source-checkout example:

{
  "mcpServers": {
    "healthpoint-dev": {
      "command": "cargo",
      "args": ["run", "-p", "healthpoint-mcp"],
      "env": {
        "HEALTHPOINT_MODE": "synthetic"
      }
    }
  }
}

Live Healthpoint mode requires a licensed API key:

{
  "mcpServers": {
    "healthpoint-live": {
      "command": "healthpoint-mcp",
      "env": {
        "HEALTHPOINT_MODE": "live",
        "HEALTHPOINT_API_KEY": "...",
        "HEALTHPOINT_BASE_URL": "https://uat.healthpointapi.com/baseR4/",
        "HEALTHPOINT_AUTH_SCHEME": "x-api-key"
      }
    }
  }
}

Integration contracts

The CLI can emit JSON Schema for the core contracts:

healthpoint schema access-policy
healthpoint schema service-query
healthpoint schema service-record
healthpoint schema service-page
healthpoint schema location-record
healthpoint schema organization-record
healthpoint schema resource-uri
healthpoint schema export-manifest

Those schemas are intended to help future integration with open_social_data, MCP clients, and any cross-repo data catalogue layer without prematurely forcing Healthpoint's FHIR graph into a dataframe-first shape.

Offline readiness tools

These commands work before any live Healthpoint validation and are useful in sandboxes or CI metadata jobs:

CONDUCTOR_ALLOW_NO_CARGO=1 bin/conductor-setup
bin/conductor-status
scripts/static-preflight.py
scripts/generate-contract-schemas.py
bin/mock-healthpoint-server --port 8787

After Rust is available, the mock server gives the CLI a synthetic HTTP target:

export HEALTHPOINT_BASE_URL="http://127.0.0.1:8787/"
export HEALTHPOINT_AUTH_SCHEME="none"
cargo run -p healthpoint-cli -- search services --snomed 171149006 --format json

See docs/mock-server.md, docs/static-preflight.md, and docs/live-contract-capture.md.

Development environment

See docs/development-environment.md for native Rust and devcontainer setup.

Design principles

  1. FHIR-first: preserve raw FHIR while exposing typed domain records.

  2. Read-only by default: no writes, no scraping fallback, no public proxy mode.

  3. Bring-your-own-key: releasing code does not bundle access or data rights.

  4. Provenance everywhere: exports carry retrieval time, source, licence status, and tool version.

  5. Integratable later: stable Rust traits make it possible to plug into open_social_data, MCP clients, and future data/catalog engines.

  6. Conductor-managed context: implementation tracks, decisions, and repo state live alongside the code.

  7. Synthetic fixtures only: offline testing is done with testkit resources, never real Healthpoint payloads.

MCP Registry metadata

  • MCP Registry name: mcp-name: io.github.edithatogo/healthpoint-rs

This visible marker is required for Cargo/crates.io ownership verification by the official MCP Registry.

Safety boundary

This is not a clinical decision-support system. It retrieves and formats directory/service information from Healthpoint for licensed users. Any downstream use should preserve Healthpoint attribution, currency, caveats, and licensing obligations.

Current status

Implementation spike after initial scaffold. Synthetic mapping exists for HealthcareService, Location, and Organization, including richer service fields such as eligibility, availability, service provision codes, characteristics, comments, endpoints, identifiers, and response provenance. The public Healthpoint material confirms HL7 FHIR and SNOMED CT orientation, but full endpoint/auth details are intentionally treated as configurable until validated against licensed API documentation.

Available Tools

10 tools
healthpoint_access_policyA

Show conservative Healthpoint access/export policy. Use before exporting or reusing data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description indicates a read-only operation ('Show... policy'). With no annotations, this is adequate. It does not elaborate on output format, but given the simplicity, it's acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence conveys the purpose and usage guideline without any wasted words.

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

Completeness5/5

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

For a parameterless tool with no output schema, the description fully captures the tool's function and appropriate usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100% by default. The description appropriately adds no parameter info as none are needed, meeting the baseline for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it shows the conservative Healthpoint access/export policy, distinguishing it from sibling tools that perform searches, lookups, or diagnostics.

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

Usage Guidelines4/5

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

Explicitly advises to use 'before exporting or reusing data', providing clear context. No exclusion criteria are given, but the guidance is sufficient for this tool.

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

healthpoint_api_access_notesA

Show Healthpoint API access notes discovered from the portal. Does not include secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description bears the burden but only discloses that it 'does not include secrets', adding some behavioral insight but lacking details on read-only nature or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff, front-loaded with action and resource. Every word earns its place.

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

Completeness4/5

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

For a parameterless tool with no output schema, the description is mostly complete: it states the purpose and a key behavioral note. However, it could mention the nature of the notes (e.g., plain text) or format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; schema coverage is 100%. The description adds no parameter info but that is unnecessary. The constraint on output (no secrets) is a plus.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Show' and resource 'Healthpoint API access notes', distinguishing it from siblings like healthpoint_access_policy which likely deals with policy rather than notes.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives; the description only states what it does without indicating prerequisites or when it is appropriate.

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

healthpoint_diagnostic_statusA

Show redacted Healthpoint client configuration and readiness. Never returns the API key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full burden. It discloses a key behavioral trait: it never returns the API key, implying safety. However, it does not mention other aspects like execution speed or side effects, but for a simple status tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded and concise. Every word serves a purpose, with no redundancy or filler.

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

Completeness5/5

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

Given the tool has zero parameters and no output schema, the description is complete. It explains the tool's purpose and a critical constraint (never returns API key), sufficient for an agent to understand and invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is effectively 100%. The description adds no parameter details because none exist. A baseline of 4 is appropriate given no need for parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Show redacted Healthpoint client configuration and readiness', specifying the verb 'Show' and the resource 'client configuration and readiness'. It distinguishes from sibling tools by noting redaction and that it never returns the API key, implying a safe diagnostic status tool.

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

Usage Guidelines3/5

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

The description implies usage for checking configuration and readiness, but does not explicitly state when to use this tool versus alternatives or when not to use it. No guidance on prerequisites or context is provided.

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

healthpoint_find_nearby_servicesA

Find nearby Healthpoint HealthcareService records by latitude/longitude. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude.
lonYesLongitude.
textNoOptional full-text search term.
limitNoMaximum results. Clamped to 1..100.
radius_kmNoOptional radius in kilometres.
service_typeNoOptional service type code or system|code token.

TDQS

A3.7/5.0
Behavior3/5

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

The description declares 'Read-only', which is a key behavioral trait, especially with no annotations provided. However, it does not disclose other behaviors like result ordering, pagination, or default radius, leaving some uncertainty for a tool with 6 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and contains no filler. Every word serves a purpose.

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

Completeness3/5

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

Given the tool has 6 parameters, no output schema, and no annotations, the description provides minimal context. It covers the basic intent but lacks details on return format, default behavior for radius, or how text search interacts with location, making it adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond the schema, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Find', the resource 'nearby Healthpoint HealthcareService records', and the method 'by latitude/longitude'. It distinguishes from sibling tools like healthpoint_get_service (single resource) and healthpoint_search_services (likely text-based).

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

Usage Guidelines3/5

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

The description implies usage for location-based proximity searches but provides no explicit guidance on when to use this tool versus alternatives such as healthpoint_search_services. No exclusion criteria or prerequisites are mentioned.

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

healthpoint_get_locationB

Get a single Healthpoint Location record by FHIR id. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFHIR resource id.

TDQS

B3.1/5.0
Behavior2/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 correctly notes 'Read-only,' which is essential, but does not mention potential error handling, permissions required, or the structure of the returned record.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two sentences with no wasted words. The purpose is front-loaded in the first sentence, and the read-only trait is immediately clarified.

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

Completeness3/5

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

For a simple one-parameter read tool, the description is adequate but could be improved by indicating the output format, especially since no output schema is provided. It does not mention what fields the returned location record contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the single 'id' parameter with description 'FHIR resource id.' The description redundantly states 'by FHIR id,' adding no new semantics. With 100% schema coverage, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get), resource (Healthpoint Location record), and method (by FHIR id). The name reinforces the resource. However, it does not explicitly differentiate from sibling tools like healthpoint_get_organization or healthpoint_get_service, which is a minor gap.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as healthpoint_search_services or healthpoint_get_organization. It simply states what it does without usage context.

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

healthpoint_get_organizationA

Get a single Healthpoint Organization record by FHIR id. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFHIR resource id.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided; description only says 'Read-only.' Does not disclose error behavior (e.g., invalid id), return format, or any side effects. For a simple read, more detail could be useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff, front-loaded with purpose. Every word earns its place.

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

Completeness4/5

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

Given it's a simple get-by-id tool with no output schema, description is mostly complete. Could mention handling of missing records, but sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds no new meaning beyond the schema's 'FHIR resource id'. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Get', resource 'Healthpoint Organization record', and method 'by FHIR id'. Distinguishes from siblings like healthpoint_get_location and healthpoint_get_service.

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives such as healthpoint_search_services. Implied usage for a single record by id, but lacks context on prerequisites or exclusions.

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

healthpoint_get_serviceA

Get a single Healthpoint HealthcareService record by FHIR id. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFHIR resource id.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states 'Read-only', which is a key behavioral trait indicating no side effects. However, it does not disclose other important behaviors such as error handling for invalid ids, response format, or any 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the main action and scope, making it easy to scan.

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

Completeness4/5

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

For a simple one-parameter get operation with no output schema, the description covers the essential purpose. It could optionally mention return behavior, but given the low complexity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% as the single parameter 'id' is described as 'FHIR resource id.' The description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'single Healthpoint HealthcareService record', and the method 'by FHIR id'. Adding 'Read-only' distinguishes it from mutating tools. Among siblings like healthpoint_get_location and healthpoint_get_organization, it uniquely identifies the service type.

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

Usage Guidelines4/5

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

The description implies use when needing a specific service by FHIR id, providing clear context. However, it lacks explicit guidance on when not to use this tool (e.g., if searching is needed) or mention of alternative sibling tools like healthpoint_search_services.

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

healthpoint_read_resource_uriA

Read a supported healthpoint:// resource URI. This mirrors planned MCP resources while keeping the operation explicit and read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesResource URI such as healthpoint://service/<id>.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It adds that the operation is explicit and read-only, which is useful, but does not disclose other behavioral traits such as error handling, rate limits, or authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that convey the purpose and key characteristic (read-only) without wasted words.

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

Completeness3/5

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

Given the absence of an output schema, the description does not explain return values, which is a gap for a read operation. It also lacks error case details, making it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add significant meaning beyond the schema's description of the 'uri' parameter. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a healthpoint:// resource URI, specifying the verb 'read' and the resource type. It distinguishes from siblings by being a generic reader rather than specific endpoints like get_service.

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

Usage Guidelines3/5

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

The description implies usage for reading any healthpoint:// URI but does not explicitly state when to use this tool over more specific siblings like healthpoint_get_service or healthpoint_get_location. No exclusion criteria or alternatives are mentioned.

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

healthpoint_search_by_snomedA

Search Healthpoint HealthcareService records by SNOMED CT code. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesSNOMED CT code.
fieldNoSearch field: type, category, or specialty. Defaults to type.
limitNoMaximum results. Clamped to 1..100.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must fully disclose behavior. It only states 'Read-only', but omits details about authentication, rate limits, error handling, pagination behavior, or what happens when no results are found. This is insufficient for an AI agent to understand side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two short sentences with no unnecessary words. It is front-loaded with the essential action and resource, making it easy to parse quickly.

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

Completeness3/5

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

Given the tool outputs no schema and has three parameters, the description is minimally complete. It lacks details on the return format, result set size limits (beyond the schema-specified clamp), and how results relate to sibling tools. However, for a simple search tool, it meets basic needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters, so the description adds no extra meaning beyond what is already defined. The description mentions SNOMED CT codes but does not elaborate on format or usage beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search'), the resource ('Healthpoint HealthcareService records'), and the search criterion ('by SNOMED CT code'). It effectively distinguishes from siblings like healthpoint_search_services which likely performs broader searches.

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

Usage Guidelines3/5

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

The description mentions 'Read-only' which implies no destructive side effects, but it lacks explicit guidance on when to use this tool versus alternatives such as healthpoint_search_services. No prerequisites or context are provided.

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

healthpoint_search_servicesB

Search Healthpoint HealthcareService records. Read-only; requires a user-provided API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoFull-text search term.
limitNoMaximum results. Clamped to 1..100.
cursorNoPagination cursor from a previous response.
regionNoHealthpoint region, e.g. Southland.
snomedNoConvenience SNOMED CT service type codes. Repeatable.
categoryNoFHIR category code or system|code token. Repeatable.
specialtyNoFHIR specialty code or system|code token. Repeatable.
subregionNoHealthpoint subregion, e.g. Ashburton.
dhb_regionNoHealthpoint DHB region, e.g. Southern.
branch_codeNoHealthpoint branch code, e.g. primary.
service_typeNoFHIR service type code or system|code token. Repeatable.

TDQS

B3.1/5.0
Behavior3/5

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

Discloses read-only nature and API key requirement, which adds value beyond annotations (none provided). However, it does not explain pagination behavior, rate limits, or how multiple filter parameters interact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences) and front-loaded with the purpose. However, it could be slightly more informative without sacrificing brevity.

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

Completeness2/5

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

Given the complexity (11 parameters, no output schema), the description is too minimal. It does not mention return format, pagination details, or how filters combine, leaving significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning to parameters beyond what is already in the input schema (e.g., no explanation of filter combination logic or examples).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Search Healthpoint HealthcareService records.' It is specific but does not differentiate from sibling search tools such as 'healthpoint_search_by_snomed' or 'healthpoint_find_nearby_services', which also perform searches.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. There is no mention of contexts where other tools might be preferred or exclusions.

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

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: policy display, API notes, diagnostic status, nearby search, individual record retrieval for location/organization/service, URI reading, SNOMED search, and general search. No overlapping functionality.

Naming Consistency5/5

All tools follow a consistent 'healthpoint_' prefix with snake_case verb_noun pattern (e.g., find_nearby_services, get_location). No mixing of conventions.

Tool Count5/5

With 10 tools covering metadata, search, and retrieval for a healthcare data domain, the count is well-scoped. Each tool serves a specific purpose without redundancy or bloat.

Completeness5/5

The tool set covers all necessary read-only operations for Healthpoint data: metadata about access and diagnostics, searching by proximity and SNOMED, retrieving individual resources, and parsing URIs. As a read-only server, there are no missing write operations.

Maintenance

ActivityStale
ResponsivenessResponsive

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    This project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for FHIR (beta): https://www.cdata.com/download/download.aspx?sku=KIZK-V&type=beta
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with FHIR resources on Google Cloud Healthcare API through a SmartOnFHIR gateway secured by Firebase Auth, providing access to patient data, medical records, and medical research tools like PubMed.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides seamless integration with FHIR APIs, enabling AI/LLM tools to search, retrieve, and analyze clinical healthcare data with support for SMART-on-FHIR authentication and multiple transport protocols.
    7
    134
    Apache 2.0

Latest Blog Posts

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/edithatogo/healthpoint-rs'

If you have feedback or need assistance with the MCP directory API, please join our Discord server