Skip to main content
Glama

Server Details

Search DataCite datasets and software, fetch DOI metadata, trace relations, format citations.

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

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation4/5

Most tools target clearly distinct actions and resources: search works, search repositories, trace relations, fetch metadata, render citation, and list vocabularies. There is some overlap between datacite_get_citation's machine-readable DataCite JSON/XML output and datacite_get_work's full deposited metadata fetch, which could cause occasional misselection.

Naming Consistency5/5

All tools use a consistent datacite_ prefix followed by a snake_case verb_noun pattern: get_citation, get_work, list_reference, search_repositories, search_works, trace_relations. The convention is predictable throughout.

Tool Count5/5

Six tools is well-scoped for a read-only DataCite metadata server. Each tool covers a distinct retrieval need—search, lookup, citation, repository search, relation tracing, and vocabulary reference—without obvious redundancy.

Completeness4/5

The set covers the core DataCite retrieval workflows: search, metadata lookup, citation rendering, repository discovery, relation tracing, and controlled vocabulary reference. Minor gaps remain, such as dedicated provider/client detail lookup or direct event search, but agents can work around most of these using existing filters and reference data.

Available Tools

6 tools
datacite_get_citationGet DataCite citationA
Read-onlyIdempotent
Inspect

Render one DataCite DOI as a formatted citation in a CSL style and locale (APA in US English by default), or as a machine-readable record: CSL JSON, BibTeX, RIS, DataCite JSON or XML, Schema.org JSON-LD, Codemeta, or JATS. A style the upstream renderer does not support — an unknown id or a dependent journal style — is rejected instead of silently rendered as APA. Formatted text comes back as plain text alongside the upstream HTML markup. A DOI DataCite does not hold returns found: false naming the registration agency that does.

NameRequiredDescriptionDefault
doiYesThe DataCite DOI, e.g. 10.5061/dryad.234. Accepted bare, with doi: or info:doi/ prefixes, as a doi.org / dx.doi.org URL, or %2F-encoded; case-insensitive.
styleNoCSL style id for format text, e.g. apa (default), ieee, chicago-author-date, modern-language-association, vancouver, nature. Lowercased. A style that would silently fall back to APA is rejected. Verified ids: datacite_list_reference topic citation_styles.
formatNotext (formatted citation, default), csl_json, bibtex, ris, datacite_json, datacite_xml, schema_org, codemeta, or jats.
localeNoCSL locale for format text, e.g. en-GB, de-DE, fr-FR, or a bare language (de → de-DE); any case. Omitted: en-US. List: datacite_list_reference topic citation_locales.

Output Schema

NameRequiredDescription
capNoThe character cap applied: 100,000.
doiNoThe DOI, lowercase.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when DataCite holds the DOI and rendered it; false when it holds no public record (the miss fields explain).
shownNoUTF-16 code units of DataCite's payload kept inline; zero for an oversized machine document, or the units text and citationHtml derive from.
styleNoCSL style applied (text only).
formatNoThe format requested.
localeNoCSL locale applied (text only; absent means en-US).
noticeNoSet when the style could not be confirmed as distinct from APA, or when the payload exceeded the inline cap (length and retrieval guidance).
citationNotext: the citation as plain text (tags stripped, entities decoded), cut at 100,000 upstream UTF-16 units. Machine formats: the complete payload verbatim when at most 100,000 units; otherwise omitted in favor of downloadUrl.
guidanceNoThe next step for this miss. Miss arm only.
mediaTypeNoMedia type negotiated. Found only.
truncatedNoTrue when the payload exceeded 100,000 UTF-16 code units: text was cut or a machine document was omitted for download.
missReasonNoWhy DataCite holds no public record: another agency registered it, no agency did, it is a DataCite DOI without public (Findable) metadata, or the agency lookup did not answer. Miss arm only.
downloadUrlNoExact negotiated URL for the complete machine document when it exceeds the inline cap; fetch this URL to retrieve the document.
citationHtmlNotext only: the upstream HTML markup verbatim (<i>, &amp;, small caps), cut like citation.
totalCharactersNoComplete oversized machine document length in UTF-16 code units.
registrationAgencyNoRegistration agency that holds the DOI (e.g. Crossref, mEDRA, DataCite), when known. Miss arm only.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, openWorld), and the description adds substantive behavior: unsupported or dependent journal styles are rejected rather than silently falling back to APA, text is returned as plain text plus upstream HTML markup, and a DOI held by another agency yields found: false with the agency named. That is exactly the kind of failure-mode disclosure an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and output modes, then adds error handling and return-shape notes in separate sentences. Dense but every sentence carries information; the only cost is a slightly packed opening clause listing all formats.

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

Completeness5/5

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

With an output schema present, the description need not detail return values, yet it still notes the plain-text-plus-HTML shape and the found:false case. Combined with complete schema coverage and annotations, nothing material is missing for correct invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; the description adds some value by explaining the default (APA/en-US), that style ids are lowercased, and by pointing to datacite_list_reference for verified style and locale ids. Most parameter detail, however, is already carried by the schema.

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

Purpose5/5

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

States a specific verb ('Render') plus resource ('one DataCite DOI') and enumerates both rendering modes (formatted citation vs. machine-readable record) with the exact format list. An agent can tell this apart from datacite_get_work, which returns the work record rather than a citation rendering.

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

Usage Guidelines4/5

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

Explains defaults (APA in US English), what the style parameter controls, and what happens with unsupported styles or DOIs DataCite does not hold. It stops short of explicitly naming a sibling to use instead when the agent wants raw metadata, but the usage context is otherwise clear.

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

datacite_get_workGet DataCite workA
Read-onlyIdempotent
Inspect

