Skip to main content
Glama

Server Details

Researcher profiles, works, affiliations, funding, and peer reviews from the ORCID registry.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 56 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/orcid-mcp-server
GitHub Stars
5
Server Listing
@cyanheads/orcid-mcp-server

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool maps to a distinct resource or action: profile, affiliations, funding, peer reviews, research resources, works, work detail, plus two search tools. The list/detail split between orcid_get_works and orcid_get_work_detail is clearly delineated, and the descriptions explicitly contrast orcid_resolve_researcher (ambiguous names) with orcid_search_researchers (structured queries).

Naming Consistency5/5

All names share the orcid_ prefix followed by a consistent verb_noun pattern (get_*, resolve_*, search_*). No mixing of conventions or casing styles.

Tool Count5/5

Nine tools is well-scoped for the ORCID domain, with one tool per major record section plus two complementary search tools. Each tool earns its place without redundancy.

Completeness4/5

The read-only surface covers the major ORCID sections (profile, works, affiliations, funding, reviews, resources) plus name disambiguation, forming a complete dossier workflow. The main gap is the absence of any write/update operations and no works-level search by DOI, though the read-only scope is internally coherent.

Available Tools

9 tools
orcid_get_affiliationsGet ORCID Researcher AffiliationsA
Read-onlyIdempotent
Inspect

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, date ranges, and sources. Affiliations come from the researcher or from member organizations such as a university research information system; sources names who added each, and selfAsserted tells the two apart. Absence does not mean no affiliation.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNoWhich affiliation types to return. Defaults to employment and education. Use ["all"] to get every section.
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoNote when no affiliations were found — they may be private, or neither the researcher nor a member organization added any.
orcidIdNoNormalized ORCID iD (bare format).
orcidUriNoFull ORCID URI.
affiliationsNoAffiliation records for the requested types.
requestedTypesNoAffiliation types that were requested.
affiliationCountNoTotal number of affiliation records returned.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuine behavioral context: data provenance (researcher vs member organizations, with source and selfAsserted fields) and the caveat that "Absence does not mean no affiliation." It omits pagination/rate-limit behavior, keeping it below 5.

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?

Front-loads the core purpose and controls, then adds provenance and the absence caveat, with each sentence carrying information. Slightly long because the types enumeration overlaps the schema enum.

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?

With an output schema present, the description needn't explain returns but still does, and it additionally covers provenance semantics and the misleading-absence caveat — everything an agent needs to call and interpret this correctly.

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 coverage is 100%, so both parameters are already documented; the description re-enumerates the types values and default, largely duplicating the schema's enum and default. Baseline 3 applies when the schema does the heavy lifting with no added syntax or format detail.

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 ("Fetch") and resource ("affiliation records") scoped to an ORCID researcher, with enough detail to distinguish it from siblings like orcid_get_works or orcid_get_profile without opening the schema.

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

Usage Guidelines3/5

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

Explains the types parameter's default (employment and education) and lists valid sections, which implies how to use it, but offers no explicit when-to-use vs alternatives (e.g., orcid_get_profile also surfaces some profile data) and no exclusions.

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

orcid_get_fundingGet ORCID Researcher FundingA
Read-onlyIdempotent
Inspect

Fetch funding records for an ORCID researcher: grants, contracts, awards, and salary awards. Returns funder names, funder organization identifiers, grant numbers, funding periods, and sources. Funding items come from the researcher or from member organizations such as funders, institutions, and search-and-link tools; sources names who added each. Most researchers have no funding entries even when they hold grants, so absence of funding records does not imply absence of funding. When records exist they are high-value for grant tracking and funder analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoNote when no funding is found — absence of records does not mean absence of funding.
fundingNoFunding items associated with this ORCID iD, one per ORCID funding group.
orcidIdNoNormalized ORCID iD (bare format).
orcidUriNoFull ORCID URI.
fundingCountNoNumber of funding items returned, one per ORCID funding group — versions of one grant added by different sources or deposited twice count once.

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the readOnly/openWorld/idempotent annotations by disclosing data provenance (researcher or member organizations, with 'sources' naming the contributor) and a critical completeness caveat that absence of records does not imply absence of funding. These are exactly the behavioral traits an agent cannot infer from annotations or schema.

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 the core action and return payload, then provenance and caveat. Every sentence carries information, though the final value-proposition sentence is somewhat promotional and could be trimmed.

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 return fields need not be fully specified, yet the description still previews the payload (funder names, identifiers, grant numbers, periods, sources). Combined with the provenance and completeness caveats, 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?

Only one parameter, and schema description coverage is 100% with a detailed pattern and format note for orcid_id. The description adds nothing about the identifier's accepted forms, so the baseline of 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?

States a specific verb and resource ('Fetch funding records for an ORCID researcher') and enumerates the record types (grants, contracts, awards, salary awards). This clearly distinguishes it from siblings like orcid_get_works, orcid_get_affiliations, and orcid_get_peer_reviews without needing their schemas.

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

Usage Guidelines3/5

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

The description implies when the data is relevant ('high-value for grant tracking and funder analysis') and warns of a low-yield case, but never names an alternative tool or states when to prefer another sibling. Usage is inferable but no explicit routing or exclusion guidance is given.

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

orcid_get_peer_reviewsGet ORCID Researcher Peer ReviewsA
Read-onlyIdempotent
Inspect

