Data source: Crossref, OpenAlex, PubMed, Semantic Scholar
Overview
Academic Research searches across 4 data sources (Crossref, OpenAlex, PubMed, Semantic Scholar) in a single query. It deduplicates and normalizes results, saving you from building 4 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-academic-research": {
"url": "https://context.gnist.ai/mcp/academic-research/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (4)
search_papers
Search for academic papers across Crossref, OpenAlex, PubMed, and Semantic Scholar. Results are deduplicated by DOI and enriched with metadata from all sources that found a match. Sorted by citation count (most cited first). Examples: search_papers(query="transformer attention mechanism") search_papers(query="CRISPR gene editing", year_from=2020, max_results=20) search_papers(query="climate change economic impact", year_from=2018, year_to=2024)
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | required | Search query — keywords, title, topic, or author name. |
max_results | integer | optional | Maximum number of results. (default: 10) |
year_from | any | optional | Earliest publication year. |
year_to | any | optional | Latest publication year. |
curl -X POST "https://context.gnist.ai/mcp/academic-research/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_papers", "arguments": {"query": "renewable energy"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/academic-research/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'query': 'renewable energy'},
'name': 'search_papers'}},
)
print(resp.json())
get_paper
Resolve a DOI across all four academic sources and return merged metadata. Queries Crossref, OpenAlex, PubMed, and Semantic Scholar in parallel, then merges the results into a single enriched paper object with the best available data from each source. Examples: get_paper(doi="10.1038/nature12373") get_paper(doi="10.1126/science.aax2342")
| Parameter | Type | Required | Description |
|---|---|---|---|
doi | string | required | Digital Object Identifier (e.g. '10.1038/nature12373'). |
curl -X POST "https://context.gnist.ai/mcp/academic-research/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_paper", "arguments": {"doi": "'10.1038/nature12373'"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/academic-research/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'doi': "'10.1038/nature12373'"}, 'name': 'get_paper'}},
)
print(resp.json())
list_academic_sources
List all registered academic data sources and their status. Shows which sources are available and whether they are currently enabled. Examples: list_academic_sources()
curl -X POST "https://context.gnist.ai/mcp/academic-research/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "list_academic_sources", "arguments": {}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/academic-research/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {}, 'name': 'list_academic_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/academic-research/" \
-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/academic-research/",
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_papers to find items, then get_paper 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 Academic Research provide?
Unified academic paper search across Crossref, OpenAlex, PubMed, and Semantic Scholar — deduplicated by DOI with merged metadata. It exposes 4 tools: search_papers, get_paper, list_academic_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 Academic Research API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.
Which data sources does Academic Research aggregate?
Crossref, OpenAlex, PubMed, Semantic Scholar. Results are deduplicated and normalized into a consistent format.