Skip to main content
Glama

List Grants.gov Reference Codes

grantsgov_list_reference
Read-onlyIdempotent

List the codes Grants.gov search filters accept, with labels and live opportunity counts: agencies (top level, or one agency's sub-agencies via parent_code, or matched by name via name_contains), applicant eligibility types, funding categories, funding instruments, statuses, sort options, and keyword syntax. Use the codes as grantsgov_search_opportunities inputs.

Input Schema

NameRequiredDescriptionDefault
limitNoEntries per page; defaults to 50. Requests above the processing cap of 100 are clamped with a notice.
topicYesWhich list to return: agencies (agency codes), eligibilities (two-digit applicant-type codes), funding_categories, funding_instruments, statuses, sort_options, or keyword_syntax.
offsetNoZero-based offset into the complete filtered list; use continuation for the next page.
parent_codeNoAgencies only: list every code under this agency at any depth (e.g. HHS, DOD-DARPA). Case-insensitive. Omit for the top-level list.
name_containsNoKeep only entries whose label or code contains every word given, ignoring case, accents, and punctuation (e.g. "national science", "nih"). For agencies this searches every code, top-level and sub-agency. Works with every topic. A value with no letters or digits matches nothing.

Output Schema

NameRequiredDescriptionDefault
capNoEffective page size, at most 100.
errorNoPresent when the call failed. Absent on success.
shownNoEntries returned on this page.
topicNoThe topic listed.
noticeNoGuidance when name_contains matched nothing, or when parent_code has no sub-agencies.
entriesNoReference entries.
truncatedNoTrue when matching entries remain after this page.
totalCountNoTotal entries matching the filters before paging.
continuationNoComplete arguments for the next grantsgov_list_reference call; absent when no entries remain.
snapshot_dateNoWhen the live vocabulary was fetched (ISO timestamp); absent for fully static topics.
reference_cacheNoDegraded reference-cache provenance; absent after a healthy refresh.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 50,
      +  "description": "Entries per page; defaults to 50. Requests above the processing cap of 100 are clamped with a notice.",
      +  "maximum": 1000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "default": 0,
      +  "description": "Zero-based offset into the complete filtered list; use continuation for the next page.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "topic",
      -      "entries",
      -      "totalCount"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "topic",
      +      "entries",
      +      "totalCount",
      +      "shown",
      +      "cap",
      +      "truncated"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / cap
      Added value: +{
      +  "description": "Effective page size, at most 100.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / continuation
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Complete arguments for the next grantsgov_list_reference call; absent when no entries remain.",
      +  "properties": {
      +    "limit": {
      +      "description": "Effective page size.",
      +      "type": "number"
      +    },
      +    "name_contains": {
      +      "description": "The same name filter.",
      +      "type": "string"
      +    },
      +    "offset": {
      +      "description": "Offset of the next page.",
      +      "type": "number"
      +    },
      +    "parent_code": {
      +      "description": "The same agency scope.",
      +      "type": "string"
      +    },
      +    "topic": {
      +      "description": "Topic to list again.",
      +      "enum": [
      +        "agencies",
      +        "eligibilities",
      +        "funding_categories",
      +        "funding_instruments",
      +        "statuses",
      +        "sort_options",
      +        "keyword_syntax"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "topic",
      +    "limit",
      +    "offset"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / reference_cache
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Degraded reference-cache provenance; absent after a healthy refresh.",
      +  "properties": {
      +    "reason": {
      +      "description": "Sanitized refresh failure reason.",
      +      "enum": [
      +        "upstream_unavailable",
      +        "upstream_route_unavailable",
      +        "rate_limited"
      +      ],
      +      "type": "string"
      +    },
      +    "retry_after": {
      +      "description": "ISO timestamp when a refresh can be attempted again.",
      +      "type": "string"
      +    },
      +    "status": {
      +      "const": "stale",
      +      "description": "The cached vocabulary is expired.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "reason",
      +    "retry_after"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / shown
      Added value: +{
      +  "description": "Entries returned on this page.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / totalCount / description
      Previous value: -"Entries returned."New value: +"Total entries matching the filters before paging."
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "True when matching entries remain after this page.",
      +  "type": "boolean"
      +}
  2. First observed

TDQS

A5/5.0
Behavior5/5

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

The description reveals specific behavioral traits like the inclusion of 'labels and live opportunity counts,' which suggests the data is dynamic and not static IDs. Furthermore, it elaborates on complex filtering behaviors, such as how 'agencies' handles top-level versus sub-agency (via parent_code) and name matching (via name_contains).

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

Conciseness5/5

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

The description is highly dense and efficient, functioning as a single comprehensive block. Every clause is front-loaded and critical, providing maximum information density without unnecessary fluff.

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?

Given the high complexity of the filtering logic and the presence of a 100% schema coverage, the description provides the necessary depth regarding semantic usage, behavioral constraints, and implementation details (live counts) to make the tool fully actionable.

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

Parameters5/5

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

Although the schema coverage is 100%, the description provides critical semantic context that the schema alone misses. It explains complex parameter behaviors like `parent_code` (covering any depth) and `name_contains` (ignoring case, accents, and punctuation), significantly increasing the agent's understanding of how to utilize the input fields.

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 is highly specific, stating it lists 'the codes Grants.gov search filters accept.' It clearly identifies the resource (reference codes) and the categories of codes it provides (agencies, eligibilities, categories, etc.), distinguishing its role as a lookup tool.

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?

It provides a direct and mandatory usage guideline: 'Use the codes as grantsgov_search_opportunities inputs.' This clearly establishes the necessary sequence of tool usage (lookup then search) and routes the agent to the appropriate dependent tool.

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.