Fetch peer review activity for an ORCID researcher: reviewer role (reviewer, editor, chair, etc.), review type, completion dates, ISSN-keyed group identifiers, and the convening organization as ORCID records it — often the service that imported the review (e.g. Publons, Clarivate). ORCID returns no journal name; groupIssn is the key to the journal, and a review that has one is headed by it. Use to assess editorial activity, journal affiliations, and the scope of a researcher's peer review contributions. Reviews come from the researcher or from member organizations that import them; sources names who added each, and coverage varies by researcher.

ParametersJSON Schema
NameRequiredDescriptionDefault
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoNote when no peer reviews are found — coverage varies by researcher and publisher participation.
orcidIdNoNormalized ORCID iD (bare format).
orcidUriNoFull ORCID URI.
peerReviewsNoPeer review records for this ORCID iD.
reviewCountNoTotal number of peer review records returned.

TDQS

A3.9/5.0
Behavior5/5

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

Goes well beyond the readOnly/openWorld/idempotent annotations by disclosing real data caveats: ORCID returns no journal name, groupIssn is the journal key, reviews originate either from the researcher or from importing member organizations, and coverage varies by researcher. This is exactly the kind of provenance and completeness warning an agent needs before interpreting results.

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?

Front-loaded with what is fetched before the caveats, and each sentence carries distinct information. The first sentence is overloaded with a long field list and parentheticals, which slightly hurts scanability.

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

Completeness4/5

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

With an output schema present and annotations covering safety, the description supplies the missing interpretive layer — provenance, missing journal names, variable coverage — so an agent can interpret results correctly. Only the absence of cross-tool routing keeps it from being fully complete.

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 coverage is 100% and the single orcid_id parameter already documents its bare/URI forms and check-digit rules, so the schema carries the burden. The description adds nothing about the parameter, which is the expected baseline here.

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

Purpose4/5

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

Specific verb ('Fetch') plus a precisely scoped resource (peer review activity for an ORCID researcher) and an enumeration of the returned fields (reviewer role, review type, dates, groupIssn, organization). The resource is inherently distinct from siblings like orcid_get_works or orcid_get_funding, though no sibling is named to reinforce the boundary.

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

Usage Guidelines3/5

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

Offers one usage clause — 'Use to assess editorial activity, journal affiliations, and the scope of a researcher's peer review contributions' — which implies when the tool is relevant but gives no when-not conditions or pointers to alternative tools for adjacent data (works, affiliations).

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

orcid_get_profileGet ORCID Researcher ProfileA
Read-onlyIdempotent
Inspect

