rxiv
Provides tools to search arXiv preprints by plain text or raw arXiv query syntax with category and date filters, retrieve metadata and abstracts for arXiv IDs or URLs, and fetch paged full text from arXiv HTML renderings or PDFs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rxivSearch bioRxiv for recent CRISPR base editing preprints from 2025."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
rxiv-mcp
A Model Context Protocol server that lets Claude (or any MCP client) search and read preprints on arXiv, bioRxiv, and medRxiv.
No API keys. No native dependencies. Runs over stdio with Node 20+.
Tools
Tool | What it does |
| Search arXiv by plain text or raw arXiv query syntax ( |
| Metadata and abstract for one or more arXiv IDs or URLs. |
| Full text of a paper, from arXiv's HTML rendering (LaTeX math preserved) or the PDF. Paged. |
| Keyword search across bioRxiv and medRxiv, with server, date, and sort (relevance / date / citations) filters. |
| Official bioRxiv/medRxiv record for a DOI: all versions, license, category, and the published journal version if any. |
| Browse what was posted in a date window, optionally by subject category. |
| Full text of a bioRxiv/medRxiv preprint (JATS XML or PDF). Paged. |
Full-text tools return up to max_chars characters (default 40,000) and report truncated and next_offset so the client can page through long papers.
Related MCP server: preprint-fulltext
Install
Claude Code
# from a local clone
git clone https://github.com/sakzgupzzz/rxiv-mcp.git
cd rxiv-mcp && npm install # builds dist/ via the prepare script
claude mcp add --scope user rxiv -- node /absolute/path/to/rxiv-mcp/dist/index.js
# or straight from GitHub, no clone
claude mcp add --scope user rxiv -- npx -y github:sakzgupzzz/rxiv-mcpClaude Desktop / other MCP clients
Add to claude_desktop_config.json (or the equivalent for your client):
{
"mcpServers": {
"rxiv": {
"command": "npx",
"args": ["-y", "github:sakzgupzzz/rxiv-mcp"]
}
}
}Examples of what to ask
"Find the five most-cited bioRxiv preprints on CRISPR base editing from 2025."
"What was posted to medRxiv in epidemiology in the last three days?"
"Read arXiv 2410.12345 and summarise the method section."
"Has bioRxiv 10.1101/2025.05.19.654892 been published in a journal?"
How it works
arXiv uses the official arXiv API (Atom feed). Requests are spaced at least 3 seconds apart per arXiv's rate-limit guidance. Full text comes from
arxiv.org/html/<id>when the paper has an HTML rendering, otherwise the PDF is parsed with unpdf.bioRxiv / medRxiv metadata, version history, and published-version lookups use the official bioRxiv API. That API has no keyword search and only lists by DOI or date range, so:
Search goes through Europe PMC, which indexes every bioRxiv and medRxiv preprint with abstracts and citation counts. You can use Europe PMC query syntax directly (
TITLE:"...",AUTH:"...",ABSTRACT:"...").Full text also comes from Europe PMC (JATS XML, then PDF), because biorxiv.org rate-limits scripted downloads. Full text typically appears there a few days after a preprint is posted.
Every outbound request carries a descriptive User-Agent, is throttled per host, and retries on 429/5xx.
Development
npm install
npm run build # tsc -> dist/
npm test # starts the server, checks the tool list (offline)
npm run smoke # exercises every tool against the live APIsSource layout:
src/index.ts server entry (stdio)
src/tools.ts tool definitions and input schemas
src/arxiv.ts arXiv API client + full text
src/biorxiv.ts bioRxiv API + Europe PMC clients
src/text.ts HTML / JATS to text, paging
src/pdf.ts PDF text extraction
src/http.ts fetch wrapper: throttling, retries, User-AgentLicense
MIT
Available Tools
7 toolsarxiv_get_full_textRead arXiv paper full textARead-onlyIdempotent
Return the full text of an arXiv paper as plain text (from arXiv's HTML rendering when available, otherwise extracted from the PDF). Long papers are paged: check truncated and pass next_offset as offset to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | arXiv identifier or URL, optionally with version (e.g. 2410.12345v1) | |
| offset | No | Character offset to start from (for paging through long papers) | |
| max_chars | No | Maximum characters to return in this call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the description doesn't need to cover safety. It adds genuinely new behavior: the HTML-first/PDF-fallback extraction path and the paged-truncation model. It stops short of noting rate limits or extraction quality caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and followed by the one operational caveat an agent must know. Nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the `truncated` and `next_offset` fields an agent will see in the response, which is otherwise undocumented. Complete enough to call correctly, though the unexplained field names could cause brief confusion on first response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds paging workflow semantics the schema lacks: how truncation connects to continuing via offset. Minor friction from naming `truncated` and `next_offset`, fields not present in the input schema, though it explains mapping next_offset to offset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Return the full text of an arXiv paper") plus the output format ("as plain text") and the source fallback (HTML rendering, otherwise PDF). This clearly separates it from sibling arxiv_get_paper, which an agent can infer serves paper metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is limited to the paging case: check `truncated` and pass `next_offset` as `offset`. There is no explicit when-to-use/when-not guidance relative to arxiv_get_paper or biorxiv_get_full_text, so the agent must infer that full text is for deep reading rather than metadata lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arxiv_get_paperGet arXiv paper metadataARead-onlyIdempotent
Fetch metadata and abstract for one or more arXiv papers by ID. Accepts 2410.12345, 2410.12345v2, arXiv:2410.12345, old-style hep-th/9901001, or any arxiv.org abs/pdf/html URL.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | One or more arXiv identifiers or URLs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. Beyond that the description adds little behaviorally: nothing about what happens with an invalid ID in a batch, whether partial results are returned, rate limits, or whether the abstract can be absent for withdrawn papers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded, followed by the input formats that actually matter. No filler and nothing buried at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema and strong annotations, the description covers what is needed to call it correctly, and the format enumeration removes the main failure mode. It would be complete at 5 with a short note on batch error/partial-result behavior and roughly what metadata is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description earns an upgrade by enumerating concrete accepted identifier forms (new-style, versioned, arXiv:-prefixed, old-style hep-th/9901001, and abs/pdf/html URLs) that the schema's generic 'identifiers or URLs' does not spell out. Only the batch cap is left to the schema's maxItems.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Fetch metadata and abstract for ... arXiv papers by ID') and supports batch retrieval ('one or more'), which implicitly separates it from arxiv_get_full_text and arxiv_search. It does not name a sibling outright, so differentiation is inferable rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: this is the lookup path when you already hold identifiers, as opposed to search-based discovery. There is no explicit when-to-use/when-not guidance and no alternative named, so an agent must infer that arxiv_search precedes this for unknown papers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arxiv_searchSearch arXivARead-onlyIdempotent
Search arXiv papers. query can be plain text (words are AND-ed across title/abstract/authors) or raw arXiv syntax with field prefixes and booleans, e.g. ti:"protein language model" AND au:rives, abs:diffusion ANDNOT cat:cs.CV. Prefixes: ti (title), au (author), abs (abstract), cat (category), all. Combine with category (e.g. cs.LG, q-bio.BM, stat.ML) and a submitted-date window. Returns metadata and abstracts; use arxiv_get_full_text to read a paper.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search terms or raw arXiv query syntax | |
| start | No | Result offset for paging | |
| date_to | No | Latest submission date (YYYY-MM-DD) | |
| sort_by | No | relevance | |
| category | No | arXiv category filter, e.g. cs.LG, q-bio.GN, physics.optics | |
| date_from | No | Earliest submission date (YYYY-MM-DD) | |
| sort_order | No | descending | |
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds value beyond that by disclosing the return payload (metadata and abstracts) and by handing off to a different tool for full text. No mention of rate limits or result-cap behavior, but the schema covers the cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then query semantics, then the combination rules, then the hand-off. Every sentence carries information the agent needs; the prefix list and examples are dense but earn their place. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, no-output-schema search tool, the description covers the hardest part (query syntax) and tells the agent what comes back. What's missing is modest: guidance on paging behavior across offsets and a pointer that only metadata/abstracts come back rather than full text is present but thin on result volume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 63% schema coverage, the description substantially compensates: it explains that bare terms are AND-ed across title/abstract/authors, enumerates the field prefixes (ti, au, abs, cat, all), and gives concrete boolean examples that the schema's one-line `query` description does not. It also clarifies how `query`, `category`, and the date window combine. It does not explain sort_by/sort_order/max_results, though those are self-documenting via enums and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Search arXiv papers") and immediately states what the tool returns ("metadata and abstracts"), which implicitly separates it from the single-paper lookup sibling. It also explicitly routes full-text reading to arxiv_get_full_text, so an agent can distinguish this tool from at least one sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear in-context guidance on when to use plain text vs. raw arXiv syntax, and names the alternative arxiv_get_full_text for reading a paper. It stops short of explaining when to prefer arxiv_get_paper (single known paper) over this search, or when the biorxiv siblings are the better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
biorxiv_get_full_textRead bioRxiv/medRxiv preprint full textARead-onlyIdempotent
Return the full text of a bioRxiv or medRxiv preprint as plain text, using the copy held by Europe PMC (JATS XML, falling back to PDF). Accepts a DOI, a preprint URL, or a Europe PMC PPR id. Full text usually appears a few days after posting; if it is not available yet the error says so. Long papers are paged: check truncated and pass next_offset as offset to continue.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Preprint DOI, URL, or Europe PMC PPR id (e.g. PPR1023352) | |
| offset | No | Character offset to start from (for paging through long papers) | |
| max_chars | No | Maximum characters to return in this call | |
| include_references | No | Append the reference list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description adds real value on top: the text is sourced from Europe PMC as JATS XML with PDF fallback, availability is delayed, and the failure mode is a descriptive error. It also discloses paging behavior via `truncated` and `next_offset`, fields that no output schema documents. It does not mention rate limits or typical response size beyond max_chars.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each carrying distinct information: what is returned, accepted inputs, availability timing and failure mode, then paging. The most decision-relevant facts (output format and accepted identifiers) are front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must cover return values, and it does: plain text, source format, paging markers, and truncation handling. Combined with 100% parameter coverage and annotations covering safety, an agent has everything needed to call it correctly and to resume a truncated read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the paging loop — inspect `truncated`, then feed `next_offset` back into `offset` — a relationship the schema alone cannot express. The three accepted id forms are restated from the schema rather than adding new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ("Return the full text of a bioRxiv or medRxiv preprint as plain text") and names the underlying source, so an agent knows exactly what comes back. It distinguishes itself from the metadata-oriented sibling biorxiv_get_preprint only implicitly via "full text"; no sibling is named explicitly, which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage conditions: full text usually appears a few days after posting, and an error is raised if it is not yet available. Also explains how to continue reading long papers. It stops short of directing the agent to biorxiv_get_preprint for abstract/metadata or arxiv_get_full_text for arXiv items, so routing to alternatives is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
biorxiv_get_preprintGet bioRxiv/medRxiv preprint detailsARead-onlyIdempotent
Fetch a preprint by DOI from the official bioRxiv/medRxiv API: title, authors, category, license, abstract, every posted version with dates, and the published journal version if one exists. Accepts a bare DOI (10.1101/2024.01.01.573711), a doi.org link, or a biorxiv.org/medrxiv.org content URL (version suffix like v2 is honoured). Auto-detects the server unless server is given.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | Preprint DOI or URL | |
| server | No | Which server to query; omit to auto-detect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety bar is low; the description still adds real value by naming the authoritative upstream API and disclosing version-suffix handling and server auto-detection. Gaps remain on rate limits, not-found behavior for an invalid DOI, and error shape, which matter for an open-world network call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler: the payload contents lead, and input-format and auto-detection rules follow. Nothing is repeated and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters and no output schema, the definition covers what an agent needs: accepted inputs, server resolution, and the shape of the returned record. The only omissions are failure modes for an unresolvable or malformed DOI, which are minor for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented and the baseline is 3. The description adds concrete format examples for `doi` and notes that a trailing version suffix is honoured, which is genuine semantics beyond "Preprint DOI or URL", but the `server` behavior is simply a restatement of the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Fetch a preprint by DOI from the official bioRxiv/medRxiv API") and enumerates exactly what comes back: title, authors, category, license, abstract, versions, published journal version. It never names a sibling, though, so an agent must infer that this is the metadata lookup rather than the full-text (biorxiv_get_full_text), search, or listing tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description spells out accepted input forms (bare DOI, doi.org link, content URL with v2 suffix) and the auto-detect-unless-`server`-given rule, which is useful orientation. It gives no explicit when-to-use guidance relative to biorxiv_search or biorxiv_get_full_text, leaving the selection to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
biorxiv_list_recentList recent bioRxiv/medRxiv preprintsARead-onlyIdempotent
List preprints posted to bioRxiv or medRxiv in a date window, optionally filtered by subject category (e.g. neuroscience, bioinformatics, genomics, cell biology, immunology; medRxiv: epidemiology, oncology, infectious diseases). Defaults to today. Pages hold 30 records; pass next_cursor as cursor to continue. Use this for browsing what is new; use biorxiv_search for keyword queries.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Alternative to date_from: the last N days | |
| cursor | No | ||
| server | No | biorxiv | |
| date_to | No | Window end (YYYY-MM-DD), defaults to today | |
| category | No | Subject category as shown on the server, e.g. 'cell biology' | |
| date_from | No | Window start (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: default window of today, fixed page size of 30 records, and the cursor-continuation pattern, including the implied `next_cursor` value returned in results despite there being no output schema. It stops short of noting any result ordering or whether an empty window returns an empty page, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences: purpose and filter first, then defaults, then pagination, then sibling routing. Every sentence carries information an agent needs, and nothing is repeated from annotations or the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter listing tool with no output schema, the description covers the things an agent would otherwise have to guess: the time window default, page size, how to continue paging, and when to prefer search. Annotations plus schema plus this text leave no material gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so some compensation is required, and the description supplies it: concrete category values for both servers, the 'defaults to today' behavior for the date window, and the mechanics of passing the cursor back in. It does not explain the `days`-versus-`date_from` alternative or the `server` switch, but both are documented in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Brevity is not the issue here: the description states a specific verb ('List preprints'), the two resources (bioRxiv/medRxiv), the scoping dimension (a date window) and the optional category filter. It also explicitly distinguishes itself from biorxiv_search, so an agent can choose between browsing and querying without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives an explicit when-to-use ('browsing what is new') and a named alternative with its selecting condition ('use biorxiv_search for keyword queries'). The default (today) and the alternative date parameters are also flagged, leaving little to inference for the primary routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
biorxiv_searchSearch bioRxiv and medRxivARead-onlyIdempotent
Keyword search over bioRxiv and medRxiv preprints (via the Europe PMC index, which covers both servers). query can be plain text or Europe PMC syntax, e.g. TITLE:"single-cell" AND AUTH:"Regev A", (organoid OR spheroid) AND ABSTRACT:"drug screening". Filter by server and first-posted date; sort by relevance, date, or citation count. Returns abstracts, DOIs, and whether the published journal version exists. Use biorxiv_get_preprint for version history and biorxiv_get_full_text to read a paper.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance | |
| query | Yes | Search terms or Europe PMC query syntax | |
| cursor | No | Pass `next_cursor` from a previous call to get the next page | |
| server | No | both | |
| date_to | No | Latest first-posted date (YYYY-MM-DD) | |
| date_from | No | Earliest first-posted date (YYYY-MM-DD) | |
| page_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered; the description earns credit for going further by disclosing the underlying Europe PMC index (which explains coverage of both servers and likely indexing gaps) and by stating what comes back — abstracts, DOIs, and whether a published journal version exists. It stops short of describing pagination mechanics or result-count limits beyond what the schema shows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core capability, then syntax examples, then filtering/sorting/returns, then sibling routing. No sentence is redundant and the parenthetical about Europe PMC is placed where it explains rather than interrupts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven parameters, no output schema, and only 57% schema coverage, the description does the necessary work: it explains query syntax, filter scope, sort options, and the shape of results. The main residual gap is `page_size` and cursor-based paging mechanics, though `cursor` is documented in the schema itself.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 57%, so the description must carry some weight — and it does, most valuably by showing that `query` accepts Europe PMC syntax with two concrete example expressions (`TITLE:"single-cell" AND AUTH:"Regev A"`, `(organoid OR spheroid) AND ABSTRACT:"drug screening"`), which the schema only labels generically. It also clarifies that server filtering and dates apply to first-posted date and enumerates the sort modes. `page_size` is left undocumented, a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource, 'Keyword search over bioRxiv and medRxiv preprints', and immediately qualifies the scope by noting it goes through the Europe PMC index. It then explicitly separates this tool's job from biorxiv_get_preprint (version history) and biorxiv_get_full_text (reading a paper), so an agent can route correctly without consulting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names two concrete alternatives and the conditions that select them: use get_preprint for version history and get_full_text to read a paper. The guidance is clear but incomplete as a routing map — it says nothing about when to prefer this search over biorxiv_list_recent or the arxiv_search sibling, which an agent comparing tools would want.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
arxiv_get_full_text - First observed
arxiv_get_paper - First observed
arxiv_search - First observed
biorxiv_get_full_text - First observed
biorxiv_get_preprint - First observed
biorxiv_list_recent - First observed
biorxiv_search
TDQS
Scored across 7 tools
The arxiv_/biorxiv_ prefixes cleanly partition the tool set into two families, and within each family search / metadata / full-text are clearly different actions. The only mild overlaps are biorxiv_search vs biorxiv_list_recent (browsing vs keyword) and the two metadata fetchers, but the descriptions explicitly disambiguate them.
Names consistently follow prefix_verb_noun (arxiv_get_paper, biorxiv_get_full_text, biorxiv_list_recent), so the pattern is predictable. The one asymmetry is the metadata-fetch verb: get_paper for arXiv vs get_preprint for bioRxiv, which is a minor, defensible deviation given the different resource types.
Seven tools is well-scoped for a two-repository preprint server: three arXiv operations and four bioRxiv/medRxiv operations, each earning its place with no redundancy.
Search, metadata retrieval, full-text retrieval, and pagination are covered for both sources, plus a recent-listings feed for bioRxiv/medRxiv. The main gap is the absence of an equivalent 'list recent' or date-browse tool for arXiv (and no citation/reference traversal), though agents can approximate arXiv browsing with search date filters.
Maintenance
Related MCP Connectors
Search and retrieve bioRxiv and medRxiv preprints — by DOI, date interval, or keyword — via MCP.
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Find research papers and arXiv preprints, and get an abstract and free full text from a DOI or id.
Check if references exist or were retracted, look up journal AI policies, and preview manuscripts.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying bioRxiv and medRxiv preprints, including metadata, publication status, and submission counts, through natural language or direct tool calls.406 npmMIT
- AlicenseAqualityDmaintenanceEnables coding agents to retrieve full text, metadata, and search preprints from bioRxiv, medRxiv, and arXiv via four stdio tools: search_preprints, get_fulltext, get_metadata, and resolve.43BSD 3-Clause
- FlicenseNot gradedqualityAmaintenanceEnables Claude and other MCP-compatible clients to search for academic papers and fetch detailed metadata, abstracts, and available full text from Semantic Scholar and Crossref.-
- FlicenseNot gradedqualityAmaintenanceEnables Claude and other MCP-compatible clients to search and retrieve academic paper information from Semantic Scholar and Crossref, including metadata, abstracts, and full text when available. It exposes tools for paper search, topic/date-range search, and fetching details by DOI or Semantic Scholar ID.-