Search Grants.gov funding opportunities and read full records: eligibility, awards, deadlines.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Numeric Grants.gov ids (e.g. 363423, or "363423" as search rows emit them), from grantsgov_search_opportunities opportunity_id. Accepts one whole string or an array, with at most 50 nonblank entries per list and 50 unique ids and numbers combined. Reads the first 5 identifiers, ids before numbers; remaining inputs have an executable continuation.
Zero-based attachment offset; defaults to 0. Page size 30.
Zero-based normalized description character offset; defaults to 0. Page size 12,000.
Zero-based normalized eligibility character offset; defaults to 0. Page size 6,000.
Agency-assigned opportunity numbers (e.g. HRSA-27-005), matched exactly and case-insensitively across all statuses; one pair of surrounding double quotes is removed. Accepts one whole string or an array, with at most 50 nonblank entries per list and 50 unique ids and numbers combined. Reads the first 5 identifiers, ids before numbers; remaining inputs have an executable continuation. A number shared by several opportunities comes back as ambiguous with candidates.
Zero-based open package offset; defaults to 0. Page size 10.
Zero-based related opportunity offset; defaults to 0. Page size 10.
Zero-based normalized category explanation character offset; defaults to 0. Page size 2,000.
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.
| Argument | Type | Description |
|---|---|---|
| opportunity_ids | any | Numeric Grants.gov ids (e.g. 363423, or "363423" as search rows emit them), from grantsgov_search_opportunities opportunity_id. Accepts one whole string or an array, with at most 50 nonblank entries per list and 50 unique ids and numbers combined. Reads the first 5 identifiers, ids before numbers; remaining inputs have an executable continuation. |
| attachment_offset | integer | Zero-based attachment offset; defaults to 0. Page size 30. |
| description_offset | integer | Zero-based normalized description character offset; defaults to 0. Page size 12,000. |
| eligibility_offset | integer | Zero-based normalized eligibility character offset; defaults to 0. Page size 6,000. |
| opportunity_numbers | any | Agency-assigned opportunity numbers (e.g. HRSA-27-005), matched exactly and case-insensitively across all statuses; one pair of surrounding double quotes is removed. Accepts one whole string or an array, with at most 50 nonblank entries per list and 50 unique ids and numbers combined. Reads the first 5 identifiers, ids before numbers; remaining inputs have an executable continuation. A number shared by several opportunities comes back as ambiguous with candidates. |
| application_package_offset | integer | Zero-based open package offset; defaults to 0. Page size 10. |
| related_opportunity_offset | integer | Zero-based related opportunity offset; defaults to 0. Page size 10. |
| funding_category_explanation_offset | integer | Zero-based normalized category explanation character offset; defaults to 0. Page size 2,000. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"opportunity_ids": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"anyOf": [
{
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
{
"type": "string",
"pattern": "^\\s*\\d+\\s*$"
}
]
},
{
"type": "string",
"pattern": "^\\s*$"
}
]
}
}
],
"description": "Numeric Grants.gov ids (e.g. 363423, or \"363423\" as search rows emit them), from grantsgov_search_opportunities opportunity_id. Accepts one whole string or an array, with at most 50 nonblank entries per list and 50 unique ids and numbers combined. Reads the first 5 identifiers, ids before numbers; remaining inputs have an executable continuation."
},
"attachment_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based attachment offset; defaults to 0. Page size 30."
},
"description_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based normalized description character offset; defaults to 0. Page size 12,000."
},
"eligibility_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based normalized eligibility character offset; defaults to 0. Page size 6,000."
},
"opportunity_numbers": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"pattern": "^(?:[^\"]*|\\s*\"[^\"]*\"\\s*)$"
},
{
"type": "string",
"pattern": "^\\s*$"
}
]
}
}
],
"description": "Agency-assigned opportunity numbers (e.g. HRSA-27-005), matched exactly and case-insensitively across all statuses; one pair of surrounding double quotes is removed. Accepts one whole string or an array, with at most 50 nonblank entries per list and 50 unique ids and numbers combined. Reads the first 5 identifiers, ids before numbers; remaining inputs have an executable continuation. A number shared by several opportunities comes back as ambiguous with candidates."
},
"application_package_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based open package offset; defaults to 0. Page size 10."
},
"related_opportunity_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based related opportunity offset; defaults to 0. Page size 10."
},
"funding_category_explanation_offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based normalized category explanation character offset; defaults to 0. Page size 2,000."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| topic* | string | Which list to return: agencies (agency codes), eligibilities (two-digit applicant-type codes), funding_categories, funding_instruments, statuses, sort_options, or keyword_syntax. |
| parent_code | string | Agencies only: list every code under this agency at any depth (e.g. HHS, DOD-DARPA). Case-insensitive. Omit for the top-level list. |
| name_contains | string | Keep 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"topic"
],
"properties": {
"topic": {
"enum": [
"agencies",
"eligibilities",
"funding_categories",
"funding_instruments",
"statuses",
"sort_options",
"keyword_syntax"
],
"type": "string",
"description": "Which list to return: agencies (agency codes), eligibilities (two-digit applicant-type codes), funding_categories, funding_instruments, statuses, sort_options, or keyword_syntax."
},
"parent_code": {
"type": "string",
"pattern": "^\\s*(?:(?:[A-Za-z0-9]+(?:[\\s-]+[A-Za-z0-9]+)*)\\s*)?$",
"description": "Agencies only: list every code under this agency at any depth (e.g. HHS, DOD-DARPA). Case-insensitive. Omit for the top-level list."
},
"name_contains": {
"type": "string",
"maxLength": 100,
"description": "Keep 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."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| sort | string | Result order: relevance (best keyword match; needs keyword, otherwise the order is arbitrary), open_date_desc/open_date_asc (posting date), close_date_asc/close_date_desc (close date; no close date sorts last on asc), opportunity_number_asc/_desc, agency_asc/_desc. Default: relevance with a keyword, else open_date_desc. |
| limit | integer | Requested rows per page (1-1,000; default 25). Values above 100 return 100 rows with a notice. |
| offset | integer | Zero-based row offset for paging; use next_offset from the previous page. |
| keyword | string | Full-text search over title, description, opportunity number, and agency. Bare terms are all required (rural broadband = rural AND broadband); join alternatives with OR, quote phrases ("mental health"), exclude with NOT or -term, and use a trailing * for prefixes (broad*). OR mixed with AND or with bare terms must be grouped in parentheses, e.g. (rural OR tribal) broadband; an ungrouped mix is rejected. A word with an internal hyphen or period (COVID-19, K-12) is matched as a phrase. Field prefixes (agency:NSF, cfda:93.866) are rejected: use the agencies, assistance_listing, or other filter instead. See grantsgov_list_reference topic keyword_syntax. |
| agencies | any | Agency codes from grantsgov_list_reference topic agencies (e.g. HHS, HHS-NIH11, NSF). One whole string or an array, up to 10 nonblank entries. A code includes its sub-agencies. Case-insensitive. Any listed agency matches. |
| statuses | any | Lifecycle statuses to include: forecasted, posted, closed, archived. One whole string or an array, up to 4 nonblank entries. Default: forecasted and posted. |
| eligibilities | any | Two-digit applicant-type codes from grantsgov_list_reference topic eligibilities (e.g. 12 = nonprofits with 501(c)(3) status, 07 = federally recognized tribal governments). One whole string or an array of strings or numbers, up to 17 nonblank entries. A single digit is zero-padded (7 = 07). Any listed type matches. |
| include_facets | boolean | Include facet counts per filter value. Set false when paging to save space. |
| assistance_listing | string | One assistance listing number (ALN, formerly CFDA), e.g. 93.866 or 93866, in any case. Only one value is supported. |
| funding_categories | any | Funding category codes from grantsgov_list_reference topic funding_categories (e.g. HL = Health, ED = Education). One whole string or an array, up to 28 nonblank entries. Case-insensitive. Any listed category matches. |
| opportunity_number | string | Exact agency-assigned opportunity number (e.g. HRSA-27-005), matched case-insensitively; one pair of surrounding double quotes is removed. Numbers are not unique across agencies, so several rows can match. To look up a number across every status, prefer grantsgov_get_opportunity with opportunity_numbers. |
| posted_within_days | integer | Only opportunities posted in the last N days (1-3650). Works only with the forecasted and posted statuses. |
| closing_within_days | integer | Only posted opportunities closing between today and N days from today, US Eastern (0-365; 0 = closing today). Searches posted opportunities in close-date order, so statuses may only be posted and sort only close_date_asc. |
| funding_instruments | any | Funding instruments: G (grant), CA (cooperative agreement), PC (procurement contract), O (other). One whole string or an array, up to 4 nonblank entries. Any listed instrument matches. |
| include_unrestricted | boolean | When eligibilities is set, also match opportunities open to any applicant type (code 99), which the specific codes do not cover. Set false to see only opportunities targeted at the listed types. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"relevance",
"open_date_desc",
"open_date_asc",
"close_date_asc",
"close_date_desc",
"opportunity_number_asc",
"opportunity_number_desc",
"agency_asc",
"agency_desc"
],
"type": "string",
"description": "Result order: relevance (best keyword match; needs keyword, otherwise the order is arbitrary), open_date_desc/open_date_asc (posting date), close_date_asc/close_date_desc (close date; no close date sorts last on asc), opportunity_number_asc/_desc, agency_asc/_desc. Default: relevance with a keyword, else open_date_desc."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 1000,
"minimum": 1,
"description": "Requested rows per page (1-1,000; default 25). Values above 100 return 100 rows with a notice."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 100000,
"minimum": 0,
"description": "Zero-based row offset for paging; use next_offset from the previous page."
},
"keyword": {
"type": "string",
"maxLength": 500,
"description": "Full-text search over title, description, opportunity number, and agency. Bare terms are all required (rural broadband = rural AND broadband); join alternatives with OR, quote phrases (\"mental health\"), exclude with NOT or -term, and use a trailing * for prefixes (broad*). OR mixed with AND or with bare terms must be grouped in parentheses, e.g. (rural OR tribal) broadband; an ungrouped mix is rejected. A word with an internal hyphen or period (COVID-19, K-12) is matched as a phrase. Field prefixes (agency:NSF, cfda:93.866) are rejected: use the agencies, assistance_listing, or other filter instead. See grantsgov_list_reference topic keyword_syntax."
},
"agencies": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*(?:(?:[A-Za-z0-9]+(?:[\\s-]+[A-Za-z0-9]+)*)\\s*)?$"
},
{
"type": "string",
"pattern": "^\\s*$"
}
]
}
}
],
"description": "Agency codes from grantsgov_list_reference topic agencies (e.g. HHS, HHS-NIH11, NSF). One whole string or an array, up to 10 nonblank entries. A code includes its sub-agencies. Case-insensitive. Any listed agency matches."
},
"statuses": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"anyOf": [
{
"enum": [
"forecasted",
"posted",
"closed",
"archived"
],
"type": "string"
},
{
"type": "string",
"pattern": "^\\s*$"
}
]
}
}
],
"description": "Lifecycle statuses to include: forecasted, posted, closed, archived. One whole string or an array, up to 4 nonblank entries. Default: forecasted and posted."
},
"eligibilities": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"pattern": "^\\s*(?:(?:\\d{1,2})\\s*)?$"
},
{
"type": "integer",
"maximum": 99,
"minimum": 0
}
]
},
{
"type": "string",
"pattern": "^\\s*$"
}
]
}
}
],
"description": "Two-digit applicant-type codes from grantsgov_list_reference topic eligibilities (e.g. 12 = nonprofits with 501(c)(3) status, 07 = federally recognized tribal governments). One whole string or an array of strings or numbers, up to 17 nonblank entries. A single digit is zero-padded (7 = 07). Any listed type matches."
},
"include_facets": {
"type": "boolean",
"default": true,
"description": "Include facet counts per filter value. Set false when paging to save space."
},
"assistance_listing": {
"type": "string",
"pattern": "^\\s*(?:(?:(?:[A-Za-z][A-Za-z\\s.]*(?:[:#]\\s*)?)?\\d{2}\\.?[0-9A-Za-z]{3})\\s*)?$",
"description": "One assistance listing number (ALN, formerly CFDA), e.g. 93.866 or 93866, in any case. Only one value is supported."
},
"funding_categories": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"pattern": "^\\s*(?:(?:[A-Za-z]{1,4})\\s*)?$"
},
{
"type": "string",
"pattern": "^\\s*$"
}
]
}
}
],
"description": "Funding category codes from grantsgov_list_reference topic funding_categories (e.g. HL = Health, ED = Education). One whole string or an array, up to 28 nonblank entries. Case-insensitive. Any listed category matches."
},
"opportunity_number": {
"type": "string",
"pattern": "^(?:[^\"]*|\\s*\"[^\"]*\"\\s*)$",
"description": "Exact agency-assigned opportunity number (e.g. HRSA-27-005), matched case-insensitively; one pair of surrounding double quotes is removed. Numbers are not unique across agencies, so several rows can match. To look up a number across every status, prefer grantsgov_get_opportunity with opportunity_numbers."
},
"posted_within_days": {
"type": "integer",
"maximum": 3650,
"minimum": 1,
"description": "Only opportunities posted in the last N days (1-3650). Works only with the forecasted and posted statuses."
},
"closing_within_days": {
"type": "integer",
"maximum": 365,
"minimum": 0,
"description": "Only posted opportunities closing between today and N days from today, US Eastern (0-365; 0 = closing today). Searches posted opportunities in close-date order, so statuses may only be posted and sort only close_date_asc."
},
"funding_instruments": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"anyOf": [
{
"enum": [
"G",
"CA",
"PC",
"O"
],
"type": "string"
},
{
"type": "string",
"pattern": "^\\s*$"
}
]
}
}
],
"description": "Funding instruments: G (grant), CA (cooperative agreement), PC (procurement contract), O (other). One whole string or an array, up to 4 nonblank entries. Any listed instrument matches."
},
"include_unrestricted": {
"type": "boolean",
"default": true,
"description": "When eligibilities is set, also match opportunities open to any applicant type (code 99), which the specific codes do not cover. Set false to see only opportunities targeted at the listed types."
}
},
"additionalProperties": false
}