Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.cyanheads/orcid-mcp-server

REMOTE · ORCID.CASEYJHAND.COM · 2 COMPONENTS · SCANNED AUG 3

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

+5 this week 69 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability66
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2147 tokens (~238/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · orcid.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-orcid-mcp-server https://orcid.caseyjhand.com/mcp
# ~/.codex/config.toml
[mcp_servers.cyanheads-orcid-mcp-server]
url = "https://orcid.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-orcid-mcp-server": {
      "type": "remote",
      "url": "https://orcid.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-orcid-mcp-server --url https://orcid.caseyjhand.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-orcid-mcp-server:
    url: "https://orcid.caseyjhand.com/mcp"
// mcp.json
{
  "mcpServers": {
    "cyanheads-orcid-mcp-server": {
      "type": "http",
      "url": "https://orcid.caseyjhand.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 63

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://orcid.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 7 Jul 2026 5 Oct 2026 ECDSA 256 ECDSA-SHA256 5aad900eb2055a0b0ea55912ec19680c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC secure

Validation of orcid.caseyjhand.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
orcid.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://orcid.caseyjhand.com/mcp Verified 200
http (plaintext) http://orcid.caseyjhand.com/mcp HTTPS enforced 301 https://orcid.caseyjhand.com/mcp
MCP tools — 9 exposed · ~2,011 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
orcid_get_affiliations ~175

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, and date ranges. Affiliation data is self-reported; absence does not mean no affiliation.

NameTypeReqDescription
orcid_idstringyesORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).
typesarrayWhich affiliation types to return. Defaults to employment and education. Use ["all"] to get every section.
NameTypeReqDescription
affiliationCountnumberyesTotal number of affiliation records returned.
affiliationsarrayyesAffiliation records for the requested types.
noticestringNote when no affiliations were found — may indicate private visibility or no self-reported affiliations.
orcidIdstringyesNormalized ORCID iD (bare format).
orcidUristringyesFull ORCID URI.
requestedTypesarrayyesAffiliation types that were requested.

No examples provided.

orcid_get_funding ~144

Fetch funding records for an ORCID researcher: grants, contracts, awards, and salary awards. Returns funder names, funder organization identifiers, grant numbers, and funding periods. Funding data is entirely self-reported — most researchers do not enter funding even when they have grants. Absence of funding records does not imply absence of funding. When records exist they are high-value for grant tracking and funder analysis.

NameTypeReqDescription
orcid_idstringyesORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).
NameTypeReqDescription
fundingarrayyesFunding records associated with this ORCID iD.
fundingCountnumberyesTotal number of funding records returned.
noticestringNote when no funding is found — absence of records does not mean absence of funding.
orcidIdstringyesNormalized ORCID iD (bare format).
orcidUristringyesFull ORCID URI.

No examples provided.

orcid_get_peer_reviews ~144

Fetch peer review activity for an ORCID researcher: convening organizations (journals and publishers), reviewer role (reviewer, editor, chair, etc.), review type, completion dates, and ISSN-keyed group identifiers. Use to assess editorial activity, journal affiliations, and the scope of a researcher's peer review contributions. Peer review records are self-reported or imported by participating publishers — coverage varies by researcher.

NameTypeReqDescription
orcid_idstringyesORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).
NameTypeReqDescription
noticestringNote when no peer reviews are found — coverage varies by researcher and publisher participation.
orcidIdstringyesNormalized ORCID iD (bare format).
orcidUristringyesFull ORCID URI.
peerReviewsarrayyesPeer review records for this ORCID iD.
reviewCountnumberyesTotal number of peer review records returned.

No examples provided.

orcid_get_profile ~165

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

NameTypeReqDescription
orcid_idstringyesORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).
NameTypeReqDescription
biographystringResearcher biography, if publicly visible.
countriesarrayyesCountries listed in the researcher's address section.
creditNamestringPublished credit name, if set.
emailsarrayyesPublicly visible email addresses.
externalIdentifiersarrayyesExternal identifiers from scholarly systems (Scopus, Web of Science, Loop, etc.).
familyNamestringFamily (last) name, if publicly visible.
givenNamesstringGiven (first) name, if publicly visible.
keywordsarrayyesResearch keywords set by the researcher.
orcidIdstringyesNormalized ORCID iD (bare format without URI prefix).
orcidUristringyesFull ORCID URI (https://orcid.org/{id}).
researcherUrlsarrayyesResearcher-provided URLs (personal site, lab page, blog, etc.).

No examples provided.

orcid_get_research_resources ~150

List research resources associated with an ORCID researcher — compute allocations, equipment access, lab facilities, data resources, and clinical study registrations. This is a newer ORCID section; most researchers have no entries. Returns the resource title, hosting organization, external identifiers (often a URI to the allocation portal), and access period. Most entries are deposited by resource-allocation systems (e.g. ACCESS, XSEDE) rather than researchers themselves.

NameTypeReqDescription
orcid_idstringyesORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).
NameTypeReqDescription
noticestringNote when no research resources are found — this section is sparsely populated across ORCID profiles.
orcidIdstringyesNormalized ORCID iD (bare format).
orcidUristringyesFull ORCID URI.
resourceCountnumberyesTotal number of research resources returned.
resourcesarrayyesResearch resources associated with this ORCID iD.

No examples provided.

orcid_get_work_detail ~220

Fetch full detail records for 1–100 works by their put-codes in a single request. Put-codes are returned by orcid_get_works in the putCode field of each work entry. Returns the abstract (short-description), all contributors with CRediT roles, the complete external ID list (DOI, PMID, arXiv, ISBN, etc.), citation metadata (BibTeX or other formats when provided), journal title, and URL for each work. Per-record errors (not-found or inaccessible put-codes) are surfaced as error entries rather than failing the whole call.

NameTypeReqDescription
orcid_idstringyesORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).
put_codesarrayyesArray of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works.
NameTypeReqDescription
errorsarrayyesPer-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully.
orcidIdstringyesNormalized ORCID iD (bare format).
orcidUristringyesFull ORCID URI.
worksarrayyesSuccessfully resolved work detail records.

