lookup_trademark
Retrieve detailed US trademark information by USPTO serial number to verify registration status, ownership, and goods/services coverage.
Instructions
Look up a single US trademark by its USPTO serial number. Returns full details including mark text, owner, international class, filing date, registration date, status, attorney, and description of goods/services. Source: USPTO TSDR.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | USPTO serial number (e.g. 97123456) |
Implementation Reference
- src/tools/trademarks.ts:108-145 (handler)The tool "lookup_trademark" is registered and handled directly within registerTrademarkTools, using a Zod schema for serial number validation and calling the /api/v1/trademarks/{serial} endpoint.
server.registerTool( "lookup_trademark", { title: "Lookup Trademark", description: "Look up a single US trademark by its USPTO serial number. Returns full details " + "including mark text, owner, international class, filing date, registration date, " + "status, attorney, and description of goods/services. Source: USPTO TSDR.", inputSchema: { serial: z .string() .regex(/^\d{7,8}$/, "Serial number must be 7-8 digits") .describe("USPTO serial number (e.g. 97123456)"), }, }, async ({ serial }) => { const res = await apiGet<{ dataset: string; data: Record<string, unknown> }>( `/api/v1/trademarks/${encodeURIComponent(serial)}`, ); if (!res.ok) { const msg = res.status === 404 ? `Serial number ${serial} not found in the trademark dataset.` : `API error (${res.status}): ${JSON.stringify(res.data)}`; return { content: [{ type: "text" as const, text: msg }], isError: res.status !== 404, }; } return { content: [ { type: "text" as const, text: JSON.stringify(res.data.data, null, 2) }, ], }; }, );