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. Continue a page from nextStart; the ORCID Public API pages only the first 10,000 matches, so narrow the query to reach the rest.

Input Schema

NameRequiredDescriptionDefault
doiNoComplete DOI to anchor the search, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Requires 10., digits, a slash, and a non-whitespace suffix; blank means unset. Returns researchers who have linked this DOI to their ORCID record.
pmidNoNumeric 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. Blank means unset; a label or URL without digits is invalid. Returns researchers who have linked this PMID to their ORCID record.
rowsNoResults per page. Default 20; a larger value returns at most 1,000 (the most ORCID serves per request) and says so.
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

NameRequiredDescriptionDefault
rowsNoNumber of results returned in this response: the requested rows, fewer only on the last page.
errorNoPresent when the call failed. Absent on success.
startNoPagination offset used for this response.
noticeNoRequested/effective rows disclosure and recovery guidance for empty results, past-end pagination, or the 10,000-offset retrieval ceiling.
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. Changed2 schema fields changed
    • changedInput schema / properties / rows / description
      Previous value: -"Requested results (1–10,000, effective maximum 1,000, default 20). Each surface also stops at 64,000 bytes; continue from nextStart."New value: +"Results per page. Default 20; a larger value returns at most 1,000 (the most ORCID serves per request) and says so."
    • changedOutput schema / properties / rows / description
      Previous 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."New value: +"Number of results returned in this response: the requested rows, fewer only on the last page."
  2. Changed7 schema fields changed
    • changedInput schema / properties / doi / description
      Previous 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."New value: +"Complete DOI to anchor the search, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Requires 10., digits, a slash, and a non-whitespace suffix; blank means unset. Returns researchers who have linked this DOI to their ORCID record."
    • addedInput schema / properties / doi / pattern
      Added value: +"^(?:\\s*|\\s*(?:(?:(?:[hH][tT][tT][pP][sS]?:\\/\\/)?(?:[dD][xX]\\.)?[dD][oO][iI]\\.[oO][rR][gG]\\/|[dD][oO][iI]:)\\s*)?10\\.[0-9]+\\/\\S+\\s*)$"
    • changedInput schema / properties / pmid / description
      Previous 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."New value: +"Numeric 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. Blank means unset; a label or URL without digits is invalid. Returns researchers who have linked this PMID to their ORCID record."
    • addedInput schema / properties / pmid / pattern
      Added value: +"^(?:\\s*|\\s*(?:(?:(?:[hH][tT][tT][pP][sS]?:\\/\\/)?(?:(?:[wW][wW][wW]\\.)?[nN][cC][bB][iI]\\.[nN][lL][mM]\\.[nN][iI][hH]\\.[gG][oO][vV]\\/[pP][uU][bB][mM][eE][dD]\\/|[pP][uU][bB][mM][eE][dD]\\.[nN][cC][bB][iI]\\.[nN][lL][mM]\\.[nN][iI][hH]\\.[gG][oO][vV]\\/)|[pP][mM][iI][dD]:)\\s*)?[0-9]+\\s*(?:\\/(?:[?#][\\s\\S]*|\\s*)|[?#][\\s\\S]*|$))$"
    • changedInput schema / properties / rows / description
      Previous 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."New value: +"Requested results (1–10,000, effective maximum 1,000, default 20). Each surface also stops at 64,000 bytes; continue from nextStart."
    • changedInput schema / properties / rows / maximum
      Previous value: -1000New value: +10000
    • changedOutput schema / properties / notice / description
      Previous value: -"Recovery hint when results are empty, pagination overshoots the total, or matches exceed the 10,000-offset ceiling. Absent on fully retrievable pages."New value: +"Requested/effective rows disclosure and recovery guidance for empty results, past-end pagination, or the 10,000-offset retrieval ceiling."
  3. 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."
  4. 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."
  5. 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"
      -]
  6. 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"
      +]
  7. 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
  8. Changed1 schema field changed
    • changedOutput schema / required
      Previous value: -[
      -  "results",
      -  "numFound",
      -  "rows",
      -  "start",
      -  "effectiveQuery"
      -]New value: +[
      +  "results",
      +  "rows",
      +  "start",
      +  "effectiveQuery",
      +  "numFound"
      +]
  9. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/open-world, and the description adds value beyond them: AND semantics across structured params, how `query` is combined as a parenthesized group, the 10,000-match pagination ceiling of the Public API, and that results arrive with inline name/institution data. These are non-obvious behaviors an agent would otherwise discover only by failing.

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

Conciseness4/5

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

Four sentences, front-loaded with purpose then constraints then alternative then pagination — nothing is wasted. The density is high and the raw-Solr grouping clause is restated at length in the `query` schema, so a small amount of overlap is the only weakness.

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?

For an 11-parameter, all-optional search tool with an output schema, the description supplies the missing essentials: the non-empty-input rule, AND composition, result payload shape, and pagination limits. Nothing an agent needs to invoke it correctly is absent.

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 coverage is 100%, so the baseline is 3; the description goes further by explaining the cross-parameter composition rule (all structured fields ANDed, `query` ANDed as one group) and the 'at least one non-blank field' constraint, neither of which is expressible per-parameter. It does not restate per-field formats, which is fine given the schema already does.

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 and resource ('Search the ORCID registry') and immediately distinguishes this tool from orcid_resolve_researcher by naming that sibling as the ranked-disambiguation path. An agent can pick between the two without opening either schema.

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?

Explicit preconditions ('Provide at least one non-blank search field'), explicit alternative routing ('For ranked disambiguation of an ambiguous author name, use orcid_resolve_researcher instead'), and explicit recovery guidance ('Continue a page from nextStart... narrow the query to reach the rest'). Both when-to-use and when-to-switch are covered.

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.