Skip to main content
Glama

Search ORCID Researchers

orcid_search_researchers
Read-onlyIdempotent

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 adds raw Solr syntax, ANDed with the structured params as one group. 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. Each response also stops at 64,000 bytes; continue a cut page from nextStart.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
doiNoDOI 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.
pmidNoPubMed 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.
rowsNoMaximum results to return (1–1000). A page also stops before its structured output or its text would pass 64,000 bytes, so fewer can come back; continue from nextStart.
queryNoRaw Solr query string. Sent as written when it is the only field; beside structured params it is ANDed as one parenthesized group, so a top-level OR keeps its alternatives (an exclusion-only query such as -keyword:x is ANDed ungrouped). Supports all ORCID Solr fields and boolean operators.
startNoPagination offset (0-based), 0–10,000. The ORCID Public API rejects start > 10,000 for unauthenticated requests.
ror_idNoROR organization ID to filter by, bare (00f54p054) or as a ror.org URL (https://ror.org/00f54p054). Returns researchers affiliated with this organization.
keywordNoKeyword to search in the researcher's keyword fields. Phrase match.
given_nameNoResearcher's given (first) name. Phrase match; a value of only initials (J. or J. A.) matches given names starting with each letter.
affiliationNoOrganization name to filter by. Phrase match.
family_nameNoResearcher's family (last) name.
grant_numberNoGrant 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.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsNoNumber of results returned in this response. Below the requested rows when the 64,000-byte response budget cut the page; nextStart then continues from the first result left out.
errorNoPresent when the call failed. Absent on success.
startNoPagination offset used for this response.
noticeNoRecovery hint when results are empty, pagination overshoots the total, or matches exceed the 10,000-offset ceiling. Absent on fully retrievable pages.
resultsNoMatching researchers with inline name and institution data.
numFoundNoTotal number of matching records in ORCID (before pagination).
nextStartNoOffset 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.
truncatedNoTrue 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.
effectiveQueryNoSolr query sent to the ORCID API.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / given_name / description
      Previous value: -"Researcher's given (first) name."New value: +"Researcher's given (first) name. Phrase match; a value of only initials (J. or J. A.) matches given names starting with each letter."
    • changedInput schema / properties / query / description
      Previous value: -"Raw Solr query string appended to the generated clause with AND. Supports all ORCID Solr fields and boolean operators."New value: +"Raw Solr query string. Sent as written when it is the only field; beside structured params it is ANDed as one parenthesized group, so a top-level OR keeps its alternatives (an exclusion-only query such as -keyword:x is ANDed ungrouped). Supports all ORCID Solr fields and boolean operators."
    • changedInput schema / properties / ror_id / description
      Previous value: -"ROR organization ID to filter by (full URL, e.g. https://ror.org/00f54p054). Returns researchers affiliated with this organization."New value: +"ROR organization ID to filter by, bare (00f54p054) or as a ror.org URL (https://ror.org/00f54p054). Returns researchers affiliated with this organization."
    • addedInput schema / properties / ror_id / pattern
      Added value: +"^\\s*(?:(?:(?:https?:\\/\\/)?(?:www\\.)?ror\\.org\\/)?0[0-9a-hjkmnp-tv-zA-HJKMNP-TV-Z]{6}[0-9]{2}\\/?)?\\s*$"
    • changedInput schema / properties / rows / description
      Previous value: -"Maximum results to return (1–1000)."New value: +"Maximum results to return (1–1000). A page also stops before its structured output or its text would pass 64,000 bytes, so fewer can come back; continue from nextStart."
    • changedOutput schema / properties / rows / description
      Previous value: -"Number of results returned in this response."New value: +"Number of results returned in this response. Below the requested rows when the 64,000-byte response budget cut the page; nextStart then continues from the first result left out."
  2. Changed3 schema fields changed
    • changedInput schema / properties / doi / description
      Previous value: -"DOI to anchor the search. Returns researchers who have linked this DOI to their ORCID record."New value: +"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."
    • addedInput schema / properties / grant_number
      Added value: +{
      +  "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"
      +}
    • changedInput schema / properties / pmid / description
      Previous value: -"PubMed ID to anchor the search. Returns researchers who have linked this PMID to their ORCID record."New value: +"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."
  3. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "results",
      +      "rows",
      +      "start",
      +      "effectiveQuery",
      +      "numFound",
      +      "truncated"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "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"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "results",
      -  "rows",
      -  "start",
      -  "effectiveQuery",
      -  "numFound",
      -  "truncated"
      -]
  4. Changed5 schema fields changed
    • addedOutput schema / properties / nextStart
      Added value: +{
      +  "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"
      +}
    • changedOutput schema / properties / notice / description
      Previous value: -"Recovery hint when results are empty or pagination overshoots the total. Absent on successful pages."New value: +"Recovery hint when results are empty, pagination overshoots the total, or matches exceed the 10,000-offset ceiling. Absent on fully retrievable pages."
    • changedOutput schema / properties / results / items / properties / institutionNames / description
      Previous value: -"Affiliated institution names returned by expanded-search."New value: +"Affiliated institution names returned inline with each search result."
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "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.",
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "results",
      -  "rows",
      -  "start",
      -  "effectiveQuery",
      -  "numFound"
      -]New value: +[
      +  "results",
      +  "rows",
      +  "start",
      +  "effectiveQuery",
      +  "numFound",
      +  "truncated"
      +]
  5. Changed2 schema fields changed
    • changedInput schema / properties / start / description
      Previous value: -"Pagination offset (0-based). ORCID Public API caps at 10,000 total results."New value: +"Pagination offset (0-based), 0–10,000. The ORCID Public API rejects start > 10,000 for unauthenticated requests."
    • changedInput schema / properties / start / maximum
      Previous value: -9007199254740991New value: +10000
  6. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "results",
      -  "numFound",
      -  "rows",
      -  "start",
      -  "effectiveQuery"
      -]New value: +[
      +  "results",
      +  "rows",
      +  "start",
      +  "effectiveQuery",
      +  "numFound"
      +]
  7. First observed

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds concrete behavioral constraints beyond annotations: the Public API caps results at 10,000, responses stop at 64,000 bytes, and a cut page can be continued from nextStart, plus inline name/institution data avoids follow-up fetches.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded: purpose first, then search requirements, query behavior, return shape, alternative tool, and API limits. Every sentence carries distinct operational information, and none appears to be filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description does not need to detail return fields; it still usefully notes that ORCID iDs come back with inline name and institution data. Usage rules, limits, pagination behavior, and the alternative sibling are all covered, making the definition complete for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the per-field parameter meanings are already well documented. The description still adds important cross-parameter semantics not fully captured elsewhere, including the requirement for at least one non-blank search field and the ANDing of structured params and the raw query group.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (ORCID registry), and distinguishes itself from the sibling disambiguation tool by naming orcid_resolve_researcher explicitly. The mention of both structured fields and raw Solr syntax makes the tool's scope immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: at least one non-blank search field is required, structured params are ANDed, and ambiguous author names should use orcid_resolve_researcher instead. It also explains pagination for large result sets, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.