Data source: ORCID Public API
Overview
ORCID wraps ORCID Public API, handling authentication, pagination, and rate limits for you. This tutorial covers all 5 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-orcid": {
"url": "https://context.gnist.ai/mcp/orcid/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (5)
search_researchers
Search ORCID for researchers by name, keyword, or affiliation. ORCID is the universal researcher identifier with 20M+ profiles. Use this to find researchers and get their canonical ORCID IDs for cross-referencing with CrossRef, OpenAlex, and PubMed. Args: query: Search query — researcher name, keyword, or ORCID ID fragment. Supports Solr syntax (e.g. "given-names:Albert AND family-name:Einstein"). affiliation: Filter by affiliated organization name (e.g. "MIT", "CERN"). rows: Number of results to return (1-50, default 10). Returns: Dict with 'count' (returned), 'total_results' (total matches), and 'researchers' list. Each researcher includes orcid_id, given_name, family_name, and credit_name.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | required | Search query — researcher name, keyword, or ORCID ID fragment. Supports Solr syntax (e.g. "given-names:Albert AND family-name:Einstein"). |
affiliation | any | optional | Filter by affiliated organization name (e.g. "MIT", "CERN"). |
rows | integer | optional | Number of results to return (1-50, default 10). (default: 10) |
curl -X POST "https://context.gnist.ai/mcp/orcid/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_researchers", "arguments": {"query": "given-names:Albert AND family-name:Einstein"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/orcid/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'query': 'given-names:Albert AND '
'family-name:Einstein'},
'name': 'search_researchers'}},
)
print(resp.json())
get_researcher_profile
Fetch a researcher's full profile by ORCID ID. Returns biographical details, keywords, employment history, and education. Use this to understand a researcher's career trajectory and current affiliations. Args: orcid_id: The ORCID identifier. Accepts bare ID (e.g. "0000-0002-1825-0097") or full URL (e.g. "https://orcid.org/0000-0002-1825-0097"). Returns: Dict with orcid_id, given_name, family_name, credit_name, biography, keywords, employments (organization/role/dates), and educations.
| Parameter | Type | Required | Description |
|---|---|---|---|
orcid_id | string | required | The ORCID identifier. Accepts bare ID (e.g. "0000-0002-1825-0097") or full URL (e.g. "https://orcid.org/0000-0002-1825-0097"). |
curl -X POST "https://context.gnist.ai/mcp/orcid/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_researcher_profile", "arguments": {"orcid_id": "0000-0002-1825-0097"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/orcid/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'orcid_id': '0000-0002-1825-0097'},
'name': 'get_researcher_profile'}},
)
print(resp.json())
get_researcher_works
Fetch a researcher's published works by ORCID ID. Returns publications with DOIs that can be cross-referenced with CrossRef (resolve_doi) and OpenAlex for citation data and full metadata. Args: orcid_id: The ORCID identifier (bare or URL form). max_results: Maximum number of works to return (1-100, default 25). Returns: Dict with 'count' and 'works' list. Each work includes title, doi, work_type, publication_date, journal, url, and external_ids.
| Parameter | Type | Required | Description |
|---|---|---|---|
orcid_id | string | required | The ORCID identifier (bare or URL form). |
max_results | integer | optional | Maximum number of works to return (1-100, default 25). (default: 25) |
curl -X POST "https://context.gnist.ai/mcp/orcid/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_researcher_works", "arguments": {"orcid_id": "12345"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/orcid/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'orcid_id': '12345'}, 'name': 'get_researcher_works'}},
)
print(resp.json())
get_researcher_funding
Fetch a researcher's grants and funding records by ORCID ID. Returns funding sources, amounts, and dates. Useful for understanding a researcher's funding landscape and institutional backing. Args: orcid_id: The ORCID identifier (bare or URL form). Returns: Dict with 'count' and 'fundings' list. Each funding includes title, funder, funding_type, amount, currency, start/end dates, and url.
| Parameter | Type | Required | Description |
|---|---|---|---|
orcid_id | string | required | The ORCID identifier (bare or URL form). |
curl -X POST "https://context.gnist.ai/mcp/orcid/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_researcher_funding", "arguments": {"orcid_id": "12345"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/orcid/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'orcid_id': '12345'},
'name': 'get_researcher_funding'}},
)
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/orcid/" \
-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/orcid/",
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_researchers to find items, then get_researcher_profile 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 ORCID provide?
Researcher identity profiles — career history, publications, and funding via ORCID. It exposes 5 tools: search_researchers, get_researcher_profile, get_researcher_works, get_researcher_funding, 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 ORCID API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.