A prompt caching manager for OpenRouter that checks cache status and provides discounted rates for cached content
This server presents a single tool 'check_cache' with critical quality gaps. The tool has a basic description but lacks depth, parameter descriptions are missing entirely, output schema is not documented, and the implementation reveals fundamental design issues. The tool name does not clearly convey its action, and the logic (checking if text length > 500) does not align with real prompt caching semantics. No error handling, no validation, no security considerations. This is a minimal proof-of-concept, not production-grade tooling.
Checks if prompt text is cached and returns cache status with discounted rate
No parameter descriptions. The 'prompt_text' parameter has a description, but it is trivial ('The prompt text to check for caching eligibility') and does not explain constraints, format, or why the LLM should pass it.
Tool name 'check_cache' is weak. The verb 'check' is generic and does not clearly signal what the tool does. The tool does not actually interact with a cache system, it only performs a heuristic check on text length. A clearer name would be 'assess_prompt_caching_eligibility' or 'evaluate_cache_discounting'. Ambiguous names cause LLMs to guess wrong.'
Output schema is undocumented. The code returns {'is_cached': bool, 'discounted_rate': float}, but there is no schema definition, type annotations, or field descriptions in the MCP tool registration. LLMs cannot infer output structure from implementation code. LLMs need to know what fields to expect so they can plan downstream tool calls and extract the right data.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | 2026-07-28+ | v2 |
Implementation does not match semantic caching. The logic is: is_cached = (len(prompt_text) > 500). This is not how OpenRouter prompt caching works, it typically caches based on repeated/identical prompts, not text length. The tool is fundamentally misleading about what 'caching' means. State WHAT the tool does, WHEN to use it, and any prerequisites.'
No error handling or validation. The function accepts any string and always returns a dict. No validation of prompt_text (could be empty, null, or extremely large). No error messages to guide recovery.
No transport mechanism detected. The source shows a bare Python class with no MCP protocol integration, no HTTP/SSE/STDIO endpoints, no MCP SDK usage. Cannot determine if this is integrated into an MCP server.