Fetch the full deposited DataCite metadata for one DOI: titles, creators and contributors with ORCID iDs and ROR affiliations, publisher, dates, version, subjects, descriptions, funding, geolocations, rights, sizes and formats, related identifiers with their relation types, repository and provider, and citation, reference, version, part, view, and download counts. Long lists are capped with exact list/offset continuation recipes; select a list to retrieve later entries without losing the other metadata. datacite_trace_relations maps a bounded graph (at most 100 nodes and 1,000 edges). A DOI DataCite does not hold returns found: false naming the registration agency that does, or saying the DOI does not exist.

NameRequiredDescriptionDefault
doiYesThe DOI, e.g. 10.5061/dryad.234: 10., a 4–9 digit registrant, a slash, and a suffix. Accepted bare, with doi: or info:doi/ prefixes, as a doi.org / dx.doi.org URL, or %2F-encoded; case-insensitive.
listNoOne capped list to page in deposit order; other record fields keep their default caps.
offsetNoZero-based offset into valid mapped entries of list. Defaults to zero with list; requires list.

Output Schema

NameRequiredDescription
doiNoThe DOI, normalized to lowercase bare form.
datesNoDates. Found arm only.
errorNoPresent when the call failed. Absent on success.
foundNoTrue when DataCite holds a public record for the DOI.
sizesNoSizes as deposited, e.g. "2123413 bytes". Found arm only.
countsNoDataCite's own counts; they can trail the live record by a few events. Found arm only.
doiUrlNoResolver URL, https://doi.org/<doi>, with #, ?, and % percent-encoded. Found arm only.
noticeNoDiscloses omitted malformed polygon geometry; other valid geographic fields remain available.
rightsNoThe work's own rights and licenses — distinct from metadataLicense. Found arm only.
titlesNoEvery title, main title first. Found arm only.
createdNoWhen the record was created. Found arm only.
formatsNoFormats as deposited. Found arm only.
updatedNoWhen the record was last updated. Found arm only.
versionNoVersion string. Found arm only.
creatorsNoCreators, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only.
guidanceNoThe next step for this miss. Miss arm only.
languageNoLanguage as deposited, usually an ISO 639-1 code such as en. Found arm only.
listPageNoPaging metadata for the selected list, including empty and past-end pages. Found arm only.
subjectsNoSubjects, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only.
publisherNoPublisher. Found arm only.
landingUrlNoThe repository's landing page. Found arm only.
missReasonNoWhy DataCite holds no public record: another agency registered it, no agency did, it is a DataCite DOI without public (Findable) metadata, or the agency lookup did not answer. Miss arm only.
registeredNoWhen the DOI was registered. Found arm only.
repositoryNoThe DataCite repository that registered the DOI. Found arm only.
contentUrlsNoDirect content URLs, when deposited. Found arm only.
contributorsNoContributors, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only.
descriptionsNoDescriptions. Found arm only.
geoLocationsNoGeolocations, up to 50; full count in truncatedLists by default or listPage when selected. Found arm only.
relatedItemsNoRelated items described inline in this record — typically the journal, book, or series it appears in — up to 25; full count in truncatedLists by default or listPage when selected. Found arm only.
resourceTypeNoFree-text resource type the depositor gave. Found arm only.
schemaVersionNoDataCite metadata schema version URI. Found arm only.
truncatedListsNoLists the caps bound, with their full counts. Present only when a cap bound.
metadataLicenseNoLicense of the DataCite metadata itself (CC0 1.0), not of the work it describes. Found arm only.
publicationYearNoPublication year. Found arm only.
fundingReferencesNoFunding, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only.
registrationAgencyNoRegistration agency that holds the DOI (e.g. Crossref, mEDRA, DataCite), when known. Miss arm only.
relatedIdentifiersNoRelated identifiers, capped at 100 (full counts in relatedIdentifierCounts). Found arm only.
resourceTypeGeneralNoresourceTypeGeneral, e.g. Dataset or Software. Found arm only.
alternateIdentifiersNoAlternate identifiers. Found arm only.
relatedIdentifierCountsNorelationType → full count of related identifiers, before the cap. Found arm only.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover read-only, open-world and idempotent, and the description still adds substantial behavior: long lists are capped with exact list/offset continuation recipes, and a DOI not held by DataCite returns found: false naming the responsible registration agency. That describes both truncation and the miss case, which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and dense with specifics; the field enumeration is long but each item tells the agent what is retrievable. Could be tightened by grouping the field list, but no sentence is pure filler.

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

Completeness5/5

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

Given an output schema exists, return value shape need not be explained, and the description still covers the two things the schema cannot: truncation/continuation and the not-found outcome. For a 3-parameter read tool with full schema coverage, nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns a bump by explaining the purpose of `list`/`offset` — page one list while other fields keep default caps — which is the rationale behind the parameter pair rather than a restatement. DOI format handling is left entirely to the schema, which is reasonable given the regex and example there.

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

Purpose5/5

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

States a specific verb and resource — fetch full deposited DataCite metadata for one DOI — and enumerates the payload scope (titles, creators with ORCID/ROR, funding, related identifiers, counts). It also positions itself against datacite_trace_relations, so an agent can separate this record-fetch tool from the graph traversal sibling.

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

Usage Guidelines4/5

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

Usage is clear from context: call it with a DOI when the full record is wanted, and pass `list` to page one capped list without losing the rest. It also routes graph-shaped queries to datacite_trace_relations and out-of-scope DOIs to the named registration agency. It never explicitly contrasts with datacite_search_works or datacite_get_citation, so the sibling differentiation is partial rather than complete.

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

datacite_list_referenceDataCite reference vocabulariesA
Read-onlyIdempotent
Inspect

