Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Patents

NPM · @PIPEWORX/MCP-PATENTS · 2 COMPONENTS

Patents MCP — wraps the USPTO Open Data Portal (ODP) Patent File Wrapper API

+3 this week 81 Trust /100

Last scanned (8 hours ago)

Scores higher than 69% of npm servers

Category Education and Research

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to pipeworx-io/mcp-patents). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability59
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3502 tokens (~500/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
  • Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (57% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +1
    • Package version: 0.2.0 → 0.2.1 functional
  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Oct 26 78

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@pipeworx/mcp-patents@0.2.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo pipeworx-io/mcp-patents
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/pipeworx-io/mcp-patents/.github/workflows/publish.yml@refs/heads/main
Rekor log index 3685263372
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:9900d16b33ff59e020c2e7321f409a4f71f64fcd08b8c936970a189478c2566e83c9a9445800a72a0c5d7845cd790a148f35314df96c133ec52e93158

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 7 exposed · ~3,450 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
get_patent ~525

Fetch a single USPTO patent application/grant by application number (`number`, e.g. "16/123,456" or "16123456") or by an already-granted patent number (`patent_number`, e.g. "11646472") — pass whichever one you actually have. Returns full metadata: title, inventors, classifications, status, and — when the application has been granted — `patent_number`, `grant_date`, `publication_number`, `publication_date`. **8-digit application numbers and 8-digit patent numbers can be the SAME digit string for a different record** (application series codes 10-12 were used ~2003-2008, and granted patent numbers entered that same 10,000,000-12,999,999 range in 2018 and are still in it) — e.g. "11646472" is BOTH application 11/646,472 (a 2006 filing) AND patent 11,646,472 (a 2023 grant), two unrelated inventions. If you only pass `number` and it is an 8-digit value in that collision range, this tool checks BOTH interpretations; if both exist, it returns `ambiguous: true` with each record summarized rather than silently guessing — re-call with `number` for the application or `patent_number` for the patent. Passing `patent_number` explicitly always skips the ambiguity check. A `status` of "Patented Case" with `patent_number: null` means USPTO ODP omitted that field for this record (check `patent_number_warning`), not that the patent was never granted; a pending application correctly has `patent_number: null`, `grant_date: null`.

NameTypeReqDescription
_apiKeystring–USPTO ODP API key. Get free at https://data.uspto.gov/myodp.
numberstring–An application number, digits only or with slashes (e.g. "16123456", "16/123,456"). If this happens to also be a valid 8-digit granted patent number (see the collision note above), the response may c…
patent_numberstring–An already-granted US patent number, digits only (e.g. "11646472", "10000000"). Use this instead of `number` whenever you specifically mean the patent, not the application — it is never ambiguous.

No output schema declared.

No examples provided.

get_patent_assignments ~138

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, and reel/frame. A recorded assignment is notice of a submitted instrument—not a legal opinion on present title, validity, scope, liens, or chain-of-title completeness.

NameTypeReqDescription
_apiKeystring–USPTO ODP API key. Get free at https://data.uspto.gov/myodp.
application_numberstringyesUS patent application number, digits only or formatted, e.g. "15/000,001".
NameTypeReqDescription
application_numberstringyes–
assignmentsarrayyes–
countnumberyes–
interpretationstringyes–
sourcestringyes–

No examples provided.

get_patent_continuity ~192

Fetch the parent/child continuity (priority) chain for one patent application — every earlier application this one claims priority from (continuation, divisional, CIP, provisional, etc.) and every later application that in turn claims priority from it, each with the claim type, dates, and the parent/child's own patent number where granted. Use this to answer "what did this patent come from" or "what later patents/applications descend from this one". An application with no continuity relationships returns an empty chain on both sides — that is a real, common answer (most applications are standalone filings), not a failure.

NameTypeReqDescription
_apiKeystring–USPTO ODP API key. Get free at https://data.uspto.gov/myodp.
numberstringyesUS application number, digits only or formatted. Examples: "17248024", "16/123,456".
NameTypeReqDescription
application_numberstringyes–
child_countnumberyes–
childrenarrayyes–
parent_countnumberyes–
parentsarrayyes–
sourcestringyes–

No examples provided.

get_patent_transactions ~210

Fetch the full USPTO prosecution/transaction history for one patent application — every dated event the Office recorded against the case (filings, mailings, fee payments, office actions, notices, the grant itself), newest first. This is a superset of the handful of events `get_patent` surfaces: use this tool when the question is about the PROSECUTION HISTORY itself (how many office actions, when was it mailed, when did examination start) rather than just the current status.

NameTypeReqDescription
_apiKeystring–USPTO ODP API key. Get free at https://data.uspto.gov/myodp.
limitnumber–Maximum number of events to return, newest first (default 50). The full history is usually under 100 events; a `note` in the response says when more exist than were returned.
numberstringyesUS application number, digits only or formatted. Examples: "18926509", "16/123,456".
NameTypeReqDescription
application_numberstringyes–
eventsarrayyes–
returnednumberyes–
sourcestringyes–
totalnumberyes–

No examples provided.

search_inventors ~218

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 with no `granted_after`), and the newest rows will be unexamined filings with no grant date by construction (USPTO publishes ~18 months after filing). That is expected, not stale data. For a specific inventor's ISSUED patents, use search_patents with `inventor` + `granted_after` instead.

NameTypeReqDescription
_apiKeystring–USPTO ODP API key. Get free at https://data.uspto.gov/myodp.
limitnumber–Number of results to return (default 10). USPTO caps every search at 25 records, so values above 25 have no effect — use the filters to narrow instead.
querystringyesInventor last name to search for (case-insensitive). Examples: "Hinton", "Bengio".

No output schema declared.

No examples provided.

search_patent_assignments ~525

Search USPTO-recorded patent assignment/conveyance history by assignee, assignor, a granted patent number, or an application number — one of the four is required. Unlike `get_patent_assignments` (which needs an application number you already have), this answers "what has company X been assigned" or "who assigned patent Y". An `assignee`/`assignor` search returns one row per recorded assignment (reel/frame, conveyance, dates, the other party) and additionally resolves the covered property (application/patent number, title) for each one it returns via a follow-up lookup — capped by `limit` because each one is a separate upstream call. A `patent_number`/`application_number` search returns the full assignment chain for that one property directly. An assignee/assignor with no recorded assignments returns a plain zero with the upstream total, not an error — USPTO assignment coverage is uneven for older or never-assigned properties. Individual (non-corporate) assignee addresses are omitted; company addresses are kept. Powered by the USPTO Assignment Search system (public, no account or key required).

NameTypeReqDescription
_apiKeystring–Not used by this tool — USPTO Assignment Search is keyless. Present only for schema parity with the other tools in this pack.
application_numberstring–A US application number, digits only or formatted. Example: "15000001", "15/000,001".
assigneestring–Company or person that RECEIVED rights in a recorded transfer (the recipient). Partial/substring match. Example: "Amyris". This lists recorded transfers into the party (one row per transfer, at most…
assignorstring–Company or person who assigned rights AWAY in a recorded transfer (the inventor or prior owner). Partial/substring match. Example: "Musk"
limitnumber–Maximum assignment records to return (default 10, max 25). For an assignee/assignor search this also bounds the number of follow-up property lookups, so a higher limit costs more upstream calls.
patent_numberstring–A granted US patent number, digits only. Example: "10000000".
NameTypeReqDescription
assignmentsarrayyes–
queryobjectyes–
returnednumberyes–
sourcestringyes–
totalnumberyes–

No examples provided.

search_patents ~1,642

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 application ~18 months after filing and typically takes 2+ years to grant it, so the newest rows in an unfiltered search are always recent, unexamined filings with `grant_date: null` — that is expected, not stale data. **Pick the date field on the QUESTION'S VERB, not on the word "recent":** a question asking who has FILED / applied for / sought patents in a window wants `filed_after`/`filed_before` — the default application corpus already includes pending AND granted patents, so no `granted_after` is needed or wanted, and adding one will silently drop recently-filed-but-not-yet-examined applications (grant lags filing by 2+ years, so "filed in the last 3 years" AND "granted in the last 3 years" are mostly DISJOINT sets). Only use `granted_after`/`granted_before` when the question explicitly says GRANTED / ISSUED / APPROVED / "has a patent" (not just "recent patents"). Use `query` for free-text keywords ("lithium battery", "crispr", "machine learning"); all terms are required (AND), and you can quote a phrase to keep it together. A curated, short list of known synonym/abbreviation pairs for concepts that patents describe inconsistently (e.g. cfRNA / cell-free RNA / circulating RNA; MRD / minimal residual disease / residual cancer) is recognized in `query` — quoted or bare — and expanded to an OR group before the search runs, so "cfRNA" and "cell-free RNA" are treated as the same concept rather than requiring the caller to guess a specific patent's exact wording (marked `synonyms_expanded: true` in the response; this is a fixed, documented list, not general synonym invention). A question that names several DISTINCT ways of describing the same idea (e.g. a condition plus a detection method, each expressed as its own quoted phrase) should still be passed as one query — i…

NameTypeReqDescription
_apiKeystring–USPTO ODP API key. Get free at https://data.uspto.gov/myodp. Falls back to platform key if configured.
applicantstring–Optional. Company applicant name as it appears on the USPTO filing. This is also how to list the patents a company OWNS or holds ("patents assigned to X", "X's patents", "patents owned by X"): set `a…
filed_afterstring–Optional. Filter to patents FILED on/after this date (ISO YYYY-MM-DD). Use this for "who has filed / applied for patents on X (recently / in the last N years)" — it covers both pending applications a…
filed_beforestring–Optional. Filter to patents FILED on/before this date (ISO YYYY-MM-DD).
granted_afterstring–Optional. Filter to patents GRANTED (issued) on/after this date (ISO YYYY-MM-DD) — use ONLY when the question explicitly says GRANTED / ISSUED / APPROVED, not for a plain "recent patents" or "who has…
granted_beforestring–Optional. Filter to patents GRANTED (issued) on/before this date (ISO YYYY-MM-DD). Accepted synonym: `issued_before`.
inventorstring–Optional. Inventor name as recorded on the filing; a last name matches most reliably. Examples: "Hinton", "Bengio". Accepted synonyms: `inventor_name`, `author`.
limitnumber–Number of results to return (default 10). USPTO caps every search at 25 records, so values above 25 have no effect — use the filters to narrow instead.
numberstring–Optional. A specific US application number, digits only or formatted — "16123456" or "16/123,456". Accepted synonyms: `application_number`, `patent_number`.
querystring–Free-text keywords. Every term must appear (they are AND-ed), so add words to narrow and remove words to widen. Wrap words in double quotes to require them adjacent: `"machine learning" model` needs…
titlestring–Optional. Words that must appear in the invention title, which narrows far harder than `query` does since `query` searches the whole record. Example: "solid state battery".

No output schema declared.

No examples provided.

Install

How do I install the Patents MCP server?

Patents runs locally as an npm package, launched with npx -y @pipeworx/mcp-patents. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @pipeworx/mcp-patents

# add to Claude Code
claude mcp add pipeworx-io-patents -- npx -y @pipeworx/mcp-patents
Common questions

What is the Patents MCP server?

Patents is an MCP server listed in the public MCP registry as io.github.pipeworx-io/patents. Patents MCP, wraps the USPTO Open Data Portal (ODP) Patent File Wrapper API. This page covers its npm package (@pipeworx/mcp-patents).

Is the Patents MCP server safe to use?

Patents scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Patents MCP server expose?

Patents exposes 7 tools: search_patents, get_patent, search_inventors, get_patent_assignments, get_patent_transactions, and 2 more. Their descriptions and schemas cost roughly 3,450 tokens of context every time the server is loaded.

Is the Patents MCP server still maintained?

Patents is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Patents MCP server under?

Patents declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.