Install any skill in seconds. Free to start, no credit card required.
Get Started Free →USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.
.claude/skills/affaan-m-uspto-database/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 70% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 81% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 30% | 0% |
Use this skill when a task needs official United States patent or trademark records from USPTO systems.
public prosecution history.
Lens.org, Semantic Scholar, or company patent pages.
Do not use this skill to give legal advice. Treat it as a data-gathering and record-verification workflow.
Prefer official USPTO or USPTO-supported surfaces first:
wrapper records.
publication datasets.
Use secondary sources only as convenience indexes. When the answer matters, cross-check the official record.
Many USPTO API flows require an API key. Store keys in environment variables or a secret manager, never in committed files or pasted transcripts.
Common environment names:
bashexport USPTO_API_KEY="..." export PATENTSVIEW_API_KEY="..."
For PatentSearch, send the key with the X-Api-Key header. For TSDR, follow the current USPTO API Manager instructions and rate-limit guidance.
Use PatentSearch for broad patent and pre-grant publication search when the question is about trends, inventors, assignees, classifications, dates, or portfolio slices.
Workflow:
Python request skeleton:
pythonimport os import requests API_KEY = os.environ["PATENTSVIEW_API_KEY"] BASE = "https://search.patentsview.org/api/v1" payload = { "q": { "_and": [ {"patent_date": {"_gte": "2024-01-01"}}, {"assignees.assignee_organization": {"_text_any": ["Google", "Alphabet"]}}, ] }, "f": ["patent_id", "patent_title", "patent_date"], "s": [{"patent_date": "desc"}], "o": {"per_page": 100, "page": 1}, } response = requests.post( f"{BASE}/patent/", headers={"X-Api-Key": API_KEY, "Content-Type": "application/json"}, json=payload, timeout=30, ) response.raise_for_status() print(response.json())
Before reusing a query, verify current endpoint names, field paths, request parameters, and API-key availability in the live PatentSearch docs.
Use TSDR when the task needs trademark case status, documents, images, owner history, or prosecution events.
Workflow:
For large trademark pulls, prefer documented bulk-data flows rather than screen-scraping public pages.
For application status, transaction history, and prosecution documents:
patent number, or party name.
pending application.
citing them.
For patent or trademark ownership:
assignor, assignee, or reel/frame when available.
review.
Every USPTO research pass should include a log table:
markdown| Source | Date searched | Identifier/query | Filters | Results | Notes | | --- | --- | --- | --- | ---: | --- | | PatentSearch | 2026-05-11 | `assignee=Alphabet AND date>=2024` | patent endpoint | 118 | API docs checked before run | | TSDR | 2026-05-11 | `serial=90000000` | status only | 1 | API-key flow, no document bulk pull |
For final writeups, separate:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,720 | 13,146 | -21% | 1 | 1 | 0% | 2,932 | 3,831 | +31% | 0 | 0 | — |
case-02 | fail→pass | 13,759 | 14,117 | +3% | 1 | 1 | 0% | 2,207 | 3,747 | +70% | 0 | 0 | — |
case-03 | fail→pass | 19,173 | 15,754 | -18% | 1 | 1 | 0% | 3,138 | 4,125 | +31% | 0 | 0 | — |
case-04 | fail→fail | 12,476 | 8,314 | -33% | 1 | 1 | 0% | 2,063 | 2,763 | +34% | 0 | 0 | — |
case-05 | pass→pass | 22,752 | 6,949 | -69% | 1 | 1 | 0% | 3,134 | 2,497 | -20% | 0 | 0 | — |
case-06 | fail→fail | 19,461 | 14,704 | -24% | 1 | 1 | 0% | 3,258 | 4,001 | +23% | 0 | 0 | — |
case-07 | pass→pass | 13,862 | 9,938 | -28% | 1 | 1 | 0% | 2,553 | 3,313 | +30% | 0 | 0 | — |
case-08 | pass→pass | 9,289 | 6,172 | -34% | 1 | 1 | 0% | 1,689 | 2,599 | +54% | 0 | 0 | — |
case-09 | fail→pass | 12,156 | 11,801 | -3% | 1 | 1 | 0% | 1,900 | 3,435 | +81% | 0 | 0 | — |
case-10 | pass→pass | 11,980 | 6,247 | -48% | 1 | 1 | 0% | 1,776 | 2,427 | +37% | 0 | 0 | — |
case-11 | fail→pass | 13,792 | 8,879 | -36% | 1 | 1 | 0% | 2,252 | 2,935 | +30% | 0 | 0 | — |
case-12 | fail→pass | 29,909 | 8,069 | -73% | 1 | 1 | 0% | 1,028 | 2,805 | +173% | 0 | 0 | — |
case-13 | fail→pass | 17,879 | 9,879 | -45% | 1 | 1 | 0% | 2,666 | 2,927 | +10% | 0 | 0 | — |
case-14 | fail→pass | 16,568 | 10,880 | -34% | 1 | 1 | 0% | 2,398 | 3,141 | +31% | 0 | 0 | — |
case-15 | fail→pass | 7,068 | 4,886 | -31% | 1 | 1 | 0% | 1,150 | 2,301 | +100% | 0 | 0 | — |
case-16 | fail→fail | 23,811 | 5,566 | -77% | 1 | 1 | 0% | 1,151 | 2,452 | +113% | 0 | 0 | — |
case-17 | pass→pass | 11,992 | 8,879 | -26% | 1 | 1 | 0% | 1,918 | 2,833 | +48% | 0 | 0 | — |
case-18 | pass→pass | 8,426 | 6,878 | -18% | 1 | 1 | 0% | 1,380 | 2,643 | +92% | 0 | 0 | — |
case-19 | fail→pass | 14,694 | 12,823 | -13% | 1 | 1 | 0% | 2,758 | 3,629 | +32% | 0 | 0 | — |
case-20 | fail→pass | 7,054 | 3,815 | -46% | 1 | 1 | 0% | 1,098 | 2,029 | +85% | 0 | 0 | — |
case-21 | pass→pass | 8,660 | 2,507 | -71% | 1 | 1 | 0% | 1,201 | 1,857 | +55% | 0 | 0 | — |
case-22 | fail→pass | 17,812 | 9,896 | -44% | 1 | 1 | 0% | 2,561 | 3,008 | +17% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/3/2026 | +55% |
| gemini-3.6-flash | verified | 8/3/2026 | +45% |
Other measured skills in the registry, with their headline benchmark lift.