Look up the controlled vocabularies and identifier forms the other datacite_* tools accept: resource types, relation types with their inverses and groups, related-identifier types, date and contributor types, fields of science, common license ids, repository types, certificates, software platforms, client types, sort orders, query-syntax field paths, citation formats, verified citation styles and locales, accepted identifier forms (DOI, ORCID iD, ROR ID, Crossref Funder ID, country, language, repository, and provider ids), and coverage and rate-limit rules. Offline; makes no upstream request.

NameRequiredDescriptionDefault
topicYesWhich vocabulary or rule set to return. identifier_types lists related-identifier types (the relatedIdentifierType values datacite_trace_relations reports as node idType); identifier_formats lists the accepted input forms of DOIs, ORCID iDs, ROR IDs, Crossref Funder IDs, country and language codes, and repository and provider ids; query_syntax lists the field paths and operators of the datacite_search_works query input; coverage states what DataCite holds, the paging and facet limits, citation accrual, Event Data scope, and rate limits.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
notesNoUsage rules and caveats for the topic.
titleNoHuman-readable topic title.
topicNoThe topic returned.
entriesNoThe vocabulary entries.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuine context on top: "Offline; makes no upstream request" confirms no network/rate cost, and it mentions that coverage includes rate-limit and paging rules. It does not describe output shape, though an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then one dense but readable enumeration that mirrors and slightly annotates the enum values, closing with the useful offline note. The list is long, but each item maps to a real topic an agent can request, so it mostly earns its place.

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

Completeness4/5

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

For a single-enum-parameter reference tool with a full output schema, the description covers purpose, scope, and the offline/no-request behavior. An agent has everything needed to invoke it correctly, with only minor gaps (no mention of response size or caching expectations).

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

Parameters3/5

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

Schema description coverage is 100% and the enum's own description already spells out the tricky topics (identifier_types vs identifier_formats, query_syntax, coverage). The prose enumeration in the description largely mirrors the enum values, adding only grouping detail such as 'relation types with their inverses and groups'. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (look up) and resource (controlled vocabularies and identifier forms), scoped to what the sibling datacite_* tools accept. An agent immediately understands this is the offline reference/dictionary tool, distinct from the search/get/trace siblings.

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

Usage Guidelines4/5

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

Makes the usage context clear by tying the lookup to the inputs other datacite_* tools require ("the identifier forms the other datacite_* tools accept"), which implicitly recommends calling it before those tools. It stops short of explicit when-not-to-use or step-ordering guidance.

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

datacite_search_repositoriesSearch DataCite repositoriesA
Read-onlyIdempotent
Inspect

Find DataCite repository accounts by name or description text, field of science, repository type, certification (e.g. CoreTrustSeal), software platform, client type, or parent provider, or look up known repository IDs. Returns each repository's repositoryId — the value datacite_search_works takes in repository_ids — with its providerId, name, type, certificates, software, subjects, homepage, and re3data link. To rank repositories by how many works they hold on a topic, run datacite_search_works with that topic and include_facets: true; its repositories facet lists the top ten with counts.

NameRequiredDescriptionDefault
pageNoPage number. Past the last page the list is empty.
limitNoRequested repositories per page, 1–10,000; values above 100 apply 100 with a notice.
queryNoText matched against repository names, alternate names, and descriptions. Query-string syntax is accepted.
softwareNoSoftware platform slug, lowercased: dataverse, dspace, invenio, ckan, open_journal_systems_ojs, … (free-form upstream; see datacite_list_reference topic software_platforms).
client_typeNoAccount type: repository, periodical, igsnCatalog, or raidRegistry. Omitted: all.
provider_idNoParent provider id, e.g. dryad — the providerId a repository carries. Any case.
certificatesNoCertificates (any match): CoreTrustSeal, WDS, DSA, DINI, RatSWD, CLARIN, DIN 31644; any case.
repository_idsNoKnown repository ids, shaped provider.repository (e.g. dryad.dryad); any case. Up to 1,000 inputs; queries the first 25 distinct normalized ids and names omitted ids. Use alone — an id lookup ignores query and filters.
field_of_scienceNoAn OECD Fields of Science id or label the repository lists among its subjects, e.g. earth_and_related_environmental_sciences. List: datacite_list_reference topic fields_of_science.
repository_typesNoRepository types (any match): institutional, disciplinary, multidisciplinary, project-related, governmental, other.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when nothing matched, the page is past the end, or a requested repository id matched no account.
nextPageNoNext page number, when more repositories match.
totalCountNoTotal repositories matching.
orderAppliedNoResult order — always by name, as the registry returns it.
repositoriesNoRepositories on this page, ordered by name.
appliedFiltersNoEvery applied filter as sent upstream; {} when none.
effectiveQueryNoThe composed search query, or * for an unfiltered search; absent for repository_ids lookup.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world behavior, so the safety bar is low. The description adds the valuable cross-tool contract — the returned repositoryId is exactly the value datacite_search_works accepts in repository_ids — plus a summary of the payload fields. Pagination caps and the >100 limit behavior are 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the capabilities and ending with the routing tip. The second sentence is long but every clause — facet ranking, top ten, counts — carries actionable information.

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

Completeness4/5

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

With an output schema and full annotation coverage, the description only needs to cover purpose, alternatives, and cross-tool wiring, all of which it does. Return-shape details are partially restated but the mode-switching caveats live in the schema rather than the prose.

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

Parameters3/5

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

Schema description coverage is 100% and the parameters are thoroughly documented there, including the rule that ID lookup ignores query and filters. The description's filter list and ID-lookup mention largely mirror the schema, so it clears the baseline but adds little parameter-level meaning beyond it.

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

Purpose5/5

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

