biorxiv-mcp-server
Qué hace este MCP
Searches and retrieves metadata, full text, revisions, and publication links for bioRxiv and medRxiv preprints.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['doi'], 'properties': {'doi': {'type': 'string', 'description': 'Preprint DOI (e.g. 10.1101/2024.05.28.596311 or 10.64898/2026.05.07.723463). A doi.org or biorxiv.org/medrxiv.org article URL, a doi: prefix, or a .full suffix is accepted and stripped; a trailing vN (â\x80¦596311v2) requests that version. Without one, the latest version is resolved automatically.'}, 'limit': {'type': 'integer', 'default': 20000, 'maximum': 50000, 'minimum': 1, 'description': 'Maximum number of characters to return in this chunk. Default 20,000; increase toward 50,000 for large context windows. Check the length field for the actual count returned.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Character offset into the full extracted text at which to start reading. 0 returns the beginning. To read the next chunk, use offset = prior_offset + prior_length (the length field from the previous response).'}, 'server': {'enum': ['biorxiv', 'medrxiv', 'both'], 'type': 'string', 'default': 'both', 'description': 'Server the preprint was posted on. "both" (default) checks bioRxiv and medRxiv in parallel to resolve the DOI â\x80\x94 the full-text fetch itself only ever targets whichever server resolved, and the output server field names it.'}, 'version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Preprint version to read (1, 2, â\x80¦) â\x80\x94 the revision numbers biorxiv_get_preprint lists. Omit for the latest version. Must match a vN suffix on the DOI when both are given.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['doi', 'server', 'version', 'content', 'contentFormat', 'wordCount', 'sourceUrl', 'offset', 'length', 'totalChars', 'remainingChars', 'hasMore']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The limit (max characters) applied to this chunk.'}, 'doi': {'type': 'string', 'description': 'The resolved preprint DOI, in bare form.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_doi_format', 'version_conflict', 'version_not_found', 'doi_not_found', 'upstream_unavailable', 'rate_limited', 'fulltext_unavailable', 'offset_out_of_range'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_doi_format`: The input DOI does not match the 10.NNNN/ pattern, even after URL, doi:, and suffix stripping. `version_conflict`: The DOI carries a vN suffix and the version input names a different version. `version_not_found`: The preprint exists but has no revision with the requested version number. `doi_not_found`: The DOI resolves to an empty collection on every attempted server. `upstream_unavailable`: No attempted server resolved the DOI and at least one lookup failed against api.biorxiv.org. `rate_limited`: Either origin returned HTTP 429 for this host â\x80\x94 the article page (www.biorxiv.org / www.medrxiv.org) during the full-text fetch, or api.biorxiv.org during version resolution. `fulltext_unavailable`: The preprint exists but its full-text HTML page is blocked, missing, or yields no extractable text (PDF-only). `offset_out_of_range`: offset is greater than or equal to the total character length of the extracted text. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Characters returned in this chunk.'}, 'title': {'type': 'string', 'description': 'Article title detected during extraction. Absent when the page exposed none.'}, 'length': {'type': 'number', 'description': 'Number of characters returned in this chunk.'}, 'notice': {'type': 'string', 'description': 'Paging guidance when the content was truncated â\x80\x94 how to fetch the next chunk.'}, 'offset': {'type': 'number', 'description': 'Character offset into the full extracted text where this chunk begins.'}, 'server': {'enum': ['biorxiv', 'medrxiv'], 'type': 'string', 'description': 'Server the preprint was resolved on.'}, 'content': {'type': 'string', 'description': 'The requested chunk of full text as best-effort Markdown extracted from the rendered HTML page. Section structure is approximate â\x80\x94 this is not JATS.'}, 'hasMore': {'type': 'boolean', 'description': 'True when more text follows this chunk. When true, call again with offset = offset + length.'}, 'version': {'type': 'string', 'description': 'Preprint version whose full text was retrieved â\x80\x94 the requested one, or the latest revision when none was requested. Pass it back as version when paging.'}, 'sourceUrl': {'type': 'string', 'description': 'The full-text HTML page the content was extracted from.'}, 'truncated': {'type': 'boolean', 'description': 'True when this chunk was capped by limit and more text remains.'}, 'wordCount': {'type': 'number', 'description': 'Approximate word count of the FULL extracted article, not just the returned chunk â\x80\x94 whitespace-delimited tokens of the same Markdown text that totalChars measures, so Markdown markers such as # and - count too.'}, 'totalChars': {'type': 'number', 'description': 'Total characters in the full extracted text. Use with offset and length to page through long articles.'}, 'contentFormat': {'type': 'string', 'const': 'html-markdown', 'description': 'How content was produced: Markdown extracted from the rendered HTML article page (constant).'}, 'remainingChars': {'type': 'number', 'description': 'Characters remaining after this chunk (totalChars - offset - length). 0 means this chunk reaches the end.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dois'], 'properties': {'dois': {'type': 'array', 'items': {'type': 'string', 'description': 'Preprint DOI (e.g. 10.1101/2024.01.15.575123 or 10.64898/2026.05.07.723463). A doi.org or biorxiv.org/medrxiv.org article URL, a doi: prefix, or a vN / .full suffix is accepted and stripped to the bare DOI; every revision is returned either way.'}, 'maxItems': 10, 'minItems': 1, 'description': 'One or more preprint DOIs to look up (max 10).'}, 'server': {'enum': ['biorxiv', 'medrxiv', 'both'], 'type': 'string', 'default': 'both', 'description': 'Server to query. "both" checks bioRxiv and medRxiv in parallel for each DOI.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['preprints', 'failed']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['doi_not_found', 'invalid_doi_format', 'upstream_unavailable', 'rate_limited'], 'description': 'Machine-readable failure mode. Declared by this tool: `doi_not_found`: ALL requested DOIs resolve to empty collections on all requested servers, with every server answering. `invalid_doi_format`: Every input DOI fails to match the 10.NNNN/ pattern, even after URL, doi:, and suffix stripping. `upstream_unavailable`: No DOI resolved and at least one lookup failed against api.biorxiv.org, so absence could not be established for any requested DOI. `rate_limited`: No DOI resolved and at least one lookup was rejected with HTTP 429 by api.biorxiv.org. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'failed': {'type': 'array', 'items': {'type': 'object', 'required': ['doi', 'error', 'reason', 'retryable'], 'properties': {'doi': {'type': 'string', 'description': 'DOI that failed to resolve â\x80\x94 in bare form, or exactly as sent for invalid_doi_format.'}, 'error': {'type': 'string', 'description': 'Error description.'}, 'reason': {'enum': ['not_found', 'invalid_doi_format', 'upstream_unavailable', 'rate_limited'], 'type': 'string', 'description': 'Why this DOI failed: not_found (every attempted server answered with an empty collection), invalid_doi_format (the DOI does not match 10.NNNN/â\x80¦), upstream_unavailable (a server never answered, so absence could not be established), or rate_limited (api.biorxiv.org returned HTTP 429 â\x80\x94 the same as upstream_unavailable except that the origin named a wait).'}, 'retryable': {'type': 'boolean', 'description': 'True when retrying this DOI may succeed â\x80\x94 set for upstream_unavailable and rate_limited. A not_found or invalid_doi_format entry will not change on retry.'}, 'retryAfter': {'type': 'number', 'description': 'Seconds api.biorxiv.org asked the caller to wait before the next request. Present only on a rate_limited entry whose response carried a usable Retry-After header.'}}, 'description': 'A DOI that failed to resolve.', 'additionalProperties': False}, 'description': 'DOIs that could not be resolved, with per-DOI error details.'}, 'preprints': {'type': 'array', 'items': {'type': 'object', 'required': ['doi', 'revisions'], 'properties': {'doi': {'type': 'string', 'description': 'The requested DOI in bare form (any URL, doi: prefix, or suffix removed).'}, 'revisions': {'type': 'array', 'items': {'type': 'object', 'required': ['doi'], 'properties': {'doi': {'type': 'string', 'description': 'Preprint DOI.'}, 'date': {'type': 'string', 'description': 'Revision date (YYYY-MM-DD).'}, 'type': {'type': 'string', 'description': 'Preprint type.'}, 'title': {'type': 'string', 'description': 'Title.'}, 'awards': {'type': 'array', 'items': {'type': 'string', 'description': 'One award value as upstream records it.'}, 'description': 'Grant award numbers from the funding statement, verbatim and deduplicated â\x80\x94 one value can hold several grants run together without a separator. Absent when none. Funder names are not included: api.biorxiv.org attributes them to unrelated organizations.'}, 'server': {'type': 'string', 'description': 'Source server (biorxiv or medrxiv).'}, 'authors': {'type': 'string', 'description': 'Author list.'}, 'license': {'type': 'string', 'description': 'License identifier.'}, 'version': {'type': 'string', 'description': 'Revision version number.'}, 'abstract': {'type': 'string', 'description': 'Abstract text.'}, 'category': {'type': 'string', 'description': 'Subject category.'}, 'jatsxmlUrl': {'type': 'string', 'description': 'URL to the JATS XML full-text.'}, 'authorCorresponding': {'type': 'string', 'description': 'Corresponding author name.'}, 'publishedJournalDoi': {'type': 'string', 'description': 'Published journal DOI when accepted.'}, 'authorCorrespondingInstitution': {'type': 'string', 'description': 'Corresponding author institution.'}}, 'description': 'A single preprint revision.', 'additionalProperties': False}, 'description': 'All revisions for this preprint, earliest first.'}}, 'description': 'A preprint and all its revisions.', 'additionalProperties': False}, 'description': 'Successfully resolved preprints with their full revision history.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['doi'], 'properties': {'doi': {'type': 'string', 'description': 'Preprint DOI to resolve (e.g. 10.1101/2024.01.15.575123 or 10.64898/2026.05.07.723463). A doi.org or biorxiv.org/medrxiv.org article URL, a doi: prefix, or a vN / .full suffix is accepted and stripped to the bare DOI.'}, 'server': {'enum': ['biorxiv', 'medrxiv', 'both'], 'type': 'string', 'default': 'both', 'description': 'Server the preprint was posted on. "both" (default) checks bioRxiv and medRxiv in parallel â\x80\x94 use it when the DOI alone does not tell you which server holds the preprint.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['preprintDoi', 'server']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['doi_not_found', 'invalid_doi_format', 'upstream_unavailable', 'rate_limited'], 'description': 'Machine-readable failure mode. Declared by this tool: `doi_not_found`: No attempted server holds the preprint, or neither the crosswalk nor its preprint record lists a journal version. `invalid_doi_format`: The input DOI does not match the 10.NNNN/ pattern, even after URL, doi:, and suffix stripping. `upstream_unavailable`: No published record was established and at least one crosswalk or preprint lookup failed against api.biorxiv.org. `rate_limited`: No published record was established and at least one crosswalk or preprint lookup was rejected with HTTP 429 by api.biorxiv.org. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': "Present when publishedDoi came from the preprint's own record because the crosswalk had none: says why publishedJournal and publishedDate are absent."}, 'server': {'enum': ['biorxiv', 'medrxiv'], 'type': 'string', 'description': 'The server that returned this published record â\x80\x94 never "both".'}, 'preprintDoi': {'type': 'string', 'description': 'The preprint DOI that was resolved, in bare form.'}, 'preprintDate': {'type': 'string', 'description': 'Date the preprint was first posted.'}, 'publishedDoi': {'type': 'string', 'description': 'The journal publication DOI.'}, 'preprintTitle': {'type': 'string', 'description': 'Title of the preprint.'}, 'publishedDate': {'type': 'string', 'description': 'Journal publication date (YYYY-MM-DD). Absent when the crosswalk holds no record for this preprint â\x80\x94 see notice.'}, 'preprintAuthors': {'type': 'string', 'description': 'Preprint author list.'}, 'preprintAbstract': {'type': 'string', 'description': 'Preprint abstract.'}, 'preprintCategory': {'type': 'string', 'description': 'Subject category.'}, 'publishedJournal': {'type': 'string', 'description': 'Name of the publishing journal. Absent when the crosswalk holds no record for this preprint â\x80\x94 see notice.'}, 'preprintAuthorCorresponding': {'type': 'string', 'description': 'Corresponding author name.'}, 'preprintAuthorCorrespondingInstitution': {'type': 'string', 'description': 'Corresponding author institution.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['biorxiv', 'medrxiv']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'description': 'Machine-readable failure mode.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'biorxiv': {'type': 'array', 'items': {'type': 'string', 'description': 'Subject category name'}, 'description': 'bioRxiv subject categories'}, 'medrxiv': {'type': 'array', 'items': {'type': 'string', 'description': 'Subject category name'}, 'description': 'medRxiv subject categories'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['start_date', 'end_date'], 'properties': {'cursor': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Integer page offset (0, 30, 60, â\x80¦). Defaults to 0 (first page).'}, 'funder': {'type': 'string', 'description': 'Funder filter: the funder\'s ROR ID, bare ("021nxhr62" for the US National Science Foundation) or as a URL ("https://ror.org/021nxhr62"). bioRxiv only â\x80\x94 medRxiv records carry no funder data, so server="both" queries bioRxiv alone and server="medrxiv" is rejected. Combines with category. Look the ID up by name at ror.org.'}, 'server': {'enum': ['biorxiv', 'medrxiv', 'both'], 'type': 'string', 'default': 'both', 'description': 'Server to query. "both" fans out to bioRxiv and medRxiv in parallel.'}, 'category': {'type': 'string', 'description': 'Subject category filter, matched case-insensitively with "_" and "-" read as a space â\x80\x94 "Cell Biology", "cell biology", "cell_biology", and "cell-biology" are the same filter. Use biorxiv_list_categories for valid values.'}, 'end_date': {'type': 'string', 'description': 'End of the date interval (YYYY-MM-DD).'}, 'start_date': {'type': 'string', 'description': 'Start of the date interval (YYYY-MM-DD).'}, 'include_abstract': {'type': 'boolean', 'default': False, 'description': "Include each preprint's abstract. Defaults to false: abstracts make up about three quarters of a page, and every other field is returned either way."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['preprints', 'pagination', 'failed']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_date_range', 'invalid_category', 'invalid_funder', 'upstream_unavailable', 'rate_limited'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_date_range`: end_date is before start_date, or either date is malformed. `invalid_category`: The category is not in the requested server\'s taxonomy, or api.biorxiv.org ignored it and returned the unfiltered listing on every server that answered. `invalid_funder`: funder is not a well-formed ROR ID (pattern or checksum), is combined with server="medrxiv", or is a ROR ID api.biorxiv.org has no funder record for. `upstream_unavailable`: Every attempted server failed against api.biorxiv.org, so no page was retrieved and an empty interval could not be established. `rate_limited`: Every attempted server failed and at least one was rejected with HTTP 429 by api.biorxiv.org. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'failed': {'type': 'array', 'items': {'type': 'object', 'required': ['server', 'error'], 'properties': {'error': {'type': 'string', 'description': 'What went wrong on that server.'}, 'server': {'enum': ['biorxiv', 'medrxiv'], 'type': 'string', 'description': 'Server whose listing request failed.'}}, 'description': 'A server that did not answer.', 'additionalProperties': False}, 'description': 'Servers that did not answer, so their records are missing from "preprints" and they have no "pagination" entry. Non-empty means this result set is partial â\x80\x94 retry to include them. Only populated when server="both", and never holding every attempted server: when none answered, the call fails with upstream_unavailable or rate_limited instead of returning a page. A single-server failure likewise surfaces as a tool error. Distinct from an exhausted pagination entry, where the server answered.'}, 'notice': {'type': 'string', 'description': 'Guidance on how to read this result set: which servers did not answer, which ignored the category filter (their unfiltered records are left out), that a funder filter limited server="both" to bioRxiv, which cursors are past the end, and â\x80\x94 when nothing came back â\x80\x94 the applied filters and how to broaden them. All applicable qualifications are composed into one string.'}, 'preprints': {'type': 'array', 'items': {'type': 'object', 'required': ['doi'], 'properties': {'doi': {'type': 'string', 'description': 'Preprint DOI.'}, 'date': {'type': 'string', 'description': 'Posting or revision date (YYYY-MM-DD).'}, 'type': {'type': 'string', 'description': 'Preprint type.'}, 'title': {'type': 'string', 'description': 'Title of the preprint.'}, 'awards': {'type': 'array', 'items': {'type': 'string', 'description': 'One award value as upstream records it.'}, 'description': 'Grant award numbers from the funding statement, verbatim and deduplicated â\x80\x94 one value can hold several grants run together without a separator. Absent when none. Funder names are not included: api.biorxiv.org attributes them to unrelated organizations.'}, 'server': {'type': 'string', 'description': 'Source server (biorxiv or medrxiv).'}, 'authors': {'type': 'string', 'description': 'Author list.'}, 'license': {'type': 'string', 'description': 'License identifier.'}, 'version': {'type': 'string', 'description': 'Revision version number.'}, 'abstract': {'type': 'string', 'description': 'Abstract text. Present only when include_abstract is true.'}, 'category': {'type': 'string', 'description': 'Subject category.'}, 'jatsxmlUrl': {'type': 'string', 'description': 'URL to the JATS XML full-text.'}, 'authorCorresponding': {'type': 'string', 'description': 'Corresponding author name.'}, 'publishedJournalDoi': {'type': 'string', 'description': 'Published journal DOI when this preprint has been accepted.'}, 'authorCorrespondingInstitution': {'type': 'string', 'description': 'Corresponding author institution.'}}, 'description': 'A single preprint entry.', 'additionalProperties': False}, 'description': 'Preprints in the requested date interval.'}, 'pagination': {'type': 'object', 'properties': {'biorxiv': {'type': 'object', 'required': ['cursor', 'total'], 'properties': {'total': {'type': 'number', 'description': 'Total preprints available on bioRxiv for these filters.'}, 'cursor': {'type': 'number', 'description': 'Current cursor (offset used for this page).'}, 'exhausted': {'type': 'boolean', 'description': 'True when this cursor is past bioRxiv\'s last page: no records came back at a non-zero cursor. The API reports total 0 for an out-of-range cursor, so "total" is not the interval total here â\x80\x94 step back to a lower cursor to read it.'}, 'nextCursor': {'type': 'number', 'description': 'Cursor value for the next page, if any.'}}, 'description': 'bioRxiv pagination state. Present when server is "biorxiv" or "both".', 'additionalProperties': False}, 'medrxiv': {'type': 'object', 'required': ['cursor', 'total'], 'properties': {'total': {'type': 'number', 'description': 'Total preprints available on medRxiv for these filters.'}, 'cursor': {'type': 'number', 'description': 'Current cursor (offset used for this page).'}, 'exhausted': {'type': 'boolean', 'description': 'True when this cursor is past medRxiv\'s last page: no records came back at a non-zero cursor. The API reports total 0 for an out-of-range cursor, so "total" is not the interval total here â\x80\x94 step back to a lower cursor to read it.'}, 'nextCursor': {'type': 'number', 'description': 'Cursor value for the next page, if any.'}}, 'description': 'medRxiv pagination state. Present when server is "medrxiv" or "both", except under a funder filter, which queries bioRxiv only.', 'additionalProperties': False}}, 'description': 'Per-server pagination state. Advance each server independently.', 'additionalProperties': False}, 'categoryNote': {'type': 'string', 'description': 'Present when server="both" and the category exists in only one server\'s taxonomy. Explains which server was queried and why the other was excluded.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum results to return (1â\x80\x93100). Defaults to 25.'}, 'query': {'type': 'string', 'description': 'Keyword search query. Optional when author is provided â\x80\x94 supply at least one of query or author.'}, 'author': {'type': 'string', 'description': 'Author name to filter by, mapped to an EuropePMC AUTH:"â\x80¦" field query and ANDed with the keyword query. Optional when query is provided (e.g. "Jennifer Doudna").'}, 'server': {'enum': ['biorxiv', 'medrxiv', 'both'], 'type': 'string', 'default': 'both', 'description': 'Server scope for enrichment. "both" checks all matching DOIs on both servers.'}, 'date_to': {'type': 'string', 'description': 'Latest first-publication date filter (YYYY-MM-DD).'}, 'date_from': {'type': 'string', 'description': 'Earliest first-publication date filter (YYYY-MM-DD).'}, 'cursor_mark': {'type': 'string', 'description': 'Opaque page token for ranked EuropePMC results. Omit for the first page; pass the nextCursorMark returned by a prior call to fetch the next page. Pages through the same ranked list rather than raising limit. A token EuropePMC does not recognize fails with invalid_cursor_mark.'}, 'include_abstract': {'type': 'boolean', 'default': True, 'description': "Include each result's abstract. Defaults to true. false omits the abstract from every result, enriched and EuropePMC-fallback alike, and keeps every other field."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['preprints', 'partial_results', 'totalCount', 'queryEcho']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_date_range', 'search_unavailable', 'invalid_cursor_mark', 'rate_limited'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_date_range`: date_from or date_to is malformed, or date_from is after date_to. `search_unavailable`: EuropePMC search endpoint is unreachable, returns a server error, or answers a first-page search without a result list on every retry. `invalid_cursor_mark`: EuropePMC answers a cursor_mark page request without a result list on every retry â\x80\x94 the token is malformed or not one EuropePMC issued. `rate_limited`: The EuropePMC search endpoint rejected the keyword search with HTTP 429. Distinct from a rate-limited enrichment call, which degrades to EuropePMC-only metadata instead of failing. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Present when zero results are returned: on a cursor_mark page past the last match, says the list is exhausted; otherwise echoes the query and suggests how to broaden it. Also present when abstracts for results shown with EuropePMC metadata only could not be retrieved, which leaves those results without one.'}, 'preprints': {'type': 'array', 'items': {'type': 'object', 'required': ['doi', 'enriched'], 'properties': {'doi': {'type': 'string', 'description': 'Preprint DOI.'}, 'date': {'type': 'string', 'description': 'Posting or revision date.'}, 'type': {'type': 'string', 'description': 'Preprint type.'}, 'title': {'type': 'string', 'description': 'Preprint title.'}, 'awards': {'type': 'array', 'items': {'type': 'string', 'description': 'One award value as upstream records it.'}, 'description': 'Grant award numbers from the funding statement, verbatim and deduplicated â\x80\x94 one value can hold several grants run together without a separator. Absent when none, and on EuropePMC-only fallback records. Funder names are not included: api.biorxiv.org attributes them to unrelated organizations.'}, 'server': {'type': 'string', 'description': 'Source server (biorxiv or medrxiv).'}, 'authors': {'type': 'string', 'description': 'Author list.'}, 'license': {'type': 'string', 'description': 'License identifier.'}, 'version': {'type': 'string', 'description': 'Latest revision version.'}, 'abstract': {'type': 'string', 'description': 'Abstract text. Omitted when include_abstract is false. On a EuropePMC-fallback record, absent when EuropePMC holds none or the abstract lookup failed â\x80\x94 the notice says when it failed.'}, 'category': {'type': 'string', 'description': 'Subject category.'}, 'enriched': {'type': 'boolean', 'description': 'True when full bioRxiv metadata was available; false for EuropePMC-only fallback.'}, 'jatsxmlUrl': {'type': 'string', 'description': 'URL to the JATS XML full-text.'}, 'revisionCount': {'type': 'number', 'description': 'Total revision count when enriched from bioRxiv.'}, 'enrichment_error': {'enum': ['service_error', 'not_found', 'rate_limited'], 'type': 'string', 'description': 'Reason enrichment was unavailable: "service_error" (transient â\x80\x94 retry may help), "rate_limited" (api.biorxiv.org returned HTTP 429 â\x80\x94 wait before retrying, and expect the other preprint metadata tools to be limited too), or "not_found" (DOI not indexed on target server â\x80\x94 EuropePMC fallback is authoritative). Only present when enriched is false.'}, 'authorCorresponding': {'type': 'string', 'description': 'Corresponding author.'}, 'publishedJournalDoi': {'type': 'string', 'description': 'Published journal DOI when accepted.'}, 'authorCorrespondingInstitution': {'type': 'string', 'description': 'Corresponding author institution.'}}, 'description': 'A single search result.', 'additionalProperties': False}, 'description': 'Search results, ranked by EuropePMC relevance.'}, 'queryEcho': {'type': 'object', 'required': ['server', 'limit'], 'properties': {'limit': {'type': 'number', 'description': 'Maximum results requested.'}, 'query': {'type': 'string', 'description': 'The keyword query sent to EuropePMC, if any.'}, 'author': {'type': 'string', 'description': 'The author filter applied as an AUTH: clause, if any.'}, 'server': {'type': 'string', 'description': 'Server scope used for enrichment.'}, 'date_to': {'type': 'string', 'description': 'date_to filter applied, if any.'}, 'date_from': {'type': 'string', 'description': 'date_from filter applied, if any.'}, 'cursor_mark': {'type': 'string', 'description': 'cursor_mark page token applied, if any.'}}, 'description': 'Echo of the parameters used to produce this result set â\x80\x94 lets callers verify what was sent.', 'additionalProperties': False}, 'totalCount': {'type': 'number', 'description': 'Total preprints matching the query in EuropePMC (hitCount) â\x80\x94 the true upstream grand total, not the number of results returned.'}, 'nextCursorMark': {'type': 'string', 'description': 'Opaque token for the next page of ranked results. Present only when more results exist beyond this page; pass it back as cursor_mark. Absent on the last page.'}, 'partial_results': {'type': 'boolean', 'description': 'True when one or more DOIs failed bioRxiv enrichment and fell back to EuropePMC metadata.'}}, 'additionalProperties': False}
Cambios recientes en herramientas
Servidores MCP similares
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
Pubmed
Provides PubMed biomedical literature search and retrieval, including abstracts, full text where available, citation metadata, re…
Europepmc
Searches and retrieves biomedical literature from Europe PMC, including abstracts, full records, citations, publication metadata,…
Nasa
Provides NASA data and imagery for astronomy, asteroids, Mars rover photos, solar flares, coronal mass ejections, geomagnetic sto…
Nih Reporter
Searches and analyzes NIH-funded research projects, awards, publications, funding trends, expirations, investigators, organizatio…
Catalogueoflife
Provides taxonomic search and classification for species and higher taxa using the Catalogue of Life.
Chembl
Queries the ChEMBL drug-discovery database for molecules, mechanisms of action, indications, targets, and small-molecule bioactiv…
Biorxiv
Provides bioRxiv and medRxiv preprint metadata, publication status, and publisher lookups, alongside broader structured research …