Fetch a researcher's public profile from ORCID: name, other names, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
emailsNoPublicly visible email addresses.
noticeNoNames the profile sections with no public data — ORCID visibility is set per field, so an empty section may be private.
orcidIdNoNormalized ORCID iD (bare format without URI prefix).
keywordsNoResearch keywords set by the researcher.
orcidUriNoFull ORCID URI (https://orcid.org/{id}).
biographyNoResearcher biography, if publicly visible.
countriesNoCountries listed in the researcher's address section.
creditNameNoPublished credit name, if set.
familyNameNoFamily (last) name, if publicly visible.
givenNamesNoGiven (first) name, if publicly visible.
otherNamesNoOther names listed on the ORCID record.
researcherUrlsNoResearcher-provided URLs (personal site, lab page, blog, etc.).
externalIdentifiersNoExternal identifiers from scholarly systems (Scopus, Web of Science, Loop, etc.).

TDQS

A4/5.0
Behavior4/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 genuine behavioral context beyond that: the data is limited to publicly visible fields and researchers control visibility per field, which explains otherwise-confusing omissions in results. No rate-limit or error behavior is described.

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?

Three sentences, front-loaded with what is returned, then how to pass the identifier, then the visibility caveat. Every sentence carries information; nothing is redundant with the schema or annotations.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and annotations carry the safety profile, so the description only needed to cover input format and data-visibility caveats — both present. The only shortfall is the thin routing guidance against the many sibling ORCID tools.

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 pattern already encodes both the bare iD and URI forms plus the X check digit. The description restates the same two accepted formats without adding format, normalization, or error-handling detail beyond the schema, 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?

States a specific verb and resource (fetch a researcher's public profile from ORCID) and enumerates exactly what comes back: name, other names, biography, keywords, researcher URLs, external identifiers. That field list implicitly separates it from sibling section tools like orcid_get_works, orcid_get_funding, and orcid_get_affiliations, and 'entry point for building a researcher dossier' further anchors its role.

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

Usage Guidelines3/5

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

Calling it 'the entry point for building a researcher dossier' implies usage, but no alternatives are named and no when-not conditions are given. An agent is left to infer why it would call orcid_resolve_researcher or orcid_search_researchers first instead of this tool.

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

orcid_get_research_resourcesGet ORCID Research ResourcesA
Read-onlyIdempotent
Inspect

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), access period, and the source that added each entry. Most entries are deposited by resource-allocation systems (e.g. ACCESS, XSEDE) rather than researchers themselves.

ParametersJSON Schema
NameRequiredDescriptionDefault
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoNote when no research resources are found — this section is sparsely populated across ORCID profiles.
orcidIdNoNormalized ORCID iD (bare format).
orcidUriNoFull ORCID URI.
resourcesNoResearch resources associated with this ORCID iD.
resourceCountNoTotal number of research resources returned.

TDQS

A4.3/5.0
Behavior4/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 genuine behavioral context beyond that: expected sparsity of entries and the fact that most records are deposited by allocation systems (ACCESS, XSEDE) rather than the researchers themselves, which shapes how results should be interpreted.

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?

Three sentences, all front-loaded with the core action first and interpretive context after. Every sentence earns its place: what it lists, how sparse it is, and who deposits the data.

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?

With an output schema present, the description needn't enumerate return values, yet it still summarizes the key fields and their provenance. Combined with the emptiness caveat and safety annotations, 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 single orcid_id parameter is fully documented in the schema, including accepted bare and URI formats and the X check digit. The description adds no parameter-level detail beyond that, 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?

States a specific verb (List) and resource (research resources associated with an ORCID researcher), then enumerates the concrete subtypes (compute allocations, equipment access, lab facilities, data resources, clinical study registrations). This clearly separates it from siblings like orcid_get_affiliations, orcid_get_funding, and orcid_get_works.

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

Usage Guidelines4/5

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

Gives useful selection context: 'This is a newer ORCID section; most researchers have no entries,' which tells the agent not to expect results and implicitly when this call is worth making. However, it never explicitly routes between this and the other orcid_get_* siblings or states when not to use it.

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

orcid_get_work_detailGet ORCID Work Details (Bulk)A
Read-onlyIdempotent
Inspect

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), contributors with CRediT roles, the external IDs on that record (DOI, PMID, arXiv, ISBN, etc.), citation metadata (BibTeX or other formats when provided), journal title, URL, and the source that added it for each work. A record listing more than 100 contributors keeps the first 100 plus the requested researcher's own entries, with contributorCount giving the total and contributorsTruncated set; a citation over 8,192 bytes is left out and flagged by citationOmitted. Per-record errors (not-found or inaccessible put-codes) are surfaced as error entries rather than failing the whole call. Records are added while the response stays within 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
put_codesYesArray 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
worksNoSuccessfully resolved work detail records.
errorsNoPer-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully.
noticeNoNote when the response budget deferred some put-codes — call again with deferredPutCodes.
orcidIdNoNormalized ORCID iD (bare format).
orcidUriNoFull ORCID URI.
deferredPutCodesNoRequested put-codes left out because adding them would exceed the 64,000-byte response budget. Pass them as put_codes in another call to fetch them. Omitted when every put-code was fetched.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, yet the description adds substantial non-obvious behavior: 100-contributor truncation with contributorCount and contributorsTruncated flags, the 8,192-byte citation cap flagged by citationOmitted, per-record errors surfaced instead of failing the batch, the 64,000-byte response budget with deferredPutCodes, and put-code deduplication.

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?

Front-loaded with the core action and input source, then layers edge-case behavior in discrete clauses. It is dense and long, but nearly every sentence conveys a distinct, actionable constraint rather than 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?

With an output schema present the description needn't document return fields, yet it still covers truncation, omission, error, and budget behavior that the output schema alone would not make obvious. Combined with annotations covering the safety profile, 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.

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, but the description adds real meaning: put_codes must come from orcid_get_works' putCode field, repeats are fetched once, and omitted codes return via deferredPutCodes. It also reinforces the 1–100 bound that the schema enforces.

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 (fetch), resource (full detail records for works), scope (1–100 by put-codes in a single request), and contrasts implicitly with the sibling orcid_get_works that produces the put-codes. An agent can distinguish it from orcid_get_works 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 Guidelines4/5

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

Explicitly names the source of its required input (putCode field from orcid_get_works) and explains the follow-up workflow for deferredPutCodes, which is real routing guidance. It lacks an explicit when-not-to-use statement or a named alternative for retrieving a single work, so it falls short of a 5.

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

orcid_get_worksGet ORCID Researcher WorksA
Read-onlyIdempotent
Inspect

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 come from the researcher or from member organizations such as Crossref or a university system; each work lists its sources and whether the researcher asserted it (selfAsserted). A researcher may not have linked all their publications.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum 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.
offsetNoZero-based index of the first work to return (default 0). Combine with limit to page through the full works list.
orcid_idYesORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x.
include_external_idsNoWhen 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
worksNoWorks for this ORCID iD, sliced to the requested offset and limit and to the response budget.
noticeNoNote when the works list is empty — neither the researcher nor a member organization may have added works, or they may be private.
offsetNoZero-based offset applied to the full works list for this response.
orcidIdNoNormalized ORCID iD (bare format).
orcidUriNoFull ORCID URI.
truncatedNoTrue when more works are available beyond this response, whether limit or the response budget ended the page — fetch them with nextOffset.
workCountNoTotal works available for this ORCID iD, before offset and limit are applied.
nextOffsetNoOffset to pass on the next call to continue paging. Omitted when this response includes the final work.
returnedCountNoNumber of works returned in this response, after applying offset, limit, and the 64,000-byte response budget.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, openWorld), so the bar is lower, yet the description still discloses non-obvious behavior: the 64,000-byte page budget, early-stopping with truncated/nextOffset, selfAsserted provenance, multiple sources per work, and that records may be incomplete.

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?

