Data source: NSF Award API
Overview
NSF Awards wraps NSF Award API, handling authentication, pagination, and rate limits for you. This tutorial covers all 4 tools with working code examples you can copy and run.
Prerequisites
- Sign up at https://context.gnist.ai/signup for a free API key (100 calls/day).
- Choose your integration method: MCP protocol or REST API.
Connect via MCP
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"gnist-nsf-awards": {
"url": "https://context.gnist.ai/mcp/nsf-awards/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (4)
search_awards
Search NSF research awards and grants by keyword. Covers all NSF-funded research across science, engineering, and education. Includes award details, principal investigators, institutions, and funding amounts. Returns: List of matching awards with title, PI, institution, funding amount, and abstract excerpt. Use award id with get_award for full details.
| Parameter | Type | Required | Description |
|---|---|---|---|
keyword | string | required | Search term for NSF awards (e.g. "machine learning", "climate change", "quantum computing"). |
awardee_name | any | optional | Institution name to filter by (e.g. "MIT", "Stanford University"). |
start_date_start | any | optional | Filter awards starting after this date (MM/DD/YYYY format). |
start_date_end | any | optional | Filter awards starting before this date (MM/DD/YYYY format). |
limit | integer | optional | Number of results (1–25, default 25). (default: 25) |
curl -X POST "https://context.gnist.ai/mcp/nsf-awards/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_awards", "arguments": {"keyword": "machine learning"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/nsf-awards/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'keyword': 'machine learning'},
'name': 'search_awards'}},
)
print(resp.json())
get_award
Get detailed information about a specific NSF award. Returns the full award record including abstract, PI, institution, funding, and program information. Use the id from search_awards results. Returns: Award details with abstract, PI, institution, funding amount, dates, and program info. Returns found=false if award not found.
| Parameter | Type | Required | Description |
|---|---|---|---|
award_id | string | required | NSF award ID (e.g. "2548201"). Found in search_awards results. |
curl -X POST "https://context.gnist.ai/mcp/nsf-awards/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_award", "arguments": {"award_id": "2548201"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/nsf-awards/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'award_id': '2548201'}, 'name': 'get_award'}},
)
print(resp.json())
search_by_pi
Search NSF awards by principal investigator name. Find all NSF grants awarded to a specific researcher. Optionally filter by keyword to narrow to a research area. Returns: List of awards for the specified PI with title, institution, funding, and dates.
| Parameter | Type | Required | Description |
|---|---|---|---|
pi_last_name | string | required | Principal investigator's last name. |
pi_first_name | any | optional | Principal investigator's first name (optional, narrows results). |
keyword | any | optional | Optional keyword to further filter results. |
limit | integer | optional | Number of results (1–25, default 25). (default: 25) |
curl -X POST "https://context.gnist.ai/mcp/nsf-awards/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_by_pi", "arguments": {"pi_last_name": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/nsf-awards/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'pi_last_name': 'example'}, 'name': 'search_by_pi'}},
)
print(resp.json())
report_feedback
Report a bug, feature request, or general feedback for this data source. Use this when something doesn't work as expected, when you'd like a new feature, or when you have suggestions for improvement. Args: feedback: Describe the issue or suggestion. feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: general) |
curl -X POST "https://context.gnist.ai/mcp/nsf-awards/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "report_feedback", "arguments": {"feedback": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/nsf-awards/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'feedback': 'example'}, 'name': 'report_feedback'}},
)
print(resp.json())
Common Patterns
Use
search_awards to find items, then get_award to get full details. This two-step pattern is common for exploring data before drilling down.Several tools support
limit, offset, or page parameters. Start with small limits during development, then increase for production queries.FAQ
What data does NSF Awards provide?
Search NSF research awards and grants — keyword search, PI lookup, institution filtering. Covers all NSF-funded research across science, engineering, and education. It exposes 4 tools: search_awards, get_award, search_by_pi, report_feedback.
What do I need to get started?
A Gnist API key (free tier: 100 calls/day). Sign up at https://context.gnist.ai/signup.
What format does the NSF Awards API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.