Skip to main content

Intellectual property research toolkit for AI agents — patents, trademarks, and prosecution data from USPTO, EPO, JPO, EUIPO, Google Patents, CanLII, WIPO Lex, MPEP, and CPC

Project description

patent-client-agents

Give your AI agent access to the world's patent and trademark data.

CI Docs Python 3.12+ License: Apache-2.0

Full documentation: docs.patentclient.com

Use the hosted demo

The fastest path — nothing to install. Point your MCP-speaking client at the public demo at mcp.patentclient.com:

{
  "mcpServers": {
    "patent-client-agents": {
      "url": "https://mcp.patentclient.com/mcp"
    }
  }
}

Or add a custom connector in CoWork / Claude Desktop with just the URL https://mcp.patentclient.com/mcp — no tokens to paste. On first connect you'll be sent to Google sign-in; approve and you're in. Any verified Google account works. Usage is rate-limited per account (100 MB/day, 20 MB/minute).

This is a public demo — don't send confidential material through it. See the Terms of Use.

Or install locally (Claude Code plugin)

/plugin marketplace add parkerhancock/patent-client-agents
/plugin install patent-client-agents@patent-client-agents
/reload-plugins

See docs.patentclient.com/installation for all seven install modes.


What You Can Do

Ask Claude to research patents and trademarks in natural language:

"Find [Company]'s recent battery patents and summarize the key innovations"

"What's the prosecution history for US Patent 11,234,567?"

"Compare [Company A] and [Company B]'s patent portfolios in mobile display technology"

"Track the legal status of EP3456789 across all designated states"

"What's the current status of trademark serial 97123456, and who filed it?"

"Search the TMEP for guidance on Section 2(d) likelihood-of-confusion refusals"

patent-client-agents connects Claude Code to USPTO (patents, trademark search via TESS, and trademark prosecution), EPO, EUIPO (EU trademarks and designs), Google Patents, and JPO — plus the Federal Circuit, US International Trade Commission (Section 337), the US Copyright Office, and the Unified Patent Court (decisions feed + statutes corpus) for the litigation and adjacent-IP slice. JPO, CanLII, and EUIPO MCP tools register on the local stdio server and the Claude Code plugin only when their credentials are set in the environment; the hosted demo at mcp.patentclient.com does not carry those credentials, so those tool families don't appear there.

Coverage

Source What You Get
Google Patents Global search, full-text, citations, PDFs, families
USPTO ODP Applications, prosecution history, PTAB trials & appeals, petitions, bulk data
USPTO Publications Patent Public Search (PPUBS) full-text search and document retrieval
USPTO Assignments Patent ownership transfers and reel/frame lookups
USPTO Office Actions Rejection analytics, cited references, full-text OA retrieval
USPTO TSDR Trademark Status & Document Retrieval — status, docs, mark images
USPTO Trademark Search (TESS) Live trademark register — search by wordmark, owner, goods/services — requires the [tmsearch] extra (Playwright + curl_cffi) or a bring-your-own WAF token via PCA_WAF_TOKEN_*
USPTO Trademark Assignments Trademark ownership transfers (Assignment Center)
EPO OPS European patents, Inpadoc families, legal events, EP Register
JPO Japanese patents, examination history, PCT national phase — MCP tools register when JPO_API_USERNAME + JPO_API_PASSWORD are set; not exposed by the hosted demo
MPEP Manual of Patent Examining Procedure search and section lookup — runs against a local SQLite/FTS5 snapshot built by patent-client-agents-build-mpep-corpus; see docs/installation.md
TMEP Trademark Manual of Examining Procedure search and section lookup — runs against a local SQLite/FTS5 snapshot built by patent-client-agents-build-tmep-corpus; see docs/installation.md
CPC Classification hierarchy lookup, search, and CPC/IPC mapping
CanLII Canadian courts, tribunals, and IP statutes — Federal Court / FCA / Supreme Court IP rulings, Trade-marks Opposition Board, Patent Appeal Board, Patent Act, Trademarks Act with point-in-time queries — MCP tools register when CANLII_API_KEY is set; not exposed by the hosted demo
WIPO Lex Global IP statute / treaty / judgment database curated by WIPO — ~50k legal documents across ~200 jurisdictions, six UN languages. v0.9 scope: legislation collection (search + detail with PDF links)
EUIPO EU Trade Marks (~2.3M EUTMs since 1996) + Registered Community Designs (~1.5M RCDs since 2003). RSQL search, full prosecution records, multilingual goods-and-services / product indications, sandbox toggle — MCP tools register when EUIPO_CLIENT_ID + EUIPO_CLIENT_SECRET are set; not exposed by the hosted demo
Federal Circuit (CAFC) Every patent appeal in the US is appealable to the Federal Circuit. Search opinions by date / origin (PTO, DCT, ITC, CFC), classify as patent vs. non-patent, download opinion PDFs
USITC EDIS (Section 337 patent enforcement investigations + dockets + attachments), DataWeb (US trade statistics), HTS (Harmonized Tariff Schedule), IDS (IP investigation index) — EDIS and DataWeb need free user-minted tokens; HTS and IDS are public
US Copyright Office Copyright registrations (post‑1978 + digitized card catalog) and recorded documents (transfers, assignments, licenses) via the Public Records System — public, no auth
UPC (Unified Patent Court) Decisions-and-orders feed (CFI + CoA + Central / Local / Regional Divisions, with canonical case IDs and PDF/A URLs) plus a corpus-backed view of the UPC Agreement, consolidated Rules of Procedure, and Table of Court Fees in EN/FR/DE — public, no auth; statutes run against a local SQLite/FTS5 snapshot built by patent-client-agents-build-upc-statutes-corpus

