# Patents & Trademarks (IP) MCP — Patent Search for AI Agents (`nexgendata/patents-trademarks-ip-mcp-server`) Actor

MCP server giving AI agents worldwide patent intelligence: keyword search, patent lookup by number, company IP portfolios, and inventor discovery via Google Patents.

- **URL**: https://apify.com/nexgendata/patents-trademarks-ip-mcp-server.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business, AI
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 tool calls

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🛡️ Patents & Trademarks (IP) MCP Server

**Give your AI agent instant access to worldwide patent intelligence.** Search 130M+ patents, look up any publication by number, map a company's IP portfolio, and find an inventor's body of work — all through the Model Context Protocol, straight from Claude, Cursor, Windsurf, or any MCP client.

> Built by **NexGenData**. Connect once, then your agent can run patent landscaping, freedom-to-operate scoping, prior-art discovery, and competitor IP monitoring on demand.

---

### ⚡ What you get

| Tool | What it does | Data source |
|---|---|---|
| `search_patents` | Keyword / phrase / inventor / assignee patent search | Google Patents |
| `get_patent_details` | Full metadata for a specific publication number | Google Patents |
| `find_patents_by_assignee` | A company's patent portfolio | Google Patents |
| `search_inventor` | An inventor's full body of work | Google Patents |

Every result includes patent ID, title, assignee, inventor, priority/filing/grant/publication dates, a relevance snippet, and a link to the source.

---

### 🎯 Use cases

- **Patent landscaping** — map the prior art in a technology area before R&D investment.
- **Competitive IP intelligence** — pull a rival's entire patent portfolio in one call.
- **Freedom-to-operate scoping** — surface relevant patents before launching a product.
- **Prior-art / novelty checks** — find existing filings that overlap an invention.
- **Inventor & expert discovery** — identify the people behind key innovations for hiring or licensing.

---

### 🚀 How to connect

Add this to your MCP client config (Claude Desktop, Cursor, Windsurf, etc.):

```json
{
  "mcpServers": {
    "patents-ip": {
      "url": "https://nexgendata--patents-trademarks-ip-mcp-server.apify.actor/mcp",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
````

Get a free Apify token at [apify.com](https://www.apify.com/?fpr=2ayu9b) (sign-up includes free monthly platform credit).

***

### 📊 Sample inputs

```text
search_patents(query="solid-state battery electrolyte", max_results=10)
find_patents_by_assignee(assignee="NVIDIA", max_results=15)
get_patent_details(patent_id="US10000000B2")
```

### 📦 Sample output (search\_patents)

```json
{
  "query": "solid-state battery electrolyte",
  "total_results": 48213,
  "patents": [
    {
      "patent_id": "US11069918B2",
      "title": "Solid-state electrolyte for lithium battery",
      "assignee": "Toyota Motor Corp",
      "inventor": "…",
      "publication_date": "2021-07-20",
      "snippet": "A solid-state electrolyte comprising…"
    }
  ],
  "source": "Google Patents"
}
```

***

### 🧠 How it works

This is a **standby MCP server**, not a one-shot scraper. It boots once, holds an HTTP/MCP session open, and answers tool calls live. Each tool queries Google Patents' public search backend and normalizes the response into clean, agent-friendly JSON. No API key for the data source is required.

***

### 🔗 Related NexGenData Actors

Part of the NexGenData **IP & Patent** suite — pair this Actor with:

- [Trademark Search  USPTO Database Lookup](https://apify.com/nexgendata/trademark-search?fpr=2ayu9b)
- [USPTO Patent Search  Claims & Prior Art](https://apify.com/nexgendata/uspto-patent-search?fpr=2ayu9b)
- [USPTO Patent Grants Tracker  IP & Competitive Intelligence](https://apify.com/nexgendata/uspto-patent-grants?fpr=2ayu9b)
- [USPTO Patent Grants Tracker  Recent US Patent Filings](https://apify.com/nexgendata/uspto-patent-grants-tracker?fpr=2ayu9b)
- [EUIPO Trademark Search  TMview & eSearch](https://apify.com/nexgendata/euipo-esearch-trademarks?fpr=2ayu9b)
- [CNIPA China Patent Search  IP & Innovation Tracker](https://apify.com/nexgendata/cnipa-china-patent-search?fpr=2ayu9b)
- [WIPO PATENTSCOPE Patent Search](https://apify.com/nexgendata/wipo-patentscope-search?fpr=2ayu9b)
- [HK Trademark Search](https://apify.com/nexgendata/hk-trademark-search?fpr=2ayu9b)

### 💵 Pricing

Pay-per-event: you are charged a small fee per successful **tool call**, plus a one-time actor-start. No subscription. See the live pricing tab on the actor page for current rates. Build your own automations and run them through [Apify](https://www.apify.com/?fpr=2ayu9b).

***

### ⚖️ Legal

This server queries publicly available patent metadata. Patent documents and bibliographic data are public records. Use responsibly and in accordance with the data source's terms. Nothing here is legal advice — consult a qualified patent attorney for FTO or validity opinions.

***

### ❓ FAQ

**Q: Does it cover non-US patents?** Yes — Google Patents indexes US, EP, WO, JP, CN, KR and many other jurisdictions.

**Q: Do I need a patent-office API key?** No. The server handles data access for you; you only need your Apify token.

**Q: Can it return full claims / full text?** It returns rich bibliographic metadata and an abstract snippet plus a direct link to the full document. For full-text claims, follow the `google_patents_url`.

**Q: Is this real-time?** Results reflect the live Google Patents index at query time.

**Q: How many results per call?** Up to 30 for searches; tune with `max_results`.

**Q: What about trademarks?** Patent tools are live today; trademark coverage rolls out via sibling NexGenData actors (see Related Actors).

**Q: Does it work with Claude / Cursor / Windsurf?** Yes — any MCP-compatible client over streamable-HTTP.

***

### 🛠️ Troubleshooting

- **No results** → broaden the query or check the assignee/inventor spelling.
- **Empty `get_patent_details`** → verify the publication number format (e.g. `US9876543B2`).
- **Rate limiting** → the upstream index may throttle bursts; retry after a moment.
- **Auth error** → confirm your Apify token is set in the `Authorization` header.
- **Connection drops when idle** → the server closes idle sessions to save compute; just reconnect.

***

### 🏢 About NexGenData

NexGenData builds a fleet of production MCP servers and data actors for AI agents — finance, legal, regulatory, IP, government, aviation, and more. Explore the full catalog on [Apify](https://www.apify.com/nexgendata?fpr=2ayu9b).

# Actor input Schema

## Actor input object example

```json
{}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/patents-trademarks-ip-mcp-server").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/patents-trademarks-ip-mcp-server").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call nexgendata/patents-trademarks-ip-mcp-server --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/patents-trademarks-ip-mcp-server",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Patents & Trademarks (IP) MCP — Patent Search for AI Agents",
        "description": "MCP server giving AI agents worldwide patent intelligence: keyword search, patent lookup by number, company IP portfolios, and inventor discovery via Google Patents.",
        "version": "0.0",
        "x-build-id": "VzPy71U6MIsA4PPW4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~patents-trademarks-ip-mcp-server/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-patents-trademarks-ip-mcp-server",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/nexgendata~patents-trademarks-ip-mcp-server/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-patents-trademarks-ip-mcp-server",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/nexgendata~patents-trademarks-ip-mcp-server/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-patents-trademarks-ip-mcp-server",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {}
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
