MCP server for searching and executing queries against the PatentsView API, with support for Code Mode execution in sandboxed V8 isolates
This server exposes 5 tools with significant definition gaps. While schemas are present and mostly typed, descriptions are inconsistent in quality and depth. Tool 1 (search) has a solid description (194 chars) but tools 2-5 lack clarity on when to use them vs alternatives. Parameters are typed but many lack actionable constraints (enums, ranges, formats). No error handling guidance visible. The execute tools accept arbitrary JavaScript code, a powerful but risky pattern requiring explicit security warnings absent from current descriptions. Output schemas are not documented. This is a D-grade server: functional but missing production-quality polish.
Execute JavaScript code against a SPARQL endpoint in a sandboxed V8 isolate. Code runs with sparql.query(), sparql.ask(), sparql.raw() for SPARQL execution, common ontology prefixes, and optional filesystem access. Large responses are auto-staged into SQLite.
Execute JavaScript code against the API in a sandboxed V8 isolate. Code runs with api.get/api.post wrappers, catalog search helpers, and console.log() capture. Large responses (>100KB) are auto-staged into SQLite for SQL queries.
Execute JavaScript code against a GraphQL API in a sandboxed V8 isolate. Code runs with gql.query() for GraphQL execution, schema.* introspection helpers, and optional REST api.get/api.post wrappers. Large responses are auto-staged into SQLite.
Search the API catalog (endpoints). Returns matching endpoints with full parameter docs. Use this to discover API capabilities before calling execute.
Search the OpenAPI spec using JavaScript code or legacy keyword search. Write JavaScript to search paths, list tags, describe operations, or access the full spec object directly.
Multiple tools named 'execute' and 'search' with no clear disambiguation. LLMs cannot distinguish between REST, GraphQL, and SPARQL execute variants without reading full descriptions. Violates verb_noun clarity principle.
No output schema documentation for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does execute() return? Is it a string, object, or structured result?). Violates response-shaper pattern.
Execute tools accept arbitrary JavaScript code with no security warnings, sandboxing caveats, or error recovery guidance. Descriptions do not explain what happens on syntax errors, timeouts, or malicious input. Violates error-classification and recovery-guide patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
'workspace' parameter in execute tools lacks description of what it does, when to use it, or how it affects behavior. Parameter descriptions are required for LLM reasoning.
Search tools accept 'max_results' as a number with no min/max bounds stated in description. LLMs may pass 0, negative, or absurdly large values. Should enforce 1 - 25 range explicitly.