MCP server for searching for data assets on data.medicaid.gov
This server has significant definition quality gaps. Both tools are registered via the fastmcp decorator pattern and have basic descriptions, but parameter descriptions are incomplete or missing, input schemas are not fully visible in the provided source, and there is no documented output schema. The tool names follow verb_noun convention (search_*), which is positive, but the parameter documentation falls short of production standards. The descriptions are moderate in length (tool 1: ~200 chars, tool 2: ~280 chars) but contain procedural guidance rather than LLM-optimized clarity. Parameters like 'ctx' (Context type) and 'inventory' (dict[str, Any]) lack proper type hints and constraints in the visible schema.
retrieve details on datasets matching search specifications this tool allows you get to get column/variable level information use the context from the current session to decide which datasets are relevant to the users question through the datajson_search_inventory function. DO NOT PASS IN THE ENTIRE INVENTORY - only search details for a subset of datasets use this whenever asked about column/variable level information
searches data inventory on data.medicaid.gov with simple BM25 search - surfaces relevant candidates for LLM to evaluate use this to discover datasets that are potentially relevant to a users query. add synonyms or other relevant terms to the users query to surface more results
Parameter descriptions incomplete or missing. 'ctx' parameter on both tools has no description. 'inventory' parameter on datajson_search_datasets lacks guidance on structure. LLMs cannot infer what these mean.
Non-JSON-Schema parameter types ('Context' from fastmcp dependency injection). The 'ctx' parameter uses fastmcp.server.context.Context, which cannot be serialized to JSON Schema. This breaks schema introspection and MCP tool registry compatibility.
No output schema documented. Both tools return data (candidates dict, dataset details) but the structure, field names, types, and required fields are not documented in the visible code or docstrings.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Source code truncated. The definition of datajson_search_datasets is incomplete (ends at 'limit':in[...]). Full parameter schema cannot be verified.
Descriptions contain procedural guidance rather than functional clarity. Both tool descriptions tell the agent *how* to use them ('add synonyms', 'use the context') rather than explicitly stating what data they return and when to prefer one tool over another.
No input validation or error handling documented. Tools do not specify what happens if query is empty, k is negative, inventory is malformed, or limit is zero. No recovery guidance.
Parameter constraints missing. The 'k' parameter has a default (10) but no documented minimum, maximum, or range. 'limit' has a default (20) but no bounds. LLMs may pass invalid values.