Skip to main content
Glama

Search NIH grants (citation records)

search
Read-onlyIdempotent

Use this tool when a research or connector client needs citation-shaped NIH grant hits for a natural-language query. Returns {"results": [{id, title, text, url}]} where id is the NIH project_num and url is the public OpenNIH grant page. Each record is PROJECT-level, not project-year: ids are unique within a response, and the record always describes the project's CANONICAL row — its latest fiscal year, resolved WITHOUT the query filter, so it is exactly the canonical row for that id. One NIH project number can span many sub-awards with unrelated titles (center grants such as P41/P50/P01 are the common case), so the returned title and snippet may contain none of the query terms — the sibling row that matched the query text is not necessarily the canonical row, and the canonical row is the page the citation opens; a match alone does not establish that a returned grant is about the query. This is the citation-record wrapper: citation-shaped records only — it takes no filters (institution, IC, fiscal year, activity code) and returns no funding totals or provenance. Bounds: query is REQUIRED and matched over grant titles at 2-64 characters (a blank query returns no results instead of the whole corpus); limit 1-50 (default 20) distinct grants per page; offset 0-10000 skips matching project-year rows exactly, so stepping offset by limit walks the full result set page by page — results past the first page are reachable, not invisible. A page is the de-duplicated projection of that row window: one project number owning rows in two windows (multi-component awards emit one row per sub-project) can appear on more than one page, and ids are unique within each response.

Input Schema

NameRequiredDescriptionDefault
limitNo
queryYes
offsetNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the read-only/idempotent safety profile, and the description adds substantial non-obvious behavior: project-level dedup, canonical-row resolution independent of the query, why titles may not contain query terms, cross-page duplicates, and offset stepping. This is exactly the kind of context annotations cannot express.

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?

Front-loaded with the use case, then return shape, then semantics, then bounds, so an agent can stop reading early. It is dense but slightly redundant: 'ids are unique within a response' and the canonical-row explanation are each restated, adding length without new information.

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 a 3-parameter tool with a deceptively complex result model and pagination, nothing an agent needs is missing; the only gap is return-format detail, which the output schema already supplies.

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?

Schema coverage is 0%, so the description carries the full burden and does: query is required, 2-64 chars, matched over titles, blank yields nothing; limit 1-50 default 20; offset 0-10000 with exact row-skipping semantics. That is more than the schema's bare types and defaults provide.

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 ('citation-shaped NIH grant hits') and defines the record shape (id = project_num, url = OpenNIH page). It explicitly distinguishes itself as the 'citation-record wrapper' with no filters, which separates it from the filterable search_grants sibling.

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

Usage Guidelines4/5

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

Gives a clear triggering condition ('when a research or connector client needs citation-shaped NIH grant hits for a natural-language query') and exclusions ('takes no filters... returns no funding totals or provenance'). It never names search_grants as the alternative for filtered/aggregate needs, so routing is implied rather than explicit.

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.

Resources