All sources include automatic caching (hishel + SQLite with WAL), rate limiting, and retry logic via law_tools_core.

Install

For Claude Code users — run these inside a Claude Code session:

/plugin marketplace add parkerhancock/patent-client-agents
/plugin install patent-client-agents@patent-client-agents
/reload-plugins

Three slash commands (not shell). You get 73 patent + IP MCP tools exposed to the agent by default, plus additional families that register when their credentials are present: +12 JPO, +9 CanLII, +4 EUIPO. Prereq: uv on PATH — the MCP server runs under uvx so you don't pip install anything yourself.

Seven install modes are documented at docs.patentclient.com/installation — Python library, Python+MCP runtime, Claude Code plugin, dev symlink, stdio MCP, Cowork remote MCP, and generic remote MCP. Pick the one that matches how you'll use it.

API keys

Variable Source Required How to get
USPTO_ODP_API_KEY USPTO ODP Most USPTO patent tools developer.uspto.gov (free)
USPTO_TSDR_API_KEY USPTO TSDR All TSDR trademark tools account.uspto.gov/api-manager/ (free MyUSPTO account)
EPO_OPS_API_KEY, EPO_OPS_API_SECRET EPO OPS All EPO tools developers.epo.org (free)
JPO_API_USERNAME, JPO_API_PASSWORD JPO All JPO library + MCP tools (env-gated on the stdio server / plugin; not set on the hosted demo) j-platpat.inpit.go.jp
CANLII_API_KEY CanLII All CanLII library + MCP tools (env-gated on the stdio server / plugin; not set on the hosted demo) canlii.org/en/feedback/feedback.html (free, by request)
EUIPO_CLIENT_ID, EUIPO_CLIENT_SECRET EUIPO All EUIPO library + MCP tools (env-gated; not set on the hosted demo). Set EUIPO_ENV=sandbox to use the open sandbox environment instead of production. dev.euipo.europa.eu (sandbox auto-approves; production requires ID-document review)
USITC_EDIS_TOKEN USITC EDIS EDIS document/attachment downloads (also rejected for public docs without a token); investigation+document search itself works without one edis.usitc.gov → API Token Generator (free, Login.gov account). JWT, ~2 wk lifetime
USITC_DATAWEB_TOKEN USITC DataWeb run_dataweb_report only dataweb.usitc.gov account page (free)
PCA_WAF_TOKEN_PATH or PCA_WAF_TOKEN_JSON USPTO TESS Trademark search via TESS — bring-your-own WAF token or install [tmsearch] extra to mint via Playwright See USPTO Trademark Search docs

No API key needed: Google Patents, USPTO Publications (PPUBS), USPTO Assignments, USPTO Trademark Assignments, MPEP, TMEP, CPC, WIPO Lex, Federal Circuit (CAFC), USITC HTS, USITC IDS, US Copyright Office.

tmsearch extra (Playwright + curl_cffi)

