A measurement corpus and strict-mode checker for MCP tool schemas. Identifies which tool schemas would be rejected by provider strict modes (Anthropic, OpenAI) and provides fixes.
This is a schema validation/linting tool, not a production MCP server. The four demo tools are intentionally flawed examples for testing the checker. Tool descriptions are minimal (10-50 chars), far below the 194-char baseline. No parameter descriptions exist. Schemas are present but deliberately contain violations (root anyOf, open additionalProperties). The server is not designed for agent use, it's a reference implementation for a JSON Schema compliance checker.
root oneOf, the countly-mcp-server#64 shape
no arguments, nothing to reject
string and numeric constraints
additionalProperties left open
All tool descriptions are under 20 characters and provide no actionable context for LLM selection. 'no arguments, nothing to reject' and 'additionalProperties left open' are test labels, not user-facing documentation.
No parameter descriptions exist. Parameters like 'q', 'limit', 'url', 'id', 'key', 'meta' lack any explanation of their purpose, format, or constraints. LLMs cannot infer meaning from names alone.
fetch_either uses root-level anyOf combinator, which violates strict-mode schema constraints. This is intentional (the tool is a test case), but production tools must avoid combinators at the root level.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2025-06-18+ | v2 |
upsert has open additionalProperties on the 'meta' object, allowing arbitrary fields. This is intentional for testing, but production tools should restrict object schemas to known fields.
No output schemas documented. Callers cannot know what fields to expect from any tool response, breaking downstream tool chaining and forcing LLMs to guess at result structure.