States a specific verb (find/look up) and resource (DataCite repository accounts) and enumerates the filter dimensions, so an agent immediately knows the surface. It is clearly distinct from datacite_search_works, whose repository_ids parameter it feeds the repositoryId into.

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

Usage Guidelines5/5

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

It names both modes (filter search vs. ID lookup) and gives an explicit alternative-with-condition: to rank repositories by work counts on a topic run datacite_search_works with include_facets: true and read the repositories facet. Nothing is left to inference about which sibling to call.

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

datacite_search_worksSearch DataCite worksA
Read-onlyIdempotent
Inspect

Search DataCite DOI metadata for datasets, software, samples, workflows, and other research outputs. Combine plain words (text) or OpenSearch query syntax (query) with filters for resource type, creator (ORCID iD or name), affiliation (ROR ID or name), affiliation country, funder (ROR ID, Crossref Funder ID, or name), subject, field of science, repository, provider, license, language, geographic place, publication-year range, and minimum citation count. Returns the total match count and compact rows — DOI, title, first creators, year, type, repository, licenses, and citation/view/download counts — plus optional top facet counts. Page numbers reach the first 10,000 ranked matches; pass cursor "*" to walk any result set in full, in registration order.

NameRequiredDescriptionDefault
pageNoRanked page number, 1 when omitted. page × limit may not exceed 10,000; not with cursor.
sortNorelevance, newest, oldest, recently_updated, most_cited, most_viewed, or most_downloaded. Omitted: relevance when text or query is set, else newest. Not with cursor.
textNoPlain words and phrases, searched literally: query-syntax characters are escaped, so "Climate change: impacts" works. Angle brackets are removed; nonblank text with no remaining searchable clause is rejected. Blank text is unset. Terms are ANDed.
limitNoRequested rows per page, 1–10,000; values above 100 apply 100 with a notice.
placeNoA geographic place phrase, matched against deposited place names.
queryNoOpenSearch query-string syntax — field paths (titles.title:"…", creators.name:…, relatedIdentifiers.relationType:…), AND/OR/NOT, ranges, wildcards. Field paths: datacite_list_reference topic query_syntax. ANDed with text and the filters.
cursorNoCursor walk over the full result set in registration order: "*" to start, then the nextCursor of the previous page, unchanged, with the same query and filters. Not with page or sort.
funderNoA funder ROR ID, a Crossref Funder ID (10.13039/100000001, its doi.org URL, or the bare digits), or a funder name.
creatorNoA creator ORCID iD (0000-0002-1825-0097, 16 digits, or an orcid.org URL; checksum verified) or a name — every name token must appear in one creator field.
subjectNoA subject phrase, matched case-insensitively against subject terms.
languageNoISO 639-1 language code of the work, any case (en, de).
licensesNoThe work's own license ids (any match), e.g. cc-by-4.0, cc0-1.0, cc0 1.0, mit. Trimmed and lowercased, then matched exactly, preserving internal spaces; reuse ids from the licenses facet or datacite_list_reference topic licenses.
affiliationNoA ROR ID (021nxhr62 or a ror.org URL) — matches creator and contributor affiliations — or an affiliation name phrase.
provider_idsNoProvider ids (any match), e.g. dryad — the providerId datacite_search_repositories returns. Any case.
published_toNoLatest publication year (inclusive). Alone, the range is open-ended.
min_citationsNoOnly works DataCite records at least this many citations for.
include_facetsNoAdd top facet counts (resource types, years, repositories, providers, affiliations, fields of science, licenses). Adds 2–8 s.
published_fromNoEarliest publication year (inclusive). Alone, the range is open-ended.
repository_idsNoRepository ids (any match), shaped provider.repository — e.g. dryad.dryad or cern.zenodo — as datacite_search_repositories returns them in repositoryId. Any case.
resource_typesNoresourceTypeGeneral values (any match): dataset, software, computational-notebook, workflow, model, physical-object, … PascalCase accepted. Full list: datacite_list_reference topic resource_types.
fields_of_scienceNoOECD Fields of Science ids or labels (any match), e.g. computer_and_information_sciences or "Earth and related environmental sciences". List: datacite_list_reference topic fields_of_science.
affiliation_countryNoISO 3166-1 alpha-2 country of a creator or contributor affiliation, any case (DE, us). Alpha-3 codes and names are rejected.
include_child_fundersNoAlso match the ROR funder's child organizations. Only with a ROR funder.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
worksNoMatching works on this page.
facetsNoTop facet counts — only with include_facets.
noticeNoGuidance when nothing matched, paging stops short of the total, or the page is past the end.
nextPageNoNext ranked page number, when more results lie within the 10,000 ceiling.
nextCursorNoPass as cursor, unchanged and with the same query and filters, to read the next page of a walk; absent on the last page.
totalCountNoTotal works matching the query and filters.
sortAppliedNoThe sort order applied; a cursor walk is always oldest (registration order).
appliedFiltersNoEvery applied filter as sent upstream; {} when none.
effectiveQueryNoThe composed query string sent upstream.
rankedCeilingReachedNoTrue when ranked paging stops before all matches have been delivered; restart with cursor "*".

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, openWorld), and the description adds real behavioral context: result rows are compact with named fields, facets are optional, and pagination is either ranked-page (bounded at 10,000) or registration-order cursor walk. The latency note for facets also exists in the schema, so part of this is restated rather than new, keeping it below 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with the capability statement front-loaded, followed by the filter menu and then the return/pagination contract. The middle sentence is a long enumeration that overlaps the schema, but every clause helps an agent recognize whether the filter it needs exists.

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

Completeness5/5

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

