orcid-mcp-server
Server Details
Researcher profiles, works, affiliations, funding, and peer reviews from the ORCID registry.
- Status
- Healthy
- Uptime
- 99.9% over 78 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/orcid-mcp-server
- GitHub Stars
- 6
- Server Listing
- @cyanheads/orcid-mcp-server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 9 tools
Each tool targets a distinct ORCID record type or operation: profile, affiliations, funding, peer reviews, research resources, works, work detail, search, and name resolution. The only potentially overlapping pair, orcid_resolve_researcher and orcid_search_researchers, is explicitly differentiated by use case and input type.
All tools use a consistent orcid_ prefix followed by a clear verb_noun pattern: get_*, search_*, resolve_*. Singular/plural distinctions like get_works versus get_work_detail are meaningful and readable.
Nine tools is well-scoped for an ORCID read-access server. The set covers distinct record sections and search/disambiguation needs without redundant tools or an oversized surface.
The server covers the main public ORCID data areas: profile, affiliations, funding, peer reviews, research resources, works, and researcher search/disambiguation. It is read-only and lacks write/update operations, but for a public ORCID lookup server the surface is nearly complete.
Available Tools
9 toolsorcid_get_affiliationsGet ORCID Researcher AffiliationsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | Which affiliation types to return. Defaults to employment and education. Use ["all"] to get every section. | |
| orcid_id | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Note when no affiliations were found — they may be private, or neither the researcher nor a member organization added any — or when a deprecated iD was served from its primary iD. |
| orcidId | No | Normalized ORCID iD (bare format). |
| orcidUri | No | Full ORCID URI. |
| affiliations | No | Affiliation records for the requested types. |
| requestedTypes | No | Unique caller affiliation selectors in first-occurrence order, retaining all when requested. |
| affiliationCount | No | Total number of affiliation records returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description discloses meaningful data provenance: affiliations may come from the researcher or member organizations, `sources` identifies who added each, and `selfAsserted` distinguishes self-asserted data. It also warns that absence does not mean no affiliation, which is important behavioral context for 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then moves through parameter behavior, return fields, and provenance caveats in a compact sequence. Every sentence contributes useful selection or interpretation context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, annotations covering safety, and full parameter schema coverage, the description supplies the remaining context an agent needs: default scope, return-field types, source semantics, and the absence caveat.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including the enum and default for `types`. The description restates the available section types and default but adds little semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Fetch affiliation records for an ORCID researcher.' It clearly distinguishes this tool from sibling ORCID tools focused on works, funding, peer reviews, profiles, and researcher search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when the tool applies and explains the `types` parameter's default and `all` option. It does not explicitly name when to use a sibling tool instead or state exclusions, so it falls short of full routing guidance.
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 FundingARead-onlyIdempotentInspect
List funding for an ORCID researcher, or supply a summary putCode as put_code to fetch one deposited award. Summary returns one preferred record per grant group with all sources and distinct periods. Detail returns that deposit alone with its own source, optional exact decimal amount and currency, URL, and its whole deposited description (ORCID caps it at 5,000 characters). Funding records are sparse; absence does not imply no funding.
| Name | Required | Description | Default |
|---|---|---|---|
| orcid_id | Yes | 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. | |
| put_code | No | Selected deposit putCode from a funding summary. Omit to list grouped summaries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | No | Grouped summaries or one selected deposit. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Note when no funding is found — absence of records does not mean absence of funding — or when a deprecated iD was served from its primary iD. |
| funding | No | Funding group summaries or one selected funding deposit. |
| orcidId | No | Normalized ORCID iD (bare format). |
| orcidUri | No | Full ORCID URI. |
| fundingCount | No | Number of funding items returned: one per group in summary, one deposit in detail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world behavior, so the description focuses on response shape: summaries collapse to one preferred record per grant group with all sources and distinct periods, detail returns a single deposit with its own source, exact decimal amount/currency, URL and the full description. The 5,000-character truncation cap and the sparsity caveat are exactly the kind of non-obvious behavior annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two modes in the first clause, then unpacks each mode's return shape, then ends with the single most important caveat. No filler or restated boilerplate; every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does not need to re-document fields, and it still adds the two things an agent cannot infer: grouped-vs-detail semantics and the deposit description truncation limit. Annotations plus schema plus this description leave nothing important unstated for a two-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 semantics the schema does not: put_code is a deposit-level key drawn from a summary result, and supplying it switches the call from grouped listing to single-deposit detail. That mode-switching meaning is genuinely additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list funding for an ORCID researcher) and immediately names the second mode (fetch one deposited award by putCode). No sibling tool covers funding, so the agent can route on the resource name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent how to choose between modes: omit put_code to list grouped summaries, supply a summary putCode to fetch a single deposit. Adds a useful expectation-setting caveat that funding records are sparse and absence is not evidence of no funding. Lacks guidance on what to do when the result is empty (e.g. fall back to profile or another source).
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 ReviewsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Reviews per page. Default 25; a larger value returns at most 1,000 and says so. | |
| offset | No | Zero-based review offset; continue with nextOffset. | |
| orcid_id | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Deprecated-iD disclosure naming the primary iD, requested/effective limit disclosure, past-end guidance, or empty-history guidance. |
| offset | No | Zero-based offset applied to this page. |
| orcidId | No | Normalized ORCID iD (bare format). |
| orcidUri | No | Full ORCID URI. |
| truncated | No | True when more reviews remain after this page. |
| nextOffset | No | First omitted review offset; absent on final, empty, or past-end pages. |
| totalCount | No | Total reviews before pagination. |
| peerReviews | No | Peer review records for this ORCID iD. |
| reviewCount | No | Total number of peer review records returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which already declare readOnly/idempotent/openWorld) by disclosing real data quirks: ORCID returns no journal name, groupIssn is the journal key, sources names who contributed each record, and coverage varies by researcher. That provenance and coverage caveat is exactly the kind of context annotations cannot carry; only the pagination cap behavior is left to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the payload contents before moving to interpretation guidance and provenance. The groupIssn/journal-name explanation is slightly long-winded but earns its place because that quirk would otherwise mislead an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% param coverage, the description only needs to add interpretive context — and it does, covering data provenance, the ISSN-keyed journal gap, and variable coverage. Nothing critical is missing, though a note on typical result volumes or ordering would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already explains limit, offset, and the orcid_id format/pattern in detail. The description adds no parameter-level meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch peer review activity for an ORCID researcher') and enumerates the fields returned (reviewer role, review type, completion dates, groupIssn, convening organization). This makes it trivially distinguishable from siblings like orcid_get_works or orcid_get_funding, which cover different record types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use to assess editorial activity, journal affiliations, and the scope of a researcher's peer review contributions,' giving clear selection context. It does not, however, name when to prefer a sibling (e.g. orcid_get_works for publications vs. this tool) or state exclusions.
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 ProfileARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| orcid_id | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| emails | No | Publicly visible email addresses. |
| notice | No | Names the profile sections with no public data — ORCID visibility is set per field, so an empty section may be private — and, for a deprecated iD, the primary iD it was merged into. |
| orcidId | No | Normalized ORCID iD (bare format without URI prefix). |
| keywords | No | Research keywords set by the researcher. |
| orcidUri | No | Full ORCID URI (https://orcid.org/{id}). |
| biography | No | Researcher biography, if publicly visible. |
| countries | No | Countries listed in the researcher's address section. |
| creditName | No | Published credit name, if set. |
| familyName | No | Family (last) name, if publicly visible. |
| givenNames | No | Given (first) name, if publicly visible. |
| otherNames | No | Other names listed on the ORCID record. |
| researcherUrls | No | Researcher-provided URLs (personal site, lab page, blog, etc.). |
| externalIdentifiers | No | External identifiers from scholarly systems (Scopus, Web of Science, Loop, etc.). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, open-world, idempotent behavior. The description adds meaningful behavioral context by noting that only publicly visible data is returned and that researchers control per-field visibility, though it does not discuss rate limits or invalid-iD error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three compact sentences with the core purpose front-loaded. Every sentence contributes either field scope, usage positioning, input format, or visibility behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with an output schema and rich annotations, the description supplies enough context to call it correctly. It covers field scope, input format, usage positioning, and public-visibility limitations without needing to restate return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents the single orcid_id parameter, including the pattern and check-digit details. The description repeats the bare-iD versus full-URI format but adds no syntax or validation meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: fetching a researcher's public ORCID profile. It enumerates the profile contents (name, biography, keywords, URLs, external identifiers) and positions the tool as the dossier entry point, which clearly separates it from sibling tools for works, funding, reviews, and affiliations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context as the entry point for building a researcher dossier and explains the required ORCID iD input format. However, it does not explicitly route agents to orcid_resolve_researcher or orcid_search_researchers when only a name is known.
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 ResourcesARead-onlyIdempotentInspect
List allocation proposals for an ORCID researcher, or supply put_code from a summary record to retrieve its actual resource items. Summary is the default view and includes every proposal host, identifiers, access period, and source provenance; hostOrganization remains the first proposal host. Detail adds item names, types, all operators, identifiers, and URLs, paged by item_offset and item_limit (both require put_code); continue at nextItemOffset with the same put_code. Most researchers have no entries; allocation systems such as ACCESS deposit these records.
| Name | Required | Description | Default |
|---|---|---|---|
| orcid_id | Yes | 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. | |
| put_code | No | Proposal put-code from summary mode; selects the full allocation detail. | |
| item_limit | No | Items per detail page. Default 25; a larger value returns at most 100 and says so. Requires put_code. | |
| item_offset | No | Detail item offset. Default 0; requires put_code. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | No | Summary list or selected allocation detail. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Note when no research resources are found — this section is sparsely populated across ORCID profiles — or when a deprecated iD was served from its primary iD. |
| orcidId | No | Normalized ORCID iD (bare format). |
| putCode | No | Selected proposal put-code in detail mode. |
| orcidUri | No | Full ORCID URI. |
| resources | No | Research resources associated with this ORCID iD. |
| truncated | No | Detail-page indicator: true exactly when the selected resource has allocation items remaining after this page; mirrors itemsTruncated. Absent in summary mode. |
| resourceCount | No | Total number of research resources returned. |
| itemLimitNotice | No | Notice when the requested item limit is reduced to the effective maximum of 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly/idempotent/openWorld, so the description's job is to add operating context, and it does: the default summary contents, the guarantee that hostOrganization is the first proposal host, the detail field set, paging via item_offset/item_limit, the continuation rule at nextItemOffset, and the fact that item_limit is capped at 100 despite the schema's 10000 maximum. It omits auth or error behavior, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and mode selection are front-loaded in the first sentence, and the remaining clauses all carry information (defaults, paging, data source). The semicolon-chained phrasing is dense and could be split for scannability, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shapes need not be restated, and the description covers mode selection, paging, and expectations about sparse data. Given a 4-parameter tool with full schema coverage and annotations, it is nearly complete, though it says nothing about failure or resolution behavior for an invalid orcid_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes beyond it by stating the dependency semantics, namely that item_offset and item_limit 'both require put_code' and that put_code selects the full detail. It also flags the effective 100-item cap that the schema alone does not convey. These are real added constraints beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List allocation proposals') and resource, and immediately distinguishes its two modes: a summary listing versus detail retrieval by put_code. It clearly sets the tool apart from the sibling set (funding, works, affiliations, peer reviews) by naming allocation proposals as the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use summary (the default view) versus detail (supply put_code), and how to continue paging with nextItemOffset. It also sets expectations that 'most researchers have no entries'. It does not compare against sibling tools, which keeps it from 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_work_detailGet ORCID Work Details (Bulk)ARead-onlyIdempotentInspect
Fetch full work details by put-code from orcid_get_works. Accepts 1–1,000 raw codes, deduplicates in first-occurrence order, and fetches the first 100 distinct codes in one request, returning every record ORCID sends. Returns abstracts, contributors with CRediT roles, the record's external IDs (DOI, PMID, arXiv, ISBN, etc.), citation metadata, journal title, URL, and source provenance. A record listing more than 100 contributors keeps the first 100 plus the requested researcher's own entries, with contributorCount and contributorsTruncated; a citation over 8,192 bytes is left out and flagged by citationOmitted. Per-record errors are returned alongside successful works. deferredPutCodes lists, in request order, the codes past the 100-code fetch cap and any ORCID returned no result for; pass them as put_codes in another call.
| Name | Required | Description | Default |
|---|---|---|---|
| orcid_id | Yes | 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. | |
| put_codes | Yes | Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; the first 100 distinct codes are fetched and the rest return in deferredPutCodes. A record costs what its fields hold: 100 large-collaboration records, even with contributor lists cut to 100, exceed 1 MB. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| works | No | Successfully resolved work detail records. |
| errors | No | Per-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully. |
| notice | No | Deprecated-iD disclosure naming the primary iD, then separate notices for put-codes past the 100-code fetch cap and put-codes ORCID returned no result for; call again with deferredPutCodes. |
| orcidId | No | Normalized ORCID iD (bare format). |
| orcidUri | No | Full ORCID URI. |
| deferredPutCodes | No | Requested distinct put-codes no returned work or error settled, in request order: those past the 100-code fetch cap and any ORCID returned no result for. Pass as put_codes in another call. Omitted when all are settled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, idempotent, openWorld), and the description layers on the operationally important behavior: first-occurrence dedup order, a hard 100-code fetch cap, contributor truncation to 100 plus the researcher's own entries with contributorCount/contributorsTruncated flags, the 8,192-byte citation omission with citationOmitted, and per-record errors returned alongside successes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and input contract, then edge cases in descending priority; no filler. The sentences are long and clause-heavy (contributor and citation rules packed into one), which costs a bit of scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description pre-empts the surprises an agent would hit: partial results, deferred codes, and truncation flags. For a two-parameter bulk fetch with an output schema, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining what happens to overflow codes (deferredPutCodes in request order) and that no-result codes also land there, which the schema only partially states. It adds nothing about the orcid_id parameter, but that is already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (fetch full details) plus resource (work put-codes) and immediately ties the input to orcid_get_works, distinguishing this from the list-level sibling. The bulk semantics (1–1,000 codes, dedup, 100-code fetch cap) further sharpen what the tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent explicitly: codes come from orcid_get_works, and anything returned in deferredPutCodes should be re-passed in another call. That's a clear workflow, though it never states when to prefer orcid_get_works alone instead of drilling into details.
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 WorksARead-onlyIdempotentInspect
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). Narrow the list with work_types and year_from/year_to; the filters run over the whole record before paging, so matchedCount counts every match and workCount the whole record. The first 25 matching works are returned by default; page with offset and the returned nextOffset, or raise limit. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Works per page. Default 25; a larger value returns at most 1,000 and says so. | |
| offset | No | Zero-based index of the first matching work to return (default 0). Continue with nextOffset. | |
| year_to | No | Keep only works published in or before this year; not before year_from. | |
| orcid_id | Yes | 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. | |
| year_from | No | Keep only works published in or after this year, read from the first four digits of publicationDate. Under either year bound, works with no publication date are left out and counted in the notice. | |
| work_types | No | Keep only works of these types, matched against each workType (e.g. ["journal-article", "preprint"]; ORCID spells datasets data-set). Any listed type matches; an empty list keeps every type. | |
| include_external_ids | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| works | No | Matching works in ORCID order, sliced to the requested offset and limit. |
| notice | No | Deprecated-iD disclosure naming the primary iD, requested/effective limit disclosure, the count of undated works a year filter left out, no-match or past-end guidance, or empty-record guidance: works may be private or not yet added. |
| offset | No | Zero-based offset into the matching works applied for this response. |
| orcidId | No | Normalized ORCID iD (bare format). |
| orcidUri | No | Full ORCID URI. |
| truncated | No | True when more matching works follow this page — fetch them with nextOffset. |
| workCount | No | Total works on this ORCID record, before filters, offset, and limit. |
| nextOffset | No | Offset to pass on the next call, with the same filters, to continue paging. Omitted when this response includes the last matching work. |
| matchedCount | No | Works matching work_types and the year range, before offset and limit; equals workCount when no filter is set. |
| returnedCount | No | Number of works returned in this response. |
| appliedFilters | No | The filters applied before paging, present only when one is set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations: it discloses that filtering happens over the whole record before paging, that default page size is 25, that offset/nextOffset drives paging, that limit has a practical ceiling, and that provenance includes source organization and selfAsserted flags. The caveat that a researcher may not have linked all publications is a real behavioral limitation an agent should know before concluding 'no more works exist'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then filtering, paging, payload, and chaining in a logical order; nearly every clause carries operational value. Slightly dense — the return-field enumeration and the sources/selfAsserted sentence overlap with what the output schema already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, open-world read tool with an output schema, the description covers everything an agent needs to call it correctly: filtering, paging, payload control, chaining to sibling tools and external services, and the incomplete-coverage caveat. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 genuine semantics the schema does not: that filters are applied before pagination (so matchedCount is the full match set, not the page), and that include_external_ids is a payload-weight tradeoff. Minor duplication of the year-filter null-date exclusion, which the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve works associated with an ORCID iD') and immediately enumerates the resource scope (publications, datasets, software, preprints). It also distinguishes itself from the sibling orcid_get_work_detail by naming the putCode hand-off, so an agent can tell the two apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says how to narrow results (work_types, year_from/year_to) and when to disable include_external_ids ('for a lighter payload when only titles, types, and dates are needed'). It also names the alternative path — pass putCode to orcid_get_work_detail for abstracts and contributors — which is exactly the when-to-use-which signal an agent needs.
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 ResearcherARead-onlyIdempotentInspect
Disambiguate an author name to a verified ORCID iD. Returns ranked candidates (5 by default, at most 20 per search stage) 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.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | Complete 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. Requires 10., digits, a slash, and a non-whitespace suffix; blank means unset. Acts as a near-deterministic anchor — filters to researchers who linked this DOI to their ORCID record. | |
| name | Yes | 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. | |
| pmid | No | Numeric 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. Blank means unset; a label or URL without digits is invalid. Acts as a near-deterministic anchor — filters to researchers who linked this PMID to their ORCID record. | |
| rows | No | Candidates to return. Default 5; a larger value returns at most 20 per search stage and says so. | |
| affiliation | No | Researcher's institution or organization name. Used for institution overlap scoring and optionally as a search constraint. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Requested/effective candidate cap notice, composed with recovery guidance when no candidates are found or the anchor query failed to match. |
| queryUsed | No | 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. |
| candidates | No | Ranked candidates, ordered by name match quality then institution overlap. |
| totalFound | No | Total ORCID records matching queryUsed (the query that produced the returned candidates). |
| primaryQuery | No | The primary, most-constrained Solr query attempted first (exact name phrase + optional anchor + optional affiliation). Always populated; equals queryUsed when no fallback ran. |
| relaxedQuery | No | The last fallback stage run (byline initials, affiliation dropped, other names, or an anchor alone), present only when the primary query found nothing. |
| primaryTotalFound | No | Total ORCID records matching primaryQuery. Zero when the primary query found nothing and a relaxed fallback produced the returned candidates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, but the description adds substantial behavior the annotations do not: the staged search (exact phrase, then byline initials, then other names), the 20-per-stage cap even when rows is larger, and the fact that no synthetic scores are produced. Its only real gap is what a candidate object looks like and how the ranking is ordered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is five sentences, all dense and front-loaded with the purpose before the fallback mechanics. Some of the signal enumeration could be tightened, but every sentence adds information an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 not be re-explained, and the description still summarizes the returned disambiguation signals. The choice of parameters, fallback behavior, and limits are complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description does more than repeat the schema by explaining why name formats matter (a full name gives the most precise candidates) and why a DOI or PMID is a near-deterministic anchor. The rows ceiling and affiliation's dual role are described in the schema but only partly reinforced in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: disambiguate an author name to a verified ORCID iD. It also immediately contrasts with the sibling tool by name, so an agent can choose between orcid_resolve_researcher and orcid_search_researchers 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternative explicitly ('Use this tool (not orcid_search_researchers)') and the condition that selects it: an ambiguous name needing ranked disambiguation. The fallback search order and the near-deterministic DOI/PMID anchor give extra routing guidance.
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 ResearchersARead-onlyIdempotentInspect
Search the ORCID registry using structured field parameters or raw Solr syntax. Provide at least one non-blank search field; all provided structured params are ANDed together. The query field adds raw Solr syntax, ANDed with the structured params as one group. Returns ORCID iDs with inline name and institution data — no follow-up profile fetches needed for basic disambiguation. For ranked disambiguation of an ambiguous author name, use orcid_resolve_researcher instead. Continue a page from nextStart; the ORCID Public API pages only the first 10,000 matches, so narrow the query to reach the rest.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | Complete DOI to anchor the search, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Requires 10., digits, a slash, and a non-whitespace suffix; blank means unset. Returns researchers who have linked this DOI to their ORCID record. | |
| pmid | No | Numeric PubMed ID to anchor the search, bare (22745249), as PMID:22745249, or as a pubmed.ncbi.nlm.nih.gov or ncbi.nlm.nih.gov/pubmed URL. Blank means unset; a label or URL without digits is invalid. Returns researchers who have linked this PMID to their ORCID record. | |
| rows | No | Results per page. Default 20; a larger value returns at most 1,000 (the most ORCID serves per request) and says so. | |
| query | No | 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. | |
| start | No | Pagination offset (0-based), 0–10,000. The ORCID Public API rejects start > 10,000 for unauthenticated requests. | |
| ror_id | No | ROR organization ID to filter by, bare (00f54p054) or as a ror.org URL (https://ror.org/00f54p054). Returns researchers affiliated with this organization. | |
| keyword | No | Keyword to search in the researcher's keyword fields. Phrase match. | |
| given_name | No | Researcher's given (first) name. Phrase match; a value of only initials (J. or J. A.) matches given names starting with each letter. | |
| affiliation | No | Organization name to filter by. Phrase match. | |
| family_name | No | Researcher's family (last) name. | |
| grant_number | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | No | Number of results returned in this response: the requested rows, fewer only on the last page. |
| error | No | Present when the call failed. Absent on success. |
| start | No | Pagination offset used for this response. |
| notice | No | Requested/effective rows disclosure and recovery guidance for empty results, past-end pagination, or the 10,000-offset retrieval ceiling. |
| results | No | Matching researchers with inline name and institution data. |
| numFound | No | Total number of matching records in ORCID (before pagination). |
| nextStart | No | 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. |
| truncated | No | 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. |
| effectiveQuery | No | Solr query sent to the ORCID API. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/open-world, and the description adds value beyond them: AND semantics across structured params, how `query` is combined as a parenthesized group, the 10,000-match pagination ceiling of the Public API, and that results arrive with inline name/institution data. These are non-obvious behaviors an agent would otherwise discover only by failing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose then constraints then alternative then pagination — nothing is wasted. The density is high and the raw-Solr grouping clause is restated at length in the `query` schema, so a small amount of overlap is the only weakness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, all-optional search tool with an output schema, the description supplies the missing essentials: the non-empty-input rule, AND composition, result payload shape, and pagination limits. Nothing an agent needs to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the cross-parameter composition rule (all structured fields ANDed, `query` ANDed as one group) and the 'at least one non-blank field' constraint, neither of which is expressible per-parameter. It does not restate per-field formats, which is fine given the schema already does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the ORCID registry') and immediately distinguishes this tool from orcid_resolve_researcher by naming that sibling as the ranked-disambiguation path. An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit preconditions ('Provide at least one non-blank search field'), explicit alternative routing ('For ranked disambiguation of an ambiguous author name, use orcid_resolve_researcher instead'), and explicit recovery guidance ('Continue a page from nextStart... narrow the query to reach the rest'). Both when-to-use and when-to-switch are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- Changed
orcid_get_affiliations2 fields changed- changed
Output schema / properties / affiliations / items / properties / sources / items / properties / selfAsserted / descriptionPrevious value: -"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."New value: +"True when the asserting party (the assertion origin when recorded, otherwise the source) is the record's ORCID iD (orcidId); false when a member organization or another ORCID user asserted the item." - changed
Output schema / properties / notice / descriptionPrevious value: -"Note when no affiliations were found — they may be private, or neither the researcher nor a member organization added any."New value: +"Note when no affiliations were found — they may be private, or neither the researcher nor a member organization added any — or when a deprecated iD was served from its primary iD."
- Changed
orcid_get_funding10 fields changed- removed
Input schema / properties / description_offsetRemoved value: -{ - "description": "Unicode code-point offset into the deposited description, default 0; requires put_code.", - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" -} - removed
Output schema / properties / budgetOverflowRemoved value: -{ - "description": "Explicit exception when metadata or one indivisible code point exceeds the 64,000-byte detail budget.", - "type": "string" -} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"Machine-readable failure mode. Declared by this tool: `detail_required`: description_offset is provided without a funding selector. `funding_not_found`: The selected funding deposit is unavailable at this ORCID iD. `funding_inaccessible`: ORCID denies public access to the selected funding deposit. `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `funding_not_found`: The selected funding deposit is unavailable at this ORCID iD. `funding_inaccessible`: ORCID denies public access to the selected funding deposit. `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "detail_required", - "funding_not_found", - "funding_inaccessible", - "profile_not_found" -]New value: +[ + "funding_not_found", + "funding_inaccessible", + "profile_not_found" +] - changed
Output schema / properties / funding / items / properties / description / descriptionPrevious value: -"Exact deposited description page, including its original line endings."New value: +"Deposited description, whole and exact, including its original line endings. Detail view only." - removed
Output schema / properties / funding / items / properties / descriptionLengthRemoved value: -{ - "description": "Full deposited description length in Unicode code points.", - "type": "number" -} - removed
Output schema / properties / funding / items / properties / descriptionOffsetRemoved value: -{ - "description": "Starting Unicode code-point offset of this description page.", - "type": "number" -} - removed
Output schema / properties / funding / items / properties / nextDescriptionOffsetRemoved value: -{ - "description": "First omitted code point; pass as description_offset with the same put_code.", - "type": "number" -} - changed
Output schema / properties / funding / items / properties / sources / items / properties / selfAsserted / descriptionPrevious value: -"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."New value: +"True when the asserting party (the assertion origin when recorded, otherwise the source) is the record's ORCID iD (orcidId); false when a member organization or another ORCID user asserted the item." - changed
Output schema / properties / notice / descriptionPrevious value: -"Note when no funding is found — absence of records does not mean absence of funding."New value: +"Note when no funding is found — absence of records does not mean absence of funding — or when a deprecated iD was served from its primary iD."
- Changed
orcid_get_peer_reviews4 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -50New value: +25 - changed
Input schema / properties / limit / descriptionPrevious value: -"Requested page size (default 50, accepted maximum 10,000, effective maximum 1,000). Each surface is bounded to 64,000 bytes, except an indivisible oversized review returned alone with a notice."New value: +"Reviews per page. Default 25; a larger value returns at most 1,000 and says so." - changed
Output schema / properties / notice / descriptionPrevious value: -"Empty-history guidance, requested/effective limit disclosure, or an explicit indivisible-review budget exception."New value: +"Deprecated-iD disclosure naming the primary iD, requested/effective limit disclosure, past-end guidance, or empty-history guidance." - changed
Output schema / properties / peerReviews / items / properties / sources / items / properties / selfAsserted / descriptionPrevious value: -"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."New value: +"True when the asserting party (the assertion origin when recorded, otherwise the source) is the record's ORCID iD (orcidId); false when a member organization or another ORCID user asserted the item."
- Changed
orcid_get_profile1 field changed- changed
Output schema / properties / notice / descriptionPrevious value: -"Names the profile sections with no public data — ORCID visibility is set per field, so an empty section may be private."New value: +"Names the profile sections with no public data — ORCID visibility is set per field, so an empty section may be private — and, for a deprecated iD, the primary iD it was merged into."
- Changed
orcid_get_research_resources5 fields changed- changed
Input schema / properties / item_limit / descriptionPrevious value: -"Detail page size, default 50, effective maximum 100; requires put_code."New value: +"Items per detail page. Default 25; a larger value returns at most 100 and says so. Requires put_code." - changed
Input schema / properties / item_offset / descriptionPrevious value: -"Detail item offset, default 0; requires put_code."New value: +"Detail item offset. Default 0; requires put_code." - removed
Output schema / properties / budgetOverflowRemoved value: -{ - "description": "Explicit exception when an indivisible item or proposal metadata exceeds the 64,000-byte surface budget.", - "type": "string" -} - changed
Output schema / properties / notice / descriptionPrevious value: -"Note when no research resources are found — this section is sparsely populated across ORCID profiles."New value: +"Note when no research resources are found — this section is sparsely populated across ORCID profiles — or when a deprecated iD was served from its primary iD." - changed
Output schema / properties / resources / items / properties / sources / items / properties / selfAsserted / descriptionPrevious value: -"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."New value: +"True when the asserting party (the assertion origin when recorded, otherwise the source) is the record's ORCID iD (orcidId); false when a member organization or another ORCID user asserted the item."
- Changed
orcid_get_work_detail5 fields changed- changed
Input schema / properties / put_codes / descriptionPrevious value: -"Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; at most 100 distinct codes are fetched once. Every unsettled code is returned in deferredPutCodes for another call, including input-cap and response-budget deferrals."New value: +"Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; the first 100 distinct codes are fetched and the rest return in deferredPutCodes. A record costs what its fields hold: 100 large-collaboration records, even with contributor lists cut to 100, exceed 1 MB." - changed
Output schema / properties / deferredPutCodes / descriptionPrevious value: -"Every requested distinct put-code unsettled by an admitted work or identified error, in request order: input-cap, response-budget, or absent upstream results. Pass as put_codes in another call. Omitted when all are settled."New value: +"Requested distinct put-codes no returned work or error settled, in request order: those past the 100-code fetch cap and any ORCID returned no result for. Pass as put_codes in another call. Omitted when all are settled." - changed
Output schema / properties / notice / descriptionPrevious value: -"Separate notices for input-cap, response-budget, and absent-upstream-result deferrals; call again with deferredPutCodes."New value: +"Deprecated-iD disclosure naming the primary iD, then separate notices for put-codes past the 100-code fetch cap and put-codes ORCID returned no result for; call again with deferredPutCodes." - changed
Output schema / properties / works / items / properties / sources / items / properties / selfAsserted / descriptionPrevious value: -"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."New value: +"True when the asserting party (the assertion origin when recorded, otherwise the source) is the record's ORCID iD (orcidId); false when a member organization or another ORCID user asserted the item." - changed
Output schema / properties / works / items / properties / workType / descriptionPrevious value: -"Work type (e.g. journal-article, dataset, software, preprint)."New value: +"Work type (e.g. journal-article, data-set, software, preprint)."
- Changed
orcid_get_works18 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -50New value: +25 - changed
Input schema / properties / limit / descriptionPrevious value: -"Requested works (default 50, accepted maximum 10,000, effective maximum 1,000). Page locally with offset and nextOffset; the 64,000-byte response budget may return fewer."New value: +"Works per page. Default 25; a larger value returns at most 1,000 and says so." - changed
Input schema / properties / offset / descriptionPrevious value: -"Zero-based index of the first work to return (default 0). Combine with limit to page through the full works list."New value: +"Zero-based index of the first matching work to return (default 0). Continue with nextOffset." - added
Input schema / properties / work_typesAdded value: +{ + "description": "Keep only works of these types, matched against each workType (e.g. [\"journal-article\", \"preprint\"]; ORCID spells datasets data-set). Any listed type matches; an empty list keeps every type.", + "items": { + "description": "A work type in ORCID's vocabulary.", + "enum": [ + "annotation", + "artistic-performance", + "blog-post", + "book-chapter", + "book-review", + "book", + "cartographic-material", + "clinical-study", + "conference-abstract", + "conference-output", + "conference-paper", + "conference-poster", + "conference-presentation", + "conference-proceedings", + "data-management-plan", + "data-set", + "design", + "dictionary-entry", + "disclosure", + "dissertation-thesis", + "edited-book", + "encyclopedia-entry", + "image", + "invention", + "journal-article", + "journal-issue", + "learning-object", + "lecture-speech", + "license", + "magazine-article", + "manual", + "moving-image", + "musical-composition", + "newsletter-article", + "newspaper-article", + "online-resource", + "other", + "patent", + "physical-object", + "preprint", + "registered-copyright", + "report", + "research-technique", + "research-tool", + "review", + "software", + "sound", + "spin-off-company", + "standards-and-policy", + "supervised-student-publication", + "technical-standard", + "test", + "trademark", + "transcription", + "translation", + "website", + "working-paper", + "undefined" + ], + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / year_fromAdded value: +{ + "description": "Keep only works published in or after this year, read from the first four digits of publicationDate. Under either year bound, works with no publication date are left out and counted in the notice.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Input schema / properties / year_toAdded value: +{ + "description": "Keep only works published in or before this year; not before year_from.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - changed
Output schema / anyOfPrevious value: -[ - { - "not": { - "required": [ - "error" - ] - }, - "required": [ - "orcidId", - "orcidUri", - "workCount", - "returnedCount", - "offset", - "truncated", - "works" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "workCount", + "matchedCount", + "returnedCount", + "offset", + "truncated", + "works" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / appliedFiltersAdded value: +{ + "additionalProperties": false, + "description": "The filters applied before paging, present only when one is set.", + "properties": { + "workTypes": { + "description": "Work types kept (work_types).", + "items": { + "type": "string" + }, + "type": "array" + }, + "yearFrom": { + "description": "Earliest publication year kept (year_from).", + "type": "number" + }, + "yearTo": { + "description": "Latest publication year kept (year_to).", + "type": "number" + } + }, + "type": "object" +} - added
Output schema / properties / matchedCountAdded value: +{ + "description": "Works matching work_types and the year range, before offset and limit; equals workCount when no filter is set.", + "type": "number" +} - changed
Output schema / properties / nextOffset / descriptionPrevious value: -"Offset to pass on the next call to continue paging. Omitted when this response includes the final work."New value: +"Offset to pass on the next call, with the same filters, to continue paging. Omitted when this response includes the last matching work." - changed
Output schema / properties / notice / descriptionPrevious value: -"Requested/effective limit disclosure or empty-list guidance: works may be private or not yet added."New value: +"Deprecated-iD disclosure naming the primary iD, requested/effective limit disclosure, the count of undated works a year filter left out, no-match or past-end guidance, or empty-record guidance: works may be private or not yet added." - changed
Output schema / properties / offset / descriptionPrevious value: -"Zero-based offset applied to the full works list for this response."New value: +"Zero-based offset into the matching works applied for this response." - changed
Output schema / properties / returnedCount / descriptionPrevious value: -"Number of works returned in this response, after applying offset, limit, and the 64,000-byte response budget."New value: +"Number of works returned in this response." - changed
Output schema / properties / truncated / descriptionPrevious value: -"True when more works are available beyond this response, whether limit or the response budget ended the page — fetch them with nextOffset."New value: +"True when more matching works follow this page — fetch them with nextOffset." - changed
Output schema / properties / workCount / descriptionPrevious value: -"Total works available for this ORCID iD, before offset and limit are applied."New value: +"Total works on this ORCID record, before filters, offset, and limit." - changed
Output schema / properties / works / descriptionPrevious value: -"Works for this ORCID iD, sliced to the requested offset and limit and to the response budget."New value: +"Matching works in ORCID order, sliced to the requested offset and limit." - changed
Output schema / properties / works / items / properties / sources / items / properties / selfAsserted / descriptionPrevious value: -"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."New value: +"True when the asserting party (the assertion origin when recorded, otherwise the source) is the record's ORCID iD (orcidId); false when a member organization or another ORCID user asserted the item." - changed
Output schema / properties / works / items / properties / workType / descriptionPrevious value: -"Work type (e.g. journal-article, dataset, software, preprint)."New value: +"Work type in ORCID's vocabulary (e.g. journal-article, data-set, software, preprint), taken from the preferred version."
- Changed
orcid_resolve_researcher1 field changed- changed
Input schema / properties / rows / descriptionPrevious value: -"Requested candidate count (1–10000), capped at 20 per search stage with a notice when clamped. Defaults to 5."New value: +"Candidates to return. Default 5; a larger value returns at most 20 per search stage and says so."
- Changed
orcid_search_researchers2 fields changed- changed
Input schema / properties / rows / descriptionPrevious value: -"Requested results (1–10,000, effective maximum 1,000, default 20). Each surface also stops at 64,000 bytes; continue from nextStart."New value: +"Results per page. Default 20; a larger value returns at most 1,000 (the most ORCID serves per request) and says so." - changed
Output schema / properties / rows / descriptionPrevious value: -"Number of results returned in this response. Below the requested rows when the 64,000-byte response budget cut the page; nextStart then continues from the first result left out."New value: +"Number of results returned in this response: the requested rows, fewer only on the last page."
2 tool updates
- Changed
orcid_get_funding16 fields changed- added
Input schema / properties / description_offsetAdded value: +{ + "description": "Unicode code-point offset into the deposited description, default 0; requires put_code.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / put_codeAdded value: +{ + "description": "Selected deposit putCode from a funding summary. Omit to list grouped summaries.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" +} - added
Output schema / properties / budgetOverflowAdded value: +{ + "description": "Explicit exception when metadata or one indivisible code point exceeds the 64,000-byte detail budget.", + "type": "string" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `detail_required`: description_offset is provided without a funding selector. `funding_not_found`: The selected funding deposit is unavailable at this ORCID iD. `funding_inaccessible`: ORCID denies public access to the selected funding deposit. `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "profile_not_found" -]New value: +[ + "detail_required", + "funding_not_found", + "funding_inaccessible", + "profile_not_found" +] - changed
Output schema / properties / funding / descriptionPrevious value: -"Funding items associated with this ORCID iD, one per ORCID funding group."New value: +"Funding group summaries or one selected funding deposit." - changed
Output schema / properties / funding / items / descriptionPrevious value: -"Funding item: one ORCID funding group, built from its preferred version."New value: +"One preferred funding group summary or the selected deposit detail." - added
Output schema / properties / funding / items / properties / amountAdded value: +{ + "additionalProperties": false, + "description": "Deposited amount and currency; missing values are not inferred.", + "properties": { + "currency": { + "description": "Deposited currency code, when present.", + "type": "string" + }, + "value": { + "description": "Exact deposited decimal text; no numeric conversion.", + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / funding / items / properties / descriptionAdded value: +{ + "description": "Exact deposited description page, including its original line endings.", + "type": "string" +} - added
Output schema / properties / funding / items / properties / descriptionLengthAdded value: +{ + "description": "Full deposited description length in Unicode code points.", + "type": "number" +} - added
Output schema / properties / funding / items / properties / descriptionOffsetAdded value: +{ + "description": "Starting Unicode code-point offset of this description page.", + "type": "number" +} - added
Output schema / properties / funding / items / properties / nextDescriptionOffsetAdded value: +{ + "description": "First omitted code point; pass as description_offset with the same put_code.", + "type": "number" +} - added
Output schema / properties / funding / items / properties / putCodeAdded value: +{ + "description": "Preferred summary or selected deposit put-code; pass as put_code for detail.", + "type": "number" +} - changed
Output schema / properties / funding / items / properties / sources / descriptionPrevious value: -"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."New value: +"The parties that added the funding item: every distinct group source in summary, the selected deposit's own source in detail. Empty when ORCID records no source." - changed
Output schema / properties / fundingCount / descriptionPrevious value: -"Number of funding items returned, one per ORCID funding group — versions of one grant added by different sources or deposited twice count once."New value: +"Number of funding items returned: one per group in summary, one deposit in detail." - added
Output schema / properties / viewAdded value: +{ + "default": "summary", + "description": "Grouped summaries or one selected deposit.", + "enum": [ + "summary", + "detail" + ], + "type": "string" +}
- Changed
orcid_resolve_researcher3 fields changed- changed
Input schema / properties / rows / descriptionPrevious value: -"Maximum candidate count to return (1–20). Defaults to 5."New value: +"Requested candidate count (1–10000), capped at 20 per search stage with a notice when clamped. Defaults to 5." - changed
Input schema / properties / rows / maximumPrevious value: -20New value: +10000 - changed
Output schema / properties / notice / descriptionPrevious value: -"Recovery hint when no candidates are found or when the anchor query failed to match."New value: +"Requested/effective candidate cap notice, composed with recovery guidance when no candidates are found or the anchor query failed to match."
7 tool updates
- Changed
orcid_get_affiliations1 field changed- changed
Output schema / properties / requestedTypes / descriptionPrevious value: -"Affiliation types that were requested."New value: +"Unique caller affiliation selectors in first-occurrence order, retaining all when requested."
- Changed
orcid_get_peer_reviews8 fields changed- added
Input schema / properties / limitAdded value: +{ + "default": 50, + "description": "Requested page size (default 50, accepted maximum 10,000, effective maximum 1,000). Each surface is bounded to 64,000 bytes, except an indivisible oversized review returned alone with a notice.", + "maximum": 10000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Zero-based review offset; continue with nextOffset.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - changed
Output schema / anyOfPrevious value: -[ - { - "not": { - "required": [ - "error" - ] - }, - "required": [ - "orcidId", - "orcidUri", - "reviewCount", - "peerReviews" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "reviewCount", + "totalCount", + "offset", + "truncated", + "peerReviews" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / nextOffsetAdded value: +{ + "description": "First omitted review offset; absent on final, empty, or past-end pages.", + "type": "number" +} - changed
Output schema / properties / notice / descriptionPrevious value: -"Note when no peer reviews are found — coverage varies by researcher and publisher participation."New value: +"Empty-history guidance, requested/effective limit disclosure, or an explicit indivisible-review budget exception." - added
Output schema / properties / offsetAdded value: +{ + "description": "Zero-based offset applied to this page.", + "type": "number" +} - added
Output schema / properties / totalCountAdded value: +{ + "description": "Total reviews before pagination.", + "type": "number" +} - added
Output schema / properties / truncatedAdded value: +{ + "description": "True when more reviews remain after this page.", + "type": "boolean" +}
- Changed
orcid_get_research_resources18 fields changed- added
Input schema / properties / item_limitAdded value: +{ + "description": "Detail page size, default 50, effective maximum 100; requires put_code.", + "maximum": 10000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / item_offsetAdded value: +{ + "description": "Detail item offset, default 0; requires put_code.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / put_codeAdded value: +{ + "description": "Proposal put-code from summary mode; selects the full allocation detail.", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" +} - changed
Output schema / anyOfPrevious value: -[ - { - "not": { - "required": [ - "error" - ] - }, - "required": [ - "orcidId", - "orcidUri", - "resourceCount", - "resources" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "view", + "resourceCount", + "resources" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / budgetOverflowAdded value: +{ + "description": "Explicit exception when an indivisible item or proposal metadata exceeds the 64,000-byte surface budget.", + "type": "string" +} - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `detail_required`: Item paging arguments are supplied without put_code. `resource_not_found`: The selected allocation detail does not exist or is not public. `profile_not_found`: The ORCID iD does not correspond to a registered researcher. Other values are possible when a failure originates below the handler." - changed
Output schema / properties / error / properties / data / properties / reason / examplesPrevious value: -[ - "profile_not_found" -]New value: +[ + "detail_required", + "resource_not_found", + "profile_not_found" +] - added
Output schema / properties / itemLimitNoticeAdded value: +{ + "description": "Notice when the requested item limit is reduced to the effective maximum of 100.", + "type": "string" +} - added
Output schema / properties / putCodeAdded value: +{ + "description": "Selected proposal put-code in detail mode.", + "type": "number" +} - added
Output schema / properties / resources / items / properties / itemCountAdded value: +{ + "description": "Total deposited allocation items.", + "type": "number" +} - added
Output schema / properties / resources / items / properties / itemOffsetAdded value: +{ + "description": "Requested detail item offset.", + "type": "number" +} - added
Output schema / properties / resources / items / properties / itemsAdded value: +{ + "description": "Selected page of allocation items in detail mode.", + "items": { + "additionalProperties": false, + "description": "One deposited allocation item.", + "properties": { + "externalIds": { + "description": "Deposited item identifiers.", + "items": { + "additionalProperties": false, + "description": "External identifier for the research resource.", + "properties": { + "relationship": { + "description": "Relationship to the resource (self or part-of).", + "type": "string" + }, + "type": { + "description": "Identifier type (e.g. uri, doi, grant_number).", + "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" + }, + "hosts": { + "description": "All item operators in upstream order; missing host details remain unknown.", + "items": { + "additionalProperties": false, + "description": "Hosting organization for the research resource.", + "properties": { + "city": { + "description": "City of the organization.", + "type": "string" + }, + "country": { + "description": "Country code of the organization.", + "type": "string" + }, + "disambiguatedId": { + "description": "Disambiguated organization ID (e.g. ROR or GRID identifier).", + "type": "string" + }, + "disambiguationSource": { + "description": "Source of the disambiguation ID (e.g. ROR, GRID, RINGGOLD).", + "type": "string" + }, + "name": { + "description": "Organization name.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "Allocated resource name.", + "type": "string" + }, + "type": { + "description": "Allocated resource type.", + "type": "string" + }, + "url": { + "description": "Deposited item URL.", + "type": "string" + } + }, + "required": [ + "hosts", + "externalIds" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / resources / items / properties / itemsTruncatedAdded value: +{ + "description": "Whether more allocation items remain after this page.", + "type": "boolean" +} - added
Output schema / properties / resources / items / properties / nextItemOffsetAdded value: +{ + "description": "First omitted item offset; absent when no items remain.", + "type": "number" +} - added
Output schema / properties / resources / items / properties / proposalHostsAdded value: +{ + "description": "All proposal hosts in upstream order; separate from item operators.", + "items": { + "additionalProperties": false, + "description": "Hosting organization for the research resource.", + "properties": { + "city": { + "description": "City of the organization.", + "type": "string" + }, + "country": { + "description": "Country code of the organization.", + "type": "string" + }, + "disambiguatedId": { + "description": "Disambiguated organization ID (e.g. ROR or GRID identifier).", + "type": "string" + }, + "disambiguationSource": { + "description": "Source of the disambiguation ID (e.g. ROR, GRID, RINGGOLD).", + "type": "string" + }, + "name": { + "description": "Organization name.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / resources / items / properties / returnedItemCountAdded value: +{ + "description": "Items returned on this page.", + "type": "number" +} - added
Output schema / properties / truncatedAdded value: +{ + "description": "Detail-page indicator: true exactly when the selected resource has allocation items remaining after this page; mirrors itemsTruncated. Absent in summary mode.", + "type": "boolean" +} - added
Output schema / properties / viewAdded value: +{ + "description": "Summary list or selected allocation detail.", + "enum": [ + "summary", + "detail" + ], + "type": "string" +}
- Changed
orcid_get_work_detail4 fields changed- changed
Input schema / properties / put_codes / descriptionPrevious 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."New value: +"Array of 1–1,000 raw work put-codes from orcid_get_works. Deduplicated in first-occurrence order; at most 100 distinct codes are fetched once. Every unsettled code is returned in deferredPutCodes for another call, including input-cap and response-budget deferrals." - changed
Input schema / properties / put_codes / maxItemsPrevious value: -100New value: +1000 - changed
Output schema / properties / deferredPutCodes / descriptionPrevious 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."New value: +"Every requested distinct put-code unsettled by an admitted work or identified error, in request order: input-cap, response-budget, or absent upstream results. Pass as put_codes in another call. Omitted when all are settled." - changed
Output schema / properties / notice / descriptionPrevious value: -"Note when the response budget deferred some put-codes — call again with deferredPutCodes."New value: +"Separate notices for input-cap, response-budget, and absent-upstream-result deferrals; call again with deferredPutCodes."
- Changed
orcid_get_works3 fields changed- changed
Input schema / properties / limit / descriptionPrevious 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."New value: +"Requested works (default 50, accepted maximum 10,000, effective maximum 1,000). Page locally with offset and nextOffset; the 64,000-byte response budget may return fewer." - changed
Input schema / properties / limit / maximumPrevious value: -1000New value: +10000 - changed
Output schema / properties / notice / descriptionPrevious value: -"Note when the works list is empty — neither the researcher nor a member organization may have added works, or they may be private."New value: +"Requested/effective limit disclosure or empty-list guidance: works may be private or not yet added."
- Changed
orcid_resolve_researcher4 fields changed- changed
Input schema / properties / doi / descriptionPrevious 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."New value: +"Complete 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. Requires 10., digits, a slash, and a non-whitespace suffix; blank means unset. Acts as a near-deterministic anchor — filters to researchers who linked this DOI to their ORCID record." - added
Input schema / properties / doi / patternAdded value: +"^(?:\\s*|\\s*(?:(?:(?:[hH][tT][tT][pP][sS]?:\\/\\/)?(?:[dD][xX]\\.)?[dD][oO][iI]\\.[oO][rR][gG]\\/|[dD][oO][iI]:)\\s*)?10\\.[0-9]+\\/\\S+\\s*)$" - changed
Input schema / properties / pmid / descriptionPrevious 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."New value: +"Numeric 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. Blank means unset; a label or URL without digits is invalid. Acts as a near-deterministic anchor — filters to researchers who linked this PMID to their ORCID record." - added
Input schema / properties / pmid / patternAdded value: +"^(?:\\s*|\\s*(?:(?:(?:[hH][tT][tT][pP][sS]?:\\/\\/)?(?:(?:[wW][wW][wW]\\.)?[nN][cC][bB][iI]\\.[nN][lL][mM]\\.[nN][iI][hH]\\.[gG][oO][vV]\\/[pP][uU][bB][mM][eE][dD]\\/|[pP][uU][bB][mM][eE][dD]\\.[nN][cC][bB][iI]\\.[nN][lL][mM]\\.[nN][iI][hH]\\.[gG][oO][vV]\\/)|[pP][mM][iI][dD]:)\\s*)?[0-9]+\\s*(?:\\/(?:[?#][\\s\\S]*|\\s*)|[?#][\\s\\S]*|$))$"
- Changed
orcid_search_researchers7 fields changed- changed
Input schema / properties / doi / descriptionPrevious value: -"DOI to anchor the search, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Returns researchers who have linked this DOI to their ORCID record."New value: +"Complete DOI to anchor the search, bare (10.1126/science.1225829) or as a https://doi.org/, https://dx.doi.org/, or doi: form. Requires 10., digits, a slash, and a non-whitespace suffix; blank means unset. Returns researchers who have linked this DOI to their ORCID record." - added
Input schema / properties / doi / patternAdded value: +"^(?:\\s*|\\s*(?:(?:(?:[hH][tT][tT][pP][sS]?:\\/\\/)?(?:[dD][xX]\\.)?[dD][oO][iI]\\.[oO][rR][gG]\\/|[dD][oO][iI]:)\\s*)?10\\.[0-9]+\\/\\S+\\s*)$" - changed
Input schema / properties / pmid / descriptionPrevious value: -"PubMed ID to anchor the search, bare (22745249), as PMID:22745249, or as a pubmed.ncbi.nlm.nih.gov or ncbi.nlm.nih.gov/pubmed URL. Returns researchers who have linked this PMID to their ORCID record."New value: +"Numeric PubMed ID to anchor the search, bare (22745249), as PMID:22745249, or as a pubmed.ncbi.nlm.nih.gov or ncbi.nlm.nih.gov/pubmed URL. Blank means unset; a label or URL without digits is invalid. Returns researchers who have linked this PMID to their ORCID record." - added
Input schema / properties / pmid / patternAdded value: +"^(?:\\s*|\\s*(?:(?:(?:[hH][tT][tT][pP][sS]?:\\/\\/)?(?:(?:[wW][wW][wW]\\.)?[nN][cC][bB][iI]\\.[nN][lL][mM]\\.[nN][iI][hH]\\.[gG][oO][vV]\\/[pP][uU][bB][mM][eE][dD]\\/|[pP][uU][bB][mM][eE][dD]\\.[nN][cC][bB][iI]\\.[nN][lL][mM]\\.[nN][iI][hH]\\.[gG][oO][vV]\\/)|[pP][mM][iI][dD]:)\\s*)?[0-9]+\\s*(?:\\/(?:[?#][\\s\\S]*|\\s*)|[?#][\\s\\S]*|$))$" - changed
Input schema / properties / rows / descriptionPrevious value: -"Maximum results to return (1–1000). A page also stops before its structured output or its text would pass 64,000 bytes, so fewer can come back; continue from nextStart."New value: +"Requested results (1–10,000, effective maximum 1,000, default 20). Each surface also stops at 64,000 bytes; continue from nextStart." - changed
Input schema / properties / rows / maximumPrevious value: -1000New value: +10000 - changed
Output schema / properties / notice / descriptionPrevious value: -"Recovery hint when results are empty, pagination overshoots the total, or matches exceed the 10,000-offset ceiling. Absent on fully retrievable pages."New value: +"Requested/effective rows disclosure and recovery guidance for empty results, past-end pagination, or the 10,000-offset retrieval ceiling."
9 tool updates
- Changed
orcid_get_affiliations5 fields changed- changed
Input schema / properties / orcid_id / descriptionPrevious 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." - changed
Input schema / properties / orcid_id / patternPrevious 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]\\/?$" - added
Output schema / properties / affiliations / items / properties / sourcesAdded 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" +} - changed
Output schema / properties / affiliations / items / requiredPrevious value: -[ - "type" -]New value: +[ + "type", + "sources" +] - changed
Output schema / properties / notice / descriptionPrevious 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."
- Changed
orcid_get_funding8 fields changed- changed
Input schema / properties / orcid_id / descriptionPrevious 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." - changed
Input schema / properties / orcid_id / patternPrevious 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]\\/?$" - changed
Output schema / properties / funding / descriptionPrevious value: -"Funding records associated with this ORCID iD."New value: +"Funding items associated with this ORCID iD, one per ORCID funding group." - changed
Output schema / properties / funding / items / descriptionPrevious value: -"Funding record."New value: +"Funding item: one ORCID funding group, built from its preferred version." - added
Output schema / properties / funding / items / properties / periodsAdded 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" +} - added
Output schema / properties / funding / items / properties / sourcesAdded 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" +} - changed
Output schema / properties / funding / items / requiredPrevious value: -[ - "grantNumbers" -]New value: +[ + "grantNumbers", + "sources" +] - changed
Output schema / properties / fundingCount / descriptionPrevious 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."
- Changed
orcid_get_peer_reviews7 fields changed- changed
Input schema / properties / orcid_id / descriptionPrevious 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." - changed
Input schema / properties / orcid_id / patternPrevious 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]\\/?$" - changed
Output schema / properties / peerReviews / items / properties / conveningOrganization / descriptionPrevious 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." - changed
Output schema / properties / peerReviews / items / properties / conveningOrganization / properties / name / descriptionPrevious 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)." - changed
Output schema / properties / peerReviews / items / properties / groupIssn / descriptionPrevious 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." - added
Output schema / properties / peerReviews / items / properties / sourcesAdded 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" +} - added
Output schema / properties / peerReviews / items / requiredAdded value: +[ + "sources" +]
- Changed
orcid_get_profile5 fields changed- changed
Input schema / properties / orcid_id / descriptionPrevious 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." - changed
Input schema / properties / orcid_id / patternPrevious 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]\\/?$" - changed
Output schema / anyOfPrevious 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" + ] + } +] - added
Output schema / properties / noticeAdded 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" +} - added
Output schema / properties / otherNamesAdded value: +{ + "description": "Other names listed on the ORCID record.", + "items": { + "description": "Alternative name.", + "type": "string" + }, + "type": "array" +}
- Changed
orcid_get_research_resources4 fields changed- changed
Input schema / properties / orcid_id / descriptionPrevious 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." - changed
Input schema / properties / orcid_id / patternPrevious 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]\\/?$" - added
Output schema / properties / resources / items / properties / sourcesAdded 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" +} - changed
Output schema / properties / resources / items / requiredPrevious value: -[ - "putCode", - "externalIds" -]New value: +[ + "putCode", + "externalIds", + "sources" +]
- Changed
orcid_get_work_detail11 fields changed- changed
Input schema / properties / orcid_id / descriptionPrevious 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." - changed
Input schema / properties / orcid_id / patternPrevious 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]\\/?$" - changed
Output schema / properties / deferredPutCodes / descriptionPrevious 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." - changed
Output schema / properties / works / items / properties / citation / descriptionPrevious 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." - added
Output schema / properties / works / items / properties / citationOmittedAdded 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" +} - added
Output schema / properties / works / items / properties / contributorCountAdded value: +{ + "description": "Total contributors on the ORCID record. Present only when contributorsTruncated is true.", + "type": "number" +} - changed
Output schema / properties / works / items / properties / contributors / descriptionPrevious 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." - added
Output schema / properties / works / items / properties / contributorsTruncatedAdded value: +{ + "description": "True when the record lists more than 100 contributors and the list was cut. Omitted when the list is complete.", + "type": "boolean" +} - changed
Output schema / properties / works / items / properties / externalIds / descriptionPrevious 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." - added
Output schema / properties / works / items / properties / sourcesAdded 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" +} - changed
Output schema / properties / works / items / requiredPrevious value: -[ - "putCode", - "externalIds", - "contributors" -]New value: +[ + "putCode", + "externalIds", + "contributors", + "sources" +]
- Changed
orcid_get_works7 fields changed- changed
Input schema / properties / orcid_id / descriptionPrevious 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." - changed
Input schema / properties / orcid_id / patternPrevious 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]\\/?$" - changed
Output schema / properties / notice / descriptionPrevious 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." - changed
Output schema / properties / works / items / descriptionPrevious value: -"Work summary record."New value: +"Work summary record — one ORCID work group, built from its preferred version." - changed
Output schema / properties / works / items / properties / externalIds / descriptionPrevious 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." - added
Output schema / properties / works / items / properties / sourcesAdded 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" +} - added
Output schema / properties / works / items / requiredAdded value: +[ + "sources" +]
- Changed
orcid_resolve_researcher5 fields changed- changed
Input schema / properties / name / descriptionPrevious 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." - changed
Output schema / properties / candidates / items / properties / nameMatchType / descriptionPrevious 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." - changed
Output schema / properties / primaryQuery / descriptionPrevious 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." - changed
Output schema / properties / queryUsed / descriptionPrevious 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." - changed
Output schema / properties / relaxedQuery / descriptionPrevious 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."
- Changed
orcid_search_researchers6 fields changed- changed
Input schema / properties / given_name / descriptionPrevious 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." - changed
Input schema / properties / query / descriptionPrevious 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." - changed
Input schema / properties / ror_id / descriptionPrevious 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." - added
Input schema / properties / ror_id / patternAdded value: +"^\\s*(?:(?:(?:https?:\\/\\/)?(?:www\\.)?ror\\.org\\/)?0[0-9a-hjkmnp-tv-zA-HJKMNP-TV-Z]{6}[0-9]{2}\\/?)?\\s*$" - changed
Input schema / properties / rows / descriptionPrevious 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." - changed
Output schema / properties / rows / descriptionPrevious 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 tool updates
- Changed
orcid_get_work_detail3 fields changed- changed
Input schema / properties / put_codes / descriptionPrevious 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." - added
Output schema / properties / deferredPutCodesAdded 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" +} - added
Output schema / properties / noticeAdded value: +{ + "description": "Note when the response budget deferred some put-codes — call again with deferredPutCodes.", + "type": "string" +}
- Changed
orcid_get_works4 fields changed- changed
Input schema / properties / limit / descriptionPrevious 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." - changed
Output schema / properties / returnedCount / descriptionPrevious 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." - changed
Output schema / properties / truncated / descriptionPrevious 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." - changed
Output schema / properties / works / descriptionPrevious 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 tool updates
- Changed
orcid_get_affiliations1 field changed- added
Input schema / properties / types / minItemsAdded value: +1
- Changed
orcid_resolve_researcher3 fields changed- changed
Input schema / properties / doi / descriptionPrevious 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." - changed
Input schema / properties / pmid / descriptionPrevious 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." - changed
Output schema / properties / candidates / items / properties / nameMatchType / descriptionPrevious 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."
- Changed
orcid_search_researchers3 fields changed- changed
Input schema / properties / doi / descriptionPrevious 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." - added
Input schema / properties / grant_numberAdded 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" +} - changed
Input schema / properties / pmid / descriptionPrevious 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."
9 tool updates
- Changed
orcid_get_affiliations6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "affiliationCount", + "affiliations", + "requestedTypes" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "orcidId", - "orcidUri", - "affiliationCount", - "affiliations", - "requestedTypes" -]
- Changed
orcid_get_funding6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "fundingCount", + "funding" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "orcidId", - "orcidUri", - "fundingCount", - "funding" -]
- Changed
orcid_get_peer_reviews6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "reviewCount", + "peerReviews" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "orcidId", - "orcidUri", - "reviewCount", - "peerReviews" -]
- Changed
orcid_get_profile6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "keywords", + "researcherUrls", + "externalIdentifiers", + "emails", + "countries" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "orcidId", - "orcidUri", - "keywords", - "researcherUrls", - "externalIdentifiers", - "emails", - "countries" -]
- Changed
orcid_get_research_resources6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "resourceCount", + "resources" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "orcidId", - "orcidUri", - "resourceCount", - "resources" -]
- Changed
orcid_get_work_detail6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "works", + "errors" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "orcidId", - "orcidUri", - "works", - "errors" -]
- Changed
orcid_get_works6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "orcidId", + "orcidUri", + "workCount", + "returnedCount", + "offset", + "truncated", + "works" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "orcidId", - "orcidUri", - "workCount", - "returnedCount", - "offset", - "truncated", - "works" -]
- Changed
orcid_resolve_researcher6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "candidates", + "queryUsed", + "totalFound", + "primaryQuery", + "primaryTotalFound" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "candidates", - "queryUsed", - "totalFound", - "primaryQuery", - "primaryTotalFound" -]
- Changed
orcid_search_researchers6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "results", + "rows", + "start", + "effectiveQuery", + "numFound", + "truncated" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "results", - "rows", - "start", - "effectiveQuery", - "numFound", - "truncated" -]
1 tool update
- Changed
orcid_resolve_researcher1 field changed- changed
Output schema / properties / candidates / items / properties / institutionOverlap / descriptionPrevious 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."
2 tool updates
- Changed
orcid_get_work_detail1 field changed- changed
Input schema / properties / put_codes / descriptionPrevious 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."
- Changed
orcid_search_researchers5 fields changed- added
Output schema / properties / nextStartAdded 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" +} - changed
Output schema / properties / notice / descriptionPrevious 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." - changed
Output schema / properties / results / items / properties / institutionNames / descriptionPrevious value: -"Affiliated institution names returned by expanded-search."New value: +"Affiliated institution names returned inline with each search result." - added
Output schema / properties / truncatedAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "results", - "rows", - "start", - "effectiveQuery", - "numFound" -]New value: +[ + "results", + "rows", + "start", + "effectiveQuery", + "numFound", + "truncated" +]
1 tool update
- Changed
orcid_resolve_researcher5 fields changed- added
Output schema / properties / primaryQueryAdded 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" +} - added
Output schema / properties / primaryTotalFoundAdded value: +{ + "description": "Total ORCID records matching primaryQuery. Zero when the primary query found nothing and a relaxed fallback produced the returned candidates.", + "type": "number" +} - changed
Output schema / properties / queryUsed / descriptionPrevious 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." - changed
Output schema / properties / totalFound / descriptionPrevious value: -"Total ORCID records matching the primary query."New value: +"Total ORCID records matching queryUsed (the query that produced the returned candidates)." - changed
Output schema / requiredPrevious value: -[ - "candidates", - "queryUsed", - "totalFound" -]New value: +[ + "candidates", + "queryUsed", + "totalFound", + "primaryQuery", + "primaryTotalFound" +]
1 tool update
- Changed
orcid_get_works12 fields changed- added
Input schema / properties / include_external_idsAdded 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" +} - added
Input schema / properties / limitAdded 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" +} - added
Input schema / properties / offsetAdded 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" +} - added
Output schema / properties / nextOffsetAdded value: +{ + "description": "Offset to pass on the next call to continue paging. Omitted when this response includes the final work.", + "type": "number" +} - added
Output schema / properties / offsetAdded value: +{ + "description": "Zero-based offset applied to the full works list for this response.", + "type": "number" +} - added
Output schema / properties / returnedCountAdded value: +{ + "description": "Number of works returned in this response, after applying offset and limit.", + "type": "number" +} - added
Output schema / properties / truncatedAdded value: +{ + "description": "True when more works are available beyond this response — fetch them with nextOffset.", + "type": "boolean" +} - changed
Output schema / properties / workCount / descriptionPrevious value: -"Total number of works returned."New value: +"Total works available for this ORCID iD, before offset and limit are applied." - changed
Output schema / properties / works / descriptionPrevious value: -"Works associated with this ORCID iD."New value: +"Works for this ORCID iD, sliced to the requested offset and limit." - changed
Output schema / properties / works / items / properties / externalIds / descriptionPrevious 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." - removed
Output schema / properties / works / items / requiredRemoved value: -[ - "externalIds" -] - changed
Output schema / requiredPrevious value: -[ - "orcidId", - "orcidUri", - "workCount", - "works" -]New value: +[ + "orcidId", + "orcidUri", + "workCount", + "returnedCount", + "offset", + "truncated", + "works" +]
1 tool update
- Changed
orcid_search_researchers2 fields changed- changed
Input schema / properties / start / descriptionPrevious 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." - changed
Input schema / properties / start / maximumPrevious value: -9007199254740991New value: +10000
Related MCP Connectors
arXiv, PubMed, Crossref and OpenAlex scholarly metadata.
Search 250M+ research papers, citations and author profiles. Free OpenAlex account; OAuth sign-in.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying ORCID public records, including profiles, publications, employment, education, and search, through natural language or direct tool calls.11 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables searching and retrieving organization records from the Research Organization Registry, with fuzzy affiliation matching.13 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables researchers and AI assistants to verify bibliographic existence and metadata consistency, resolve DOI, PMID, PMCID, and arXiv identifiers, and perform explainable multi-source matching without destructive edits.-
- AlicenseAqualityCmaintenanceFor 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.81MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.