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.
Available components
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
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http cyanheads-orcid-mcp-server https://orcid.caseyjhand.com/mcp
[mcp_servers.cyanheads-orcid-mcp-server] url = "https://orcid.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cyanheads-orcid-mcp-server": {
"type": "remote",
"url": "https://orcid.caseyjhand.com/mcp",
"enabled": true
}
}
} openclaw mcp add cyanheads-orcid-mcp-server --url https://orcid.caseyjhand.com/mcp --transport streamable-http
mcp_servers:
cyanheads-orcid-mcp-server:
url: "https://orcid.caseyjhand.com/mcp" {
"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.
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.
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 |
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.
orcid_get_affiliations Get ORCID Researcher 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.
| Name | Type | Req | Description |
|---|---|---|---|
| orcid_id | string | yes | ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789). |
| types | array | — | Which affiliation types to return. Defaults to employment and education. Use ["all"] to get every section. |
| Name | Type | Req | Description |
|---|---|---|---|
| affiliationCount | number | yes | Total number of affiliation records returned. |
| affiliations | array | yes | Affiliation records for the requested types. |
| notice | string | — | Note when no affiliations were found — may indicate private visibility or no self-reported affiliations. |
| orcidId | string | yes | Normalized ORCID iD (bare format). |
| orcidUri | string | yes | Full ORCID URI. |
| requestedTypes | array | yes | Affiliation types that were requested. |
No examples provided.
orcid_get_funding Get ORCID Researcher 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.
| Name | Type | Req | Description |
|---|---|---|---|
| orcid_id | string | yes | ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789). |
| Name | Type | Req | Description |
|---|---|---|---|
| funding | array | yes | Funding records associated with this ORCID iD. |
| fundingCount | number | yes | Total number of funding records returned. |
| notice | string | — | Note when no funding is found — absence of records does not mean absence of funding. |
| orcidId | string | yes | Normalized ORCID iD (bare format). |
| orcidUri | string | yes | Full ORCID URI. |
No examples provided.
orcid_get_peer_reviews Get ORCID Researcher 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.
| Name | Type | Req | Description |
|---|---|---|---|
| orcid_id | string | yes | ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789). |
| Name | Type | Req | Description |
|---|---|---|---|
| notice | string | — | Note when no peer reviews are found — coverage varies by researcher and publisher participation. |
| orcidId | string | yes | Normalized ORCID iD (bare format). |
| orcidUri | string | yes | Full ORCID URI. |
| peerReviews | array | yes | Peer review records for this ORCID iD. |
| reviewCount | number | yes | Total number of peer review records returned. |
No examples provided.
orcid_get_profile Get ORCID Researcher 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.
| Name | Type | Req | Description |
|---|---|---|---|
| orcid_id | string | yes | ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789). |
| Name | Type | Req | Description |
|---|---|---|---|
| biography | string | — | Researcher biography, if publicly visible. |
| countries | array | yes | Countries listed in the researcher's address section. |
| creditName | string | — | Published credit name, if set. |
| emails | array | yes | Publicly visible email addresses. |
| externalIdentifiers | array | yes | External identifiers from scholarly systems (Scopus, Web of Science, Loop, etc.). |
| familyName | string | — | Family (last) name, if publicly visible. |
| givenNames | string | — | Given (first) name, if publicly visible. |
| keywords | array | yes | Research keywords set by the researcher. |
| orcidId | string | yes | Normalized ORCID iD (bare format without URI prefix). |
| orcidUri | string | yes | Full ORCID URI (https://orcid.org/{id}). |
| researcherUrls | array | yes | Researcher-provided URLs (personal site, lab page, blog, etc.). |
No examples provided.
orcid_get_research_resources Get ORCID 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.
| Name | Type | Req | Description |
|---|---|---|---|
| orcid_id | string | yes | ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789). |
| Name | Type | Req | Description |
|---|---|---|---|
| notice | string | — | Note when no research resources are found — this section is sparsely populated across ORCID profiles. |
| orcidId | string | yes | Normalized ORCID iD (bare format). |
| orcidUri | string | yes | Full ORCID URI. |
| resourceCount | number | yes | Total number of research resources returned. |
| resources | array | yes | Research resources associated with this ORCID iD. |
No examples provided.
orcid_get_work_detail Get ORCID Work Details (Bulk) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| orcid_id | string | yes | ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789). |
| put_codes | array | yes | Array of 1–100 work put-codes to fetch. Put-codes are available in the putCode field returned by orcid_get_works. |
| Name | Type | Req | Description |
|---|---|---|---|
| errors | array | yes | Per-record errors for put-codes that could not be resolved (not found or inaccessible). Empty when all put-codes resolved successfully. |
| orcidId | string | yes | Normalized ORCID iD (bare format). |
| orcidUri | string | yes | Full ORCID URI. |
| works | array | yes | Successfully resolved work detail records. |
No examples provided.
orcid_get_works Get ORCID Researcher 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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_external_ids | boolean | — | 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. |
| limit | integer | — | 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. |
| offset | integer | — | Zero-based index of the first work to return (default 0). Combine with limit to page through the full works list. |
| orcid_id | string | yes | ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789). |
| Name | Type | Req | Description |
|---|---|---|---|
| nextOffset | number | — | Offset to pass on the next call to continue paging. Omitted when this response includes the final work. |
| notice | string | — | Note when the works list is empty — may indicate no self-reported works or private visibility settings. |
| offset | number | yes | Zero-based offset applied to the full works list for this response. |
| orcidId | string | yes | Normalized ORCID iD (bare format). |
| orcidUri | string | yes | Full ORCID URI. |
| returnedCount | number | yes | Number of works returned in this response, after applying offset and limit. |
| truncated | boolean | yes | True when more works are available beyond this response — fetch them with nextOffset. |
| workCount | number | yes | Total works available for this ORCID iD, before offset and limit are applied. |
| works | array | yes | Works for this ORCID iD, sliced to the requested offset and limit. |
No examples provided.
orcid_resolve_researcher Resolve ORCID 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.
| Name | Type | Req | Description |
|---|---|---|---|
| affiliation | string | — | Researcher's institution or organization name. Used for institution overlap scoring and optionally as a search constraint. |
| doi | string | — | 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. |
| name | string | yes | Author name to disambiguate (full name preferred, e.g. "Jennifer Doudna" or "J. Doudna"). |
| pmid | string | — | 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. |
| rows | integer | — | Maximum candidate count to return (1–20). Defaults to 5. |
| Name | Type | Req | Description |
|---|---|---|---|
| candidates | array | yes | Ranked candidates, ordered by name match quality then institution overlap. |
| notice | string | — | Recovery hint when no candidates are found or when the anchor query failed to match. |
| primaryQuery | string | yes | The primary, most-constrained Solr query attempted first (name + optional anchor + optional affiliation). Always populated; equals queryUsed when no relaxed fallback ran. |
| primaryTotalFound | number | yes | Total ORCID records matching primaryQuery. Zero when the primary query found nothing and a relaxed fallback produced the returned candidates. |
| queryUsed | string | yes | The Solr query that produced the returned candidates — the primary query, or the final relaxed query when a fallback ran. Paired with totalFound. |
| relaxedQuery | string | — | Solr query used in a secondary relaxed search, if the primary returned no results. |
| totalFound | number | yes | Total ORCID records matching queryUsed (the query that produced the returned candidates). |
No examples provided.
orcid_search_researchers Search ORCID 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.
| Name | Type | Req | Description |
|---|---|---|---|
| affiliation | string | — | Organization name to filter by. Phrase match. |
| doi | string | — | DOI to anchor the search. Returns researchers who have linked this DOI to their ORCID record. |
| family_name | string | — | Researcher's family (last) name. |
| given_name | string | — | Researcher's given (first) name. |
| keyword | string | — | Keyword to search in the researcher's keyword fields. Phrase match. |
| pmid | string | — | PubMed ID to anchor the search. Returns researchers who have linked this PMID to their ORCID record. |
| query | string | — | Raw Solr query string appended to the generated clause with AND. Supports all ORCID Solr fields and boolean operators. |
| ror_id | string | — | ROR organization ID to filter by (full URL, e.g. https://ror.org/00f54p054). Returns researchers affiliated with this organization. |
| rows | integer | — | Maximum results to return (1–1000). |
| start | integer | — | Pagination offset (0-based), 0–10,000. The ORCID Public API rejects start > 10,000 for unauthenticated requests. |
| Name | Type | Req | Description |
|---|---|---|---|
| effectiveQuery | string | yes | Solr query sent to the ORCID API. |
| nextStart | number | — | 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… |
| notice | string | — | Recovery hint when results are empty, pagination overshoots the total, or matches exceed the 10,000-offset ceiling. Absent on fully retrievable pages. |
| numFound | number | yes | Total number of matching records in ORCID (before pagination). |
| results | array | yes | Matching researchers with inline name and institution data. |
| rows | number | yes | Number of results returned in this response. |
| start | number | yes | Pagination offset used for this response. |
| truncated | boolean | yes | 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. |
No examples provided.