Skip to main content
Glama

Server Details

Search arXiv, fetch paper metadata, and read full-text content.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.5% over 64 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/arxiv-mcp-server
GitHub Stars
6
Server Listing
arxiv-mcp-server

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search by query, metadata by known ID, full-text reading, and category listing. The boundary between search and metadata lookup is well clarified by the descriptions, so an agent can easily select the right tool.

Naming Consistency5/5

All tools follow the same predictable pattern: arxiv_ prefix followed by verb_noun (get_metadata, list_categories, read_paper, search_papers). There are no naming deviations or mixed conventions.

Tool Count5/5

Four tools is a well-scoped set for an arXiv access server, covering search, metadata retrieval, full-text reading, and category discovery without redundancy. Each tool earns its place.

Completeness4/5

The surface covers the core workflows of discovering, inspecting, and reading arXiv papers. Minor gaps remain, such as exporting citations or downloading PDFs, but these are not essential for most agent tasks and can be worked around.

Available Tools

4 tools
arxiv_get_metadataArxiv Get MetadataA
Read-only
Inspect

Get full metadata for one or more arXiv papers by ID. Use when you have known IDs from citations, prior search results, or memory. Looks up 10 IDs per call; any further IDs come back in remaining_ids for the next call.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idsYesarXiv paper IDs, up to 100. The first 10 well-formed IDs are looked up; the rest come back in remaining_ids to pass to the next call. Accepted forms: "2401.12345", "2401.12345v2" (a pinned version), or a pre-2007 ID like "hep-th/9901001" (archive spelled as arXiv issued it), each optionally prefixed "arXiv:", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment. An ID in any other form is reported in not_found with reason invalid_id and is not looked up.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
papersNoPapers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, a version arXiv will not serve, one whose live lookup failed behind the local mirror, or past the first 10 well-formed IDs.
not_foundNoPer-input explanations for inputs that could not be returned. Absent when nothing failed.
remaining_idsNoWell-formed IDs past the first 10, in canonical form and request order, that this call did not look up. Pass them as paper_ids in the next call. Absent when every well-formed ID was looked up.
totalSucceededNoNumber of successful items in 'papers'

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description goes beyond that by disclosing the batch contract: only the first 10 well-formed IDs are resolved and the rest return in remaining_ids, which is genuine operational context an agent needs for multi-call sequencing.

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?

Three short sentences, front-loaded with the purpose before usage and batching detail. No filler or repetition; each sentence carries actionable information.

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?

For a single-parameter, read-only lookup tool, the description covers purpose, when to use it, and the pagination contract, while annotations cover the safety profile and the output schema covers remaining_ids and not_found. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so accepted ID forms, the 100-item cap, and invalid_id handling are already fully documented in the schema. The description's batching note restates what the schema already says, adding no new parameter-level meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (get full metadata for arXiv papers by ID) and scopes it to known IDs, which implicitly separates it from arxiv_search_papers. It does not name the sibling tools explicitly, so an agent must infer the boundary rather than being routed directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when you have known IDs from citations, prior search results, or memory" gives a clear triggering condition, and it implies you should search when you lack IDs. There is no explicit when-not statement or named alternative, so it falls short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arxiv_list_categoriesArxiv List CategoriesA
Read-only
Inspect

List arXiv category codes and names. Useful for discovering valid category filters for arxiv_search_papers. Lists subject classes only; arxiv_search_papers also accepts a bare archive code (the part before the dot, e.g. "astro-ph" or "cs") to search a whole archive at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoFilter by top-level group (e.g., "cs", "math", "physics"). Returns all categories if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when the group filter returns no categories.
categoriesNoarXiv categories matching the filter.
totalCountNoTotal number of categories returned.

TDQS

A4.4/5.0
Behavior4/5

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

readOnlyHint already declares the safety profile, so the description is not obligated to cover it; instead it adds a real scope constraint ('lists subject classes only') plus the archive-code nuance, which changes how an agent would query. It stops short of describing pagination or result volume.

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?

Three tight sentences, front-loaded with the core purpose, with the search-tool linkage second. The trailing archive-code clarification is useful but slightly dense; nothing is wasted.

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 need no explanation. For a zero-required-parameter read-only lookup, the description plus annotations plus schema cover everything needed to call it correctly and to know when not to.

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

Parameters3/5

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

Schema description coverage is 100% with a single enum-constrained 'group' parameter, so the schema fully documents the input. The description adds nothing about the group filter, which is acceptable at this coverage but means no value beyond structured data.

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 arXiv category codes and names'), which is unambiguous and clearly not a paper-search or metadata operation. It also positions itself relative to arxiv_search_papers rather than the other siblings.

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?

