MCP server for searching and retrieving patent data from the European Patent Office (EPO) Open Patent Services API
Server has 5 well-named tools with consistent verb_noun patterns (search_patents, get_biblio, get_family, get_abstract, get_claims). All tools have descriptions (avg 95 chars, within 10-1024 range). Input schemas are present with type declarations and required fields. However, parameter descriptions are minimal (e.g., 'Patent number, epodoc format' lacks format constraints, examples, or validation guidance). Output schemas are completely undocumented, LLMs cannot predict response structure or plan downstream calls. Error handling exists but lacks recovery guidance (e.g., 'EPO: not found' doesn't suggest alternatives). No tool annotations (readOnlyHint, idempotentHint). Credentials passed via _apiKey parameter violates secret-injection pattern, should use server-side environment injection.
Abstract text for a patent.
Bibliographic data for a patent — title, inventors, applicants, dates, classifications.
Claims text for a patent.
INPADOC family — related patent applications worldwide for the same underlying invention.
Search published patents using CQL (EPO Common Query Language). Returns a paginated list of publication numbers matching the query. Example queries: "ta=hydrogen", "in=Tesla", "pa=apple", "txt=neural network AND pd>=2020".
Output schemas completely undocumented. LLMs cannot predict response structure, field names, or types. Breaks tool-chaining and forces agents to guess at response format.
Credentials exposed as _apiKey parameter. Violates secret-injection pattern, credentials will appear in agent logs, traces, and prompt history. Must use server-side environment variable injection.
Parameter descriptions lack format constraints and validation rules. 'Patent number, epodoc format' doesn't specify valid formats (EP1234567 vs EP-1234567?), length, or character restrictions. LLMs cannot validate input before calling.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Error messages lack recovery guidance. 'EPO: not found' and 'EPO: rate-limit' don't tell the LLM what to do next (retry? search first? wait?). Should include actionable next steps.
No tool annotations. Tools lack readOnlyHint (all are read-only), idempotentHint (all are idempotent). Agents cannot determine retry safety or side-effect risk without explicit hints.