Skip to main content
Glama

Search Patents

search_patents
Read-onlyIdempotent

Search USPTO patent applications and grants — without a granted_after/granted_before bound this returns the APPLICATION corpus sorted newest-FILED-first, not issued patents. USPTO publishes an application ~18 months after filing and typically takes 2+ years to grant it, so the newest rows in an unfiltered search are always recent, unexamined filings with grant_date: null — that is expected, not stale data. If the caller wants "latest patents" meaning issued/granted patents, pass granted_after (e.g. "2024-01-01") — it filters to issued patents and every returned row carries a real grant_date. Use query for free-text keywords ("lithium battery", "crispr", "machine learning"); all terms are required (AND), and you can quote a phrase to keep it together. Optional structured filters: applicant (exact corporate name as filed, e.g. "APPLE INC."), inventor (person name), title (words in the invention title), number (a specific application number), filed_after / filed_before, granted_after / granted_before. Common synonyms are understood — assignee, company and owner all reach applicant, and keywords, q or text all reach query. Results include title, application number, filing date, first applicant, all applicants, inventors, status, classification. total is the full match count but USPTO returns at most 25 records per search — narrow with applicant or a date range rather than raising limit. Powered by the USPTO Open Data Portal (data.uspto.gov).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return (default 10). USPTO caps every search at 25 records, so values above 25 have no effect — use the filters to narrow instead.
queryNoFree-text keywords. Every term must appear (they are AND-ed), so add words to narrow and remove words to widen. Wrap words in double quotes to require them adjacent: `"machine learning" model` needs the exact phrase plus the word model. Examples: "lithium battery", "crispr", "neural network". Pass "*" if you only want to filter by applicant/date with no keyword constraint.
titleNoOptional. Words that must appear in the invention title, which narrows far harder than `query` does since `query` searches the whole record. Example: "solid state battery".
numberNoOptional. A specific US application number, digits only or formatted — "16123456" or "16/123,456". Accepted synonyms: `application_number`, `patent_number`.
_apiKeyNoUSPTO ODP API key. Get free at https://data.uspto.gov/myodp. Falls back to platform key if configured.
inventorNoOptional. Inventor name as recorded on the filing; a last name matches most reliably. Examples: "Hinton", "Bengio". Accepted synonyms: `inventor_name`, `author`.
applicantNoOptional. Company applicant name as it appears on the USPTO filing. **Must include the exact corporate suffix** the company uses (PBC / Inc. / LLC / Corporation / Co. / NV / AG / KK). A wrong or missing suffix matches nothing — "Apple" returns zero where "APPLE INC." returns hundreds. Examples: "Anthropic, PBC" (not "Anthropic Inc."), "Apple Inc." (not "Apple"), "Alphabet Inc." (not "Google"), "Meta Platforms, Inc." (not "Facebook"), "Microsoft Corporation" (not "Microsoft Corp."). If you get zero results plus a `warning` field, the name form is wrong rather than the company being absent — retry with a different corporate form.
filed_afterNoOptional. Filter to patents filed on/after this date (ISO YYYY-MM-DD).
filed_beforeNoOptional. Filter to patents filed on/before this date (ISO YYYY-MM-DD).
granted_afterNoOptional. Filter to patents GRANTED (issued) on/after this date (ISO YYYY-MM-DD). This is the argument that answers "recent/latest patents" — without it, results are unexamined applications, not issued patents. Accepted synonym: `issued_after`.
granted_beforeNoOptional. Filter to patents GRANTED (issued) on/before this date (ISO YYYY-MM-DD). Accepted synonym: `issued_before`.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNoPresent when total exceeds the returned records — explains the 25-record ODP page cap
queryYesThe composed ODP query string actually sent
totalYesTotal number of matching applications (USPTO ODP returns at most 25 records per search regardless of limit)
filtersYesEcho of the structured filters applied; each is null when unused
patentsYesSame records with full ODP fields
resultsYesBack-compat summary shape (title, number, dates, applicant)
warningNoPresent when an applicant filter matched nothing — ODP matches the corporate name literally ("APPLE INC." not "Apple")
returnedYesNumber of records in this response

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / granted_after / description
      Previous value: -"Optional. Filter to patents granted on/after this date (ISO YYYY-MM-DD)."New value: +"Optional. Filter to patents GRANTED (issued) on/after this date (ISO YYYY-MM-DD). This is the argument that answers \"recent/latest patents\" — without it, results are unexamined applications, not issued patents. Accepted synonym: `issued_after`."
    • changedInput schema / properties / granted_before / description
      Previous value: -"Optional. Filter to patents granted on/before this date (ISO YYYY-MM-DD)."New value: +"Optional. Filter to patents GRANTED (issued) on/before this date (ISO YYYY-MM-DD). Accepted synonym: `issued_before`."
  2. Changed14 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "query": "machine learning neural networks"
      -  },
      -  {
      -    "query": "blockchain cryptocurrency"
      -  }
      -]New value: +[
      +  {
      +    "query": "machine learning neural networks"
      +  },
      +  {
      +    "query": "blockchain cryptocurrency"
      +  },
      +  {
      +    "applicant": "APPLE INC."
      +  },
      +  {
      +    "inventor": "Hinton",
      +    "query": "neural"
      +  }
      +]
    • addedInput schema / properties / inventor
      Added value: +{
      +  "description": "Optional. Inventor name as recorded on the filing; a last name matches most reliably. Examples: \"Hinton\", \"Bengio\". Accepted synonyms: `inventor_name`, `author`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / number
      Added value: +{
      +  "description": "Optional. A specific US application number, digits only or formatted — \"16123456\" or \"16/123,456\". Accepted synonyms: `application_number`, `patent_number`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / title
      Added value: +{
      +  "description": "Optional. Words that must appear in the invention title, which narrows far harder than `query` does since `query` searches the whole record. Example: \"solid state battery\".",
      +  "type": "string"
      +}
    • addedOutput schema / properties / filters
      Added value: +{
      +  "description": "Echo of the structured filters applied; each is null when unused",
      +  "properties": {
      +    "applicant": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "filed_after": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "filed_before": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "granted_after": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "granted_before": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "description": "Present when total exceeds the returned records — explains the 25-record ODP page cap",
      +  "type": "string"
      +}
    • changedOutput schema / properties / patents / description
      Previous value: -"List of patent summaries"New value: +"Same records with full ODP fields"
    • changedOutput schema / properties / query / description
      Previous value: -"The search query used"New value: +"The composed ODP query string actually sent"
    • addedOutput schema / properties / results
      Added value: +{
      +  "description": "Back-compat summary shape (title, number, dates, applicant)",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / returned / description
      Previous value: -"Number of patents in this response"New value: +"Number of records in this response"
    • addedOutput schema / properties / total
      Added value: +{
      +  "description": "Total number of matching applications (USPTO ODP returns at most 25 records per search regardless of limit)",
      +  "type": "number"
      +}
    • removedOutput schema / properties / total_results
      Removed value: -{
      -  "description": "Total number of matching patents",
      -  "type": "number"
      -}
    • addedOutput schema / properties / warning
      Added value: +{
      +  "description": "Present when an applicant filter matched nothing — ODP matches the corporate name literally (\"APPLE INC.\" not \"Apple\")",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "query",
      -  "total_results",
      -  "returned",
      -  "patents"
      -]New value: +[
      +  "query",
      +  "filters",
      +  "total",
      +  "returned",
      +  "results",
      +  "patents"
      +]
  3. Changed3 schema fields changed
    • changedInput schema / properties / applicant / description
      Previous value: -"Optional. Company applicant name as it appears on the USPTO filing. **Must include the exact corporate suffix** the company uses (PBC / Inc. / LLC / Corporation / Co. / NV / AG / KK). Wrong suffix = ODP silently returns the whole unfiltered pool, not zero. Examples: \"Anthropic, PBC\" (not \"Anthropic Inc.\"), \"Apple Inc.\" (not \"Apple\"), \"Alphabet Inc.\" (not \"Google\"), \"Meta Platforms, Inc.\" (not \"Facebook\"), \"Microsoft Corporation\" (not \"Microsoft Corp.\"). If you get a `warning` field back, the filter missed — retry with a different corporate form."New value: +"Optional. Company applicant name as it appears on the USPTO filing. **Must include the exact corporate suffix** the company uses (PBC / Inc. / LLC / Corporation / Co. / NV / AG / KK). A wrong or missing suffix matches nothing — \"Apple\" returns zero where \"APPLE INC.\" returns hundreds. Examples: \"Anthropic, PBC\" (not \"Anthropic Inc.\"), \"Apple Inc.\" (not \"Apple\"), \"Alphabet Inc.\" (not \"Google\"), \"Meta Platforms, Inc.\" (not \"Facebook\"), \"Microsoft Corporation\" (not \"Microsoft Corp.\"). If you get zero results plus a `warning` field, the name form is wrong rather than the company being absent — retry with a different corporate form."
    • changedInput schema / properties / limit / description
      Previous value: -"Number of results (1–100, default 10)."New value: +"Number of results to return (default 10). USPTO caps every search at 25 records, so values above 25 have no effect — use the filters to narrow instead."
    • changedInput schema / properties / query / description
      Previous value: -"Free-text search across title/abstract/inventor/etc. Examples: \"lithium battery\", \"crispr\", \"neural network\". Pass \"*\" if you only want to filter by applicant/date with no keyword constraint."New value: +"Free-text keywords. Every term must appear (they are AND-ed), so add words to narrow and remove words to widen. Wrap words in double quotes to require them adjacent: `\"machine learning\" model` needs the exact phrase plus the word model. Examples: \"lithium battery\", \"crispr\", \"neural network\". Pass \"*\" if you only want to filter by applicant/date with no keyword constraint."
  4. Changed1 schema field changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "query": "machine learning neural networks"
      -  },
      -  {
      -    "per_page": 20,
      -    "query": "blockchain cryptocurrency"
      -  }
      -]New value: +[
      +  {
      +    "query": "machine learning neural networks"
      +  },
      +  {
      +    "query": "blockchain cryptocurrency"
      +  }
      +]
  5. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "machine learning neural networks"
      +  },
      +  {
      +    "per_page": 20,
      +    "query": "blockchain cryptocurrency"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "patents": {
      +      "description": "List of patent summaries",
      +      "items": {
      +        "properties": {
      +          "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",
      +            "items": {
      +              "properties": {
      +                "first_name": {
      +                  "description": "Inventor first name or null",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "last_name": {
      +                  "description": "Inventor last name or null",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "patent_number": {
      +            "description": "Patent number",
      +            "type": "string"
      +          },
      +          "title": {
      +            "description": "Patent title",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "patent_number",
      +          "title",
      +          "date",
      +          "inventors",
      +          "assignee_organization"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "query": {
      +      "description": "The search query used",
      +      "type": "string"
      +    },
      +    "returned": {
      +      "description": "Number of patents in this response",
      +      "type": "number"
      +    },
      +    "total_results": {
      +      "description": "Total number of matching patents",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "total_results",
      +    "returned",
      +    "patents"
      +  ],
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / applicant / description
      Previous value: -"Optional. Company applicant name. Use the canonical ALL-CAPS form (e.g., \"APPLE INC.\", \"GOOGLE LLC\", \"MICROSOFT CORPORATION\"). Lower-case forms work poorly. Filtering is approximate."New value: +"Optional. Company applicant name as it appears on the USPTO filing. **Must include the exact corporate suffix** the company uses (PBC / Inc. / LLC / Corporation / Co. / NV / AG / KK). Wrong suffix = ODP silently returns the whole unfiltered pool, not zero. Examples: \"Anthropic, PBC\" (not \"Anthropic Inc.\"), \"Apple Inc.\" (not \"Apple\"), \"Alphabet Inc.\" (not \"Google\"), \"Meta Platforms, Inc.\" (not \"Facebook\"), \"Microsoft Corporation\" (not \"Microsoft Corp.\"). If you get a `warning` field back, the filter missed — retry with a different corporate form."
  7. Changed7 schema fields changed
    • addedInput schema / properties / applicant
      Added value: +{
      +  "description": "Optional. Company applicant name. Use the canonical ALL-CAPS form (e.g., \"APPLE INC.\", \"GOOGLE LLC\", \"MICROSOFT CORPORATION\"). Lower-case forms work poorly. Filtering is approximate.",
      +  "type": "string"
      +}
    • addedInput schema / properties / filed_after
      Added value: +{
      +  "description": "Optional. Filter to patents filed on/after this date (ISO YYYY-MM-DD).",
      +  "type": "string"
      +}
    • addedInput schema / properties / filed_before
      Added value: +{
      +  "description": "Optional. Filter to patents filed on/before this date (ISO YYYY-MM-DD).",
      +  "type": "string"
      +}
    • addedInput schema / properties / granted_after
      Added value: +{
      +  "description": "Optional. Filter to patents granted on/after this date (ISO YYYY-MM-DD).",
      +  "type": "string"
      +}
    • addedInput schema / properties / granted_before
      Added value: +{
      +  "description": "Optional. Filter to patents granted on/before this date (ISO YYYY-MM-DD).",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Free-text search query — plain keywords only. Examples: \"lithium battery\", \"crispr\", \"neural network\". Field-prefix syntax (e.g. applicantName:X) is not supported and will return an error."New value: +"Free-text search across title/abstract/inventor/etc. Examples: \"lithium battery\", \"crispr\", \"neural network\". Pass \"*\" if you only want to filter by applicant/date with no keyword constraint."
    • removedInput schema / required
      Removed value: -[
      -  "query"
      -]
  8. Changed2 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "query": "machine learning neural networks"
      -  },
      -  {
      -    "per_page": 20,
      -    "query": "blockchain cryptocurrency"
      -  }
      -]
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "patents": {
      -      "description": "List of patent summaries",
      -      "items": {
      -        "properties": {
      -          "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",
      -            "items": {
      -              "properties": {
      -                "first_name": {
      -                  "description": "Inventor first name or null",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "last_name": {
      -                  "description": "Inventor last name or null",
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "patent_number": {
      -            "description": "Patent number",
      -            "type": "string"
      -          },
      -          "title": {
      -            "description": "Patent title",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "patent_number",
      -          "title",
      -          "date",
      -          "inventors",
      -          "assignee_organization"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "query": {
      -      "description": "The search query used",
      -      "type": "string"
      -    },
      -    "returned": {
      -      "description": "Number of patents in this response",
      -      "type": "number"
      -    },
      -    "total_results": {
      -      "description": "Total number of matching patents",
      -      "type": "number"
      -    }
      -  },
      -  "required": [
      -    "query",
      -    "total_results",
      -    "returned",
      -    "patents"
      -  ],
      -  "type": "object"
      -}New value: +null
  9. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Search query. Examples: \"lithium battery\", \"applicantName:\\\"Apple Inc.\\\"\", \"inventionTitle:crispr\", \"firstInventorName:smith\". USPTO ODP uses simplified query syntax (see https://data.uspto.gov/documents/documents/ODP-API-Query-Spec.pdf)."New value: +"Free-text search query — plain keywords only. Examples: \"lithium battery\", \"crispr\", \"neural network\". Field-prefix syntax (e.g. applicantName:X) is not supported and will return an error."
  10. Changed4 schema fields changed
    • addedInput schema / properties / _apiKey
      Added value: +{
      +  "description": "USPTO ODP API key. Get free at https://data.uspto.gov/myodp. Falls back to platform key if configured.",
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Number of results (1–100, default 10).",
      +  "type": "number"
      +}
    • removedInput schema / properties / per_page
      Removed value: -{
      -  "description": "Number of results to return (default 10, max 25)",
      -  "type": "number"
      -}
    • changedInput schema / properties / query / description
      Previous value: -"Keyword or phrase to search in patent abstracts"New value: +"Search query. Examples: \"lithium battery\", \"applicantName:\\\"Apple Inc.\\\"\", \"inventionTitle:crispr\", \"firstInventorName:smith\". USPTO ODP uses simplified query syntax (see https://data.uspto.gov/documents/documents/ODP-API-Query-Spec.pdf)."
  11. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "patents": {
      +      "description": "List of patent summaries",
      +      "items": {
      +        "properties": {
      +          "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",
      +            "items": {
      +              "properties": {
      +                "first_name": {
      +                  "description": "Inventor first name or null",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "last_name": {
      +                  "description": "Inventor last name or null",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "patent_number": {
      +            "description": "Patent number",
      +            "type": "string"
      +          },
      +          "title": {
      +            "description": "Patent title",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "patent_number",
      +          "title",
      +          "date",
      +          "inventors",
      +          "assignee_organization"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "query": {
      +      "description": "The search query used",
      +      "type": "string"
      +    },
      +    "returned": {
      +      "description": "Number of patents in this response",
      +      "type": "number"
      +    },
      +    "total_results": {
      +      "description": "Total number of matching patents",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "total_results",
      +    "returned",
      +    "patents"
      +  ],
      +  "type": "object"
      +}
  12. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "machine learning neural networks"
      +  },
      +  {
      +    "per_page": 20,
      +    "query": "blockchain cryptocurrency"
      +  }
      +]
  13. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond annotations: the 18-month publication lag, the 2+ year grant timeline, the expectation of grant_date: null in unfiltered results, the 25-record cap, and the zero-results-plus-warning signal for wrong applicant name forms. This is rich, non-obvious behavioral disclosure.

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?

The description is long but every sentence earns its place: the corpus distinction, the date-filter guidance, the query semantics, the synonym routing, the result fields, and the 25-record cap are all non-obvious and necessary. The most critical warning (application vs. granted corpus) is front-loaded in bold. It could be slightly tightened, but the density of useful information justifies the length.

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?

For an 11-parameter search tool with no required parameters, an output schema, and 100% schema coverage, the description is complete. It covers the corpus semantics, the filtering strategy, the synonym routing, the result shape, the rate/cap behavior, and the API key fallback. An agent has everything needed to select and invoke this tool correctly, including how to interpret unexpected results (grant_date: null, zero results with warning).

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 description coverage is 100%, so the baseline is 3. The description adds meaningful value beyond the schema: it explains the application-vs-grant corpus distinction for granted_after/granted_before, gives exact corporate suffix requirements with concrete examples and failure modes for applicant, and clarifies that query terms are AND-ed with phrase support. The only minor gap is that the description doesn't enumerate every synonym in the schema, but the schema already covers those.

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?

The description states a specific verb and resource ('Search USPTO patent applications and grants') and immediately distinguishes the tool's behavior from a naive reading by explaining the application-vs-grant corpus distinction. It clearly differentiates from siblings like get_patent and search_inventors by focusing on full-text and structured patent search.

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?

The description gives explicit when-to-use guidance: it warns that unfiltered searches return applications, not issued patents, and tells callers to pass granted_after when they want 'latest patents' meaning issued/granted patents. It also explains query semantics (AND, phrase quoting), synonym routing (assignee/company/owner → applicant), and the 25-record cap with advice to narrow rather than raise limit. This is exemplary usage guidance.

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.