Search and resolve Zenodo datasets, software, and publications by DOI; trace versions and funding.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Resolve one Zenodo deposit from a record id, a Zenodo DOI (10.5281/zenodo.N), a concept DOI or concept record id (resolves to the latest version), another DOI deposited on Zenodo, or a zenodo.org or doi.org URL, and return its full metadata: description, creators with ORCIDs and ROR affiliations, license, access and embargo, funding and grants, related identifiers, communities, version position, usage counts, and the first 25 files. Optionally includes a formatted citation. Long text and lists are cut at display caps with their totals reported; every cut except the file list (paged with zenodo_list_files) is listed in continuations with a cursor and the record id it is bound to, and passing both back returns the next window of that field (8,000 characters of text, or the next page of entries) in place of the record. A miss (an unknown id, a deleted record with its removal tombstone, restricted metadata, or a DOI not registered on Zenodo) returns found: false with guidance instead of an error.
The deposit to resolve: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923, doi: prefix and any case accepted), a concept DOI or concept record id such as 10.5281/zenodo.591564 (resolves to the latest version), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL.
A continuations[].cursor from an earlier zenodo_get_record response, passed unchanged with that continuation’s id as id. Returns that field’s next window (8,000 characters of text, or the next page of entries) as window, in place of record. Omit to get the record.
Include a formatted citation of the resolved version: bibtex, csl-json, or a text style (apa, chicago-author-date, harvard-cite-them-right, ieee, modern-language-association, nature). Case, spaces, hyphens, and underscores are ignored when matching (BibTeX, APA, CSL JSON). Omit for none.
Resolve one Zenodo deposit from a record id, a Zenodo DOI (10.5281/zenodo.N), a concept DOI or concept record id (resolves to the latest version), another DOI deposited on Zenodo, or a zenodo.org or doi.org URL, and return its full metadata: description, creators with ORCIDs and ROR affiliations, license, access and embargo, funding and grants, related identifiers, communities, version position, usage counts, and the first 25 files. Optionally includes a formatted citation. Long text and lists are cut at display caps with their totals reported; every cut except the file list (paged with zenodo_list_files) is listed in continuations with a cursor and the record id it is bound to, and passing both back returns the next window of that field (8,000 characters of text, or the next page of entries) in place of the record. A miss (an unknown id, a deleted record with its removal tombstone, restricted metadata, or a DOI not registered on Zenodo) returns found: false with guidance instead of an error.
| Argument | Type | Description |
|---|---|---|
| id* | string | The deposit to resolve: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923, doi: prefix and any case accepted), a concept DOI or concept record id such as 10.5281/zenodo.591564 (resolves to the latest version), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. |
| cursor | string | A continuations[].cursor from an earlier zenodo_get_record response, passed unchanged with that continuation’s id as id. Returns that field’s next window (8,000 characters of text, or the next page of entries) as window, in place of record. Omit to get the record. |
| citation_style | string | Include a formatted citation of the resolved version: bibtex, csl-json, or a text style (apa, chicago-author-date, harvard-cite-them-right, ieee, modern-language-association, nature). Case, spaces, hyphens, and underscores are ignored when matching (BibTeX, APA, CSL JSON). Omit for none. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "The deposit to resolve: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923, doi: prefix and any case accepted), a concept DOI or concept record id such as 10.5281/zenodo.591564 (resolves to the latest version), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL."
},
"cursor": {
"type": "string",
"maxLength": 500,
"description": "A continuations[].cursor from an earlier zenodo_get_record response, passed unchanged with that continuation’s id as id. Returns that field’s next window (8,000 characters of text, or the next page of entries) as window, in place of record. Omit to get the record."
},
"citation_style": {
"enum": [
"bibtex",
"csl-json",
"apa",
"chicago-author-date",
"harvard-cite-them-right",
"ieee",
"modern-language-association",
"nature"
],
"type": "string",
"description": "Include a formatted citation of the resolved version: bibtex, csl-json, or a text style (apa, chicago-author-date, harvard-cite-them-right, ieee, modern-language-association, nature). Case, spaces, hyphens, and underscores are ignored when matching (BibTeX, APA, CSL JSON). Omit for none."
}
},
"additionalProperties": false
}Page through a Zenodo deposit's file manifest (key, size, MIME type, MD5, download URL, previewability), optionally filtered by a substring of the file key, or list the members inside one of its .zip files by setting archive_key. Restricted and embargoed files return the access status and embargo date with no entries. Read a small text file or ZIP member with zenodo_read_file.
| Argument | Type | Description |
|---|---|---|
| id* | string | The deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. A concept id lists the latest version’s files. |
| limit | integer | Entries per page, at most 200 per call; larger values return 200. |
| offset | integer | Entries to skip before this page. |
| archive_key | string | Exact file key of a .zip in this record (from the manifest) to list its members instead of the manifest. Omit to list the manifest. |
| key_contains | string | Case-insensitive substring filter on file keys (manifest) or member paths (archive), applied before paging. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "The deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. A concept id lists the latest version’s files."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 10000,
"minimum": 1,
"description": "Entries per page, at most 200 per call; larger values return 200."
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Entries to skip before this page."
},
"archive_key": {
"type": "string",
"maxLength": 1000,
"description": "Exact file key of a .zip in this record (from the manifest) to list its members instead of the manifest. Omit to list the manifest."
},
"key_contains": {
"type": "string",
"maxLength": 200,
"description": "Case-insensitive substring filter on file keys (manifest) or member paths (archive), applied before paging."
}
},
"additionalProperties": false
}List every version of a Zenodo deposit's version series, newest first, with each version's record id, DOI, version label, publication date, file totals, and usage counts. Accepts any identifier zenodo_get_record accepts; a concept DOI and any single version's DOI list the same series. Use it to find the version a paper cited or the current release. A miss (an unknown id, a deleted record with its removal tombstone, restricted metadata, or a DOI not registered on Zenodo) returns found: false with guidance instead of an error.
| Argument | Type | Description |
|---|---|---|
| id* | string | Any version or concept identifier of the deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923) or concept DOI (10.5281/zenodo.591564), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. |
| page | integer | Result page, starting at 1. Zenodo pages through only the first 10,000 versions, so the last reachable page is 10,000 ÷ size rounded up (400 at size 25). |
| size | integer | Versions per page, at most 25 per call; larger values return 25. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Any version or concept identifier of the deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923) or concept DOI (10.5281/zenodo.591564), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL."
},
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Result page, starting at 1. Zenodo pages through only the first 10,000 versions, so the last reachable page is 10,000 ÷ size rounded up (400 at size 25)."
},
"size": {
"type": "integer",
"default": 25,
"maximum": 10000,
"minimum": 1,
"description": "Versions per page, at most 25 per call; larger values return 25."
}
},
"additionalProperties": false
}Resolve names to the ids zenodo_search_records filters on, and browse Zenodo's reference vocabularies: communities (slug), funders (ROR id), awards and grants (award id), licenses (license id), and resource types (type id). Search by name, acronym, or keyword; awards can be scoped to one funder. Each entry names the zenodo_search_records parameter its id feeds.
| Argument | Type | Description |
|---|---|---|
| page | integer | Result page, starting at 1. Only the first 10,000 entries of a list are reachable, so the last reachable page is 10,000 ÷ size rounded up (400 at size 25). |
| size | integer | Entries per page, at most 25 per call; larger values return 25. |
| query | string | Name, acronym, or keyword, e.g. "SYMBA", "wellcome", "mit", "journal article". For resource_types every word must appear in the type id or label. Omit to browse the vocabulary. |
| funder | string | awards only: scope grants to one funder, given as a ROR id (00k4n6c32), a ROR URL, or a Crossref Funder DOI (10.13039/100000002). Resolve a funder name to its ROR id with vocabulary funders first. |
| vocabulary* | string | Which vocabulary to search: communities, funders, awards (grants), licenses, or resource_types. Case, spaces, hyphens, and underscores are ignored when matching, and the singular (funder, license, resource type) and grants are accepted. |
Read a bounded UTF-8 excerpt (up to 64 KiB per call) of one text file in a Zenodo deposit — a README, CITATION.cff, CSV head, notebook, or script — or of one member inside a .zip file, without downloading the archive. Continue a top-level file from next_offset. A file with a text MIME type or extension is read directly; an extensionless file Zenodo types application/octet-stream (LICENSE, COPYING, Makefile) is read and returned only when its content is UTF-8 text. Binary files, restricted files, and other types return metadata and the download URL without content. File content is depositor-supplied and carries the deposit’s license.
| Argument | Type | Description |
|---|---|---|
| id* | string | The deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. A concept id reads from the latest version. |
| key* | string | Exact file key from zenodo_list_files, e.g. README.md or data/results.csv. |
| max_bytes | integer | Maximum bytes to read (256 or more), at most 65536 per call; larger values return 65536. |
| offset_bytes | integer | Byte offset to start reading a top-level file at; use next_offset to continue. Must be 0 for an archive member. |
| archive_member | string | Member path inside the .zip named by key (from zenodo_list_files with archive_key). Omit to read the file itself. |
Search Zenodo's open research repository — datasets, software releases, publications, and other deposits — by keyword query plus filters for resource type, community, funder, grant, creator ORCID, file type, license, access status, and publication date. Returns one summary per deposit (ids, DOIs, title, type, version, creators, license, access, file totals, usage counts) plus facet counts over the full match set, every filter applied. Query terms are OR-ed unless joined with AND, quoted phrases match exactly, and field syntax works on record fields (metadata.title:"…", metadata.subjects.subject:"…"). Only the latest version of each deposit is searched unless all_versions is true, and only the first 10,000 matches are reachable by paging. Resolve community, funder, and grant names to ids with zenodo_lookup_vocabulary first; open one deposit in full with zenodo_get_record.
| Argument | Type | Description |
|---|---|---|
| page | integer | Result page, starting at 1. Only the first 10,000 matches are reachable, so the last reachable page is 10,000 ÷ size rounded up (400 at size 25). |
| size | integer | Results per page, at most 25 per call; larger values return 25. |
| sort | string | Sort order: bestmatch, newest, oldest, mostviewed, mostdownloaded, updated-desc, updated-asc. Case, spaces, hyphens, and underscores are ignored when matching (MostViewed reads as mostviewed). Defaults to bestmatch with a query, newest without. |
| award | string | One grant: an award id <funder-ror>::<number> (00k4n6c32::101135562), a bare grant number, or a CORDIS award DOI (10.3030/101135562). Find ids with zenodo_lookup_vocabulary (vocabulary: awards). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"vocabulary"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Result page, starting at 1. Only the first 10,000 entries of a list are reachable, so the last reachable page is 10,000 ÷ size rounded up (400 at size 25)."
},
"size": {
"type": "integer",
"default": 10,
"maximum": 10000,
"minimum": 1,
"description": "Entries per page, at most 25 per call; larger values return 25."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Name, acronym, or keyword, e.g. \"SYMBA\", \"wellcome\", \"mit\", \"journal article\". For resource_types every word must appear in the type id or label. Omit to browse the vocabulary."
},
"funder": {
"type": "string",
"maxLength": 200,
"description": "awards only: scope grants to one funder, given as a ROR id (00k4n6c32), a ROR URL, or a Crossref Funder DOI (10.13039/100000002). Resolve a funder name to its ROR id with vocabulary funders first."
},
"vocabulary": {
"enum": [
"communities",
"funders",
"awards",
"licenses",
"resource_types"
],
"type": "string",
"description": "Which vocabulary to search: communities, funders, awards (grants), licenses, or resource_types. Case, spaces, hyphens, and underscores are ignored when matching, and the singular (funder, license, resource type) and grants are accepted."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"key"
],
"properties": {
"id": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "The deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. A concept id reads from the latest version."
},
"key": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Exact file key from zenodo_list_files, e.g. README.md or data/results.csv."
},
"max_bytes": {
"type": "integer",
"default": 16384,
"maximum": 9007199254740991,
"minimum": 256,
"description": "Maximum bytes to read (256 or more), at most 65536 per call; larger values return 65536."
},
"offset_bytes": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Byte offset to start reading a top-level file at; use next_offset to continue. Must be 0 for an archive member."
},
"archive_member": {
"type": "string",
"maxLength": 1000,
"description": "Member path inside the .zip named by key (from zenodo_list_files with archive_key). Omit to read the file itself."
}
},
"additionalProperties": false
}| query | string | Keyword query. Terms are OR-ed unless joined with AND; "quoted phrases" (double quotes) match exactly; field syntax such as metadata.title:"…" or doi:"10.5281/zenodo.N" works. Escape a literal / as \/. A bare DOI or record URL is rejected; open it with zenodo_get_record instead. With any filter other than community and all_versions, a query that is not valid search syntax (AND AND, a field: with no value, an unclosed [a TO b]) is rejected; without one, Zenodo matches it as plain text. Omit to browse with filters only. |
| funder | string | One funder: a ROR id (01cwqze88), a ROR URL, or a Crossref Funder DOI (10.13039/100000002). Resolve a funder name with zenodo_lookup_vocabulary (vocabulary: funders). |
| license | string | License id, e.g. cc-by-4.0, cc0-1.0, mit (lowercased). Find ids with zenodo_lookup_vocabulary (vocabulary: licenses). |
| community | string | One community: its slug, UUID, or zenodo.org/communities/<slug> URL. Find slugs with zenodo_lookup_vocabulary (vocabulary: communities). |
| file_type | array | File extensions, OR-ed (a single string is accepted): csv, zip, pdf, … Lowercased with any leading dot stripped. |
| all_versions | boolean | Include superseded versions; by default only the latest version is searched. |
| published_to | string | Latest publication date, YYYY, YYYY-MM, or YYYY-MM-DD; a partial date ends at its last day. |
| access_status | string | Access status: open, restricted, embargoed, or metadata-only. Case, spaces, hyphens, and underscores are ignored when matching (Metadata Only reads as metadata-only). |
| creator_orcid | string | Creator ORCID iD, e.g. 0000-0002-1825-0097; an https://orcid.org/ prefix is stripped and a trailing x uppercased. |
| resource_type | array | Resource type ids, OR-ed (a single string is accepted): dataset, software, publication, publication-article, image-photo, … Any case; a subtype may also be written in the <type>::<id> form zenodo_lookup_vocabulary shows as its search value (publication::publication-article). A top-level type includes its subtypes. Look ids up with zenodo_lookup_vocabulary (vocabulary: resource_types). |
| published_from | string | Earliest publication date, YYYY, YYYY-MM, or YYYY-MM-DD; a partial date starts at its first day. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Result page, starting at 1. Only the first 10,000 matches are reachable, so the last reachable page is 10,000 ÷ size rounded up (400 at size 25)."
},
"size": {
"type": "integer",
"default": 10,
"maximum": 10000,
"minimum": 1,
"description": "Results per page, at most 25 per call; larger values return 25."
},
"sort": {
"enum": [
"bestmatch",
"newest",
"oldest",
"mostviewed",
"mostdownloaded",
"updated-desc",
"updated-asc"
],
"type": "string",
"description": "Sort order: bestmatch, newest, oldest, mostviewed, mostdownloaded, updated-desc, updated-asc. Case, spaces, hyphens, and underscores are ignored when matching (MostViewed reads as mostviewed). Defaults to bestmatch with a query, newest without."
},
"award": {
"type": "string",
"maxLength": 200,
"description": "One grant: an award id <funder-ror>::<number> (00k4n6c32::101135562), a bare grant number, or a CORDIS award DOI (10.3030/101135562). Find ids with zenodo_lookup_vocabulary (vocabulary: awards)."
},
"query": {
"type": "string",
"maxLength": 1000,
"description": "Keyword query. Terms are OR-ed unless joined with AND; \"quoted phrases\" (double quotes) match exactly; field syntax such as metadata.title:\"…\" or doi:\"10.5281/zenodo.N\" works. Escape a literal / as \\/. A bare DOI or record URL is rejected; open it with zenodo_get_record instead. With any filter other than community and all_versions, a query that is not valid search syntax (AND AND, a field: with no value, an unclosed [a TO b]) is rejected; without one, Zenodo matches it as plain text. Omit to browse with filters only."
},
"funder": {
"type": "string",
"maxLength": 200,
"description": "One funder: a ROR id (01cwqze88), a ROR URL, or a Crossref Funder DOI (10.13039/100000002). Resolve a funder name with zenodo_lookup_vocabulary (vocabulary: funders)."
},
"license": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9.+-]{0,63}$",
"description": "License id, e.g. cc-by-4.0, cc0-1.0, mit (lowercased). Find ids with zenodo_lookup_vocabulary (vocabulary: licenses)."
},
"community": {
"type": "string",
"maxLength": 200,
"description": "One community: its slug, UUID, or zenodo.org/communities/<slug> URL. Find slugs with zenodo_lookup_vocabulary (vocabulary: communities)."
},
"file_type": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z0-9]{1,16}$",
"description": "A file extension, e.g. csv."
},
"maxItems": 10,
"description": "File extensions, OR-ed (a single string is accepted): csv, zip, pdf, … Lowercased with any leading dot stripped."
},
"all_versions": {
"type": "boolean",
"default": false,
"description": "Include superseded versions; by default only the latest version is searched."
},
"published_to": {
"type": "string",
"pattern": "^\\d{4}(-(0[1-9]|1[0-2])(-(0[1-9]|[12]\\d|3[01]))?)?$",
"description": "Latest publication date, YYYY, YYYY-MM, or YYYY-MM-DD; a partial date ends at its last day."
},
"access_status": {
"enum": [
"open",
"restricted",
"embargoed",
"metadata-only"
],
"type": "string",
"description": "Access status: open, restricted, embargoed, or metadata-only. Case, spaces, hyphens, and underscores are ignored when matching (Metadata Only reads as metadata-only)."
},
"creator_orcid": {
"type": "string",
"pattern": "^\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"description": "Creator ORCID iD, e.g. 0000-0002-1825-0097; an https://orcid.org/ prefix is stripped and a trailing x uppercased."
},
"resource_type": {
"type": "array",
"items": {
"enum": [
"dataset",
"event",
"image",
"image-diagram",
"image-drawing",
"image-figure",
"image-other",
"image-photo",
"image-plot",
"lesson",
"model",
"other",
"physicalobject",
"poster",
"presentation",
"publication",
"publication-annotationcollection",
"publication-article",
"publication-book",
"publication-conferencepaper",
"publication-conferenceproceeding",
"publication-datamanagementplan",
"publication-datapaper",
"publication-deliverable",
"publication-dissertation",
"publication-journal",
"publication-milestone",
"publication-other",
"publication-patent",
"publication-peerreview",
"publication-preprint",
"publication-proposal",
"publication-report",
"publication-section",
"publication-softwaredocumentation",
"publication-standard",
"publication-taxonomictreatment",
"publication-technicalnote",
"publication-workingpaper",
"software",
"software-computationalnotebook",
"video",
"workflow"
],
"type": "string"
},
"maxItems": 10,
"description": "Resource type ids, OR-ed (a single string is accepted): dataset, software, publication, publication-article, image-photo, … Any case; a subtype may also be written in the <type>::<id> form zenodo_lookup_vocabulary shows as its search value (publication::publication-article). A top-level type includes its subtypes. Look ids up with zenodo_lookup_vocabulary (vocabulary: resource_types)."
},
"published_from": {
"type": "string",
"pattern": "^\\d{4}(-(0[1-9]|1[0-2])(-(0[1-9]|[12]\\d|3[01]))?)?$",
"description": "Earliest publication date, YYYY, YYYY-MM, or YYYY-MM-DD; a partial date starts at its first day."
}
},
"additionalProperties": false
}