IP data research tools for patents, trademarks, and related USPTO/EPO/JPO records. Use when:
- Looking up patents by number (US, EP, WO, JP, etc.)
- Searching patent databases by keyword, assignee, inventor, or classification
- Getting patent family, citation, or legal status information
- Checking USPTO application status, file wrapper, PTAB proceedings, or petitions
- Searching office action rejections and cited references
- Looking up MPEP or TMEP sections, or CPC classifications
- Searching Canadian case law / IP statutes via CanLII (Federal Court, FCA, SCC, TMOB, Patent Appeal Board, Patent Act, Trademarks Act)
- Searching global IP statutes / treaties via WIPO Lex (~200 jurisdictions)
- Finding patent or trademark assignments / ownership history
- Fetching USPTO publication full-text data
- Checking U.S. trademark status, prosecution documents, or mark images (TSDR)
- Searching the U.S. trademark register (TESS) by wordmark, owner, or goods/services
- Federal Circuit (CAFC) appellate opinions and PTAB/d
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
IP data research tools for patents, trademarks, and related USPTO/EPO/JPO records. Use when:
- Looking up patents by number (US, EP, WO, JP, etc.)
- Searching patent databases by keyword, assignee, inventor, or classification
- Getting patent family, citation, or legal status information
- Checking USPTO application status, file wrapper, PTAB proceedings, or petitions
- Searching office action rejections and cited references
- Looking up MPEP or TMEP sections, or CPC classifications
- Searching Canadian case law / IP statutes via CanLII (Federal Court, FCA, SCC, TMOB, Patent Appeal Board, Patent Act, Trademarks Act)
- Searching global IP statutes / treaties via WIPO Lex (~200 jurisdictions)
- Finding patent or trademark assignments / ownership history
- Fetching USPTO publication full-text data
- Checking U.S. trademark status, prosecution documents, or mark images (TSDR)
- Searching the U.S. trademark register (TESS) by wordmark, owner, or goods/services
- Federal Circuit (CAFC) appellate opinions and PTAB/district/ITC appeals
- USITC Section 337 patent enforcement investigations (EDIS) and tariff codes (HTS)
- U.S. Copyright Office registrations and recorded documents (transfers, assignments)
Async Python clients for patent and IP data. All clients use async with context
managers. All shared scaffolding (HTTP, cache, retry, errors) lives in
mcp_data_core, provided by the separate mcp-data-core package.
from patent_client_agents.google_patents import GooglePatentsClient
asyncwith GooglePatentsClient() as client:
patent = await client.get_patent_data("US10123456B2")
Search USPTO applications
from patent_client_agents.uspto_odp import ApplicationsClient
asyncwith ApplicationsClient() as client: # Requires USPTO_ODP_API_KEY
results = await client.search(query="inventionTitle:laser", limit=25)
for record in results.applicationBag:
print(record.applicationNumberText, record.filingDate)
Find PTAB proceedings
from patent_client_agents.uspto_odp import PtabTrialsClient
asyncwith PtabTrialsClient() as client:
proceedings = await client.search_proceedings(query="patent:US10123456")
Look up MPEP section
from patent_client_agents.mpep import SearchInput, search
response = await search(SearchInput(query="obviousness rejection", per_page=10))
for hit in response.hits:
print(hit.section_id, hit.title)
Check trademark status (TSDR)
from patent_client_agents.uspto_tsdr import TsdrClient
asyncwith TsdrClient() as client: # Requires USPTO_TSDR_API_KEY
status = await client.get_status("97123456")
print(status.mark_text, status.status_description)
Look up TMEP section
from patent_client_agents.tmep import get_section
section = await get_section("1207.01(a)")
print(section.title)
Resolve a CPC symbol
from patent_client_agents.cpc import retrieve_cpc
entry = await retrieve_cpc(symbol="H04L63/08", ancestors=True)
Search Canadian IP case law (CanLII)
from patent_client_agents.canlii import BrowseCasesInput, browse_cases
# 20 most recent Federal Court IP decisions
recent = await browse_cases(BrowseCasesInput(
database_id="fct",
result_count=20,
decision_date_after="2024-01-01",
))
Fetch a global IP statute via WIPO Lex
from patent_client_agents.wipo_lex import (
SearchLegislationInput, SubjectMatter, search_legislation, get_legislation,
)
# Find Canadian patent statutes, then pull the Patent Act detail with PDFs
hits = await search_legislation(SearchLegislationInput(
country_codes=["CA"], subject_matter=[SubjectMatter.PATENTS],
))
detail = await get_legislation(hits.hits[0].legislation_id)
Error Handling
All clients raise typed exceptions from mcp_data_core.exceptions. ApiError
and its subclasses include a path to the log file in their string representation
so agents can inspect stacktraces without keeping them in context.
from mcp_data_core.exceptions import (
McpDataCoreError,
NotFoundError,
RateLimitError,
)
try:
asyncwith GooglePatentsClient() as client:
patent = await client.get_patent_data("US99999999")
except NotFoundError as e:
print(e) # "... (HTTP 404, details: ~/.cache/patent_client_agents/patent_client_agents.log)"except RateLimitError as e:
if e.retry_after:
await asyncio.sleep(e.retry_after)
except McpDataCoreError as e:
print(e) # Fallback for any other typed error
Rate limit exceeded (429); retry_after set if server supplied it
AuthenticationError
Bad or missing API credentials (401/403)
ServerError
Remote API 5xx
ApiError
Other HTTP errors (base for all HTTP-level errors; appends log path)
ParseError
Failed to parse response data
ConfigurationError
Missing API key / invalid config
ValidationError
Invalid input; also inherits ValueError
McpDataCoreError
Base for all typed errors
Log file:~/.cache/patent_client_agents/patent_client_agents.log — full tracebacks, request/response
details, debug info. Read this when concise error messages aren't enough.
Environment Variables
Variable
Required For
USPTO_ODP_API_KEY
All USPTO ODP clients (Applications, PTAB, BulkData, Petitions, Office Actions)
USPTO_TSDR_API_KEY
TSDR (trademark status / documents / images)
EPO_OPS_API_KEY
EPO OPS, CPC (CPC uses EPO OPS under the hood)
EPO_OPS_API_SECRET
EPO OPS, CPC
JPO_API_USERNAME
JPO client
JPO_API_PASSWORD
JPO client
CANLII_API_KEY
CanLII (Canadian courts + IP statutes); free key by request
USPTO Publications, USPTO Assignments, USPTO Trademark Assignments,
Google Patents, MPEP, TMEP, and WIPO Lex require no API key.
Cache Management
All clients cache HTTP responses to ~/.cache/patent_client_agents/ using hishel with a
SQLite backend and WAL pragmas. See cache.md for TTL,
invalidation, and statistics APIs.