No examples provided.

orcid_get_works ~354

Retrieve works associated with an ORCID iD — publications, datasets, software, preprints, and more. Returns work summaries with put-codes, titles, types, publication dates, journal names, and all external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). The first 50 works are returned by default; workCount reports the total available, and prolific records are paged with offset and the returned nextOffset (or raise limit). 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 are self-reported; a researcher may not have linked all their publications.

NameTypeReqDescription
include_external_idsbooleanWhen 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.
limitintegerMaximum 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.
offsetintegerZero-based index of the first work to return (default 0). Combine with limit to page through the full works list.
orcid_idstringyesORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).
NameTypeReqDescription
nextOffsetnumberOffset to pass on the next call to continue paging. Omitted when this response includes the final work.
noticestringNote when the works list is empty — may indicate no self-reported works or private visibility settings.
offsetnumberyesZero-based offset applied to the full works list for this response.
orcidIdstringyesNormalized ORCID iD (bare format).
orcidUristringyesFull ORCID URI.
returnedCountnumberyesNumber of works returned in this response, after applying offset and limit.
truncatedbooleanyesTrue when more works are available beyond this response — fetch them with nextOffset.
workCountnumberyesTotal works available for this ORCID iD, before offset and limit are applied.
worksarrayyesWorks for this ORCID iD, sliced to the requested offset and limit.

No examples provided.

orcid_resolve_researcher ~301

Disambiguate an author name to a verified ORCID iD. Returns ranked candidates (5 by default, up to 20 via the rows parameter) with transparent disambiguation signals: name match type (exact/partial/other-name/none), institution overlap flag, and whether a DOI or PMID anchor was used in the query. 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.

NameTypeReqDescription
affiliationstringResearcher's institution or organization name. Used for institution overlap scoring and optionally as a search constraint.
doistringDOI of a work authored by this researcher. Acts as a near-deterministic anchor — filters to researchers who linked this DOI to their ORCID record.
namestringyesAuthor name to disambiguate (full name preferred, e.g. "Jennifer Doudna" or "J. Doudna").
pmidstringPubMed 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.
rowsintegerMaximum candidate count to return (1–20). Defaults to 5.
NameTypeReqDescription
candidatesarrayyesRanked candidates, ordered by name match quality then institution overlap.
noticestringRecovery hint when no candidates are found or when the anchor query failed to match.
primaryQuerystringyesThe primary, most-constrained Solr query attempted first (name + optional anchor + optional affiliation). Always populated; equals queryUsed when no relaxed fallback ran.
primaryTotalFoundnumberyesTotal ORCID records matching primaryQuery. Zero when the primary query found nothing and a relaxed fallback produced the returned candidates.
queryUsedstringyesThe Solr query that produced the returned candidates — the primary query, or the final relaxed query when a fallback ran. Paired with totalFound.
relaxedQuerystringSolr query used in a secondary relaxed search, if the primary returned no results.
totalFoundnumberyesTotal ORCID records matching queryUsed (the query that produced the returned candidates).

No examples provided.

orcid_search_researchers ~358

Search the ORCID registry using structured field parameters or raw Solr syntax. All provided structured params are ANDed together. The `query` field appends raw Solr syntax to the generated clause. Returns ORCID iDs with inline name and institution data — no follow-up profile fetches needed for basic disambiguation. For ranked disambiguation of an ambiguous author name, use orcid_resolve_researcher instead. The ORCID Public API caps results at 10,000 — use pagination for large result sets.

NameTypeReqDescription
affiliationstringOrganization name to filter by. Phrase match.
doistringDOI to anchor the search. Returns researchers who have linked this DOI to their ORCID record.
family_namestringResearcher's family (last) name.
given_namestringResearcher's given (first) name.
keywordstringKeyword to search in the researcher's keyword fields. Phrase match.
pmidstringPubMed ID to anchor the search. Returns researchers who have linked this PMID to their ORCID record.
querystringRaw Solr query string appended to the generated clause with AND. Supports all ORCID Solr fields and boolean operators.
ror_idstringROR organization ID to filter by (full URL, e.g. https://ror.org/00f54p054). Returns researchers affiliated with this organization.
rowsintegerMaximum results to return (1–1000).
startintegerPagination offset (0-based), 0–10,000. The ORCID Public API rejects start > 10,000 for unauthenticated requests.
NameTypeReqDescription
effectiveQuerystringyesSolr query sent to the ORCID API.
nextStartnumberOffset 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…
noticestringRecovery hint when results are empty, pagination overshoots the total, or matches exceed the 10,000-offset ceiling. Absent on fully retrievable pages.
numFoundnumberyesTotal number of matching records in ORCID (before pagination).
resultsarrayyesMatching researchers with inline name and institution data.
rowsnumberyesNumber of results returned in this response.
startnumberyesPagination offset used for this response.
truncatedbooleanyesTrue 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.

No examples provided.