orcid-mcp-server
Researcher profiles, works, affiliations, funding, and peer reviews from the ORCID registry.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- HIGH
- MEDIUMin orcid_get_profile
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"orcid-mcp-server": {
"command": "node",
"args": [
"@cyanheads/orcid-mcp-server"
]
}
}
}Ausführbare Pakete
0.3.1streamable-httpRemote-Endpunkte
https://orcid.caseyjhand.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (9)
🟢orcid_get_profile(orcid_id)
Fetch a researcher's public profile from ORCID: name, biography, keywords, researcher URLs, and external identifiers such as Scopus Author ID, ResearcherID, and Loop profile. This is the entry point for building a researcher dossier. Pass a bare ORCID iD (0000-0001-2345-6789) or a full URI (https://orcid.org/0000-0001-2345-6789). The profile contains only publicly visible data — researchers control visibility per field.
Eingabe-Schema
{
"type": "object",
"properties": {
"orcid_id": {
"type": "string",
"pattern": "^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."
}
},
"required": [
"orcid_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Normalized ORCID iD (bare format without URI prefix)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI (https://orcid.org/{id})."
},
"givenNames": {
"description": "Given (first) name, if publicly visible.",
"type": "string"
},
"familyName": {
"description": "Family (last) name, if publicly visible.",
"type": "string"
},
"creditName": {
"description": "Published credit name, if set.",
"type": "string"
},
"biography": {
"description": "Researcher biography, if publicly visible.",
"type": "string"
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"description": "Keyword term."
},
"description": "Research keywords set by the researcher."
},
"researcherUrls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"description": "Label for this URL.",
"type": "string"
},
"url": {
"type": "string",
"description": "URL value."
}
},
"required": [
"url"
],
"additionalProperties": false,
"description": "Researcher URL entry."
},
"description": "Researcher-provided URLs (personal site, lab page, blog, etc.)."
},
"externalIdentifiers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Identifier type (e.g. Scopus Author ID, ResearcherID, Loop)."
},
"value": {
"type": "string",
"description": "Identifier value."
},
"url": {
"description": "Resolver URL for this identifier, if provided.",
"type": "string"
},
"relationship": {
"description": "Relationship type (self or part-of).",
"type": "string"
}
},
"required": [
"type",
"value"
],
"additionalProperties": false,
"description": "External identifier linking to another scholarly system."
},
"description": "External identifiers from scholarly systems (Scopus, Web of Science, Loop, etc.)."
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address."
},
"primary": {
"description": "True when this is the primary email address.",
"type": "boolean"
}
},
"required": [
"email"
],
"additionalProperties": false,
"description": "Email address entry."
},
"description": "Publicly visible email addresses."
},
"countries": {
"type": "array",
"items": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code."
},
"description": "Countries listed in the researcher's address section."
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler.",
"examples": [
"profile_not_found"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"orcidId",
"orcidUri",
"keywords",
"researcherUrls",
"externalIdentifiers",
"emails",
"countries"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_search_researchers(given_name, family_name, affiliation, keyword, ror_id, ...)
Search the ORCID registry using structured field parameters or raw Solr syntax. Provide at least one non-blank search field; all provided structured params are ANDed together. The `query` field appends raw Solr syntax to the generated clause. Returns ORCID iDs with inline name and institution data — no follow-up profile fetches needed for basic disambiguation. For ranked disambiguation of an ambiguous author name, use orcid_resolve_researcher instead. The ORCID Public API caps results at 10,000 — use pagination for large result sets.
Eingabe-Schema
{
"type": "object",
"properties": {
"given_name": {
"description": "Researcher's given (first) name.",
"type": "string"
},
"family_name": {
"description": "Researcher's family (last) name.",
"type": "string"
},
"affiliation": {
"description": "Organization name to filter by. Phrase match.",
"type": "string"
},
"keyword": {
"description": "Keyword to search in the researcher's keyword fields. Phrase match.",
"type": "string"
},
"ror_id": {
"description": "ROR organization ID to filter by (full URL, e.g. https://ror.org/00f54p054). Returns researchers affiliated with this organization.",
"type": "string"
},
"doi": {
"description": "DOI to anchor the search, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Returns researchers who have linked this DOI to their ORCID record.",
"type": "string"
},
"pmid": {
"description": "PubMed ID to anchor the search, bare (22745249), as PMID:22745249, or as a pubmed.ncbi.nlm.nih.gov or ncbi.nlm.nih.gov/pubmed URL. Returns researchers who have linked this PMID to their ORCID record.",
"type": "string"
},
"grant_number": {
"description": "Grant or award number on a funding item in the researcher record (e.g. 5F31MH010500-03). Matched as a case-insensitive phrase over the parts between separators such as hyphens and slashes: 5F31MH010500 also matches 5F31MH010500-03, but a number cut mid-part (5F31MH0105) matches nothing. Not an exact identifier lookup.",
"type": "string"
},
"query": {
"description": "Raw Solr query string appended to the generated clause with AND. Supports all ORCID Solr fields and boolean operators.",
"type": "string"
},
"rows": {
"default": 20,
"description": "Maximum results to return (1–1000).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"start": {
"default": 0,
"description": "Pagination offset (0-based), 0–10,000. The ORCID Public API rejects start > 10,000 for unauthenticated requests.",
"type": "integer",
"minimum": 0,
"maximum": 10000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"givenNames": {
"description": "Given names from the ORCID record.",
"type": "string"
},
"familyNames": {
"description": "Family name from the ORCID record.",
"type": "string"
},
"creditName": {
"description": "Published credit name, if set.",
"type": "string"
},
"otherNames": {
"type": "array",
"items": {
"type": "string",
"description": "Alternative name."
},
"description": "Other names listed on the ORCID record."
},
"institutionNames": {
"type": "array",
"items": {
"type": "string",
"description": "Institution name."
},
"description": "Affiliated institution names returned inline with each search result."
}
},
"required": [
"orcidId",
"orcidUri",
"otherNames",
"institutionNames"
],
"additionalProperties": false,
"description": "Expanded search result for one researcher."
},
"description": "Matching researchers with inline name and institution data."
},
"rows": {
"type": "number",
"description": "Number of results returned in this response."
},
"start": {
"type": "number",
"description": "Pagination offset used for this response."
},
"nextStart": {
"description": "Offset to pass as start on the next call to continue paging. Present only when more matches remain below the ORCID Public API 10,000-offset ceiling; omitted at the final reachable page and when this response already includes the last match.",
"type": "number"
},
"effectiveQuery": {
"type": "string",
"description": "Solr query sent to the ORCID API."
},
"numFound": {
"type": "number",
"description": "Total number of matching records in ORCID (before pagination)."
},
"truncated": {
"type": "boolean",
"description": "True when numFound exceeds the ORCID Public API's 10,000-offset retrieval ceiling, so some matches cannot be paged to with the current query. Narrow or partition the query to reach them."
},
"notice": {
"description": "Recovery hint when results are empty, pagination overshoots the total, or matches exceed the 10,000-offset ceiling. Absent on fully retrievable pages.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `query_failed`: ORCID rejects the compiled Solr query — most often malformed raw query syntax. Other values are possible when a failure originates below the handler.",
"examples": [
"query_failed"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"results",
"rows",
"start",
"effectiveQuery",
"numFound",
"truncated"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_get_works(orcid_id, limit, offset, include_external_ids)
Retrieve works associated with an ORCID iD — publications, datasets, software, preprints, and more. Returns work summaries with put-codes, titles, types, publication dates, journal names, and all external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). The first 50 works are returned by default; workCount reports the total available, and prolific records are paged with offset and the returned nextOffset (or raise limit). A page also stops early once the response reaches its 64,000-byte budget, so returnedCount can come in below limit; truncated and nextOffset then carry the continuation. Set include_external_ids to false to omit identifier lists for a lighter payload. Pass the putCode from each work to orcid_get_work_detail to retrieve the full record including abstract and contributors. External IDs are ready for chaining to Crossref, PubMed, or arXiv servers. Works are self-reported; a researcher may not have linked all their publications.
Eingabe-Schema
{
"type": "object",
"properties": {
"orcid_id": {
"type": "string",
"pattern": "^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."
},
"limit": {
"default": 50,
"description": "Maximum works to return in this response (default 50, max 1000). The full list is sliced locally — page prolific records with offset and the returned nextOffset. A page stops early at the 64,000-byte response budget, so a large limit may return fewer works.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"offset": {
"default": 0,
"description": "Zero-based index of the first work to return (default 0). Combine with limit to page through the full works list.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"include_external_ids": {
"default": true,
"description": "When true (default), each work carries its external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). Set false to omit them for a lighter payload when only titles, types, and dates are needed.",
"type": "boolean"
}
},
"required": [
"orcid_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Normalized ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"workCount": {
"type": "number",
"description": "Total works available for this ORCID iD, before offset and limit are applied."
},
"returnedCount": {
"type": "number",
"description": "Number of works returned in this response, after applying offset, limit, and the 64,000-byte response budget."
},
"offset": {
"type": "number",
"description": "Zero-based offset applied to the full works list for this response."
},
"nextOffset": {
"description": "Offset to pass on the next call to continue paging. Omitted when this response includes the final work.",
"type": "number"
},
"truncated": {
"type": "boolean",
"description": "True when more works are available beyond this response, whether limit or the response budget ended the page — fetch them with nextOffset."
},
"works": {
"type": "array",
"items": {
"type": "object",
"properties": {
"putCode": {
"description": "Work put-code — pass to orcid_get_work_detail to fetch the full record including abstract and contributors.",
"type": "number"
},
"title": {
"description": "Work title.",
"type": "string"
},
"workType": {
"description": "Work type (e.g. journal-article, dataset, software, preprint).",
"type": "string"
},
"publicationDate": {
"description": "Publication date (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"journalTitle": {
"description": "Journal or container title.",
"type": "string"
},
"url": {
"description": "URL for the work, if available.",
"type": "string"
},
"externalIds": {
"description": "External identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.). Omitted when include_external_ids is false.",
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Identifier type (e.g. doi, pmid, arxiv, isbn)."
},
"value": {
"type": "string",
"description": "Identifier value."
},
"url": {
"description": "Resolver URL for this identifier, if available.",
"type": "string"
},
"relationship": {
"description": "Relationship to the work (self or part-of).",
"type": "string"
}
},
"required": [
"type",
"value"
],
"additionalProperties": false,
"description": "External identifier for a work."
}
}
},
"additionalProperties": false,
"description": "Work summary record."
},
"description": "Works for this ORCID iD, sliced to the requested offset and limit and to the response budget."
},
"notice": {
"description": "Note when the works list is empty — may indicate no self-reported works or private visibility settings.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler.",
"examples": [
"profile_not_found"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"orcidId",
"orcidUri",
"workCount",
"returnedCount",
"offset",
"truncated",
"works"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_get_work_detail(orcid_id, put_codes)
Fetch full detail records for 1–100 works by their put-codes in a single request. Put-codes are returned by orcid_get_works in the putCode field of each work entry. Returns the abstract (short-description), all contributors with CRediT roles, the complete external ID list (DOI, PMID, arXiv, ISBN, etc.), citation metadata (BibTeX or other formats when provided), journal title, and URL for each work. Per-record errors (not-found or inaccessible put-codes) are surfaced as error entries rather than failing the whole call. Records are added until the response reaches its 64,000-byte budget; put-codes left out are returned in deferredPutCodes to pass back in a follow-up call. A repeated put-code is fetched once.
Eingabe-Schema
{
"type": "object",
"properties": {
"orcid_id": {
"type": "string",
"pattern": "^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."
},
"put_codes": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Work put-code (positive integer)."
},
"description": "Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works. A repeated put-code is fetched once. Any the 64,000-byte response budget leaves out come back in deferredPutCodes."
}
},
"required": [
"orcid_id",
"put_codes"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Normalized ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"works": {
"type": "array",
"items": {
"type": "object",
"properties": {
"putCode": {
"type": "number",
"description": "Put-code of this work record."
},
"title": {
"description": "Work title.",
"type": "string"
},
"subtitle": {
"description": "Work subtitle, when provided.",
"type": "string"
},
"workType": {
"description": "Work type (e.g. journal-article, dataset, software, preprint).",
"type": "string"
},
"publicationDate": {
"description": "Publication date (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"journalTitle": {
"description": "Journal or container title, when provided.",
"type": "string"
},
"abstract": {
"description": "Abstract or short description, when provided.",
"type": "string"
},
"citation": {
"description": "Citation metadata, when provided by the depositing system.",
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Citation format (e.g. bibtex, formatted-unspecified)."
},
"value": {
"type": "string",
"description": "Citation string in the specified format."
}
},
"required": [
"type",
"value"
],
"additionalProperties": false
},
"url": {
"description": "URL for the work, when available.",
"type": "string"
},
"externalIds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Identifier type (e.g. doi, pmid, arxiv, isbn, ppr)."
},
"value": {
"type": "string",
"description": "Identifier value."
},
"url": {
"description": "Resolver URL for this identifier, if available.",
"type": "string"
},
"relationship": {
"description": "Relationship to the work (self or part-of).",
"type": "string"
}
},
"required": [
"type",
"value"
],
"additionalProperties": false,
"description": "External identifier for the work."
},
"description": "All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.)."
},
"contributors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"description": "Contributor display name or credit name.",
"type": "string"
},
"orcidId": {
"description": "Contributor ORCID iD (bare format), if linked.",
"type": "string"
},
"role": {
"description": "Contributor role (e.g. author, editor, conceptualization, data-curation). May be a CRediT taxonomy term.",
"type": "string"
},
"sequence": {
"description": "Contributor sequence position (first or additional).",
"type": "string"
}
},
"additionalProperties": false,
"description": "Work contributor with optional role and ORCID iD."
},
"description": "Work contributors with optional roles. May be empty if not deposited."
},
"languageCode": {
"description": "Language code of the work, when provided.",
"type": "string"
}
},
"required": [
"putCode",
"externalIds",
"contributors"
],
"additionalProperties": false,
"description": "Full detail record for one work."
},
"description": "Successfully resolved work detail records."
},
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"putCode": {
"description": "Put-code that produced this error, when identifiable.",
"type": "number"
},
"message": {
"type": "string",
"description": "Error message from ORCID (e.g. not found or access denied)."
}
},
"required": [
"message"
],
"additionalProperties": false,
"description": "Error entry for a put-code that could not be resolved."
},
"description": "Per-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully."
},
"deferredPutCodes": {
"description": "Requested put-codes left out because the response reached its 64,000-byte budget. Pass them as put_codes in another call to fetch them. Omitted when every put-code was fetched.",
"type": "array",
"items": {
"type": "number",
"description": "Deferred work put-code."
}
},
"notice": {
"description": "Note when the response budget deferred some put-codes — call again with deferredPutCodes.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. `fetch_failed`: The ORCID bulk works endpoint returns an unexpected error. Other values are possible when a failure originates below the handler.",
"examples": [
"profile_not_found",
"fetch_failed"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"orcidId",
"orcidUri",
"works",
"errors"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_get_affiliations(orcid_id, types)
Fetch affiliation records for an ORCID researcher. The `types` parameter controls which affiliation sections to return: employment, education, invited-positions, distinctions, memberships, qualifications, services, or all. Default is employment and education. Returns organization names, disambiguated organization identifiers (ROR/GRID/Ringgold), departments, roles, and date ranges. Affiliation data is self-reported; absence does not mean no affiliation.
Eingabe-Schema
{
"type": "object",
"properties": {
"orcid_id": {
"type": "string",
"pattern": "^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."
},
"types": {
"default": [
"employment",
"education"
],
"description": "Which affiliation types to return. Defaults to employment and education. Use [\"all\"] to get every section.",
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"employment",
"education",
"invited-positions",
"distinctions",
"memberships",
"qualifications",
"services",
"all"
],
"description": "Affiliation section type. Use \"all\" to include all section types."
}
}
},
"required": [
"orcid_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Normalized ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"affiliationCount": {
"type": "number",
"description": "Total number of affiliation records returned."
},
"affiliations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Affiliation section type (employment, education, invited-positions, etc.)."
},
"organization": {
"description": "Organization details.",
"type": "object",
"properties": {
"name": {
"description": "Organization name.",
"type": "string"
},
"city": {
"description": "City of the organization.",
"type": "string"
},
"country": {
"description": "Country of the organization.",
"type": "string"
},
"disambiguatedId": {
"description": "Disambiguated organization identifier (ROR URL, GRID ID, or Ringgold ID).",
"type": "string"
},
"disambiguationSource": {
"description": "Source of the disambiguation (ROR, GRID, or RINGGOLD).",
"type": "string"
}
},
"additionalProperties": false
},
"department": {
"description": "Department or unit within the organization.",
"type": "string"
},
"role": {
"description": "Job title or role.",
"type": "string"
},
"startDate": {
"description": "Start date (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"endDate": {
"description": "End date (YYYY, YYYY-MM, or YYYY-MM-DD). Absent if current.",
"type": "string"
},
"url": {
"description": "URL for the affiliation record, if provided.",
"type": "string"
}
},
"required": [
"type"
],
"additionalProperties": false,
"description": "Affiliation record."
},
"description": "Affiliation records for the requested types."
},
"requestedTypes": {
"type": "array",
"items": {
"type": "string",
"description": "Affiliation type."
},
"description": "Affiliation types that were requested."
},
"notice": {
"description": "Note when no affiliations were found — may indicate private visibility or no self-reported affiliations.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler.",
"examples": [
"profile_not_found"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"orcidId",
"orcidUri",
"affiliationCount",
"affiliations",
"requestedTypes"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_get_funding(orcid_id)
Fetch funding records for an ORCID researcher: grants, contracts, awards, and salary awards. Returns funder names, funder organization identifiers, grant numbers, and funding periods. Funding data is entirely self-reported — most researchers do not enter funding even when they have grants. Absence of funding records does not imply absence of funding. When records exist they are high-value for grant tracking and funder analysis.
Eingabe-Schema
{
"type": "object",
"properties": {
"orcid_id": {
"type": "string",
"pattern": "^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."
}
},
"required": [
"orcid_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Normalized ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"fundingCount": {
"type": "number",
"description": "Total number of funding records returned."
},
"funding": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"description": "Funding title or project name.",
"type": "string"
},
"type": {
"description": "Funding type (e.g. grant, contract, award, salary-award).",
"type": "string"
},
"funder": {
"description": "Funder organization details.",
"type": "object",
"properties": {
"name": {
"description": "Funder organization name.",
"type": "string"
},
"city": {
"description": "Funder city.",
"type": "string"
},
"country": {
"description": "Funder country.",
"type": "string"
},
"disambiguatedId": {
"description": "Disambiguated funder identifier (e.g. Crossref Funder ID URL or ROR URL).",
"type": "string"
},
"disambiguationSource": {
"description": "Source of funder disambiguation (FUNDREF, ROR, GRID, etc.).",
"type": "string"
}
},
"additionalProperties": false
},
"startDate": {
"description": "Funding start date (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"endDate": {
"description": "Funding end date (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"grantNumbers": {
"type": "array",
"items": {
"type": "string",
"description": "Grant or award number."
},
"description": "Grant numbers or award identifiers for this funding record."
},
"url": {
"description": "URL for the funding record, if available.",
"type": "string"
}
},
"required": [
"grantNumbers"
],
"additionalProperties": false,
"description": "Funding record."
},
"description": "Funding records associated with this ORCID iD."
},
"notice": {
"description": "Note when no funding is found — absence of records does not mean absence of funding.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler.",
"examples": [
"profile_not_found"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"orcidId",
"orcidUri",
"fundingCount",
"funding"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_get_peer_reviews(orcid_id)
Fetch peer review activity for an ORCID researcher: convening organizations (journals and publishers), reviewer role (reviewer, editor, chair, etc.), review type, completion dates, and ISSN-keyed group identifiers. Use to assess editorial activity, journal affiliations, and the scope of a researcher's peer review contributions. Peer review records are self-reported or imported by participating publishers — coverage varies by researcher.
Eingabe-Schema
{
"type": "object",
"properties": {
"orcid_id": {
"type": "string",
"pattern": "^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."
}
},
"required": [
"orcid_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Normalized ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"reviewCount": {
"type": "number",
"description": "Total number of peer review records returned."
},
"peerReviews": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reviewerRole": {
"description": "Reviewer role (e.g. reviewer, editor, chair, organizer, co-investigator, co-reviewer).",
"type": "string"
},
"reviewType": {
"description": "Review type (e.g. review, evaluation, grant-review, editor-report).",
"type": "string"
},
"completionDate": {
"description": "Completion date of the review (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"conveningOrganization": {
"description": "Journal or publisher that convened the review.",
"type": "object",
"properties": {
"name": {
"description": "Convening organization name (journal or publisher).",
"type": "string"
},
"city": {
"description": "Convening organization city.",
"type": "string"
},
"country": {
"description": "Convening organization country.",
"type": "string"
},
"disambiguatedId": {
"description": "Disambiguated organization identifier.",
"type": "string"
},
"disambiguationSource": {
"description": "Source of disambiguation (ROR, GRID, RINGGOLD, etc.).",
"type": "string"
}
},
"additionalProperties": false
},
"reviewUrl": {
"description": "URL for the review record, if available.",
"type": "string"
},
"groupIssn": {
"description": "ISSN of the journal group this review belongs to, if available.",
"type": "string"
}
},
"additionalProperties": false,
"description": "Peer review record."
},
"description": "Peer review records for this ORCID iD."
},
"notice": {
"description": "Note when no peer reviews are found — coverage varies by researcher and publisher participation.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler.",
"examples": [
"profile_not_found"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"orcidId",
"orcidUri",
"reviewCount",
"peerReviews"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_get_research_resources(orcid_id)
List research resources associated with an ORCID researcher — compute allocations, equipment access, lab facilities, data resources, and clinical study registrations. This is a newer ORCID section; most researchers have no entries. Returns the resource title, hosting organization, external identifiers (often a URI to the allocation portal), and access period. Most entries are deposited by resource-allocation systems (e.g. ACCESS, XSEDE) rather than researchers themselves.
Eingabe-Schema
{
"type": "object",
"properties": {
"orcid_id": {
"type": "string",
"pattern": "^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."
}
},
"required": [
"orcid_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Normalized ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"resourceCount": {
"type": "number",
"description": "Total number of research resources returned."
},
"resources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"putCode": {
"type": "number",
"description": "Put-code of this research resource record."
},
"title": {
"description": "Resource or proposal title.",
"type": "string"
},
"hostOrganization": {
"description": "Organization that hosts or manages the resource.",
"type": "object",
"properties": {
"name": {
"description": "Organization name.",
"type": "string"
},
"city": {
"description": "City of the organization.",
"type": "string"
},
"country": {
"description": "Country code of the organization.",
"type": "string"
},
"disambiguatedId": {
"description": "Disambiguated organization ID (e.g. ROR or GRID identifier).",
"type": "string"
},
"disambiguationSource": {
"description": "Source of the disambiguation ID (e.g. ROR, GRID, RINGGOLD).",
"type": "string"
}
},
"additionalProperties": false
},
"externalIds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Identifier type (e.g. uri, doi, grant_number)."
},
"value": {
"type": "string",
"description": "Identifier value."
},
"url": {
"description": "Resolver URL for this identifier, if available.",
"type": "string"
},
"relationship": {
"description": "Relationship to the resource (self or part-of).",
"type": "string"
}
},
"required": [
"type",
"value"
],
"additionalProperties": false,
"description": "External identifier for the research resource."
},
"description": "External identifiers for the resource (often a portal URI)."
},
"startDate": {
"description": "Access or allocation start date (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"endDate": {
"description": "Access or allocation end date (YYYY, YYYY-MM, or YYYY-MM-DD).",
"type": "string"
},
"url": {
"description": "URL for the resource or allocation record.",
"type": "string"
}
},
"required": [
"putCode",
"externalIds"
],
"additionalProperties": false,
"description": "Research resource record."
},
"description": "Research resources associated with this ORCID iD."
},
"notice": {
"description": "Note when no research resources are found — this section is sparsely populated across ORCID profiles.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler.",
"examples": [
"profile_not_found"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"orcidId",
"orcidUri",
"resourceCount",
"resources"
]
},
{
"required": [
"error"
]
}
]
}🟢orcid_resolve_researcher(name, affiliation, doi, pmid, rows)
Disambiguate an author name to a verified ORCID iD. Returns ranked candidates (5 by default, up to 20 via the rows parameter) with transparent disambiguation signals: name match type (exact/partial/other-name/none), institution overlap flag, and whether a DOI or PMID anchor was used in the query. A DOI or PMID anchor is near-deterministic — it filters to researchers who have linked that specific work to their ORCID record. Use this tool (not orcid_search_researchers) when the input is an ambiguous name that needs ranked disambiguation. No synthetic scores are used — raw signals only.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Author name to disambiguate (full name preferred, e.g. \"Jennifer Doudna\" or \"J. Doudna\")."
},
"affiliation": {
"description": "Researcher's institution or organization name. Used for institution overlap scoring and optionally as a search constraint.",
"type": "string"
},
"doi": {
"description": "DOI of a work authored by this researcher, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Acts as a near-deterministic anchor — filters to researchers who linked this DOI to their ORCID record.",
"type": "string"
},
"pmid": {
"description": "PubMed ID of a work authored by this researcher, bare (22745249), as PMID:22745249, or as a pubmed.ncbi.nlm.nih.gov or ncbi.nlm.nih.gov/pubmed URL. Acts as a near-deterministic anchor — filters to researchers who linked this PMID to their ORCID record.",
"type": "string"
},
"rows": {
"default": 5,
"description": "Maximum candidate count to return (1–20). Defaults to 5.",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Ausgabe-Schema
{
"type": "object",
"properties": {
"candidates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"orcidId": {
"type": "string",
"description": "Candidate ORCID iD (bare format)."
},
"orcidUri": {
"type": "string",
"description": "Full ORCID URI."
},
"givenNames": {
"description": "Given names from the ORCID record.",
"type": "string"
},
"familyNames": {
"description": "Family name from the ORCID record.",
"type": "string"
},
"creditName": {
"description": "Published credit name, if set.",
"type": "string"
},
"institutionNames": {
"type": "array",
"items": {
"type": "string",
"description": "Institution name."
},
"description": "Affiliated institutions from the ORCID record."
},
"nameMatchType": {
"type": "string",
"enum": [
"exact",
"partial",
"other-name",
"none"
],
"description": "How closely the candidate name matches the input name, compared case- and accent-insensitively (José = Jose): exact (full match), partial (token overlap), other-name (match on alternate name), or none."
},
"institutionOverlap": {
"type": "boolean",
"description": "True when the provided affiliation and one of the candidate's institutions are the same name, or one appears inside the other as a contiguous run of words (so an abbreviated form still matches its full name). A single shared word such as a city or surname is not enough."
},
"anchorType": {
"type": "string",
"enum": [
"doi",
"pmid",
"none"
],
"description": "Type of identifier anchor used in the query: doi, pmid, or none. A doi or pmid anchor means the candidate has linked that work to their ORCID record."
}
},
"required": [
"orcidId",
"orcidUri",
"institutionNames",
"nameMatchType",
"institutionOverlap",
"anchorType"
],
"additionalProperties": false,
"description": "Disambiguation candidate with transparency signals."
},
"description": "Ranked candidates, ordered by name match quality then institution overlap."
},
"queryUsed": {
"type": "string",
"description": "The Solr query that produced the returned candidates — the primary query, or the final relaxed query when a fallback ran. Paired with totalFound."
},
"relaxedQuery": {
"description": "Solr query used in a secondary relaxed search, if the primary returned no results.",
"type": "string"
},
"totalFound": {
"type": "number",
"description": "Total ORCID records matching queryUsed (the query that produced the returned candidates)."
},
"primaryQuery": {
"type": "string",
"description": "The primary, most-constrained Solr query attempted first (name + optional anchor + optional affiliation). Always populated; equals queryUsed when no relaxed fallback ran."
},
"primaryTotalFound": {
"type": "number",
"description": "Total ORCID records matching primaryQuery. Zero when the primary query found nothing and a relaxed fallback produced the returned candidates."
},
"notice": {
"description": "Recovery hint when no candidates are found or when the anchor query failed to match.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable failure mode. Declared by this tool: `query_failed`: ORCID rejects a search built from the supplied name, affiliation, or identifier anchor. Other values are possible when a failure originates below the handler.",
"examples": [
"query_failed"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"candidates",
"queryUsed",
"totalFound",
"primaryQuery",
"primaryTotalFound"
]
},
{
"required": [
"error"
]
}
]
}Community
Nachweis