Data source: NIH Reporter, NSF Awards, CORDIS
Overview
Research Funding searches across 3 data sources (NIH Reporter, NSF Awards, CORDIS) in a single query. It deduplicates and normalizes results, saving you from building 3 separate integrations. This tutorial walks through all 4 tools with working code examples.
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-research-funding": {
"url": "https://context.gnist.ai/mcp/research-funding/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (4)
search_grants
Search for research grants across NIH Reporter, NSF Awards, and EU CORDIS. Queries all three funding agencies in parallel and returns combined results sorted by award amount (largest grants first). Each result includes the funding source, award amount, principal investigators, and institution. Examples: search_grants(query="machine learning") search_grants(query="cancer immunotherapy", source="nih", max_results=20) search_grants(query="renewable energy", source="cordis")
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | required | Search query — keywords, topic, PI name, or institution. |
max_results | integer | optional | Maximum number of results. (default: 10) |
source | any | optional | Filter by source: nih, nsf, cordis. Omit to search all. |
curl -X POST "https://context.gnist.ai/mcp/research-funding/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_grants", "arguments": {"query": "renewable energy"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/research-funding/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'query': 'renewable energy'},
'name': 'search_grants'}},
)
print(resp.json())
get_grant
Look up a specific research grant by its ID. If the source is known, specify it to get faster results. Otherwise, all three sources are queried in parallel. Examples: get_grant(grant_id="5R01CA123456-05", source="nih") get_grant(grant_id="2548201", source="nsf") get_grant(grant_id="101057437", source="cordis")
| Parameter | Type | Required | Description |
|---|---|---|---|
grant_id | string | required | Grant ID (e.g. NIH project number, NSF award ID, or CORDIS reference). |
source | any | optional | Source: nih, nsf, cordis. Specify to avoid searching all sources. |
curl -X POST "https://context.gnist.ai/mcp/research-funding/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_grant", "arguments": {"grant_id": "NIH"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/research-funding/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'grant_id': 'NIH'}, 'name': 'get_grant'}},
)
print(resp.json())
list_funding_sources
List all registered research funding data sources and their status. Shows which funding agencies are available and whether they are enabled. Examples: list_funding_sources()
curl -X POST "https://context.gnist.ai/mcp/research-funding/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "list_funding_sources", "arguments": {}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/research-funding/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {}, 'name': 'list_funding_sources'}},
)
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/research-funding/" \
-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/research-funding/",
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_grants to find items, then get_grant 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 Research Funding provide?
Unified research grant search across NIH Reporter, NSF Awards, and EU CORDIS — US and European government funding for scientific research. It exposes 4 tools: search_grants, get_grant, list_funding_sources, 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 Research Funding API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.
Which data sources does Research Funding aggregate?
NIH Reporter, NSF Awards, CORDIS. Results are deduplicated and normalized into a consistent format.