Skip to main content
Glama

Resolve ORCID Researcher

orcid_resolve_researcher
Read-onlyIdempotent

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. The name is searched as an exact phrase first; when that finds nothing, byline initials (J. Doudna, Jennifer A. Doudna) and then the other names listed on ORCID records are tried. 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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
doiNoDOI 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.
nameYesAuthor name to disambiguate: a full name ("Jennifer Doudna"), a byline with initials ("J. Doudna", "Jennifer A. Doudna"), or "Family, Given" ("Doudna, Jennifer", read as Jennifer Doudna). The exact phrase is tried first; initials and other names listed on a record are fallbacks, so a full name gives the most precise candidates.
pmidNoPubMed 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.
rowsNoMaximum candidate count to return (1–20). Defaults to 5.
affiliationNoResearcher's institution or organization name. Used for institution overlap scoring and optionally as a search constraint.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
noticeNoRecovery hint when no candidates are found or when the anchor query failed to match.
queryUsedNoThe Solr query that produced the returned candidates — the primary query, or the last fallback stage run when the primary found nothing. Paired with totalFound.
candidatesNoRanked candidates, ordered by name match quality then institution overlap.
totalFoundNoTotal ORCID records matching queryUsed (the query that produced the returned candidates).
primaryQueryNoThe primary, most-constrained Solr query attempted first (exact name phrase + optional anchor + optional affiliation). Always populated; equals queryUsed when no fallback ran.
relaxedQueryNoThe last fallback stage run (byline initials, affiliation dropped, other names, or an anchor alone), present only when the primary query found nothing.
primaryTotalFoundNoTotal ORCID records matching primaryQuery. Zero when the primary query found nothing and a relaxed fallback produced the returned candidates.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / name / description
      Previous value: -"Author name to disambiguate (full name preferred, e.g. \"Jennifer Doudna\" or \"J. Doudna\")."New value: +"Author name to disambiguate: a full name (\"Jennifer Doudna\"), a byline with initials (\"J. Doudna\", \"Jennifer A. Doudna\"), or \"Family, Given\" (\"Doudna, Jennifer\", read as Jennifer Doudna). The exact phrase is tried first; initials and other names listed on a record are fallbacks, so a full name gives the most precise candidates."
    • changedOutput schema / properties / candidates / items / properties / nameMatchType / description
      Previous value: -"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."New value: +"How closely the candidate name matches the input name, compared case- and accent-insensitively (José = Jose): exact (full match), partial (token overlap, where an initial such as J. matches a first given name starting with J), other-name (match on alternate name), or none."
    • changedOutput schema / properties / primaryQuery / description
      Previous value: -"The primary, most-constrained Solr query attempted first (name + optional anchor + optional affiliation). Always populated; equals queryUsed when no relaxed fallback ran."New value: +"The primary, most-constrained Solr query attempted first (exact name phrase + optional anchor + optional affiliation). Always populated; equals queryUsed when no fallback ran."
    • changedOutput schema / properties / queryUsed / description
      Previous value: -"The Solr query that produced the returned candidates — the primary query, or the final relaxed query when a fallback ran. Paired with totalFound."New value: +"The Solr query that produced the returned candidates — the primary query, or the last fallback stage run when the primary found nothing. Paired with totalFound."
    • changedOutput schema / properties / relaxedQuery / description
      Previous value: -"Solr query used in a secondary relaxed search, if the primary returned no results."New value: +"The last fallback stage run (byline initials, affiliation dropped, other names, or an anchor alone), present only when the primary query found nothing."
  2. Changed3 schema fields changed
    • changedInput schema / properties / doi / description
      Previous value: -"DOI of a work authored by this researcher. Acts as a near-deterministic anchor — filters to researchers who linked this DOI to their ORCID record."New value: +"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."
    • changedInput schema / properties / pmid / description
      Previous value: -"PubMed ID of a work authored by this researcher. Acts as a near-deterministic anchor — filters to researchers who linked this PMID to their ORCID record."New value: +"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."
    • changedOutput schema / properties / candidates / items / properties / nameMatchType / description
      Previous value: -"How closely the candidate name matches the input name: exact (full match), partial (token overlap), other-name (match on alternate name), or none."New value: +"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."
  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": [
      +      "candidates",
      +      "queryUsed",
      +      "totalFound",
      +      "primaryQuery",
      +      "primaryTotalFound"
      +    ]
      +  },
      +  {
      +    "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 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"
      +          ],
      +          "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: -[
      -  "candidates",
      -  "queryUsed",
      -  "totalFound",
      -  "primaryQuery",
      -  "primaryTotalFound"
      -]
  4. Changed1 schema field changed
    • changedOutput schema / properties / candidates / items / properties / institutionOverlap / description
      Previous value: -"True when at least one of the candidate's institutions matches tokens from the provided affiliation parameter."New value: +"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."
  5. Changed5 schema fields changed
    • addedOutput schema / properties / primaryQuery
      Added value: +{
      +  "description": "The primary, most-constrained Solr query attempted first (name + optional anchor + optional affiliation). Always populated; equals queryUsed when no relaxed fallback ran.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / primaryTotalFound
      Added value: +{
      +  "description": "Total ORCID records matching primaryQuery. Zero when the primary query found nothing and a relaxed fallback produced the returned candidates.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / queryUsed / description
      Previous value: -"Solr query sent to ORCID for the primary search."New value: +"The Solr query that produced the returned candidates — the primary query, or the final relaxed query when a fallback ran. Paired with totalFound."
    • changedOutput schema / properties / totalFound / description
      Previous value: -"Total ORCID records matching the primary query."New value: +"Total ORCID records matching queryUsed (the query that produced the returned candidates)."
    • changedOutput schema / required
      Previous value: -[
      -  "candidates",
      -  "queryUsed",
      -  "totalFound"
      -]New value: +[
      +  "candidates",
      +  "queryUsed",
      +  "totalFound",
      +  "primaryQuery",
      +  "primaryTotalFound"
      +]
  6. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly/openWorld/idempotent); the description goes well beyond by disclosing the internal search order (exact phrase, then byline initials, then other names on the record), the near-deterministic behavior of DOI/PMID anchors, the default and maximum candidate counts, and the fact that no synthetic scores are produced. This is exactly the kind of operational context annotations cannot carry.

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?

Purpose and routing are front-loaded before the mechanism details, and each sentence carries information. It is somewhat long (three dense clauses about fallback search order) and could trim the anchor semantics that the schema already states, but there is no true 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 is present, so the description need not enumerate return fields, yet it still names the returned candidates and their signal types (match type, institution overlap, anchor used). Combined with the fallback-behavior disclosure, an agent has everything needed to call and interpret this tool.

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

Parameters3/5

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

Schema description coverage is 100% and the parameter descriptions already spell out DOI/PMID formats, name variants, rows bounds, and affiliation usage. The description largely restates these (anchor near-determinism, 5-by-default/20-max), adding coherence but little genuinely new parameter meaning, so the baseline 3 applies.

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?

Opens with a specific verb+resource pair: 'Disambiguate an author name to a verified ORCID iD.' It then explicitly distinguishes itself from the sibling orcid_search_researchers, so an agent can route 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?

Contains an explicit routing rule: 'Use this tool (not orcid_search_researchers) when the input is an ambiguous name that needs ranked disambiguation.' The condition that selects this tool and the named alternative are both stated, leaving nothing 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.