Skip to main content
Glama

Get Patent

get_patent
Read-onlyIdempotent

Fetch a single USPTO patent application/grant by application number (number, e.g. "16/123,456" or "16123456") or by an already-granted patent number (patent_number, e.g. "11646472") — pass whichever one you actually have. Returns full metadata: title, inventors, classifications, status, and — when the application has been granted — patent_number, grant_date, publication_number, publication_date. 8-digit application numbers and 8-digit patent numbers can be the SAME digit string for a different record (application series codes 10-12 were used ~2003-2008, and granted patent numbers entered that same 10,000,000-12,999,999 range in 2018 and are still in it) — e.g. "11646472" is BOTH application 11/646,472 (a 2006 filing) AND patent 11,646,472 (a 2023 grant), two unrelated inventions. If you only pass number and it is an 8-digit value in that collision range, this tool checks BOTH interpretations; if both exist, it returns ambiguous: true with each record summarized rather than silently guessing — re-call with number for the application or patent_number for the patent. Passing patent_number explicitly always skips the ambiguity check. A status of "Patented Case" with patent_number: null means USPTO ODP omitted that field for this record (check patent_number_warning), not that the patent was never granted; a pending application correctly has patent_number: null, grant_date: null.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "number": "16123456"
    },
    "name": "get_patent"
  }
}

Input Schema

NameRequiredDescriptionDefault
numberNoAn application number, digits only or with slashes (e.g. "16123456", "16/123,456"). If this happens to also be a valid 8-digit granted patent number (see the collision note above), the response may come back `ambiguous: true` — pass `patent_number` instead to mean the patent unambiguously.
_apiKeyNoUSPTO ODP API key. Get free at https://data.uspto.gov/myodp.
patent_numberNoAn already-granted US patent number, digits only (e.g. "11646472", "10000000"). Use this instead of `number` whenever you specifically mean the patent, not the application — it is never ambiguous.

Output Schema

NameRequiredDescriptionDefault
dateYesPatent filing date or null
typeYesPatent type or null
titleYesPatent title
abstractYesPatent abstract or null
inventorsYesList of inventors with details
patent_numberYesPatent number
assignee_organizationYesAssignee organization name or null

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "number": "16123456"
      -  }
      -]New value: +[
      +  {
      +    "number": "16123456"
      +  },
      +  {
      +    "patent_number": "11646472"
      +  }
      +]
    • changedInput schema / properties / number / description
      Previous value: -"Application number (digits only or with slashes). Examples: \"16123456\", \"16/123,456\"."New value: +"An application number, digits only or with slashes (e.g. \"16123456\", \"16/123,456\"). If this happens to also be a valid 8-digit granted patent number (see the collision note above), the response may come back `ambiguous: true` — pass `patent_number` instead to mean the patent unambiguously."
    • addedInput schema / properties / patent_number
      Added value: +{
      +  "description": "An already-granted US patent number, digits only (e.g. \"11646472\", \"10000000\"). Use this instead of `number` whenever you specifically mean the patent, not the application — it is never ambiguous.",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "number"
      -]
  2. Changed1 schema field changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "number": "7654321"
      -  }
      -]New value: +[
      +  {
      +    "number": "16123456"
      +  }
      +]
  3. Changed2 schema fields changed
    • addedInput schema / properties / _apiKey
      Added value: +{
      +  "description": "USPTO ODP API key. Get free at https://data.uspto.gov/myodp.",
      +  "type": "string"
      +}
    • changedInput schema / properties / number / description
      Previous value: -"Patent number (e.g. \"7654321\")"New value: +"Application number (digits only or with slashes). Examples: \"16123456\", \"16/123,456\"."
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "abstract": {
      +      "description": "Patent abstract or null",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "assignee_organization": {
      +      "description": "Assignee organization name or null",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "date": {
      +      "description": "Patent filing date or null",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "inventors": {
      +      "description": "List of inventors with details",
      +      "items": {
      +        "properties": {
      +          "city": {
      +            "description": "Inventor city or null",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "first_name": {
      +            "description": "Inventor first name or null",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "last_name": {
      +            "description": "Inventor last name or null",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "state": {
      +            "description": "Inventor state or null",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "patent_number": {
      +      "description": "Patent number",
      +      "type": "string"
      +    },
      +    "title": {
      +      "description": "Patent title",
      +      "type": "string"
      +    },
      +    "type": {
      +      "description": "Patent type or null",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "patent_number",
      +    "title",
      +    "abstract",
      +    "date",
      +    "type",
      +    "inventors",
      +    "assignee_organization"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "number": "7654321"
      +  }
      +]
  6. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnlyHint/idempotentHint annotations by disclosing non-obvious behavior: the 8-digit collision range, that both interpretations get checked, that `ambiguous: true` is returned instead of a silent guess, that `patent_number` skips that check, and that "Patented Case" with a null patent_number may be an ODP omission rather than a non-grant. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the core decision are front-loaded, and the worked example (11/646,472 vs 11,646,472) makes an inherently confusing edge case concrete. It is long and partly duplicates the schema's own collision note, so a sentence or two could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists, the description explains the returned field set and, more importantly, the two null-field traps (ambiguity vs. ODP omission) that a schema alone would not convey. Nothing an agent needs to call this correctly and interpret the response is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema's `number`/`patent_number` descriptions already restate much of the collision logic, so the description largely reinforces rather than adds. It does still add the decision rule (which parameter to prefer given what you hold) and the retry semantics, which is meaningful beyond the raw schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (fetch a single USPTO patent application/grant) and immediately distinguishes the two lookup modes (application `number` vs granted `patent_number`). Sibling tools like get_patent_assignments, get_patent_continuity, and search_patents cover different resources, so this is clearly the single-record lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent "pass whichever one you actually have," and prescribes `patent_number` whenever the intent is specifically the patent. It also gives a concrete recovery path when the ambiguous response occurs, which is exactly the when/when-not guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.