USPTO TESS sits behind AWS WAF. To mint the WAF token in-process, install the optional extra and bootstrap Chromium once:

pip install 'patent-client-agents[tmsearch]'
playwright install chromium

On headless server deployments where Playwright isn't installed, set PCA_WAF_TOKEN_JSON to a token JSON payload (Secret Manager mount) or PCA_WAF_TOKEN_PATH to a path on disk — the client will reuse the cached token until it expires (~4 days).

Quickstart — Python library

pip install patent-client-agents
from patent_client_agents.google_patents import GooglePatentsClient

async with GooglePatentsClient() as client:
    patent = await client.get_patent_data("US10123456B2")
    print(patent.title)
    print(patent.abstract)

    results = await client.search_patents(keywords=["machine learning neural network"])
    for r in results.results:
        print(f"{r.publication_number}: {r.title}")

Detailed Coverage

Google Patents
Feature Description
Patent lookup Fetch by publication number
Full-text search Keyword, assignee, inventor search
Claims & description Full-text content
Citations Forward and backward citations
Patent families Related applications
PDF download Full document PDFs
USPTO Open Data Portal
Feature Description
Applications
Application search Search by number, date, status
Application details Bibliographic data, status
Continuity data Parent/child relationships
Foreign priority Priority claims
Assignments Ownership records
Attorneys Attorney/agent of record
Transactions Office action history
Adjustments PTA/PTE data
PTAB Trials
IPR/PGR/CBM search Search inter partes reviews
Trial details Party info, status, decisions
Trial documents Petitions, responses, decisions
PTAB Appeals
Appeal search Ex parte appeals
Appeal details Status, decisions
Bulk Data
Bulk downloads XML/JSON data packages
Full-text grants Weekly patent grants
Full-text applications Weekly applications
USPTO Assignments
Feature Description
Assignment search Search by reel/frame, patent
Assignment details Parties, conveyance type
Property lookup Patents in assignment
USPTO TSDR (Trademark Status & Document Retrieval)
Feature Description
Status lookup Mark text, filing/registration dates, current status
Prosecution documents Office actions, responses, registration certificate
Mark images Drawing JPGs by serial number
Batch status Check many serial numbers in one call
Last-update timestamp When the case record was last modified

Requires USPTO_TSDR_API_KEY. Peak hours (5am–10pm ET): 60 req/min general, 4 req/min PDF/ZIP. Off-peak doubles those limits.

USPTO Trademark Assignments
Feature Description
Search by assignee Company/person acquiring rights
Search by assignor Company/person transferring rights
Search by serial / registration Chain of title for a mark
Search by reel/frame Direct recordation lookup
Pagination search_all iterates the full result set

No API key required.

TMEP (Trademark Manual of Examining Procedure)
Feature Description
Section lookup Get any TMEP section by number (e.g. 1207.01(a))
Full-text search Keyword search with relevance ranking
Version listing Snapshot label for the loaded corpus

No API key required, but requires a one-time corpus build — patent-client-agents-build-tmep-corpus --output ~/.cache/patent_client_agents/tmep.db — before the first call. MPEP has the matching patent-client-agents-build-mpep-corpus CLI. Cloud deployments point TMEP_CORPUS_PATH / MPEP_CORPUS_PATH at any path. See docs/installation.md.

EPO OPS
Feature Description
Published Data (Inpadoc)
Patent search CQL query search
Family search Search grouped by family
Bibliographic data Titles, abstracts, parties
Claims Full claim text
Description Full description text
Legal events Status changes, fees
Patent families INPADOC family members
PDF download Full document PDFs
Number conversion Format conversion
EP Register
Register search Search EP applications
Register biblio Detailed EP data
Procedural steps Prosecution history
Register events EPO Bulletin events
Designated states Validation countries
Opposition data Opposition proceedings
Unitary Patent UPP status and states
Classification
CPC lookup Classification hierarchy
CPC search Keyword search
CPC mapping CPC/IPC/ECLA conversion
JPO (Japan Patent Office)

