Authenticate to EPO OPS v3.2 using OAuth 2.0 client credentials: POST your Consumer Key and Consumer Secret to the OPS token endpoint to receive a bearer token
Construct a CQL (Common Query Language) search query for the published-data search endpoint, e.g., applicant=CompanyName AND pd within 20240101,20251231 to find applications by a specific applicant in a date range
Send a GET request to https://ops.epo.org/3.2/rest-services/published-data/search?q={CQL-encoded-query}&Range=1-25; the Range header controls pagination (max 100 results per request)
Parse the Ops:world-patent-data XML response; extract publication numbers, applicant names, IPC/CPC codes, filing dates, and abstract text from the exchange-documents
For each publication number, fetch full bibliographic data using the biblio service and family members using the family service on the published-data endpoint
Monitor the X-Throttling-Control response header on each call to track your remaining quota in the current time window and implement backoff when the quota approaches exhaustion
Known gotchas
The EPO OPS search endpoint uses CQL syntax, not a JSON query DSL; malformed CQL returns a 400 with an XML error body — validate CQL syntax against the OPS documentation before sending programmatic queries
OPS search results are capped at 2,000 total hits per query regardless of pagination; for result sets larger than 2,000, narrow the query with additional filters (date range, IPC code, country code)
The free tier quota of 4 GB per month is shared across all services (biblio, claims, description, images); high-volume image downloads can exhaust the quota quickly — request only the data types you need
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp