parkerhancock/patent-client-agents/ip-research

Claude Code and agent skill by parkerhancock/patent-client-agents

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

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 official Canadian Federal Court case files and recorded dockets by party - Monitoring China SPC IP Court scheduled hearings and semiconductor-related court materials - 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)

Install

npx vskill@latest install parkerhancock/patent-client-agents/ip-research

SKILL.md

IP Research

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.

Routing

TaskClient / ModuleReference
Patent lookup / search by keywordsgoogle_patents.GooglePatentsClientgoogle_patents.md
USPTO application status + file wrapperuspto_odp.ApplicationsClientuspto_odp.md
USPTO application high-level APIpatent_client_agents.uspto_applicationsuspto_applications.md
USPTO PTAB (IPR/PGR/CBM, ex parte appeals, interferences)uspto_odp.PtabTrialsClient / PtabAppealsClient / PtabInterferencesClientuspto_odp.md
USPTO petitionsuspto_odp.PetitionsClient or patent_client_agents.uspto_petitionsuspto_petitions.md
USPTO bulk data productsuspto_odp.BulkDataClient or patent_client_agents.uspto_bulkdatauspto_bulkdata.md
USPTO assignmentsuspto_assignments.AssignmentCenterClientuspto_assignments.md
USPTO publications (PPUBS) full-textuspto_publications.PublicSearchClientuspto_publications.md
USPTO office actionspatent_client_agents.uspto_office_actionsuspto_office_actions.md
USPTO trademark status / documents (TSDR)uspto_tsdr.TsdrClientuspto_tsdr.md
USPTO trademark search (TESS — live trademark register)uspto_tmsearch.TmsearchClientuspto_tmsearch.md
USPTO trademark assignmentsuspto_trademark_assignments.TrademarkAssignmentClientuspto_trademark_assignments.md
EPO bibliographic / family / legal eventsepo_ops.EpoOpsClientepo_ops.md
JPO application statusjpo.JpoClientjpo.md
MPEP search + section lookuppatent_client_agents.mpepmpep.md
TMEP search + section lookuppatent_client_agents.tmeptmep.md
CPC lookup / search / mappingpatent_client_agents.cpccpc.md
Canadian case law + IP statutes (FC / FCA / SCC / TMOB / Patent Appeal Board)patent_client_agents.canliicanlii.md
Canadian Federal Court party search + live docketspatent_client_agents.canada_federal_courtcanada-federal-court.md
China SPC IP Court scheduled hearings + site searchpatent_client_agents.china_spc_ip_courtchina-spc-ip-court.md
Global IP statutes via WIPO Lex (~200 jurisdictions)patent_client_agents.wipo_lexwipo_lex.md
EU Trade Marks (EUTM register, ~2.3M marks)patent_client_agents.euipo_trademarkseuipo.md
EU Registered Community Designs (~1.5M designs)patent_client_agents.euipo_designseuipo.md
Federal Circuit (CAFC) opinions — appellate patent lawpatent_client_agents.cafccafc.md
USITC Section 337 patent enforcement (EDIS), DataWeb trade stats, HTS, IDS IP investigationspatent_client_agents.usitcusitc.md
US Copyright Office — registrations, recorded transferspatent_client_agents.copyrightcopyright.md

Quick Examples

Lookup patent by number
python
from patent_client_agents.google_patents import GooglePatentsClient
async with GooglePatentsClient() as client:
patent = await client.get_patent_data("US10123456B2")
Search USPTO applications
python
from patent_client_agents.uspto_odp import ApplicationsClient
async with 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
python
from patent_client_agents.uspto_odp import PtabTrialsClient
async with PtabTrialsClient() as client:
proceedings = await client.search_proceedings(query="patent:US10123456")
Look up MPEP section
python
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)
python
from patent_client_agents.uspto_tsdr import TsdrClient
async with 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
python
from patent_client_agents.tmep import get_section
section = await get_section("1207.01(a)")
print(section.title)
Resolve a CPC symbol
python
from patent_client_agents.cpc import retrieve_cpc
entry = await retrieve_cpc(symbol="H04L63/08", ancestors=True)
Search Canadian IP case law (CanLII)
python
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",
))
Search Canadian Federal Court patent dockets
python
from patent_client_agents.canada_federal_court import CanadaFederalCourtClient
async with CanadaFederalCourtClient() as client:
cases = await client.search_party_cases("Pfizer", patent_only=True)
docket = await client.list_docket_entries(cases.cases[0].court_number)

The Court does not publish an official open/closed field. Treat likely_pending / likely_closed as conservative docket-text inferences and unknown as unresolved, not as evidence that no case is pending.

Monitor China SPC IP Court hearings
python
from patent_client_agents.china_spc_ip_court import ChinaSpcIpCourtClient
async with ChinaSpcIpCourtClient() as client:
index = await client.list_hearing_index(page=1)
notice = await client.get_hearing_notice(index.notices[0].notice_id)
chip_material = await client.search_site("芯片")

Hearing notices are pending-hearing signals, not complete dockets. They often omit case and patent numbers, and the official site may be unreachable from some foreign DNS or cloud-egress environments.

Fetch a global IP statute via WIPO Lex
python
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.

python
from mcp_data_core.exceptions import (
McpDataCoreError,
NotFoundError,
RateLimitError,
)
try:
async with 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

Exception hierarchy (from mcp_data_core.exceptions):

ExceptionWhen
NotFoundErrorResource not found (404)
RateLimitErrorRate limit exceeded (429); retry_after set if server supplied it
AuthenticationErrorBad or missing API credentials (401/403)
ServerErrorRemote API 5xx
ApiErrorOther HTTP errors (base for all HTTP-level errors; appends log path)
ParseErrorFailed to parse response data
ConfigurationErrorMissing API key / invalid config
ValidationErrorInvalid input; also inherits ValueError
McpDataCoreErrorBase 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

VariableRequired For
USPTO_ODP_API_KEYAll USPTO ODP clients (Applications, PTAB, BulkData, Petitions, Office Actions)
USPTO_TSDR_API_KEYTSDR (trademark status / documents / images)
EPO_OPS_API_KEYEPO OPS, CPC (CPC uses EPO OPS under the hood)
EPO_OPS_API_SECRETEPO OPS, CPC
JPO_API_USERNAMEJPO client
JPO_API_PASSWORDJPO client
CANLII_API_KEYCanLII (Canadian courts + IP statutes); free key by request

USPTO Publications, USPTO Assignments, USPTO Trademark Assignments, Google Patents, MPEP, TMEP, Canada Federal Court case files, China SPC IP Court hearing notices, Japan IP High Court patent and utility-model case lists, 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.

Issue Reporting

Source: parkerhancock/patent-client-agents

Report bugs with version, minimal reproduction code, and relevant API response if applicable.

References

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
44
Repository forks
10
7-day trend score
19

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/parkerhancock/patent-client-agents/ip-research/badge)](https://verified-skill.com/skills/parkerhancock/patent-client-agents/ip-research)

Something wrong with this skill or its page? Tell us.