Skip to main content
Glama

List Recent Preprints

biorxiv_list_recent
Read-only

List preprints posted or revised within a date interval, optionally scoped to one server or a subject category. Returns 30 preprints per page (fixed by the API); pass cursor as an integer offset (0, 30, 60, …) to step through additional pages. Abstracts are omitted by default to keep the page small — pass include_abstract: true for the whole page (each row carries the latest-revision abstract of its preprint, whichever revision the row is), or call biorxiv_get_preprint (up to 10 DOIs per call) for a few. When server="both" (default), per-server pagination state is returned separately — use each server's cursor field for independent advancement. One server failing under server="both" does not abort the call: the other server's page is still returned and the failed one is named in failed[], marking the result set as partial rather than complete. Every attempted server failing is a different case and does abort the call, with a retryable upstream_unavailable (or rate_limited) error — an empty page would otherwise be indistinguishable from an interval that genuinely holds nothing. Call biorxiv_list_categories for valid category strings; a server that answers a category filter with its unfiltered listing is left out with a notice, and invalid_category is raised when no server applied it. funder limits the listing to bioRxiv preprints funded by that organization, given its ROR ID; an ID api.biorxiv.org has no funder record for raises invalid_funder rather than returning an empty page.

Input Schema

NameRequiredDescriptionDefault
cursorNoInteger page offset (0, 30, 60, …). Defaults to 0 (first page).
funderNoFunder filter: the funder's ROR ID, bare ("021nxhr62" for the US National Science Foundation) or as a URL ("https://ror.org/021nxhr62"). bioRxiv only — 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.
serverNoServer to query. "both" fans out to bioRxiv and medRxiv in parallel.both
categoryNoSubject category filter, matched case-insensitively with "_" and "-" read as a space — "Cell Biology", "cell biology", "cell_biology", and "cell-biology" are the same filter. Use biorxiv_list_categories for valid values.
end_dateYesEnd of the date interval (YYYY-MM-DD).
start_dateYesStart of the date interval (YYYY-MM-DD).
include_abstractNoInclude each preprint's abstract. Defaults to false: abstracts make up about three quarters of a page, and every other field is returned either way.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
failedNoServers 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 — 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.
noticeNoGuidance 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 — when nothing came back — the applied filters and how to broaden them. All applicable qualifications are composed into one string.
preprintsNoPreprints in the requested date interval.
paginationNoPer-server pagination state. Advance each server independently.
categoryNoteNoPresent when server="both" and the category exists in only one server's taxonomy. Explains which server was queried and why the other was excluded.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / pagination / properties / biorxiv / properties / newPreprints
      Added value: +{
      +  "description": "Preprints whose first version posted on bioRxiv in the interval, for these filters — the rows with version \"1\" across every page of the listing, as bioRxiv counts them. Absent when bioRxiv reports no count, as on an exhausted entry; never a 0 standing in for an unknown count.",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / pagination / properties / biorxiv / properties / total / description
      Previous value: -"Total preprints available on bioRxiv for these filters."New value: +"Rows bioRxiv lists in the interval for these filters — one per revision posted in it, so a preprint revised in the interval counts once per version. For the number of new preprints, read newPreprints."
    • addedOutput schema / properties / pagination / properties / medrxiv / properties / newPreprints
      Added value: +{
      +  "description": "Preprints whose first version posted on medRxiv in the interval, for these filters — the rows with version \"1\" across every page of the listing, as medRxiv counts them. Absent when medRxiv reports no count, as on an exhausted entry; never a 0 standing in for an unknown count.",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / pagination / properties / medrxiv / properties / total / description
      Previous value: -"Total preprints available on medRxiv for these filters."New value: +"Rows medRxiv lists in the interval for these filters — one per revision posted in it, so a preprint revised in the interval counts once per version. For the number of new preprints, read newPreprints."
  2. Changed7 schema fields changed
    • addedInput schema / properties / end_date / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • addedInput schema / properties / start_date / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_date_range`: end_date is before start_date, or either date names no calendar day (2024-02-30, 2024-13-01). `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."
    • changedOutput schema / properties / preprints / items / properties / abstract / description
      Previous value: -"Abstract text. Present only when include_abstract is true."New value: +"The preprint's latest-revision abstract, which differs from this row's own revision when a later one exists — api.biorxiv.org keeps one abstract per preprint. Present only when include_abstract is true."
    • changedOutput schema / properties / preprints / items / properties / server / description
      Previous value: -"Source server (biorxiv or medrxiv)."New value: +"Server the preprint was listed on — accepted as the server input of every tool."
    • addedOutput schema / properties / preprints / items / properties / server / enum
      Added value: +[
      +  "biorxiv",
      +  "medrxiv"
      +]
    • changedOutput schema / properties / preprints / items / required
      Previous value: -[
      -  "doi"
      -]New value: +[
      +  "doi",
      +  "server"
      +]
  3. Changed9 schema fields changed
    • addedInput schema / properties / funder
      Added value: +{
      +  "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 — 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.",
      +  "type": "string"
      +}
    • addedInput schema / properties / include_abstract
      Added value: +{
      +  "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.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"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. `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."New value: +"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."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "invalid_date_range",
      -  "invalid_category",
      -  "upstream_unavailable",
      -  "rate_limited"
      -]New value: +[
      +  "invalid_date_range",
      +  "invalid_category",
      +  "invalid_funder",
      +  "upstream_unavailable",
      +  "rate_limited"
      +]
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance on how to read this result set: which servers did not answer, which ignored the category filter (their unfiltered records are left out), which cursors are past the end, and — when nothing came back — the applied filters and how to broaden them. All applicable qualifications are composed into one string."New value: +"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 — when nothing came back — the applied filters and how to broaden them. All applicable qualifications are composed into one string."
    • changedOutput schema / properties / pagination / properties / medrxiv / description
      Previous value: -"medRxiv pagination state. Present when server is \"medrxiv\" or \"both\"."New value: +"medRxiv pagination state. Present when server is \"medrxiv\" or \"both\", except under a funder filter, which queries bioRxiv only."
    • changedOutput schema / properties / preprints / items / properties / abstract / description
      Previous value: -"Abstract text."New value: +"Abstract text. Present only when include_abstract is true."
    • addedOutput schema / properties / preprints / items / properties / awards
      Added value: +{
      +  "description": "Grant award numbers from the funding statement, verbatim and deduplicated — 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.",
      +  "items": {
      +    "description": "One award value as upstream records it.",
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / preprints / items / properties / funder
      Removed value: -{
      -  "description": "Funder information.",
      -  "type": "string"
      -}
  4. Changed3 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Subject category filter. Use biorxiv_list_categories for valid values."New value: +"Subject category filter, matched case-insensitively with \"_\" and \"-\" read as a space — \"Cell Biology\", \"cell biology\", \"cell_biology\", and \"cell-biology\" are the same filter. Use biorxiv_list_categories for valid values."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"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 supplied category string is not in the taxonomy. `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."New value: +"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. `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."
    • changedOutput schema / properties / notice / description
      Previous value: -"Guidance on how to read this result set: which servers did not answer, which cursors are past the end, and — when nothing came back — the applied filters and how to broaden them. All applicable qualifications are composed into one string."New value: +"Guidance on how to read this result set: which servers did not answer, which ignored the category filter (their unfiltered records are left out), which cursors are past the end, and — when nothing came back — the applied filters and how to broaden them. All applicable qualifications are composed into one string."
  5. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety profile is covered; the description still adds substantial value beyond that: fixed 30-per-page size, per-server cursor advance under server="both", partial results via failed[], and distinct error semantics (upstream_unavailable, rate_limited, invalid_category, invalid_funder). With annotations present the bar is lower, but the disclosure here is richer than a 3 usually implies — the justification for 3 rather than 4 is that return shape details are partly delegated to the output 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?

Front-loaded with the core purpose and scoping, and nearly every sentence carries operational information (page size, cursor stepping, failure semantics). It is dense as a single paragraph and would scan faster with bullets, but nothing is 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?

An output schema exists, so return values needn't be spelled out, and the description still covers the non-obvious gaps: pagination limits, partial-failure handling, error codes, and funder/category validation paths. An agent has everything needed to call it correctly and interpret degraded results.

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 baseline is 3; the description earns above baseline by explaining cross-parameter interactions the schema does not: per-server cursor state under server="both", funder's incompatibility with medRxiv, and the category-filter fallback notice. The include_abstract rationale ("three quarters of a page") gives practical meaning to a boolean the schema only defines literally.

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 ("List preprints") bounded by a date interval and optional server/category scope, which cleanly separates it from biorxiv_search_preprints. It also names siblings it is not (biorxiv_get_preprint for per-DOI abstracts, biorxiv_list_categories for valid category strings).

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?

Explicit routing guidance: use biorxiv_get_preprint when only a few abstracts are needed, biorxiv_list_categories for valid category values, and include_abstract when the whole page's abstracts are wanted. It also states when results are partial (<code>server="both"</code> with a failing server) vs. when the call aborts.

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.