Skip to main content
Glama

Search DataCite works

datacite_search_works
Read-onlyIdempotent

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.

Input Schema

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

NameRequiredDescriptionDefault
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 "*".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema 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. Changed5 schema 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"
      +}
  3. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.