For a 23-parameter search tool with annotations and an output schema, the description covers the essentials: query modes, filter surface, return shape, facet cost, and both pagination strategies with their bounds and mutual exclusions. It also cross-references the tools that supply valid repository/provider ids and vocabularies, so nothing blocking a correct call is missing.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter already documents its accepted forms, so the baseline is 3. The description adds only a synthesis—filters are ANDed with text/query and array filters accept any match—which is modest value beyond the per-parameter docs.

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

Purpose4/5

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

States a specific verb and resource: searches DataCite DOI metadata for datasets, software, samples, workflows and other research outputs, which makes the scope of the corpus obvious. It does not name a sibling, so an agent must infer the split with datacite_get_work (single DOI lookup) and datacite_search_repositories (provider/repository discovery) rather than being told.

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

Usage Guidelines4/5

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

Gives concrete operating guidance: combine `text` (literal) or `query` (OpenSearch syntax) with filters, use page numbers only within the first 10,000 ranked matches, and pass cursor "*" to walk the full set. It points to datacite_list_reference for syntax and controlled vocabularies. It never states when to prefer a sibling over this tool, so the routing is only implied.

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

datacite_trace_relationsTrace DataCite relationsA
Read-onlyIdempotent
Inspect

Map the relation graph around one DOI — versions, parts, supplements, derivations, documentation, citations, references, and every other DataCite relation type — as nodes and directed edges that keep the relationType exactly as asserted and name each edge's source: the DOI's own metadata, other DataCite records that point at it, or DataCite Event Data (citation links harvested from Crossref and other sources). Accepts any DOI, including a journal article's DOI, to find the datasets and software it cites and those that cite, supplement, or derive from it. DataCite DOIs are hydrated with title, type, year, repository, and citation count; other identifiers stay leaf nodes. Depth 1 by default, at most 2, with a node cap (default 50, max 100) disclosed when it binds. An absent edge is not evidence that no relationship exists.

NameRequiredDescriptionDefault
doiYesThe root DOI — any agency's, e.g. a DataCite dataset 10.5061/dryad.234 or a journal article's DOI. Bare, doi:, or a doi.org URL; case-insensitive.
depthNoHops from the root: 1 (default) or 2. Depth 2 expands at most 10 DataCite neighbours through their own and reverse metadata, and runs only while max_nodes has room after the first hop.
max_nodesNoRequested node cap including the root, 1–10,000 (default 50); values above 100 apply 100 with a notice. Filled in order: own-metadata targets, records pointing at the root, Event Data endpoints, then the second hop.
event_offsetNoAbsolute zero-based Event Data position, 0–9,999. Presence, including 0, selects Event-Data-only mode: no metadata edges or depth-2 expansion. Reads one 100-event upstream page, starting within it. Continue with coverage.eventData.nextEventOffset and the same doi and filters; ordering can change between calls, so this is not a snapshot.
relation_typesNoOnly these relation types (IsVersionOf, HasPart, IsSupplementTo, IsDerivedFrom, Cites, IsCitedBy, …), any case, read from the traced DOI's side: HasPart keeps the DOI's own HasPart assertions and the records asserting IsPartOf it, each edge shown as asserted. IsPublishedIn and Other have no inverse and match on either side. A second hop reads them from each expanded neighbour's side. Omitted: all. Groups: datacite_list_reference topic relation_types.
include_event_dataNoAdd Event Data citation links (mostly harvested from Crossref). Citation relation types only.

Output Schema

NameRequiredDescription
capNoThe max_nodes applied.
rootNoThe root DOI. For another agency's DOI, title, type, and year come from DataCite's linking copy when it holds one.
edgesNoEdges between returned nodes, at most 1,000, the first found; identical edges from several sources are merged.
errorNoPresent when the call failed. Absent on success.
nodesNoNodes, root first.
shownNoNodes returned, root included.
noticeNoCoverage caveats: non-DataCite root, no relations found, Event Data unavailable, records pointing at a DOI too large to read 100 of, Event Data objects left out and nodes left unhydrated because DataCite did not answer in time, node cap, unexpanded second hop, neighbours past the second-hop limit, edge cap, uncounted citations.
coverageNoWhat each source contributed and how much of it was read.
truncatedNoTrue when max_nodes or the 1,000-edge cap bound.
edgesFoundNoEdges between the returned nodes before the 1,000-edge cap; present only when the cap bound.
rootCountsNoDataCite's own counts for the root (DataCite roots only), to compare with the edges shown.

TDQS

A4.2/5.0
Behavior5/5

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

Despite annotations already declaring readOnly/openWorld/idempotent, the description adds real behavioral context: depth cap of 2, node-cap default and ceiling with a notice when it binds, hydration rules for DataCite vs non-DataCite identifiers, single-page event reads with ordering that can change, and the caution that an absent edge is not evidence of no relationship. That is disclosure beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and organized as purpose → DOI acceptance → hydration/caps → caveat. It is dense but not padded, though it re-states depth and node-cap defaults that the schema already carries and lists relation categories at unnecessary length in the opening sentence.

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

Completeness5/5

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

For a six-parameter, multi-mode graph tool with an output schema, the description covers the node/edge model, truncation disclosure, second-hop behavior, pagination continuation, and the key epistemics caveat. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains doi, depth, max_nodes, event_offset, relation_types and include_event_data in detail. The description largely restates the depth and node-cap defaults rather than adding syntax or semantics the schema lacks; baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource — 'Map the relation graph around one DOI' — and enumerates the scope (versions, parts, supplements, derivations, citations, references). An agent can tell this multi-hop graph tool apart from singular-record siblings like datacite_get_work and datacite_get_citation without opening a schema.

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

Usage Guidelines3/5

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

Use cases are implied ('find the datasets and software it cites and those that cite, supplement, or derive from it') and the event-data-only mode trigger is explained, but no sibling is ever named as an alternative and no when-not-to-use condition is given. Usage must be inferred from the described behavior.

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

