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

NameTypeRequiredDescription
querystringyesMark 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_classstringnoOptional Nice class filter. Accepts “35”, 35, “IC 035”, or “035”. Common: 9 (software), 35 (advertising/business/retail), 42 (SaaS/tech services).
live_onlybooleannoIf true, return only live marks (registered or pending) — the set that can actually block a new application. Default false (includes dead/abandoned/cancelled).
ownerstringnoOptional owner-name filter (matches ownerName).
limitnumbernoResults per page, 1-50 (default 20).
offsetnumbernoPagination 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

FieldTypeDescription
sourcestring
querystring
total_matchesnumber
total_is_cappedbooleanTrue when total_matches hit the upstream cap and is a floor, not an exact count
countnumberRows in this response
offsetnumber
resultsarray
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.

Regenerated from source · build September 4, 2026