Front-loaded with purpose, then behavior, then pagination and chaining. It is dense with ~8 sentences but nearly all carry actionable information; slightly long, though nothing is clearly redundant.

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 return-value detail is not required in the description, and the remaining gaps an agent needs (paging, optional fields, provenance, downstream chaining, sibling handoff) are all covered.

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, but the description adds meaning beyond the schema: include_external_ids=false for a lighter payload, limit as a local slice vs page size, and the offset/nextOffset continuation pattern. It reinforces rather than merely repeats.

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 ('Retrieve works associated with an ORCID iD') and enumerates the covered resource types (publications, datasets, software, preprints). It also distinguishes itself from orcid_get_work_detail by naming the sibling and the putCode handoff.

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?

Explicitly routes the agent: use this list tool first, then pass putCode to orcid_get_work_detail for abstract and contributors, and chain external IDs to Crossref/PubMed/arXiv. Pagination guidance (offset + nextOffset, or raise limit) tells the agent when this tool suffices vs when to page.

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

orcid_resolve_researcherResolve ORCID ResearcherA
Read-onlyIdempotent
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

orcid_search_researchersSearch ORCID ResearchersA
Read-onlyIdempotent
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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.

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updates
    • Changedorcid_get_affiliations5 fields changed
      • changedInput schema / properties / orcid_id / description
        Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
      • changedInput schema / properties / orcid_id / pattern
        Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
      • addedOutput schema / properties / affiliations / items / properties / sources
        Added value: +{
        +  "description": "The party that added this affiliation to the ORCID record — the researcher, or a member organization such as a university research information system. Empty when ORCID records no source.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A party that asserted this item on the ORCID record.",
        +    "properties": {
        +      "assertionOriginName": {
        +        "description": "Party the source added the item on behalf of, when ORCID records one — usually the researcher, for an item added through a search-and-link tool.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Name of the person or member organization system that added the item (e.g. a university research information system, Crossref, Scopus - Elsevier). Absent when ORCID records no name.",
        +        "type": "string"
        +      },
        +      "selfAsserted": {
        +        "description": "True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item.",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "selfAsserted"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / affiliations / items / required
        Previous value: -[
        -  "type"
        -]New value: +[
        +  "type",
        +  "sources"
        +]
      • changedOutput schema / properties / notice / description
        Previous value: -"Note when no affiliations were found — may indicate private visibility or no self-reported affiliations."New value: +"Note when no affiliations were found — they may be private, or neither the researcher nor a member organization added any."
    • Changedorcid_get_funding8 fields changed
      • changedInput schema / properties / orcid_id / description
        Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
      • changedInput schema / properties / orcid_id / pattern
        Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
      • changedOutput schema / properties / funding / description
        Previous value: -"Funding records associated with this ORCID iD."New value: +"Funding items associated with this ORCID iD, one per ORCID funding group."
      • changedOutput schema / properties / funding / items / description
        Previous value: -"Funding record."New value: +"Funding item: one ORCID funding group, built from its preferred version."
      • addedOutput schema / properties / funding / items / properties / periods
        Added value: +{
        +  "description": "Every distinct award period the funding item's versions record, ordered by start date — present only when there are two or more, such as renewals under one grant number. The other fields come from ORCID's preferred version.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Award period one version of this funding item records.",
        +    "properties": {
        +      "endDate": {
        +        "description": "Period end date (YYYY, YYYY-MM, or YYYY-MM-DD).",
        +        "type": "string"
        +      },
        +      "startDate": {
        +        "description": "Period start date (YYYY, YYYY-MM, or YYYY-MM-DD).",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / funding / items / properties / sources
        Added value: +{
        +  "description": "Every party that added this funding item to the ORCID record — the researcher, a funder or institution, or a search-and-link tool — one entry per distinct source in the funding group, the preferred version's first. Empty when ORCID records no source.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A party that asserted this item on the ORCID record.",
        +    "properties": {
        +      "assertionOriginName": {
        +        "description": "Party the source added the item on behalf of, when ORCID records one — usually the researcher, for an item added through a search-and-link tool.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Name of the person or member organization system that added the item (e.g. a university research information system, Crossref, Scopus - Elsevier). Absent when ORCID records no name.",
        +        "type": "string"
        +      },
        +      "selfAsserted": {
        +        "description": "True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item.",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "selfAsserted"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / funding / items / required
        Previous value: -[
        -  "grantNumbers"
        -]New value: +[
        +  "grantNumbers",
        +  "sources"
        +]
      • changedOutput schema / properties / fundingCount / description
        Previous value: -"Total number of funding records returned."New value: +"Number of funding items returned, one per ORCID funding group — versions of one grant added by different sources or deposited twice count once."
    • Changedorcid_get_peer_reviews7 fields changed
      • changedInput schema / properties / orcid_id / description
        Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
      • changedInput schema / properties / orcid_id / pattern
        Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
      • changedOutput schema / properties / peerReviews / items / properties / conveningOrganization / description
        Previous value: -"Journal or publisher that convened the review."New value: +"Organization ORCID records as convening the review, often the importing service. Identify the journal by groupIssn."
      • changedOutput schema / properties / peerReviews / items / properties / conveningOrganization / properties / name / description
        Previous value: -"Convening organization name (journal or publisher)."New value: +"Convening organization name as ORCID records it — often the service that imported the review (e.g. Publons)."
      • changedOutput schema / properties / peerReviews / items / properties / groupIssn / description
        Previous value: -"ISSN of the journal group this review belongs to, if available."New value: +"ISSN of the journal group this review belongs to, if available — the key to the journal name, which ORCID does not return."
      • addedOutput schema / properties / peerReviews / items / properties / sources
        Added value: +{
        +  "description": "The party that added this review to the ORCID record — the researcher, or a member organization such as a review-import service or publisher. Empty when ORCID records no source.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A party that asserted this item on the ORCID record.",
        +    "properties": {
        +      "assertionOriginName": {
        +        "description": "Party the source added the item on behalf of, when ORCID records one — usually the researcher, for an item added through a search-and-link tool.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Name of the person or member organization system that added the item (e.g. a university research information system, Crossref, Scopus - Elsevier). Absent when ORCID records no name.",
        +        "type": "string"
        +      },
        +      "selfAsserted": {
        +        "description": "True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item.",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "selfAsserted"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / peerReviews / items / required
        Added value: +[
        +  "sources"
        +]
    • Changedorcid_get_profile5 fields changed
      • changedInput schema / properties / orcid_id / description
        Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
      • changedInput schema / properties / orcid_id / pattern
        Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "orcidId",
        -      "orcidUri",
        -      "keywords",
        -      "researcherUrls",
        -      "externalIdentifiers",
        -      "emails",
        -      "countries"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "orcidId",
        +      "orcidUri",
        +      "otherNames",
        +      "keywords",
        +      "researcherUrls",
        +      "externalIdentifiers",
        +      "emails",
        +      "countries"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Names the profile sections with no public data — ORCID visibility is set per field, so an empty section may be private.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / otherNames
        Added value: +{
        +  "description": "Other names listed on the ORCID record.",
        +  "items": {
        +    "description": "Alternative name.",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedorcid_get_research_resources4 fields changed
      • changedInput schema / properties / orcid_id / description
        Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
      • changedInput schema / properties / orcid_id / pattern
        Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
      • addedOutput schema / properties / resources / items / properties / sources
        Added value: +{
        +  "description": "The party that added this resource to the ORCID record — usually the allocation system that granted it. Empty when ORCID records no source.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A party that asserted this item on the ORCID record.",
        +    "properties": {
        +      "assertionOriginName": {
        +        "description": "Party the source added the item on behalf of, when ORCID records one — usually the researcher, for an item added through a search-and-link tool.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Name of the person or member organization system that added the item (e.g. a university research information system, Crossref, Scopus - Elsevier). Absent when ORCID records no name.",
        +        "type": "string"
        +      },
        +      "selfAsserted": {
        +        "description": "True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item.",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "selfAsserted"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / resources / items / required
        Previous value: -[
        -  "putCode",
        -  "externalIds"
        -]New value: +[
        +  "putCode",
        +  "externalIds",
        +  "sources"
        +]
    • Changedorcid_get_work_detail11 fields changed
      • changedInput schema / properties / orcid_id / description
        Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
      • changedInput schema / properties / orcid_id / pattern
        Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
      • changedOutput schema / properties / deferredPutCodes / description
        Previous value: -"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."New value: +"Requested put-codes left out because adding them would exceed the 64,000-byte response budget. Pass them as put_codes in another call to fetch them. Omitted when every put-code was fetched."
      • changedOutput schema / properties / works / items / properties / citation / description
        Previous value: -"Citation metadata, when provided by the depositing system."New value: +"Citation metadata, when provided by the depositing system and no longer than 8,192 bytes."
      • addedOutput schema / properties / works / items / properties / citationOmitted
        Added value: +{
        +  "description": "True when the deposited citation exceeded 8,192 bytes and was left out; the DOI in externalIds still resolves the work. Omitted otherwise.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / works / items / properties / contributorCount
        Added value: +{
        +  "description": "Total contributors on the ORCID record. Present only when contributorsTruncated is true.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / works / items / properties / contributors / description
        Previous value: -"Work contributors with optional roles. May be empty if not deposited."New value: +"Work contributors with optional roles, in upstream order. May be empty if not deposited. When contributorsTruncated is true, holds the first 100 followed by every later entry carrying the requested researcher's iD."
      • addedOutput schema / properties / works / items / properties / contributorsTruncated
        Added value: +{
        +  "description": "True when the record lists more than 100 contributors and the list was cut. Omitted when the list is complete.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / works / items / properties / externalIds / description
        Previous value: -"All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.)."New value: +"External identifiers on this put-code's own record (DOIs, PMIDs, arXiv IDs, ISBNs, etc.). One source's version of the work, so it can hold fewer identifiers than orcid_get_works lists for the whole work group."
      • addedOutput schema / properties / works / items / properties / sources
        Added value: +{
        +  "description": "The party that added this put-code to the ORCID record. Empty when ORCID records no source; orcid_get_works lists every source of the work group.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A party that asserted this item on the ORCID record.",
        +    "properties": {
        +      "assertionOriginName": {
        +        "description": "Party the source added the item on behalf of, when ORCID records one — usually the researcher, for an item added through a search-and-link tool.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Name of the person or member organization system that added the item (e.g. a university research information system, Crossref, Scopus - Elsevier). Absent when ORCID records no name.",
        +        "type": "string"
        +      },
        +      "selfAsserted": {
        +        "description": "True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item.",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "selfAsserted"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / works / items / required
        Previous value: -[
        -  "putCode",
        -  "externalIds",
        -  "contributors"
        -]New value: +[
        +  "putCode",
        +  "externalIds",
        +  "contributors",
        +  "sources"
        +]
    • Changedorcid_get_works7 fields changed
      • changedInput schema / properties / orcid_id / description
        Previous value: -"ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789)."New value: +"ORCID iD — bare (0000-0001-2345-6789) or as an orcid.org URI (https://orcid.org/0000-0001-2345-6789). The check digit may be X or x."
      • changedInput schema / properties / orcid_id / pattern
        Previous value: -"^(https?:\\/\\/orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$"New value: +"^(?:(?:https?:\\/\\/)?(?:www\\.)?orcid\\.org\\/)?\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dXx]\\/?$"
      • changedOutput schema / properties / notice / description
        Previous value: -"Note when the works list is empty — may indicate no self-reported works or private visibility settings."New value: +"Note when the works list is empty — neither the researcher nor a member organization may have added works, or they may be private."
      • changedOutput schema / properties / works / items / description
        Previous value: -"Work summary record."New value: +"Work summary record — one ORCID work group, built from its preferred version."
      • changedOutput schema / properties / works / items / properties / externalIds / description
        Previous value: -"External identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.). Omitted when include_external_ids is false."New value: +"External identifiers of the whole ORCID work group (DOIs, PMIDs, arXiv IDs, ISBNs, etc.): the preferred version's own, part-of IDs such as an ISSN included, then each identifier only another source in the group holds. Omitted when include_external_ids is false."
      • addedOutput schema / properties / works / items / properties / sources
        Added value: +{
        +  "description": "Every party that added this work to the ORCID record, one entry per distinct source in the work group, the preferred version's first. Empty when ORCID records no source.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A party that asserted this item on the ORCID record.",
        +    "properties": {
        +      "assertionOriginName": {
        +        "description": "Party the source added the item on behalf of, when ORCID records one — usually the researcher, for an item added through a search-and-link tool.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Name of the person or member organization system that added the item (e.g. a university research information system, Crossref, Scopus - Elsevier). Absent when ORCID records no name.",
        +        "type": "string"
        +      },
        +      "selfAsserted": {
        +        "description": "True when the asserting party (the assertion origin when recorded, otherwise the source) is the requested ORCID iD; false when a member organization or another ORCID user asserted the item.",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "selfAsserted"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / works / items / required
        Added value: +[
        +  "sources"
        +]
    • Changedorcid_resolve_researcher5 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."
    • Changedorcid_search_researchers6 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. 2 tool updates
    • Changedorcid_get_work_detail3 fields changed
      • changedInput schema / properties / put_codes / description
        Previous value: -"Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works."New value: +"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."
      • addedOutput schema / properties / deferredPutCodes
        Added value: +{
        +  "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.",
        +  "items": {
        +    "description": "Deferred work put-code.",
        +    "type": "number"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Note when the response budget deferred some put-codes — call again with deferredPutCodes.",
        +  "type": "string"
        +}
    • Changedorcid_get_works4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"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."New value: +"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."
      • changedOutput schema / properties / returnedCount / description
        Previous value: -"Number of works returned in this response, after applying offset and limit."New value: +"Number of works returned in this response, after applying offset, limit, and the 64,000-byte response budget."
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when more works are available beyond this response — fetch them with nextOffset."New value: +"True when more works are available beyond this response, whether limit or the response budget ended the page — fetch them with nextOffset."
      • changedOutput schema / properties / works / description
        Previous value: -"Works for this ORCID iD, sliced to the requested offset and limit."New value: +"Works for this ORCID iD, sliced to the requested offset and limit and to the response budget."
  3. 3 tool updates
    • Changedorcid_get_affiliations1 field changed
      • addedInput schema / properties / types / minItems
        Added value: +1
    • Changedorcid_resolve_researcher3 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."
    • Changedorcid_search_researchers3 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."
  4. 9 tool updates
    • Changedorcid_get_affiliations6 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": [
        +      "orcidId",
        +      "orcidUri",
        +      "affiliationCount",
        +      "affiliations",
        +      "requestedTypes"
        +    ]
        +  },
        +  {
        +    "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: `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"
        +          ],
        +          "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: -[
        -  "orcidId",
        -  "orcidUri",
        -  "affiliationCount",
        -  "affiliations",
        -  "requestedTypes"
        -]
    • Changedorcid_get_funding6 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": [
        +      "orcidId",
        +      "orcidUri",
        +      "fundingCount",
        +      "funding"
        +    ]
        +  },
        +  {
        +    "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: `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"
        +          ],
        +          "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: -[
        -  "orcidId",
        -  "orcidUri",
        -  "fundingCount",
        -  "funding"
        -]
    • Changedorcid_get_peer_reviews6 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": [
        +      "orcidId",
        +      "orcidUri",
        +      "reviewCount",
        +      "peerReviews"
        +    ]
        +  },
        +  {
        +    "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: `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"
        +          ],
        +          "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: -[
        -  "orcidId",
        -  "orcidUri",
        -  "reviewCount",
        -  "peerReviews"
        -]
    • Changedorcid_get_profile6 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": [
        +      "orcidId",
        +      "orcidUri",
        +      "keywords",
        +      "researcherUrls",
        +      "externalIdentifiers",
        +      "emails",
        +      "countries"
        +    ]
        +  },
        +  {
        +    "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: `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"
        +          ],
        +          "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: -[
        -  "orcidId",
        -  "orcidUri",
        -  "keywords",
        -  "researcherUrls",
        -  "externalIdentifiers",
        -  "emails",
        -  "countries"
        -]
    • Changedorcid_get_research_resources6 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": [
        +      "orcidId",
        +      "orcidUri",
        +      "resourceCount",
        +      "resources"
        +    ]
        +  },
        +  {
        +    "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: `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"
        +          ],
        +          "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: -[
        -  "orcidId",
        -  "orcidUri",
        -  "resourceCount",
        -  "resources"
        -]
    • Changedorcid_get_work_detail6 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": [
        +      "orcidId",
        +      "orcidUri",
        +      "works",
        +      "errors"
        +    ]
        +  },
        +  {
        +    "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: `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"
        +          ],
        +          "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: -[
        -  "orcidId",
        -  "orcidUri",
        -  "works",
        -  "errors"
        -]
    • Changedorcid_get_works6 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": [
        +      "orcidId",
        +      "orcidUri",
        +      "workCount",
        +      "returnedCount",
        +      "offset",
        +      "truncated",
        +      "works"
        +    ]
        +  },
        +  {
        +    "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: `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"
        +          ],
        +          "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: -[
        -  "orcidId",
        -  "orcidUri",
        -  "workCount",
        -  "returnedCount",
        -  "offset",
        -  "truncated",
        -  "works"
        -]
    • Changedorcid_resolve_researcher6 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"
        -]
    • Changedorcid_search_researchers6 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"
        -]
  5. 1 tool update
    • Changedorcid_resolve_researcher1 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."
  6. 2 tool updates
    • Changedorcid_get_work_detail1 field changed
      • changedInput schema / properties / put_codes / description
        Previous value: -"Array of 1–100 work put-codes to fetch. Put-codes are available in the put_code field returned by orcid_get_works."New value: +"Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works."
    • Changedorcid_search_researchers5 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. 1 tool update
    • Changedorcid_resolve_researcher5 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"
        +]
  8. 1 tool update
    • Changedorcid_get_works12 fields changed
      • addedInput schema / properties / include_external_ids
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "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.",
        +  "maximum": 1000,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Zero-based index of the first work to return (default 0). Combine with limit to page through the full works list.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / nextOffset
        Added value: +{
        +  "description": "Offset to pass on the next call to continue paging. Omitted when this response includes the final work.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "description": "Zero-based offset applied to the full works list for this response.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / returnedCount
        Added value: +{
        +  "description": "Number of works returned in this response, after applying offset and limit.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "description": "True when more works are available beyond this response — fetch them with nextOffset.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / workCount / description
        Previous value: -"Total number of works returned."New value: +"Total works available for this ORCID iD, before offset and limit are applied."
      • changedOutput schema / properties / works / description
        Previous value: -"Works associated with this ORCID iD."New value: +"Works for this ORCID iD, sliced to the requested offset and limit."
      • changedOutput schema / properties / works / items / properties / externalIds / description
        Previous value: -"External identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.)."New value: +"External identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.). Omitted when include_external_ids is false."
      • removedOutput schema / properties / works / items / required
        Removed value: -[
        -  "externalIds"
        -]
      • changedOutput schema / required
        Previous value: -[
        -  "orcidId",
        -  "orcidUri",
        -  "workCount",
        -  "works"
        -]New value: +[
        +  "orcidId",
        +  "orcidUri",
        +  "workCount",
        +  "returnedCount",
        +  "offset",
        +  "truncated",
        +  "works"
        +]
  9. 1 tool update
    • Changedorcid_search_researchers2 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
  10. 1 tool update
    • Changedorcid_get_work_detail18 fields changed
      • removedInput schema / properties / put_code
        Removed value: -{
        -  "description": "Work put-code, available in the put_code field returned by orcid_get_works. Each work group has a unique put-code.",
        -  "exclusiveMinimum": 0,
        -  "maximum": 9007199254740991,
        -  "type": "integer"
        -}
      • addedInput schema / properties / put_codes
        Added value: +{
        +  "description": "Array of 1–100 work put-codes to fetch. Put-codes are available in the put_code field returned by orcid_get_works.",
        +  "items": {
        +    "description": "Work put-code (positive integer).",
        +    "exclusiveMinimum": 0,
        +    "maximum": 9007199254740991,
        +    "type": "integer"
        +  },
        +  "maxItems": 100,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "orcid_id",
        -  "put_code"
        -]New value: +[
        +  "orcid_id",
        +  "put_codes"
        +]
      • removedOutput schema / properties / abstract
        Removed value: -{
        -  "description": "Abstract or short description, when provided.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / citation
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Citation metadata, when provided by the depositing system.",
        -  "properties": {
        -    "type": {
        -      "description": "Citation format (e.g. bibtex, formatted-unspecified).",
        -      "type": "string"
        -    },
        -    "value": {
        -      "description": "Citation string in the specified format.",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "value"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / contributors
        Removed value: -{
        -  "description": "Work contributors with optional roles. May be empty if not deposited.",
        -  "items": {
        -    "additionalProperties": false,
        -    "description": "Work contributor with optional role and ORCID iD.",
        -    "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"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / errors
        Added value: +{
        +  "description": "Per-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Error entry for a put-code that could not be resolved.",
        +    "properties": {
        +      "message": {
        +        "description": "Error message from ORCID (e.g. not found or access denied).",
        +        "type": "string"
        +      },
        +      "putCode": {
        +        "description": "Put-code that produced this error, when identifiable.",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / externalIds
        Removed value: -{
        -  "description": "All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.).",
        -  "items": {
        -    "additionalProperties": false,
        -    "description": "External identifier for the work.",
        -    "properties": {
        -      "relationship": {
        -        "description": "Relationship to the work (self or part-of).",
        -        "type": "string"
        -      },
        -      "type": {
        -        "description": "Identifier type (e.g. doi, pmid, arxiv, isbn, ppr).",
        -        "type": "string"
        -      },
        -      "url": {
        -        "description": "Resolver URL for this identifier, if available.",
        -        "type": "string"
        -      },
        -      "value": {
        -        "description": "Identifier value.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "value"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / journalTitle
        Removed value: -{
        -  "description": "Journal or container title, when provided.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / languageCode
        Removed value: -{
        -  "description": "Language code of the work, when provided.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / publicationDate
        Removed value: -{
        -  "description": "Publication date (YYYY, YYYY-MM, or YYYY-MM-DD).",
        -  "type": "string"
        -}
      • removedOutput schema / properties / putCode
        Removed value: -{
        -  "description": "Put-code of this work record.",
        -  "type": "number"
        -}
      • removedOutput schema / properties / subtitle
        Removed value: -{
        -  "description": "Work subtitle, when provided.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / title
        Removed value: -{
        -  "description": "Work title.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / url
        Removed value: -{
        -  "description": "URL for the work, when available.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / workType
        Removed value: -{
        -  "description": "Work type (e.g. journal-article, dataset, software, preprint).",
        -  "type": "string"
        -}
      • addedOutput schema / properties / works
        Added value: +{
        +  "description": "Successfully resolved work detail records.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Full detail record for one work.",
        +    "properties": {
        +      "abstract": {
        +        "description": "Abstract or short description, when provided.",
        +        "type": "string"
        +      },
        +      "citation": {
        +        "additionalProperties": false,
        +        "description": "Citation metadata, when provided by the depositing system.",
        +        "properties": {
        +          "type": {
        +            "description": "Citation format (e.g. bibtex, formatted-unspecified).",
        +            "type": "string"
        +          },
        +          "value": {
        +            "description": "Citation string in the specified format.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "contributors": {
        +        "description": "Work contributors with optional roles. May be empty if not deposited.",
        +        "items": {
        +          "additionalProperties": false,
        +          "description": "Work contributor with optional role and ORCID iD.",
        +          "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"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "externalIds": {
        +        "description": "All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.).",
        +        "items": {
        +          "additionalProperties": false,
        +          "description": "External identifier for the work.",
        +          "properties": {
        +            "relationship": {
        +              "description": "Relationship to the work (self or part-of).",
        +              "type": "string"
        +            },
        +            "type": {
        +              "description": "Identifier type (e.g. doi, pmid, arxiv, isbn, ppr).",
        +              "type": "string"
        +            },
        +            "url": {
        +              "description": "Resolver URL for this identifier, if available.",
        +              "type": "string"
        +            },
        +            "value": {
        +              "description": "Identifier value.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "value"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "journalTitle": {
        +        "description": "Journal or container title, when provided.",
        +        "type": "string"
        +      },
        +      "languageCode": {
        +        "description": "Language code of the work, when provided.",
        +        "type": "string"
        +      },
        +      "publicationDate": {
        +        "description": "Publication date (YYYY, YYYY-MM, or YYYY-MM-DD).",
        +        "type": "string"
        +      },
        +      "putCode": {
        +        "description": "Put-code of this work record.",
        +        "type": "number"
        +      },
        +      "subtitle": {
        +        "description": "Work subtitle, when provided.",
        +        "type": "string"
        +      },
        +      "title": {
        +        "description": "Work title.",
        +        "type": "string"
        +      },
        +      "url": {
        +        "description": "URL for the work, when available.",
        +        "type": "string"
        +      },
        +      "workType": {
        +        "description": "Work type (e.g. journal-article, dataset, software, preprint).",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "putCode",
        +      "externalIds",
        +      "contributors"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "orcidId",
        -  "orcidUri",
        -  "putCode",
        -  "externalIds",
        -  "contributors"
        -]New value: +[
        +  "orcidId",
        +  "orcidUri",
        +  "works",
        +  "errors"
        +]

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying ORCID public records, including profiles, publications, employment, education, and search, through natural language or direct tool calls.
    54 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching and retrieving organization records from the Research Organization Registry, with fuzzy affiliation matching.
    47 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    For AI agents and humans: Discover researchers, publications, datasets, and code repositories across a federated network of researcher digital twins. Compute S-Index impact metrics combining citation data from Semantic Scholar and Google Scholar with code and dataset quality scores from GitHub and Figshare.
    8
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.