search_trademarks
Pack: trademarks · Endpoint: https://gateway.pipeworx.io/trademarks/mcp
Search US federal trademarks by mark text — the clearance/knockout-search path. Find registered and pending marks by wordmark without knowing a serial or registration number, then filter by international class and live/dead status to see which marks are actually enforceable. Covers the full USPTO register (the tmsearch.uspto.gov Elasticsearch backend that replaced TESS). Keyless. Use this to check whether a proposed brand name conflicts with existing US trademarks. Returns wordmark, serial and registration numbers, status, live flag, international classes, goods/services, owner, and filing dates. For a name-availability check, set live_only:true and pass the relevant class (e.g. 35 for advertising/business, 42 for software/SaaS, 9 for downloadable software).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query | string | yes | Mark text to screen (e.g. “TenderBrief”). Matches the wordmark field. Advanced: pass fielded Lucene (e.g. ‘wordmark:apple AND ownerName:“Apple Inc”’) and it is used verbatim. |
international_class | string | no | Optional Nice class filter. Accepts “35”, 35, “IC 035”, or “035”. Common: 9 (software), 35 (advertising/business/retail), 42 (SaaS/tech services). |
live_only | boolean | no | If true, return only live marks (registered or pending) — the set that can actually block a new application. Default false (includes dead/abandoned/cancelled). |
owner | string | no | Optional owner-name filter (matches ownerName). |
limit | number | no | Results per page, 1-50 (default 20). |
offset | number | no | Pagination offset (default 0). |
Example call
Arguments
{
"query": "TenderBrief",
"live_only": true,
"international_class": "35"
}
curl
curl -X POST https://gateway.pipeworx.io/trademarks/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_trademarks","arguments":{"query":"TenderBrief","live_only":true,"international_class":"35"}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('search_trademarks', {
"query": "TenderBrief",
"live_only": true,
"international_class": "35"
});
More examples
{
"query": "wordmark:apple AND ownerName:\"Apple Inc\"",
"international_class": "9",
"live_only": true,
"limit": 10
}
Response shape
Always returns: source, query, total_matches, count, offset, results
| Field | Type | Description |
|---|---|---|
source | string | |
query | string | |
total_matches | number | |
total_is_capped | boolean | True when total_matches hit the upstream cap and is a floor, not an exact count |
count | number | Rows in this response |
offset | number | |
results | array |
Full JSON Schema
{
"type": "object",
"description": "USPTO trademark search. A zero-hit search returns the same shape with results:[] and count:0.",
"properties": {
"source": {
"type": "string"
},
"query": {
"type": "string"
},
"total_matches": {
"type": "number"
},
"total_is_capped": {
"type": "boolean",
"description": "True when total_matches hit the upstream cap and is a floor, not an exact count"
},
"count": {
"type": "number",
"description": "Rows in this response"
},
"offset": {
"type": "number"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"wordmark": {
"type": "string"
},
"serial_number": {
"type": "string"
},
"registration_number": {
"type": [
"string",
"null"
]
},
"registration_date": {
"type": [
"string",
"null"
]
},
"abandon_date": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"status_code": {
"type": [
"number",
"null"
]
},
"live": {
"type": "boolean"
},
"mark_type": {
"type": "array",
"items": {
"type": "string"
}
},
"international_classes": {
"type": "array",
"items": {
"type": "string"
}
},
"goods_services": {
"type": "array",
"items": {
"type": "string"
}
},
"owner": {
"type": "array",
"items": {
"type": "string"
}
},
"filed_date": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"wordmark",
"serial_number",
"status",
"live"
]
}
}
},
"required": [
"source",
"query",
"total_matches",
"count",
"offset",
"results"
]
}
Connect
Add this to your MCP client config, or use one-click install buttons:
{
"mcpServers": {
"trademarks": {
"url": "https://gateway.pipeworx.io/trademarks/mcp"
}
}
}
See Getting Started for client-specific install steps.