JPO MCP tools are env-gated. The local stdio MCP server and the Claude Code plugin register 12 JPO MCP tools (plus the pca://jpo/documents/... resource template) when JPO_API_USERNAME and JPO_API_PASSWORD are set in the server's env. The hosted demo at mcp.patentclient.com does not carry JPO credentials, so JPO tools don't appear there. The Python library's JpoClient works the same way — credentials are read from env on first use.

Feature Description
Patent progress Application status
Examination history Office actions
Documents Filed documents
Citations Cited prior art
Family info Divisionals, priorities
Registration Grant details
PCT national phase JP national entry lookup
Design/trademark Similar methods available

Architecture

┌──────────────────────────────────────────────────────────────────────┐
│                         Claude Code Agent                             │
├──────────────────────────────────────────────────────────────────────┤
│                   patent-client-agents MCP Server                     │
│                  (Natural language → API calls)                       │
├──────────────────────────────────────────────────────────────────────┤
│                  patent_client_agents Python library                  │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────┐ ┌────────┐ │
│  │  USPTO  │ │  USPTO  │ │   EPO   │ │ Google  │ │ JPO* │ │ EUIPO* │ │
│  │ patents │ │  marks  │ │   OPS   │ │ Patents │ │      │ │  marks │ │
│  │ ODP+    │ │TSDR+TM  │ │  + CPC  │ │  +MPEP  │ │      │ │ + RCDs │ │
│  │ PPUBS   │ │assigns  │ │         │ │  +TMEP  │ │      │ │        │ │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └──────┘ └────────┘ │
│       + CanLII* (case law) + WIPO Lex (global IP statutes)            │
└──────────────────────────────────────────────────────────────────────┘
* MCP tools register only when the corresponding credentials are set
  on the server (JPO_API_*, CANLII_API_KEY, EUIPO_CLIENT_ID/SECRET);
  the hosted demo does not carry these credentials.

Development

git clone https://github.com/parkerhancock/patent-client-agents.git
cd patent-client-agents
uv sync --group dev
uv run pytest                       # 1,117 tests, replays VCR cassettes
uv run ruff check . && uv run ruff format .

Tests use vcrpy to replay recorded HTTP interactions without hitting live APIs. Record modes:

uv run pytest --vcr-record=once     # Record missing cassettes
uv run pytest --vcr-record=all      # Re-record everything
uv run pytest --run-live-uspto      # Skip VCR, hit live USPTO
uv run pytest --run-live-jpo        # Skip VCR, hit live JPO
uv run pytest --run-live-euipo      # Skip VCR, hit live EUIPO (sandbox or prod)

API errors follow a log-first pattern — concise messages with a path to ~/.cache/patent_client_agents/patent_client_agents.log for full stacktraces.

The shared HTTP scaffolding (BaseAsyncClient, cache, exceptions, retry, logging) ships as the law_tools_core package inside this same wheel — other libraries in the same family import it directly.

Related

  • patent_client - The original patent data library this project builds on

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

patent_client_agents-0.12.1.tar.gz (7.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

patent_client_agents-0.12.1-py3-none-any.whl (760.4 kB view details)

Uploaded Python 3

File details

Details for the file patent_client_agents-0.12.1.tar.gz.

File metadata

  • Download URL: patent_client_agents-0.12.1.tar.gz
  • Upload date:
  • Size: 7.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for patent_client_agents-0.12.1.tar.gz
Algorithm Hash digest
SHA256 0c51c21469b0b61d48f89066cb29bb748fa690f5d6eb5f5500e72f676328b8f2
MD5 19f6c499610f174d4fb0f1b9b1c1ce25
BLAKE2b-256 db5f9e6f149191f7f4370a5f137e5b7ce984220c835f31027ec0bdbfd1040a57

See more details on using hashes here.

Provenance

The following attestation bundles were made for patent_client_agents-0.12.1.tar.gz:

Publisher: publish.yml on parkerhancock/patent-client-agents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file patent_client_agents-0.12.1-py3-none-any.whl.

File metadata

File hashes

Hashes for patent_client_agents-0.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f5c5ac0787305882010b4cedaa13f2844c57608bc1329e14c81704c7959ea369
MD5 d40f6583ee7c1465d7a94209e2104868
BLAKE2b-256 5f637ba611cc17a4e348f0d55b2936c6fbfcfff90a8d6c88c1355c4cdd18ed75

See more details on using hashes here.

Provenance

The following attestation bundles were made for patent_client_agents-0.12.1-py3-none-any.whl:

Publisher: publish.yml on parkerhancock/patent-client-agents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page