# io.github.cyanheads/grantsgov-mcp-server

> Search Grants.gov funding opportunities and read full records: eligibility, awards, deadlines.

- name: io.github.cyanheads/grantsgov-mcp-server
- version: 0.1.3
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 89/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.cyanheads%2Fgrantsgov-mcp-server
- tools: https://api.protogrid.dev/v1/servers/io.github.cyanheads%2Fgrantsgov-mcp-server/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "grantsgov-mcp-server": {
      "type": "http",
      "url": "https://grantsgov.caseyjhand.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 80
- drivers: +repository +namespace-matches-repo +reachable +uptime-100% +updated-2d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 3 of 3 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: grantsgov_list_reference (destructiveHint); grantsgov_search_opportunities (destructiveHint); grantsgov_get_opportunity (destructiveHint)
- pass `tools.token_cost`: about 2,693 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 2 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know @cyanheads/grantsgov-mcp-server@0.1.3, @cyanheads/grantsgov-mcp-server@0.1.3

- tools: 3, about 2,693 tokens to load them all
- tool set hash: 3203fcd1428122f3b9a43fe7e1293ab9
- tools last changed: 2026-10-19T03:39:10.386Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.cyanheads/grantsgov-mcp-server.svg)](https://protogrid.dev/servers/io.github.cyanheads/grantsgov-mcp-server)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `grantsgov_get_opportunity` changed (description, inputSchema, outputSchema)
  - before: Read the full Grants.gov record for up to 5 opportunities, given numeric opportunity ids or opportunity numbers: deadline and its explanation, award ceiling and floor, total funding, expected awards, cost sharing, eligible applicant types with the eligibility narrative, description, assistance listings, agency contact, NOFO attachments with download links, and application packages. An opportunity number is resolved across all statuses. A miss or an ambiguous number comes back as an unresolved entry with guidance, not an error.
  - after: Read the Grants.gov record for up to 5 opportunities, given numeric opportunity ids or opportunity numbers: deadline, funding, eligibility, description, assistance listings, contact, attachments, packages, and latest revision metadata. Lists and narratives are bounded independent pages; follow each record pages continuation to retrieve the remaining section. An opportunity number is resolved across all statuses. A miss or an ambiguous number comes back as an unresolved entry with guidance, not an error.
- 2026-10-19 `grantsgov_search_opportunities` changed (inputSchema, outputSchema)

Full history: https://api.protogrid.dev/v1/servers/io.github.cyanheads%2Fgrantsgov-mcp-server/changes

## Dependencies

- npm @cyanheads/grantsgov-mcp-server@0.1.3: unknown
- npm @cyanheads/grantsgov-mcp-server@0.1.3: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://grantsgov.caseyjhand.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm @cyanheads/grantsgov-mcp-server@0.1.3
- npm @cyanheads/grantsgov-mcp-server@0.1.3

## Tools (3)

- `grantsgov_get_opportunity`: Read the Grants.gov record for up to 5 opportunities, given numeric opportunity ids or opportunity numbers: deadline, funding, eligibility, description, assistance listings, contact, attachments, packages, and latest revision metadata. Lists and narratives are bounded independent pages; follow each record pages continuation to retrieve the remaining section. An opportunity number is resolved across all statuses. A miss or an ambiguous number comes back as an unresolved entry with guidance, not an error.
- `grantsgov_list_reference`: 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.
- `grantsgov_search_opportunities`: Search federal funding opportunities on Grants.gov by keyword, agency, applicant eligibility, funding category, funding instrument, assistance listing, opportunity number, posting window (posted_within_days), or closing window (closing_within_days). Returns forecasted and posted opportunities unless statuses says otherwise, each row led by its close date and days remaining, plus facet counts for narrowing. Bare keyword terms are all required; join alternatives with OR, in parentheses when other terms stay required. Rows carry no award amounts or eligibility detail; read those with grantsgov_get_opportunity. Filter codes come from grantsgov_list_reference.