Explicitly names the use case (discovering valid category filters for arxiv_search_papers) and adds a when-not nuance: the search tool also accepts a bare archive code, so this lookup is not always required. That is exactly the routing information an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arxiv_read_paperArxiv Read Paper
Read-only
Inspect

Fetch the full text of an arXiv paper. Tries arxiv.org/html first, falls back to ar5iv.labs.arxiv.org, and falls back again to text extracted from the PDF when neither has an HTML render — check the source field to know which one answered. Page through long papers with start and max_characters, or pass max_characters null to get the entire body in one call. To read one section, take the outline from the first page (start 0) and pass an entry's start.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoCharacter offset into the cleaned body to begin reading from. Defaults to 0. Use with max_characters to page through long papers — e.g., start=100000 with max_characters=100000 returns chars 100,000–199,999 — or pass an outline entry's start to read from that heading. The total length is reported as body_characters in the response.
paper_idYesarXiv paper ID: "2401.12345", "2401.12345v2" (a pinned version), or a pre-2007 ID like "hep-th/9901001" (archive spelled as arXiv issued it), optionally prefixed "arXiv:", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment.
max_charactersNoMaximum characters of paper body to return, counted after boilerplate stripping. Defaults to 100,000; pass null to return the entire body in one call. Whole-paper reads can exceed a client tool-result size cap — math-heavy bodies run 300KB-1MB+ — so prefer the default plus start-based paging unless the full text is needed. When truncated, a notice and the total character count are included.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
startNoCharacter offset of the first character in content within the cleaned body.
titleNoPaper title (from metadata, not parsed from HTML).
sourceNoWhich upstream artifact the body was read from. arxiv_html and ar5iv are HTML renders; pdf_text is text extracted from the PDF, where prose is reliable but math, tables, and heading structure are flattened. ar5iv keeps one render per paper, so an ar5iv body can be another revision than paper_id (see revision_unconfirmed).
contentNoPaper body for the requested slice — the article as cleaned HTML, with relative image, object, and link URLs made absolute (in-page #fragment links stay as written), when source is arxiv_html or ar5iv; plain text when source is pdf_text. Empty when start is past body_characters.
outlineNoSection headings of the whole cleaned body in document order, each with the start that reads from it. Returned only when start is 0. Empty for pdf_text, whose text carries no reliable headings. At most 200 entries — see outline_omitted_levels and outline_continues_at.
pdf_urlNoDirect PDF download URL.
paper_idNoarXiv paper ID.
truncatedNoTrue when more body content exists past this slice (start + content.length < body_characters).
abstract_urlNoarXiv abstract page URL for attribution.
body_charactersNoCharacter count of the full cleaned body. Use with start and max_characters to page. Typically 3-4× smaller than total_characters for math-heavy HTML papers.
total_charactersNoCharacter count of the body before cleaning — the article HTML, without the site header and footer, for arxiv_html and ar5iv; equal to body_characters for pdf_text, which needs no cleaning.
outline_continues_atNoPresent when the shallowest heading level alone has more than 200 headings, so outline stops at its first 200: the start of the first heading left out. Pass it as start to read on from there.
revision_unconfirmedNoPresent, true, when source is ar5iv: ar5iv keeps one render per paper whatever version is asked for, so the body may be another revision than paper_id, while pdf_url is exactly the paper_id revision. Absent for every other source, and for an unversioned read where the arXiv API reported v1 as the only version of the paper.
outline_omitted_levelsNoHeading levels left out of outline because the paper has more than 200 headings, deepest first. Present only when levels were left out.
arxiv_search_papersArxiv Search PapersB
Read-only
Inspect

Search arXiv papers by query with category and sort filters. Returns paper metadata including title, authors, abstract, categories, and links.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query. Field prefixes: ti: (title), au: (author — token-based; quote multi-token names like au:"hinton g" or pair with a topical clause to disambiguate common surnames), abs: (abstract), cat: (category — a leaf code matches exactly, a bare archive code such as cat:astro-ph matches its whole subtree), co: (comment), jr: (journal ref), all: (all fields). Boolean operators: AND, OR, ANDNOT. Examples: "au:bengio AND ti:attention", "all:transformer AND cat:cs.CL".
startNoPagination offset (0-10000). Use with max_results to page through results. E.g., start=10 with max_results=10 returns results 11-20. arXiv serves only the first 10000 results of a query, so a page reaching past result 10000 can come back cut short at it and a start of 10000 can be refused. To reach later matches, carve the search into submitted_from/submitted_to windows and page within each.
sort_byNoSort criterion. Use "submitted" for newest papers, "relevance" for best query matches.relevance
categoryNoRestrict results to an arXiv category. A leaf code ("cs.CL", "math.AG") matches exactly. A bare archive code ("astro-ph", "cond-mat", "cs", "math") matches the whole archive — its subject classes plus the legacy flat papers filed before the archive was subdivided. Note "physics" is the general-physics archive (physics.*), not the wider physics group: astro-ph, cond-mat, hep-*, quant-ph and the rest are separate archive codes. Use arxiv_list_categories to discover subject classes.
sort_orderNoSort direction. "descending" returns newest/most relevant first.descending
max_resultsNoMaximum results to return. Default 10. At most 50 are returned per call: a larger value returns the first 50, and when more matches exist the response says how to reach them — the start of the next page, or date windows once paging cannot reach them all. arXiv serves only the first 10000 results of a query, so a page reaching past result 10000 can come back cut short at it, and the response says so. Each result includes title, authors, abstract, and metadata — keep low to limit response size.
submitted_toNoLatest submission date to include, inclusive, as a UTC YYYY-MM-DD date. Omit for no upper bound. Both bounds are inclusive, so consecutive windows ("2024-01-01".."2024-01-15" then "2024-01-16".."2024-01-31") cover the matches with no gap; a paper submitted at exactly the midnight seam between two windows appears in both, so de-duplicate collected results by paper id. That is the way to reach matches past the start ceiling: split the date range, then page within each window.
submitted_fromNoEarliest submission date to include, inclusive, as a UTC YYYY-MM-DD date. Omit for no lower bound.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe page size applied: max_results, or 50 when max_results asks for more — fewer when the page was cut short at result 10000, the last one arXiv serves.
errorNoPresent when the call failed. Absent on success.
shownNoPapers returned on this page.
noticeNoRecovery guidance when results are empty or paging overshot. Absent on successful pages.
papersNoMatching papers with full metadata.
pageStartNoPagination offset of this result page.
truncatedNoTrue when more matching papers exist beyond this page (totalFound > start + shown).
totalFoundNoTotal matching papers reported by arXiv (before pagination).
effectiveQueryNoThe query as actually searched, carrying every filter applied — the category subtree and submitted-date window folded into arXiv syntax alongside the supplied terms. Replaying it as `query` with no other filters reproduces this exact result set.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the safety profile is already covered. The description adds that results are read-only metadata (title, authors, abstract, categories, links) but omits the operationally important limits documented only in the schema (50 results per call cap, 10000-result ceiling, paging cutoffs), so it adds modest value beyond structured fields.

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?

Two sentences, front-loaded with the action and scope, with no wasted words. It is arguably too terse given the tool's complexity, but nothing is redundant or padded.

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

Completeness4/5

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

With an output schema present, the description need not enumerate return values, and the input schema exhaustively covers pagination, date windows, and category semantics. The gap is the absence of sibling-routing guidance, which is minor for a straightforward search tool.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including the rich field-prefix and date-window semantics is already documented. The description only gestures at 'category and sort filters' and the returned fields, adding essentially nothing beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search arXiv papers') plus the filter dimensions (query, category, sort), which clearly separates it from arxiv_get_metadata, arxiv_read_paper, and arxiv_list_categories. It does not, however, explicitly contrast itself with those siblings, so an agent must infer the distinction from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use or when-not-to-use guidance: it never says to use this tool for discovery and arxiv_get_metadata/arxiv_read_paper for retrieval. The only routing hint ('Use arxiv_list_categories to discover subject classes') lives inside the category parameter schema, not the description.

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.

  1. 2 tool updates
    • Changedarxiv_read_paper1 field changed
      • changedOutput schema / properties / revision_unconfirmed / description
        Previous value: -"Present, true, when source is ar5iv: ar5iv keeps one render per paper whatever version is asked for, so the body may be another revision than paper_id, while pdf_url is exactly the paper_id revision. Absent for every other source, and for an unversioned read of a paper whose only version is v1."New value: +"Present, true, when source is ar5iv: ar5iv keeps one render per paper whatever version is asked for, so the body may be another revision than paper_id, while pdf_url is exactly the paper_id revision. Absent for every other source, and for an unversioned read where the arXiv API reported v1 as the only version of the paper."
    • Changedarxiv_search_papers1 field changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `unknown_category`: Provided category code is not part of the arXiv taxonomy. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429), typically malformed query syntax. `unsupported_query_syntax`: Query translates to a mirror FTS5 expression the search engine cannot parse, typically two operands juxtaposed across a parenthesized group without an explicit operator. `invalid_date_range`: submitted_from or submitted_to is not a real UTC calendar date, or the window starts after it ends. `start_beyond_result_limit`: start is 10000 or more on a search arXiv answers, past the first 10000 results it serves for any query. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_category`: Provided category code is not part of the arXiv taxonomy. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429), typically malformed query syntax. `unsupported_query_syntax`: The mirror search engine rejected the FTS5 expression the query translated to. Every query the translator accepts is meant to parse, so this marks a translator defect. `invalid_date_range`: submitted_from or submitted_to is not a real UTC calendar date, or the window starts after it ends. `start_beyond_result_limit`: start is 10000 or more on a search arXiv answers, past the first 10000 results it serves for any query. Other values are possible when a failure originates below the handler."
  2. 2 tool updates
    • Changedarxiv_get_metadata4 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_id`: None of the requested IDs is an arXiv identifier in an accepted form. `no_match`: None of the requested IDs returned data from arXiv. `version_unavailable`: Every requested ID pinned a version the local mirror does not hold, and live arXiv fallback is disabled. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_id`: None of the requested IDs is an arXiv identifier in an accepted form. `no_match`: None of the requested IDs returned data from arXiv. `version_unavailable`: Every requested ID pinned a version the local mirror does not hold, and live arXiv fallback is disabled. `version_not_served`: Every requested ID pinned a superseded version of a pre-2007 paper that arXiv's API answers HTTP 500 for. The version exists, but its metadata cannot be returned. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429). Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_id",
        -  "no_match",
        -  "version_unavailable",
        -  "rate_limited",
        -  "invalid_request"
        -]New value: +[
        +  "invalid_id",
        +  "no_match",
        +  "version_unavailable",
        +  "version_not_served",
        +  "rate_limited",
        +  "invalid_request"
        +]
      • changedOutput schema / properties / not_found / items / properties / reason / enum
        Previous value: -[
        -  "not_in_arxiv",
        -  "version_not_in_mirror",
        -  "invalid_id"
        -]New value: +[
        +  "not_in_arxiv",
        +  "version_not_in_mirror",
        +  "version_not_served",
        +  "live_lookup_failed",
        +  "invalid_id"
        +]
      • changedOutput schema / properties / papers / description
        Previous value: -"Papers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, or past the first 10 well-formed IDs."New value: +"Papers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, a version arXiv will not serve, one whose live lookup failed behind the local mirror, or past the first 10 well-formed IDs."
    • Changedarxiv_read_paper4 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_id`: paper_id is not an arXiv identifier in an accepted form. `no_match`: Paper ID is not present in the arXiv index. `content_unavailable`: Paper exists but neither arxiv.org/html nor ar5iv has an HTML rendering and arXiv served no PDF either. `pdf_extraction_failed`: Paper has no HTML rendering and its PDF carries no text layer — an image-only or scanned submission. `version_unavailable`: A version-pinned paper_id was requested, arXiv is unreachable, and the local mirror holds only a different version — per-version reads require the live API. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the metadata lookup (HTTP 4xx other than 429). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_id`: paper_id is not an arXiv identifier in an accepted form. `no_match`: Paper ID is not present in the arXiv index. `content_unavailable`: Paper exists but neither arxiv.org/html nor ar5iv has an HTML rendering and arXiv served no PDF either. `pdf_extraction_failed`: Paper has no HTML rendering and its PDF carries no text layer — an image-only or scanned submission. `version_unavailable`: A version-pinned paper_id was requested, arXiv is unreachable, and the local mirror holds only a different version — per-version reads require the live API. `version_not_served`: paper_id pins a superseded version of a pre-2007 paper that arXiv's API answers HTTP 500 for. The version exists, but its metadata cannot be returned. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the metadata lookup (HTTP 4xx other than 429). Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "invalid_id",
        -  "no_match",
        -  "content_unavailable",
        -  "pdf_extraction_failed",
        -  "version_unavailable",
        -  "rate_limited",
        -  "invalid_request"
        -]New value: +[
        +  "invalid_id",
        +  "no_match",
        +  "content_unavailable",
        +  "pdf_extraction_failed",
        +  "version_unavailable",
        +  "version_not_served",
        +  "rate_limited",
        +  "invalid_request"
        +]
      • addedOutput schema / properties / revision_unconfirmed
        Added value: +{
        +  "const": true,
        +  "description": "Present, true, when source is ar5iv: ar5iv keeps one render per paper whatever version is asked for, so the body may be another revision than paper_id, while pdf_url is exactly the paper_id revision. Absent for every other source, and for an unversioned read of a paper whose only version is v1.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Which upstream artifact the body was read from. arxiv_html and ar5iv are HTML renders; pdf_text is text extracted from the PDF, where prose is reliable but math, tables, and heading structure are flattened."New value: +"Which upstream artifact the body was read from. arxiv_html and ar5iv are HTML renders; pdf_text is text extracted from the PDF, where prose is reliable but math, tables, and heading structure are flattened. ar5iv keeps one render per paper, so an ar5iv body can be another revision than paper_id (see revision_unconfirmed)."
  3. 4 tool updates
    • Changedarxiv_get_metadata12 fields changed
      • removedInput schema / properties / paper_ids / anyOf
        Removed value: -[
        -  {
        -    "description": "Single arXiv paper ID (e.g., \"2401.12345\" or \"2401.12345v2\").",
        -    "minLength": 1,
        -    "type": "string"
        -  },
        -  {
        -    "description": "Array of up to 10 arXiv paper IDs for batch lookup.",
        -    "items": {
        -      "minLength": 1,
        -      "type": "string"
        -    },
        -    "maxItems": 10,
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]
      • changedInput schema / properties / paper_ids / description
        Previous value: -"arXiv paper ID or array of up to 10 IDs. Format: \"2401.12345\" or \"2401.12345v2\" (with version). Also accepts legacy IDs like \"hep-th/9901001\"."New value: +"arXiv paper IDs, up to 100. The first 10 well-formed IDs are looked up; the rest come back in remaining_ids to pass to the next call. Accepted forms: \"2401.12345\", \"2401.12345v2\" (a pinned version), or a pre-2007 ID like \"hep-th/9901001\" (archive spelled as arXiv issued it), each optionally prefixed \"arXiv:\", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment. An ID in any other form is reported in not_found with reason invalid_id and is not looked up."
      • addedInput schema / properties / paper_ids / items
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / paper_ids / maxItems
        Added value: +100
      • addedInput schema / properties / paper_ids / minItems
        Added value: +1
      • addedInput schema / properties / paper_ids / type
        Added value: +"array"
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `no_match`: None of the requested IDs returned data from arXiv. `version_unavailable`: Every requested ID pinned a version the local mirror does not hold, and live arXiv fallback is disabled. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429), e.g. malformed ID syntax. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_id`: None of the requested IDs is an arXiv identifier in an accepted form. `no_match`: None of the requested IDs returned data from arXiv. `version_unavailable`: Every requested ID pinned a version the local mirror does not hold, and live arXiv fallback is disabled. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429). Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "no_match",
        -  "version_unavailable",
        -  "rate_limited",
        -  "invalid_request"
        -]New value: +[
        +  "invalid_id",
        +  "no_match",
        +  "version_unavailable",
        +  "rate_limited",
        +  "invalid_request"
        +]
      • changedOutput schema / properties / not_found / items / properties / id / description
        Previous value: -"arXiv ID that returned no data."New value: +"Requested ID that returned no data — in canonical form when it was looked up, as sent when it is not an arXiv ID."
      • changedOutput schema / properties / not_found / items / properties / reason / enum
        Previous value: -[
        -  "not_in_arxiv",
        -  "version_not_in_mirror"
        -]New value: +[
        +  "not_in_arxiv",
        +  "version_not_in_mirror",
        +  "invalid_id"
        +]
      • changedOutput schema / properties / papers / description
        Previous value: -"Papers found. May be fewer than requested if some IDs are invalid."New value: +"Papers found, in request order. Fewer than requested when an ID is malformed, absent from arXiv, or past the first 10 well-formed IDs."
      • addedOutput schema / properties / remaining_ids
        Added value: +{
        +  "description": "Well-formed IDs past the first 10, in canonical form and request order, that this call did not look up. Pass them as paper_ids in the next call. Absent when every well-formed ID was looked up.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedarxiv_read_paper9 fields changed
      • changedInput schema / properties / paper_id / description
        Previous value: -"arXiv paper ID (e.g., \"2401.12345\" or \"2401.12345v2\")."New value: +"arXiv paper ID: \"2401.12345\", \"2401.12345v2\" (a pinned version), or a pre-2007 ID like \"hep-th/9901001\" (archive spelled as arXiv issued it), optionally prefixed \"arXiv:\", or an arxiv.org abs, pdf, or html URL, with or without https:// or a ?query or #fragment."
      • changedInput schema / properties / start / description
        Previous value: -"Character offset into the cleaned body to begin reading from. Defaults to 0. Use with max_characters to page through long papers — e.g., start=100000 with max_characters=100000 returns chars 100,000–199,999. The total length is reported as body_characters in the response."New value: +"Character offset into the cleaned body to begin reading from. Defaults to 0. Use with max_characters to page through long papers — e.g., start=100000 with max_characters=100000 returns chars 100,000–199,999 — or pass an outline entry's start to read from that heading. The total length is reported as body_characters in the response."
      • changedOutput schema / properties / content / description
        Previous value: -"Paper body for the requested slice — cleaned HTML when source is arxiv_html or ar5iv, plain text when source is pdf_text. Empty when start is past body_characters."New value: +"Paper body for the requested slice — the article as cleaned HTML, with relative image, object, and link URLs made absolute (in-page #fragment links stay as written), when source is arxiv_html or ar5iv; plain text when source is pdf_text. Empty when start is past body_characters."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `no_match`: Paper ID is not present in the arXiv index. `content_unavailable`: Paper exists but neither arxiv.org/html nor ar5iv has an HTML rendering and arXiv served no PDF either. `pdf_extraction_failed`: Paper has no HTML rendering and its PDF carries no text layer — an image-only or scanned submission. `version_unavailable`: A version-pinned paper_id was requested, arXiv is unreachable, and the local mirror holds only a different version — per-version reads require the live API. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the metadata lookup (HTTP 4xx other than 429), e.g. malformed ID syntax. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_id`: paper_id is not an arXiv identifier in an accepted form. `no_match`: Paper ID is not present in the arXiv index. `content_unavailable`: Paper exists but neither arxiv.org/html nor ar5iv has an HTML rendering and arXiv served no PDF either. `pdf_extraction_failed`: Paper has no HTML rendering and its PDF carries no text layer — an image-only or scanned submission. `version_unavailable`: A version-pinned paper_id was requested, arXiv is unreachable, and the local mirror holds only a different version — per-version reads require the live API. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the metadata lookup (HTTP 4xx other than 429). Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "no_match",
        -  "content_unavailable",
        -  "pdf_extraction_failed",
        -  "version_unavailable",
        -  "rate_limited",
        -  "invalid_request"
        -]New value: +[
        +  "invalid_id",
        +  "no_match",
        +  "content_unavailable",
        +  "pdf_extraction_failed",
        +  "version_unavailable",
        +  "rate_limited",
        +  "invalid_request"
        +]
      • addedOutput schema / properties / outline
        Added value: +{
        +  "description": "Section headings of the whole cleaned body in document order, each with the start that reads from it. Returned only when start is 0. Empty for pdf_text, whose text carries no reliable headings. At most 200 entries — see outline_omitted_levels and outline_continues_at.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A part, chapter, section, subsection, subsubsection, paragraph, appendix, or bibliography heading.",
        +    "properties": {
        +      "level": {
        +        "description": "Heading depth from its tag number minus one: h2 = 1, h3 = 2, and so on to h6 = 5.",
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "start": {
        +        "description": "Offset of the heading in the cleaned body. Pass as start to read from it.",
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "title": {
        +        "description": "Heading text with markup removed, e.g. \"3.1 Encoder and Decoder Stacks\"; cut at 120 characters.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "level",
        +      "title",
        +      "start"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / outline_continues_at
        Added value: +{
        +  "description": "Present when the shallowest heading level alone has more than 200 headings, so outline stops at its first 200: the start of the first heading left out. Pass it as start to read on from there.",
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / outline_omitted_levels
        Added value: +{
        +  "description": "Heading levels left out of outline because the paper has more than 200 headings, deepest first. Present only when levels were left out.",
        +  "items": {
        +    "maximum": 9007199254740991,
        +    "minimum": -9007199254740991,
        +    "type": "integer"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / total_characters / description
        Previous value: -"Character count of the body before cleaning — the unprocessed HTML body for arxiv_html and ar5iv, and equal to body_characters for pdf_text, which needs no cleaning."New value: +"Character count of the body before cleaning — the article HTML, without the site header and footer, for arxiv_html and ar5iv; equal to body_characters for pdf_text, which needs no cleaning."
    • Removedarxiv_search
    • Addedarxiv_search_papers
  4. 4 tool updates
    • Changedarxiv_get_metadata6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "papers",
        +      "totalSucceeded"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `no_match`: None of the requested IDs returned data from arXiv. `version_unavailable`: Every requested ID pinned a version the local mirror does not hold, and live arXiv fallback is disabled. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429), e.g. malformed ID syntax. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "no_match",
        +            "version_unavailable",
        +            "rate_limited",
        +            "invalid_request"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "papers",
        -  "totalSucceeded"
        -]
    • Changedarxiv_list_categories6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "categories",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode.",
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "categories",
        -  "totalCount"
        -]
    • Changedarxiv_read_paper6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "paper_id",
        +      "title",
        +      "content",
        +      "source",
        +      "truncated",
        +      "start",
        +      "total_characters",
        +      "body_characters",
        +      "pdf_url",
        +      "abstract_url"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `no_match`: Paper ID is not present in the arXiv index. `content_unavailable`: Paper exists but neither arxiv.org/html nor ar5iv has an HTML rendering and arXiv served no PDF either. `pdf_extraction_failed`: Paper has no HTML rendering and its PDF carries no text layer — an image-only or scanned submission. `version_unavailable`: A version-pinned paper_id was requested, arXiv is unreachable, and the local mirror holds only a different version — per-version reads require the live API. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the metadata lookup (HTTP 4xx other than 429), e.g. malformed ID syntax. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "no_match",
        +            "content_unavailable",
        +            "pdf_extraction_failed",
        +            "version_unavailable",
        +            "rate_limited",
        +            "invalid_request"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "paper_id",
        -  "title",
        -  "content",
        -  "source",
        -  "truncated",
        -  "start",
        -  "total_characters",
        -  "body_characters",
        -  "pdf_url",
        -  "abstract_url"
        -]
    • Changedarxiv_search6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "papers",
        +      "effectiveQuery",
        +      "totalFound",
        +      "pageStart"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `unknown_category`: Provided category code is not part of the arXiv taxonomy. `rate_limited`: arXiv has throttled requests (HTTP 429 or \"Rate exceeded.\" body). `invalid_request`: arXiv rejected the request (HTTP 4xx other than 429), typically malformed query syntax. `unsupported_query_syntax`: Query translates to a mirror FTS5 expression the search engine cannot parse, typically two operands juxtaposed across a parenthesized group without an explicit operator. `invalid_date_range`: submitted_from or submitted_to is not a real UTC calendar date, or the window starts after it ends. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "unknown_category",
        +            "rate_limited",
        +            "invalid_request",
        +            "unsupported_query_syntax",
        +            "invalid_date_range"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "papers",
        -  "effectiveQuery",
        -  "totalFound",
        -  "pageStart"
        -]
  5. 2 tool updates
    • Changedarxiv_read_paper10 fields changed
      • addedInput schema / properties / max_characters / anyOf
        Added value: +[
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": 1,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / max_characters / description
        Previous value: -"Maximum characters of paper body content to return. Defaults to 100,000. HTML head/boilerplate is stripped before counting. When truncated, a notice and total character count are included."New value: +"Maximum characters of paper body to return, counted after boilerplate stripping. Defaults to 100,000; pass null to return the entire body in one call. Whole-paper reads can exceed a client tool-result size cap — math-heavy bodies run 300KB-1MB+ — so prefer the default plus start-based paging unless the full text is needed. When truncated, a notice and the total character count are included."
      • removedInput schema / properties / max_characters / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / max_characters / minimum
        Removed value: -1
      • removedInput schema / properties / max_characters / type
        Removed value: -"integer"
      • changedOutput schema / properties / body_characters / description
        Previous value: -"Character count of the full cleaned body HTML. Use with start and max_characters to page. Typically 3-4× smaller than total_characters for math-heavy papers."New value: +"Character count of the full cleaned body. Use with start and max_characters to page. Typically 3-4× smaller than total_characters for math-heavy HTML papers."
      • changedOutput schema / properties / content / description
        Previous value: -"Cleaned paper body HTML for the requested slice. Empty when start is past body_characters."New value: +"Paper body for the requested slice — cleaned HTML when source is arxiv_html or ar5iv, plain text when source is pdf_text. Empty when start is past body_characters."
      • changedOutput schema / properties / source / description
        Previous value: -"Which HTML source the content was fetched from."New value: +"Which upstream artifact the body was read from. arxiv_html and ar5iv are HTML renders; pdf_text is text extracted from the PDF, where prose is reliable but math, tables, and heading structure are flattened."
      • changedOutput schema / properties / source / enum
        Previous value: -[
        -  "arxiv_html",
        -  "ar5iv"
        -]New value: +[
        +  "arxiv_html",
        +  "ar5iv",
        +  "pdf_text"
        +]
      • changedOutput schema / properties / total_characters / description
        Previous value: -"Character count of the original unprocessed HTML body."New value: +"Character count of the body before cleaning — the unprocessed HTML body for arxiv_html and ar5iv, and equal to body_characters for pdf_text, which needs no cleaning."
    • Changedarxiv_search6 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Filter results to a specific arXiv category (e.g., \"cs.CL\", \"math.AG\"). Use arxiv_list_categories to discover valid codes."New value: +"Restrict results to an arXiv category. A leaf code (\"cs.CL\", \"math.AG\") matches exactly. A bare archive code (\"astro-ph\", \"cond-mat\", \"cs\", \"math\") matches the whole archive — its subject classes plus the legacy flat papers filed before the archive was subdivided. Note \"physics\" is the general-physics archive (physics.*), not the wider physics group: astro-ph, cond-mat, hep-*, quant-ph and the rest are separate archive codes. Use arxiv_list_categories to discover subject classes."
      • changedInput schema / properties / query / description
        Previous value: -"Search query. Field prefixes: ti: (title), au: (author — token-based; quote multi-token names like au:\"hinton g\" or pair with a topical clause to disambiguate common surnames), abs: (abstract), cat: (category — exact code match, not fuzzy), co: (comment), jr: (journal ref), all: (all fields). Boolean operators: AND, OR, ANDNOT. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\"."New value: +"Search query. Field prefixes: ti: (title), au: (author — token-based; quote multi-token names like au:\"hinton g\" or pair with a topical clause to disambiguate common surnames), abs: (abstract), cat: (category — a leaf code matches exactly, a bare archive code such as cat:astro-ph matches its whole subtree), co: (comment), jr: (journal ref), all: (all fields). Boolean operators: AND, OR, ANDNOT. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\"."
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset (0-10000). Use with max_results to page through results. E.g., start=10 with max_results=10 returns results 11-20."New value: +"Pagination offset (0-10000). Use with max_results to page through results. E.g., start=10 with max_results=10 returns results 11-20. Matches beyond offset 10000 + max_results are unreachable by paging — carve the search into submitted_from/submitted_to windows and page within each."
      • addedInput schema / properties / submitted_from
        Added value: +{
        +  "description": "Earliest submission date to include, inclusive, as a UTC YYYY-MM-DD date. Omit for no lower bound.",
        +  "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
        +  "type": "string"
        +}
      • addedInput schema / properties / submitted_to
        Added value: +{
        +  "description": "Latest submission date to include, inclusive, as a UTC YYYY-MM-DD date. Omit for no upper bound. Both bounds are inclusive, so consecutive windows (\"2024-01-01\"..\"2024-01-15\" then \"2024-01-16\"..\"2024-01-31\") cover the matches with no gap; a paper submitted at exactly the midnight seam between two windows appears in both, so de-duplicate collected results by paper id. That is the way to reach matches past the start ceiling: split the date range, then page within each window.",
        +  "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
        +  "type": "string"
        +}
      • changedOutput schema / properties / effectiveQuery / description
        Previous value: -"The query as sent to arXiv after input normalization."New value: +"The query as actually searched, carrying every filter applied — the category subtree and submitted-date window folded into arXiv syntax alongside the supplied terms. Replaying it as `query` with no other filters reproduces this exact result set."
  6. 1 tool update
    • Changedarxiv_get_metadata2 fields changed
      • changedOutput schema / properties / not_found / items / description
        Previous value: -"A requested ID that arXiv did not return."New value: +"A requested ID that could not be returned, with the reason it was missed."
      • changedOutput schema / properties / not_found / items / properties / reason / enum
        Previous value: -[
        -  "not_in_arxiv"
        -]New value: +[
        +  "not_in_arxiv",
        +  "version_not_in_mirror"
        +]
  7. 1 tool update
    • Changedarxiv_search3 fields changed
      • addedOutput schema / properties / cap
        Added value: +{
        +  "description": "The max_results limit applied to this page.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / shown
        Added value: +{
        +  "description": "Papers returned on this page.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "description": "True when more matching papers exist beyond this page (totalFound > start + shown).",
        +  "type": "boolean"
        +}
  8. 2 tool updates
    • Changedarxiv_list_categories3 fields changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance when the group filter returns no categories.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / totalCount
        Added value: +{
        +  "description": "Total number of categories returned.",
        +  "type": "number"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "categories"
        -]New value: +[
        +  "categories",
        +  "totalCount"
        +]
    • Changedarxiv_search7 fields changed
      • addedOutput schema / properties / effectiveQuery
        Added value: +{
        +  "description": "The query as sent to arXiv after input normalization.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Recovery guidance when results are empty or paging overshot. Absent on successful pages.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pageStart
        Added value: +{
        +  "description": "Pagination offset of this result page.",
        +  "type": "number"
        +}
      • removedOutput schema / properties / start
        Removed value: -{
        -  "description": "Pagination offset of this result set.",
        -  "type": "number"
        -}
      • addedOutput schema / properties / totalFound
        Added value: +{
        +  "description": "Total matching papers reported by arXiv (before pagination).",
        +  "type": "number"
        +}
      • removedOutput schema / properties / total_results
        Removed value: -{
        -  "description": "Total matching papers (may exceed returned count due to pagination).",
        -  "type": "number"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "total_results",
        -  "start",
        -  "papers"
        -]New value: +[
        +  "papers",
        +  "effectiveQuery",
        +  "totalFound",
        +  "pageStart"
        +]

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables searching and retrieving academic papers from arXiv by various criteria including title, author, and category, with support for extracting full text content from PDFs.
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to search arXiv papers, retrieve metadata, browse categories, and read paper text.
    4
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables searching academic papers on arXiv and retrieving detailed information such as title, authors, summary, and PDF link.
    1
    6
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables searching arXiv papers and retrieving full paper content as Markdown, with smart sorting, category filtering, and pagination.
    10
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.