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, 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

TableJSON 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

TableJSON 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. 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"
      -}
  2. 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."
  3. First observed

TDQS

A5/5.0
Behavior5/5

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

Even with readOnlyHint=true and openWorldHint=true, the description goes far beyond those annotations. It discloses pagination behavior (30 per page, integer cursor), the partial-failure semantics under server="both" (one server failing returns partial results with failed[] and a partial marker), and the all-fail case (aborts with an upstream_unavailable or rate_limited error). It explains why abstracts are omitted by default and why invalid_funder is raised. This is rich behavioral disclosure beyond any structured annotation.

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

Conciseness5/5

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

The description is long, but every sentence carries unique, actionable information. It front-loads the primary purpose before diving into edge cases. The structure moves from general scope to pagination, to abstract handling, to server-specific behavior, to category and funder specifics. No redundancy; all content is necessary for correct invocation. The length is justified by the tool's complexity.

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

Completeness5/5

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

Given the tool's complexity (7 parameters, pagination, dual-server behavior, error semantics), the description leaves nothing essential ambiguous. It covers error conditions, partial results, alternatives, and parameter interactions. The presence of an output schema covers return value specifics. An agent has everything needed to invoke this tool correctly and interpret results.

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

Parameters5/5

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

Although the schema already describes all parameters (100% coverage), the description adds substantial semantic nuance: cursor stepping, the exact category matching rule (case-insensitive, underscores/hyphens as spaces), the funder ROR ID format and its restriction to bioRxiv only (rejection of server='medrxiv'), and the interaction between funder and category. It clarifies how per-server cursors work under server='both'. This goes well beyond the schema's basic descriptions.

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?

The description opens with a precise, specific verb and resource: 'List preprints posted or revised within a date interval, optionally scoped to one server or a subject category.' This clearly distinguishes it from sibling tools like biorxiv_get_preprint (which fetches individual preprints) and biorxiv_list_categories (which lists categories). The primary function is unmistakable.

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?

The description explicitly tells the reader when to use this tool versus alternatives: it recommends biorxiv_get_preprint for fetching a few preprints with abstracts (up to 10 DOIs), and directs to biorxiv_list_categories for valid category strings. It also explains when to pass include_abstract: true versus relying on the default. This gives clear routing and excludes misuse.

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.