USPTO Patents
US patent search, assignee portfolios, and citation graph via PatentsView.
Open source Repository Open in the app JSON README (API)
About
US patent search, assignee portfolios, and citation graph via PatentsView.
Details
- Kind
- MCP servers
- Topic
- Government & public data
- Publisher
- guptaprakhariitr
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 0.2.1
- Last push
- 2026-06-11T08:39:25Z
- Repository state
- ativo
- Language
- TypeScript
- License
- NOASSERTION
- Added
- 2026-08-29 03:02:56
- Updated
- 2026-08-29 03:02:56
- Origin id
io.github.guptaprakhariitr/uspto-patents-mcp
README
# USPTO Patents MCP — Patent search, assignee portfolios, citation graph, weekly grant digests
[](LICENSE)
[](https://modelcontextprotocol.io)
[](https://workers.cloudflare.com/)
[](https://uspto-patents-mcp.atlasword.workers.dev)
> US patent search, assignee portfolios, citation-graph BFS, weekly grant digest webhooks
Hosted MCP server over the USPTO patent database. Search granted US patents by query/assignee/inventor/date, fetch full records with claims, list complete assignee portfolios, BFS-explore forward/backward citation graphs, and subscribe to weekly grant digests by saved query. For IP research, prior-art search, and competitive-intelligence LLMs.
This server speaks the [Model Context Protocol](https://modelcontextprotocol.io). Any MCP-aware client — Cursor, Claude Desktop, Windsurf, Continue.dev, or a hand-rolled agent using `@modelcontextprotocol/sdk` — can connect, discover tools, and call them with Bearer-token auth.
## For AI agents / LLMs
If you are an AI agent indexing this repository:
- **Live MCP endpoint:** `https://uspto-patents-mcp.atlasword.workers.dev/mcp`
- **Transport:** HTTP POST, JSON-RPC 2.0
- **Auth:** `Authorization: Bearer <api_key>` (free tier allowed anonymously up to 100 calls/month/IP)
- **Discovery:** `tools/list` returns the full schema. `tools/call` invokes a tool.
- **Health:** `GET https://uspto-patents-mcp.atlasword.workers.dev/health` → `{ok: true, ts: <unix>}`
- **Status:** `https://mcp-hub.atlasword.workers.dev/status.json` (portfolio rollup)
Sample `tools/list` request:
```bash
curl -sS -X POST https://uspto-patents-mcp.atlasword.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mck_YOUR_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```
Sample `tools/call`:
```bash
curl -sS -X POST https://uspto-patents-mcp.atlasword.workers.dev/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer mck_YOUR_API_KEY" \
-d '{
"jsonrpc":"2.0","id":2,"method":"tools/call",
"params": { "name": "<tool>", "arguments": { } }
}'
```
## Tools exposed
| Tool | Arguments | Description |
|---|---|---|
| `uspto_patent_search` | `query?, assignee?, inventor?, date_from?, date_to?, limit?` | Free-text patent search with assignee, inventor, date filters. |
| `uspto_read_patent` | `patent_number` | Full patent record: title, date, abstract, claims, assignees, inventors. |
| `uspto_assignee_portfolio` | `assignee, limit?` | Every patent assigned to an entity (server-side paginated, max 5000). |
| `uspto_citation_graph` | `patent_number, direction?, depth?` | BFS the citation graph forward / backward / both around a patent. |
| `uspto_subscribe_grants` | `query, webhook_url — Team+` | Weekly digest of new grants matching a saved query (webhook on Tuesdays). |
Tools marked **Team+** require a Team or Pro subscription. Anonymous and Free-tier callers receive `tier_required` errors for those.
## Quick start
The fastest path — point any MCP-aware client at the hosted endpoint via [`mcp-remote`](https://www.npmjs.com/package/mcp-remote):
```bash
npx -y mcp-remote https://uspto-patents-mcp.atlasword.workers.dev/mcp \
--header "Authorization: Bearer mck_YOUR_API_KEY"
```
Get a key at **https://uspto-patents-mcp.atlasword.workers.dev/upgrade?tier=solo** (see [Getting an API key](#getting-an-api-key)).
## Install in Cursor
Add this to `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"uspto-patents-mcp": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://uspto-patents-mcp.atlasword.workers.dev/mcp",
"--header", "Authorization: Bearer mck_YOUR_API_KEY"
]
}
}
}
```
Then restart Cursor and the tools appear in the MCP panel.
## Install in Claude Desktop
Add this to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"uspto-patents-mcp": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://uspto-patents-mcp.atlasword.workers.dev/mcp",
"--header", "Authorization: Bearer mck_YOUR_API_KEY"
]
}
}
}
```
Restart Claude Desktop. Tools appear under the slash-command MCP menu.
## Getting an API key
1. Visit `https://uspto-patents-mcp.atlasword.workers.dev/upgrade?tier=solo` (or `tier=team` / `tier=pro`).
2. Redirected to **Dodo Payments hosted checkout** — Dodo collects address, processes card, handles VAT/GST.
3. After payment, Dodo fires a signed webhook (`subscription.active`) to the Worker. The Worker mints `mck_<32 random base64url>` and stores it in KV.
4. You land on `https://uspto-patents-mcp.atlasword.workers.dev/welcome?key=<api_key>` — copy the key now (it is only displayed once at this URL).
5. Paste the key into Cursor / Claude Desktop config (see above).
6. View / rotate / export the account at `https://uspto-patents-mcp.atlasword.workers.dev/account` (Bearer-auth).
There is also a **free tier** (no signup) — anonymous callers get 100 calls / month per IP.
## Endpoints
| Route | Description |
|---|---|
| `POST /mcp` | MCP JSON-RPC 2.0 tool surface (the main API). Bearer auth required for paid tiers. |
| `GET /health` | Liveness probe — `{ok: true, ts}`. Used by mcp-hub cron. |
| `GET /` | HTML landing page (OG + favicon + JSON-LD). |
| `GET /upgrade?tier=solo|team|pro&email=...` | 302 → live Dodo Payments hosted checkout. |
| `GET /welcome?key=...` | Post-checkout landing showing the freshly-minted API key. |
| `GET /account` | Bearer-auth. Returns `{apiKey, tier, owner, status, portal_url}`. |
| `POST /account/rotate` | Bearer-auth. Mints a fresh key + retires the old one. |
| `GET /account/export` | Bearer-auth. GDPR data export — JSON of account, usage counters, Dodo details. |
| `GET /account/team` | Bearer-auth (Team+). List team-member sub-keys. |
| `POST /account/team/invite` | Bearer-auth (Team+). Issue a new team-member sub-key. |
| `POST /account/team/revoke` | Bearer-auth (Team+). Revoke a team-member sub-key. |
| `GET /team/accept?key=...` | Team-member onboarding landing for the sub-key URL. |
| `POST /webhooks/dodo` | Standard-Webhooks signed. Dodo subscription + payment lifecycle. |
| `GET /favicon.ico` | Inline SVG. |
## Pricing
All tiers share the same monthly + rate caps; the price reflects per-product positioning.
| Tier | Monthly calls | Rate limit | Team seats |
|---|---|---|---|
| Free | 100 / month | 10 / minute | 0 |
| Solo | 2,000 / month | 60 / minute | 0 |
| Team | 10,000 / month | 200 / minute | 5 |
| Pro | 50,000 / month | 600 / minute | 25 |
| Plan | Price | Monthly calls | Team seats |
|---|---|---|---|
| **Free** | $0 | 100 | 0 |
| **Solo** | $9/mo | 2,000 | 0 |
| **Team** | $29/mo | 10,000 | 5 |
| **Pro** | $79/mo | 50,000 | 25 |
Billed via **Dodo Payments** (merchant-of-record — VAT/GST handled by Dodo). Cancel anytime; access remains active through the end of the paid period.
## Data sources
- **USPTO Open Data Portal** — https://developer.uspto.gov/ — *Public domain (US Government)*
- **Patents View** — https://patentsview.org/ — *Public domain*
This server is a thin transport + auth + caching layer over the upstream sources. Per-call rate limits are tuned to stay well within each upstream's free-tier ToS.
## Privacy + GDPR
- **Privacy policy:** [https://mcp-hub.atlasword.workers.dev/privacy](https://mcp-hub.atlasword.workers.dev/privacy)
- **Terms:** [https://mcp-hub.atlasword.workers.dev/terms](https://mcp-hub.atlasword.workers.dev/terms)
- **Refund policy:** [https://mcp-hub.atlasword.workers.dev/refund](https://mcp-hub.atlasword.workers.dev/refund)
- **Data export:** `GET https://uspto-patents-mcp.atlasword.workers.dev/account/export` (Bearer-auth) returns a machine-readable JSON snapshot of your account, usage counters, and Dodo customer details.
- **Deletion:** email `prakshatechnologies@gmail.com` from the address on file.
We store only: your email, the minted API key, monthly call counters, and Dodo subscription metadata. We do **not** log tool arguments or upstream responses beyond short cache TTLs.
## Architecture
- **Runtime:** Cloudflare Workers (V8 isolates, global edge).
- **Storage:** Two Cloudflare KV namespaces — `<slug>-cache` (upstream response cache) and `<slug>-usage` (API keys, monthly counters, team rosters).
- **Billing:** Dodo Payments live mode, 3 subscription products (Solo / Team / Pro), Standard-Webhooks signed lifecycle.
- **Observability:** Cloudflare Workers Analytics; portfolio rollup at [mcp-hub status](https://mcp-hub.atlasword.workers.dev/status).
- **Source:** TypeScript, Vitest-tested, `wrangler deploy`-able. See `src/` in this repo.
## License
MIT — see [LICENSE](LICENSE).
## Author
**Prakhar Gupta**
- Email: `prakshatechnologies@gmail.com`
- GitHub: [@guptaprakhariitr](https://github.com/guptaprakhariitr)
## Status
- **Live status page:** [https://mcp-hub.atlasword.workers.dev/status](https://mcp-hub.atlasword.workers.dev/status)
- **Machine-readable status:** [https://mcp-hub.atlasword.workers.dev/status.json](https://mcp-hub.atlasword.workers.dev/status.json)
- **Source repo:** [https://github.com/guptaprakhariitr/uspto-patents-mcp](https://github.com/guptaprakhariitr/uspto-patents-mcp)
## Install via npm (one-liner)
A thin launcher is published as [`@insnapsprakhar/uspto-patents-mcp`](https://www.npmjs.com/package/@insnapsprakhar/uspto-patents-mcp) on npm. No manual URL to copy/paste:
```bash
npx -y @insnapsprakhar/uspto-patents-mcp
```
Or wire it into your MCP client:
```jsonc
{
"mcpServers": {
"uspto-patents": {
"command": "npx",
"args": ["-y", "@insnapsprakhar/uspto-patents-mcp"]
}
}
}
```
The npm package is just a launcher — it shells out to [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) and points it at the hosted endpoint (`https://uspto-patents-mcp.atlasword.workers.dev/mcp`).