Tool Schema Changelog

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

  1. 4 tool updates
    • Changeddatacite_get_citation6 fields changed
      • changedOutput schema / properties / citation / description
        Previous value: -"text: the citation as plain text (tags stripped, entities decoded); machine formats: the payload verbatim. A payload over 100,000 characters is cut to its first 100,000 (truncated: true)."New value: +"text: the citation as plain text (tags stripped, entities decoded), cut at 100,000 upstream UTF-16 units. Machine formats: the complete payload verbatim when at most 100,000 units; otherwise omitted in favor of downloadUrl."
      • addedOutput schema / properties / downloadUrl
        Added value: +{
        +  "description": "Exact negotiated URL for the complete machine document when it exceeds the inline cap; fetch this URL to retrieve the document.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Set when the style could not be confirmed as distinct from APA, or when the payload was cut (its full length and the cut)."New value: +"Set when the style could not be confirmed as distinct from APA, or when the payload exceeded the inline cap (length and retrieval guidance)."
      • changedOutput schema / properties / shown / description
        Previous value: -"Characters of DataCite's payload kept; for text, citation and citationHtml derive from them."New value: +"UTF-16 code units of DataCite's payload kept inline; zero for an oversized machine document, or the units text and citationHtml derive from."
      • addedOutput schema / properties / totalCharacters
        Added value: +{
        +  "description": "Complete oversized machine document length in UTF-16 code units.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when the payload ran past 100,000 characters and was cut."New value: +"True when the payload exceeded 100,000 UTF-16 code units: text was cut or a machine document was omitted for download."
    • Changeddatacite_get_work2 fields changed
      • addedOutput schema / properties / geoLocations / items / properties / polygon
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Deposited polygon boundary and optional interior point.",
        +  "properties": {
        +    "inPolygonPoint": {
        +      "additionalProperties": false,
        +      "description": "Deposited interior point.",
        +      "properties": {
        +        "latitude": {
        +          "description": "Latitude, decimal degrees.",
        +          "type": "number"
        +        },
        +        "longitude": {
        +          "description": "Longitude, decimal degrees.",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "latitude",
        +        "longitude"
        +      ],
        +      "type": "object"
        +    },
        +    "points": {
        +      "description": "Polygon vertices in deposit order, including a repeated closing vertex when deposited.",
        +      "items": {
        +        "additionalProperties": false,
        +        "description": "One deposited polygon vertex.",
        +        "properties": {
        +          "latitude": {
        +            "description": "Latitude, decimal degrees.",
        +            "type": "number"
        +          },
        +          "longitude": {
        +            "description": "Longitude, decimal degrees.",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "latitude",
        +          "longitude"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "points"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Discloses omitted malformed polygon geometry; other valid geographic fields remain available.",
        +  "type": "string"
        +}
    • Changeddatacite_search_repositories1 field changed
      • addedOutput schema / properties / effectiveQuery
        Added value: +{
        +  "description": "The composed search query, or * for an unfiltered search; absent for repository_ids lookup.",
        +  "type": "string"
        +}
    • Changeddatacite_search_works3 fields changed
      • changedInput schema / properties / text / description
        Previous value: -"Plain words and phrases, searched literally: every query-syntax character is escaped, so \"Climate change: impacts\" works and text can never cause a syntax error. Terms are ANDed."New value: +"Plain words and phrases, searched literally: query-syntax characters are escaped, so \"Climate change: impacts\" works. Angle brackets are removed; nonblank text with no remaining searchable clause is rejected. Blank text is unset. Terms are ANDed."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_query`: DataCite rejects the syntax of the query input (unbalanced parentheses or quotes, dangling operator). `invalid_filter`: A filter value is malformed: an ORCID iD failing its checksum, a ror.org or 10.13039/ value that is not a ROR ID or Crossref Funder ID, a language outside ISO 639-1, a creator or funder with no letters or digits, a reversed year range, or include_child_funders without a ROR funder. `page_ceiling`: page × limit exceeds 10,000, or the upstream reports a page other than the one requested. `invalid_cursor`: cursor is neither \"*\" nor an envelope this tool returned, belongs to a different query or filter set, or the upstream restarted the walk. `conflicting_paging`: cursor combined with page or sort. `rate_limited`: This deployment's shared DataCite request budget is spent: its request queue could not start a request before the call's deadline, or DataCite answered HTTP 429. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_text`: Supplied nonblank text has no searchable literal clause after escaping. `invalid_query`: DataCite rejects the syntax of the query input (unbalanced parentheses or quotes, dangling operator). `invalid_filter`: A filter value is malformed: an ORCID iD failing its checksum, a ror.org or 10.13039/ value that is not a ROR ID or Crossref Funder ID, a language outside ISO 639-1, a creator or funder with no letters or digits, a reversed year range, or include_child_funders without a ROR funder. `page_ceiling`: page × limit exceeds 10,000, or the upstream reports a page other than the one requested. `invalid_cursor`: cursor is neither \"*\" nor an envelope this tool returned, belongs to a different query or filter set, or the upstream restarted the walk. `conflicting_paging`: cursor combined with page or sort. `rate_limited`: This deployment's shared DataCite request budget is spent: its request queue could not start a request before the call's deadline, or DataCite answered HTTP 429. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_query",
        -  "invalid_filter",
        -  "page_ceiling",
        -  "invalid_cursor",
        -  "conflicting_paging",
        -  "rate_limited"
        -]New value: +[
        +  "invalid_text",
        +  "invalid_query",
        +  "invalid_filter",
        +  "page_ceiling",
        +  "invalid_cursor",
        +  "conflicting_paging",
        +  "rate_limited"
        +]
  2. 4 tool updates
    • Changeddatacite_get_work15 fields changed
      • addedInput schema / properties / list
        Added value: +{
        +  "description": "One capped list to page in deposit order; other record fields keep their default caps.",
        +  "enum": [
        +    "creators",
        +    "contributors",
        +    "relatedIdentifiers",
        +    "subjects",
        +    "fundingReferences",
        +    "relatedItems",
        +    "geoLocations"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Zero-based offset into valid mapped entries of list. Defaults to zero with list; requires list.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / contributors / description
        Previous value: -"Contributors, capped at 100 (full count in truncatedLists). Found arm only."New value: +"Contributors, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only."
      • changedOutput schema / properties / creators / description
        Previous value: -"Creators, capped at 100 (full count in truncatedLists). Found arm only."New value: +"Creators, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_doi`: The doi input is not a DOI after normalization. `rate_limited`: This deployment's shared DataCite request budget is spent: its request queue could not start a request before the call's deadline, or DataCite answered HTTP 429. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `offset_without_list`: An offset is supplied without a selected list. `invalid_doi`: The doi input is not a DOI after normalization. `rate_limited`: This deployment's shared DataCite request budget is spent: its request queue could not start a request before the call's deadline, or DataCite answered HTTP 429. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_doi",
        -  "rate_limited"
        -]New value: +[
        +  "offset_without_list",
        +  "invalid_doi",
        +  "rate_limited"
        +]
      • changedOutput schema / properties / fundingReferences / description
        Previous value: -"Funding, capped at 100 (full count in truncatedLists). Found arm only."New value: +"Funding, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only."
      • changedOutput schema / properties / geoLocations / description
        Previous value: -"Geolocations, capped at 50 (full count in truncatedLists). Found arm only."New value: +"Geolocations, up to 50; full count in truncatedLists by default or listPage when selected. Found arm only."
      • addedOutput schema / properties / listPage
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Paging metadata for the selected list, including empty and past-end pages. Found arm only.",
        +  "properties": {
        +    "list": {
        +      "description": "The selected record list.",
        +      "enum": [
        +        "creators",
        +        "contributors",
        +        "relatedIdentifiers",
        +        "subjects",
        +        "fundingReferences",
        +        "relatedItems",
        +        "geoLocations"
        +      ],
        +      "type": "string"
        +    },
        +    "nextOffset": {
        +      "description": "Next offset for this same list and DOI; absent at the end.",
        +      "type": "number"
        +    },
        +    "offset": {
        +      "description": "Requested zero-based offset into valid mapped entries.",
        +      "type": "number"
        +    },
        +    "total": {
        +      "description": "Total valid mapped entries before capping.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "list",
        +    "offset",
        +    "total"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / relatedItems / description
        Previous value: -"Related items described inline in this record — typically the journal, book, or series it appears in — capped at 25 (full count in truncatedLists). Found arm only."New value: +"Related items described inline in this record — typically the journal, book, or series it appears in — up to 25; full count in truncatedLists by default or listPage when selected. Found arm only."
      • changedOutput schema / properties / relatedItems / items / properties / title / description
        Previous value: -"Related item title."New value: +"Plain-text related item title, normalized once."
      • changedOutput schema / properties / subjects / description
        Previous value: -"Subjects, capped at 100 (full count in truncatedLists). Found arm only."New value: +"Subjects, up to 100; full count in truncatedLists by default or listPage when selected. Found arm only."
      • changedOutput schema / properties / titles / items / properties / title / description
        Previous value: -"Title text."New value: +"Plain-text title, with formatting tags removed and entities decoded once."
      • addedOutput schema / properties / truncatedLists / items / properties / nextOffset
        Added value: +{
        +  "description": "First unread offset; call again with list set to field and this offset.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / truncatedLists / items / required
        Previous value: -[
        -  "field",
        -  "shown",
        -  "total"
        -]New value: +[
        +  "field",
        +  "shown",
        +  "total",
        +  "nextOffset"
        +]
    • Changeddatacite_search_repositories4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Repositories per page, 1–100."New value: +"Requested repositories per page, 1–10,000; values above 100 apply 100 with a notice."
      • changedInput schema / properties / limit / maximum
        Previous value: -100New value: +10000
      • changedInput schema / properties / repository_ids / description
        Previous value: -"Known repository ids to look up in one batch, shaped provider.repository (e.g. dryad.dryad); any case. Use alone — an id lookup ignores query and filters."New value: +"Known repository ids, shaped provider.repository (e.g. dryad.dryad); any case. Up to 1,000 inputs; queries the first 25 distinct normalized ids and names omitted ids. Use alone — an id lookup ignores query and filters."
      • changedInput schema / properties / repository_ids / maxItems
        Previous value: -25New value: +1000
    • Changeddatacite_search_works5 fields changed
      • changedInput schema / properties / licenses / description
        Previous value: -"The work's own license ids (any match), SPDX-style: cc-by-4.0, cc0-1.0, mit. Lowercased, then matched exactly; common ids: datacite_list_reference topic licenses."New value: +"The work's own license ids (any match), e.g. cc-by-4.0, cc0-1.0, cc0 1.0, mit. Trimmed and lowercased, then matched exactly, preserving internal spaces; reuse ids from the licenses facet or datacite_list_reference topic licenses."
      • changedInput schema / properties / licenses / items / pattern
        Previous value: -"^\\s*[A-Za-z0-9.+_-]+\\s*$"New value: +"^\\s*[A-Za-z0-9.+_-](?:[A-Za-z0-9.+_ -]*[A-Za-z0-9.+_-])?\\s*$"
      • changedInput schema / properties / limit / description
        Previous value: -"Rows per page, 1–100."New value: +"Requested rows per page, 1–10,000; values above 100 apply 100 with a notice."
      • changedInput schema / properties / limit / maximum
        Previous value: -100New value: +10000
      • addedOutput schema / properties / rankedCeilingReached
        Added value: +{
        +  "description": "True when ranked paging stops before all matches have been delivered; restart with cursor \"*\".",
        +  "type": "boolean"
        +}
    • Changeddatacite_trace_relations16 fields changed
      • addedInput schema / properties / event_offset
        Added value: +{
        +  "description": "Absolute zero-based Event Data position, 0–9,999. Presence, including 0, selects Event-Data-only mode: no metadata edges or depth-2 expansion. Reads one 100-event upstream page, starting within it. Continue with coverage.eventData.nextEventOffset and the same doi and filters; ordering can change between calls, so this is not a snapshot.",
        +  "maximum": 9999,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / max_nodes / description
        Previous value: -"Node cap including the root, 1–100 (default 50). Filled in order: own-metadata targets, records pointing at the root, Event Data endpoints, then the second hop."New value: +"Requested node cap including the root, 1–10,000 (default 50); values above 100 apply 100 with a notice. Filled in order: own-metadata targets, records pointing at the root, Event Data endpoints, then the second hop."
      • changedInput schema / properties / max_nodes / maximum
        Previous value: -100New value: +10000
      • addedOutput schema / properties / coverage / properties / eventData / properties / hasNextPage
        Added value: +{
        +  "description": "Whether the returned upstream links contain next; does not override totals or the ranked ceiling.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / coverage / properties / eventData / properties / kept / description
        Previous value: -"Events kept as edges before max_nodes applies; for a non-DataCite root, only events whose object is a DataCite DOI are kept."New value: +"Default mode: qualifying events before max_nodes applies. Event-Data-only mode: raw events represented in returned edges, duplicates included. For a non-DataCite root, only confirmed DataCite objects are kept."
      • addedOutput schema / properties / coverage / properties / eventData / properties / nextEventOffset
        Added value: +{
        +  "description": "Next raw event to examine with the same DOI and filters. A blocked position retries here; max_nodes=1 requires raising max_nodes first. Absent on exhaustion, a skipped/unavailable page, or the 10,000-result ceiling.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / coverage / properties / eventData / properties / offset
        Added value: +{
        +  "description": "Requested absolute raw-event offset, present in Event-Data-only mode.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / coverage / properties / eventData / properties / page
        Added value: +{
        +  "description": "Upstream page returned, or requested when upstream omits it.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / coverage / properties / eventData / properties / progress
        Added value: +{
        +  "description": "Continuation state: more raw events, exhausted matching results, the 10,000-ranked-result ceiling, or an uncertain endpoint lookup that must be retried.",
        +  "enum": [
        +    "more",
        +    "exhausted",
        +    "ceiling",
        +    "blocked"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / coverage / properties / eventData / properties / totalPages
        Added value: +{
        +  "description": "Upstream total-pages when provided.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / coverage / properties / ownMetadata / properties / status / description
        Previous value: -"not_datacite when DataCite holds no record for the root."New value: +"not_datacite when DataCite holds no record for the root; skipped in event_offset mode."
      • changedOutput schema / properties / coverage / properties / ownMetadata / properties / status / enum
        Previous value: -[
        -  "ok",
        -  "not_datacite"
        -]New value: +[
        +  "ok",
        +  "not_datacite",
        +  "skipped"
        +]
      • removedOutput schema / properties / coverage / properties / reverseMetadata / properties / status / const
        Removed value: -"ok"
      • changedOutput schema / properties / coverage / properties / reverseMetadata / properties / status / description
        Previous value: -"Always ok: a reverse query that does not answer fails the whole call."New value: +"skipped in event_offset mode; otherwise a reverse query that does not answer fails the whole call."
      • addedOutput schema / properties / coverage / properties / reverseMetadata / properties / status / enum
        Added value: +[
        +  "ok",
        +  "skipped"
        +]
      • changedOutput schema / properties / edges / items / properties / sources / description
        Previous value: -"How the edge was reached. metadata and reverse_metadata both read from's own relatedIdentifiers — metadata by reading that record, reverse_metadata by querying for records that point at to — so an edge listing both is one assertion reached twice, not two confirmations; event_data is a link harvested by Event Data, independent of either."New value: +"How the edge was reached. metadata and reverse_metadata both read from's own relatedIdentifiers and relatedItems — metadata by reading that record, reverse_metadata by querying for records that point at to — so an edge listing both is one assertion reached twice, not two confirmations; event_data is a link harvested by Event Data, independent of either."
  3. 6 tool updates
    • First observeddatacite_get_citation
    • First observeddatacite_get_work
    • First observeddatacite_list_reference
    • First observeddatacite_search_repositories
    • First observeddatacite_search_works
    • First observeddatacite_trace_relations

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides access to DataCite DOIs for research datasets, enabling searching and retrieval of dataset metadata.
    273 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Searches and fetches research datasets across Zenodo, DataCite (Dryad/Figshare/Dataverse/OSF), NCBI omics archives (GEO/SRA/BioProject), and the literature (PubMed/OpenAIRE) through one normalized model — deduplicating by DOI, expanding organism queries with NCBI Taxonomy synonyms, and bridging papers to the datasets they produced. Resolves citations and open-access full text, and downloads files.
    6
    520 PyPI
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides read-only access to DataCite's index of 125M+ research DOIs via natural language queries, enabling searching, metadata retrieval, citation formatting, and relationship exploration.
    9
    566 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying citation data from OpenCitations, including references, citations, citation counts, and bibliographic metadata for DOIs.
    8 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.