Offline, zero-dependency MCP proxy that federates N downstream MCP servers behind ranked retrieve_tools, call_tool, and list_servers meta-tools. Tool router using BM25/TF-IDF ranking with optional synonym expansion.
Quartermaster defines 3 tools with clear names (retrieve_tools, call_tool, list_servers) and reasonable descriptions (100-150 chars each). All tools have input schemas with typed parameters and descriptions. However, output schemas are not documented in the source code provided, parameter descriptions lack depth (e.g., no format constraints or examples of valid values), and error handling guidance is absent. The tool set is well-composed for a routing gateway, but descriptions fall short of LLM-optimization standards (should be 50-200 chars with actionable context). No tool annotations (readOnlyHint/destructiveHint) are visible.
Forward a tool call to the appropriate downstream MCP server. Validates arguments against the tool's input schema and applies policy rules (allow/deny) before forwarding.
List connected downstream MCP servers and their tool counts. Available only in federated mode (when config.servers is provided).
Ranked, schema-hydrated, confidence-annotated shortlist of tools for a natural-language query. Returns top-K candidates scored by offline BM25/TF-IDF ranker with optional synonym expansion.
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields without knowing what retrieve_tools and call_tool return.
Parameter descriptions lack actionable constraints. 'query' and 'k' in retrieve_tools have no format hints, range bounds, or guidance on valid values. 'arguments' in call_tool is vague about schema validation.
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next (e.g., 'Tool not found, try retrieve_tools first').
No tool annotations visible. call_tool is destructive (forwards writes to downstream servers) but lacks destructiveHint. retrieve_tools is read-only but lacks readOnlyHint.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
call_tool description does not clarify idempotency or retry safety. Agents need to know: if a write succeeds but the response is lost, is it safe to retry?