@pipeworx/patents
Connect: https://gateway.pipeworx.io/patents/mcp · Install: one-click buttons
Tools: 4
The US Patent and Trademark Office’s patent database via the USPTO Open Data Portal (ODP, data.uspto.gov) — Pipeworx migrated off the legacy PatentsView API (api.patentsview.org, sunset 2025-05-01) on 2026-05-12. Search and retrieve granted US patents and published applications by keyword, assignee, inventor, or patent number. Free, no auth (platform key configured server-side; bring your own via _apiKey if you need your own quota — get one at https://data.uspto.gov/myodp).
Why this matters for AI agents
Patents are the public record of what’s been invented and who claims to have invented it. For competitive intelligence, IP due diligence, freedom-to-operate research, or technology landscaping, the USPTO is the source. What this pack actually returns: title, inventors/applicants, classification, filing/grant status and dates, prosecution events, and — via get_patent_assignments — recorded assignment/conveyance history. It does not return claims text or citation data; there is no get_claims or citation tool in this pack (the epo-ops pack’s get_claims does return claims text, but only for EPO-published records).
Two core flows:
1. Keyword search. “What patents exist for CRISPR gene editing?” → search_patents({query: "CRISPR gene editing"}) → matching applications/patents with title, application number, filing date, applicants, inventors, status, classification.
2. Specific patent. “What’s the status of application 16/123,456?” → get_patent({number: "16123456"}) → title, inventors, classification, status, and prosecution events (including the grant event/date if it has been granted). For who currently holds it, pair with get_patent_assignments({application_number: "16123456"}).
For company-level IP due diligence (combining patents with SEC IP risk disclosures and trademarks), see the Patent Due Diligence recipe.
Citable URI
pipeworx://uspto/patent/{number}
Patent numbers are stable forever. Embed in agent output as the canonical citation.
What “patents” includes
| Type | Prefix | What it is |
|---|---|---|
| Utility patent | (none / numeric) | Standard invention patent (machines, processes, articles) |
| Design patent | D | Ornamental design (e.g., D123,456 = a chair design) |
| Plant patent | PP | Asexually reproduced plant variety |
| Reissue | RE | Corrected version of an earlier patent |
| Reexamination | (E numbers) | Validity-challenged patents under review |
There’s no dedicated type input filter — every result carries a type field (application/patent type) you can filter on client-side to isolate design or plant patents from the utility-patent majority.
Update cadence
- Grants: measured, Tuesday. Querying
granted_afterfor the current week (2026-09-08) returns grant dates of only 2026-09-01 and 2026-09-08 — both Tuesdays — confirming USPTO’s long-standing weekly grant-day cadence carried over from the PatentsView era. This is current data, not a stale mirror: the most recent grant date returned is today. - Applications: unverified — do not repeat the old Thursday claim. ODP’s
applicationMetaDataexposesfilingDateandgrantDatebut no publication date field, so Pipeworx has no way to check when an application record actually becomes visible in ODP. The PatentsView-era “Thursday” figure was forapi.patentsview.org’spgpubpublication feed, which this pack does not use and cannot confirm carried over. Treat application-corpus freshness as unmeasured rather than assuming a fixed weekday. - The default search looks old by construction, not because data is stale. With no
granted_after/granted_before,search_patentsreturns the application corpus sorted newest-filed-first. USPTO doesn’t publish an application until ~18 months after filing and typically takes 2+ years to grant it, so the newest rows in an unfiltered search are recent filings withgrant_date: null— that’s expected. Passgranted_after(e.g."2024-01-01") to get issued patents with real grant dates instead. See thesearch_patentstool description for the full explanation. - Pipeworx caches results with a 24-hour TTL. Given the measured Tuesday grant cadence, set
Cache-Control: no-cacheif you need same-day fresh-grant results.
Common pitfalls
- Keyword search ≠ freedom-to-operate.
search_patentsfinds patents whose text mentions your terms. It does not tell you whether a patent CLAIMS what you’d be doing, and this pack does not return claims text to check that yourself — FTO requires reading claims (theepo-opspack’sget_claimsreturns claims text, but only for EPO-published records) and, ultimately, a patent attorney. - Assignee normalization. “Vertex Pharmaceuticals Inc.”, “VERTEX PHARMACEUTICALS, INC.”, “Vertex Pharmaceuticals” — all the same company. Group case-insensitive after stripping legal suffixes when aggregating.
- No citation data. This pack does not surface citation counts or citation lists at all — there is no way to rank “most-cited” or “foundational” patents within a result set through this pack.
- This pack is US-only, but Pipeworx isn’t. USPTO covers US filings only. For European patents, the
epo-opspack is live today —epo_ops_search_patents,get_biblio,get_family,get_abstract,get_claimsagainst the EPO’s worldwide register (verified live 2026-09-08:epo_ops_search_patents({query:"lithium battery"})returned current European filings, including publications dated this week). Japanese (JPO) and Chinese (CNIPA) national filings are not in Pipeworx yet — file viapipeworx_feedbackif you need them. - Application vs. issued. “Patent pending” applications are searchable but the date you care about is
grant_date, notfiling_date. Applications can be rejected or amended; the issued patent is what matters. - No patent-family data in this pack. Unlike
epo-ops’sget_family(INPADOC family, worldwide), this USPTO pack does not return family-member data —get_patentcovers a single US application/grant only. For “does this invention have foreign counterparts,” go throughepo-opsinstead.
Tools
- search_patents — Search USPTO patent applications and grants — without a
granted_after/granted_beforebound this returns the APPLICATION corpus sorted newest-FILED-first, not issued patents. USPTO publishes an - get_patent — Fetch a single USPTO patent application/grant by application number (e.g., “16/123,456” or “16123456”). Returns full metadata: title, inventors, classifications, status, prosecution events. A returned
- search_inventors — Search USPTO patent applications by inventor last name. Returns matching applications with title, inventor list, and filing date — sorted newest-filed-first, so this is the APPLICATION corpus (same as
- get_patent_assignments — Retrieve USPTO-recorded assignment/conveyance history for one patent application from the migrated Open Data Portal endpoint. Returns assignors, assignees, execution/recording dates, conveyance text,
Tools
-
get_patent— Fetch a single USPTO patent application/grant by application number (e.g., 16/123,456 or 16123456 ). Returns full metadata: title, inventors, classifications, status, prosecution events. A returned re -
get_patent_assignments— Retrieve USPTO-recorded assignment/conveyance history for one patent application from the migrated Open Data Portal endpoint. Returns assignors, assignees, execution/recording dates, conveyance text, -
search_inventors— Search USPTO patent applications by inventor last name. Returns matching applications with title, inventor list, and filing date — sorted newest-filed-first, so this is the APPLICATION corpus (same as -
search_patents— Search USPTO patent applications and grants — **without a `granted_after`/`granted_before` bound this returns the APPLICATION corpus sorted newest-FILED-first, not issued patents.** USPTO publishes an