Agent skill
ip_research
IP data research tools for patents, trademarks, and applications. 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, or PTAB proceedings - Downloading bulk USPTO data products - Finding patent assignments or ownership history - Fetching USPTO publication full-text data
Install this agent skill to your Project
npx add-skill https://github.com/parkerhancock/ip_tools/tree/main/skills/ip_research
SKILL.md
IP Research
Async Python clients for patent data. All clients use async with context managers.
Routing
| Task | Client | Reference |
|---|---|---|
| Patent lookup/search | GooglePatentsClient |
google_patents.md |
| USPTO application status | ApplicationsClient |
uspto_odp.md |
| USPTO PTAB (IPR/PGR) | PtabTrialsClient |
uspto_odp.md |
| USPTO bulk data | BulkDataClient |
uspto_odp.md |
| USPTO assignments | UsptoAssignmentsClient |
uspto_assignments.md |
| USPTO publications | UsptoPublicationsClient |
uspto_publications.md |
| EPO bibliographic/family | EpoOpsClient |
epo_ops.md |
| JPO application status | JpoClient |
jpo.md |
Quick Examples
Lookup patent by number
from ip_tools.google_patents import GooglePatentsClient
async with GooglePatentsClient() as client:
patent = await client.get_patent_data("US10123456B2")
Search patents
from ip_tools.google_patents import GooglePatentsClient
async with GooglePatentsClient() as client:
results = await client.search_patents(
keywords="machine learning",
assignee="Google",
limit=25
)
Check application status
from ip_tools.uspto_odp import ApplicationsClient
async with ApplicationsClient() as client: # Requires USPTO_ODP_API_KEY
app = await client.get("16123456")
docs = await client.get_documents("16123456")
Find PTAB proceedings
from ip_tools.uspto_odp import PtabTrialsClient
async with PtabTrialsClient() as client:
results = await client.search_proceedings(query="patent:US10123456")
Error Handling
All clients raise typed exceptions from ip_tools.core.exceptions. Error messages are concise and include a path to the log file for full tracebacks. Stacktraces never pollute your context window.
from ip_tools.core.exceptions import IpToolsError, NotFoundError, RateLimitError
try:
async with GooglePatentsClient() as client:
patent = await client.get_patent_data("US99999999")
except NotFoundError as e:
print(e) # "Patent US99999999 not found ... (details: ~/.cache/ip_tools/ip_tools.log)"
except RateLimitError:
print("Rate limited — wait and retry")
except IpToolsError as e:
print(e) # Concise message + log path for debugging
Exception hierarchy:
| Exception | When |
|---|---|
NotFoundError |
Patent/resource not found (404) |
RateLimitError |
Rate limit exceeded (429) |
AuthenticationError |
Bad or missing API credentials (401/403) |
ServerError |
Remote API error (5xx) |
ParseError |
Failed to parse response data |
ConfigurationError |
Missing API key or invalid config |
ValidationError |
Invalid input (bad patent number format, etc.) |
ApiError |
Other HTTP errors (base for all API errors) |
IpToolsError |
Base for all ip_tools errors |
Log file: ~/.cache/ip_tools/ip_tools.log — contains full tracebacks, request/response details, and debug information. Read this file when error messages alone aren't sufficient to diagnose an issue.
Environment Variables
| Variable | Required For |
|---|---|
USPTO_ODP_API_KEY |
All ODP clients (Applications, PTAB, BulkData, Petitions) |
EPO_OPS_API_KEY |
EPO OPS client |
EPO_OPS_API_SECRET |
EPO OPS client |
JPO_API_USERNAME |
JPO client |
JPO_API_PASSWORD |
JPO client |
Cache Management
All clients cache to ~/.cache/ip_tools/. See cache.md for TTL, invalidation, and statistics APIs.
Issue Reporting
Source: parkerhancock/ip_tools
Report bugs with: version, minimal reproduction code, and API response if applicable.
References
- google_patents.md - Full-text search, patent documents, citations
- uspto_odp.md - Applications, PTAB, bulk data, petitions
- uspto_assignments.md - Assignment/ownership lookup
- uspto_publications.md - Full-text patent and application publications
- epo_ops.md - EPO bibliographic, family, legal status
- jpo.md - Japan Patent Office APIs
- cache.md - Cache management APIs
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
canvas
canvas
Render interactive UIs in a browser window using file operations. Supports two modes: React (App.jsx) for rapid prototyping with pre-built components, and Vanilla (index.html) for standards-based, portable artifacts. Use when users ask to: show forms, render charts/graphs, create dashboards, display data tables, build visual interfaces, or show any UI component. Trigger phrases: "show me", "render", "display", "create a form/chart/table/dashboard".
dev-terminal
Terminal/PTY automation with persistent sessions. Use to run and interact with TUI applications, debug terminal apps, automate CLI workflows, or any terminal interaction. Trigger phrases include "run the TUI", "start the app", "debug the terminal", "interact with", "send keys", "what's on screen".
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
obsidian-vault
Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.
handoff
Compact the current conversation into a handoff document for another agent to pick up.
Didn't find tool you were looking for?