MCP server providing access to public ClinicMarketIQ healthcare datasets, including catalog browsing, dataset metadata retrieval, schema access, and download URL management with checksum verification.
Strong foundation with all 6 tools properly registered, clear verb-noun naming (list_, search_, get_, verify_), and comprehensive input schemas using Zod. All parameters have type definitions and descriptions. Tool descriptions are well-written (100-200 chars, within baseline 194 avg). All tools correctly annotated with readOnlyHint=true. Key gaps: output schemas are not formally documented in code (only inferred from success() wrapper); error messages are generic ('publicErrorMessage' abstraction hides specifics); no pagination guidance in list_datasets despite accepting offset/limit.
Fetch the canonical public machine index for one ClinicMarketIQ dataset family, including provenance-facing download metadata and immutable manifest pointer.
Return canonical direct download URLs and declared SHA-256 values for a public dataset. This tool never proxies the dataset bytes.
Fetch schema JSON declared by a dataset's immutable public manifest. If schema_name is omitted, returns all declared schemas (currently capped at 10).
List public ClinicMarketIQ dataset families from the canonical catalog. Returns metadata summaries, not observation rows.
Search public dataset family IDs, names, slugs, and publishers in the canonical ClinicMarketIQ catalog.
Compare a caller-provided SHA-256 digest with the canonical digest declared in the public dataset machine index. This bounded check does not download or re-hash large artifact bytes.
Output schemas not formally documented. Tools return structured data via success() wrapper, but no JSON Schema or TypeScript interface is exposed to clients. LLMs cannot plan downstream calls without knowing response field names and types.
Error messages abstracted via publicErrorMessage(). Callers see generic error text without actionable recovery guidance. E.g., 'No published download matched the requested filters' does not suggest trying different format/group parameters or calling list_datasets first.
list_datasets accepts offset/limit but description does not mention pagination or total count. Clients cannot determine if they've fetched all datasets or need to loop. Description should state: 'Returns paginated results; use offset and limit to iterate. Total count included in response.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
get_schema description says 'capped at 10' but no limit parameter exists. If schema_name is omitted, the tool returns all schemas up to 10. This implicit cap should be explicit: add a 'limit' parameter or document the hard cap in the description.
verify_checksum SHA-256 regex accepts both uppercase and lowercase hex, but description does not clarify case-sensitivity. Should state: 'SHA-256 hex digest (64 hex characters, case-insensitive)' to prevent LLM confusion.