Skip to main content
Glama

Arxiv Search Papers

arxiv_search_papers
Read-only

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

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "query": "<query>"
    },
    "name": "arxiv_search_papers"
  }
}

Input Schema

NameRequiredDescriptionDefault
queryYesSearch query. Field prefixes: ti: (title), au: (author — search the surname and narrow a common one with a category or topic: au:hinton AND cat:cs.LG; a quoted name such as au:"geoffrey hinton" matches when one author's name holds every quoted word, in any order, and an initial does not match a spelled-out first name), abs: (abstract), cat: (category — a leaf code matches exactly, an alias code such as cat:cs.NA matches its canonical code, math.NA, and a bare archive code such as cat:astro-ph matches its whole subtree), co: (comment), jr: (journal ref), all: (all fields). Boolean operators, uppercase only: AND, OR, ANDNOT. Space-separated terms are joined with OR, so "quantum computing" matches papers with either word; AND requires every term ("quantum AND computing"). The operators share one precedence and group to the right ("a AND b OR c" reads as "a AND (b OR c)"), so use parentheses for any other grouping. Quote a multi-word topic to match it as a phrase, and put alternatives in parentheses before a filter so the filter applies to all of them: '"graph neural networks" AND cat:cs.LG', '(ti:transformer OR ti:attention) AND cat:cs.CL'. arXiv ignores common words such as of, the, and, for, in, so leave them out or keep them inside a quoted phrase. 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. An alias code matches the papers of the canonical code arXiv lists in its place: "cs.NA" matches math.NA, "cs.SY" eess.SY, "math.IT" cs.IT, "math.MP" math-ph, "stat.TH" math.ST, "q-fin.EC" econ.GN. 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 — and the canonical codes of the aliases in it, so "cs" also matches math.NA and eess.SY. 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

NameRequiredDescriptionDefault
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 before pagination. Exact, except for a search the local mirror answers with no free-text term that spans several category codes (a whole archive such as cat:cs, or two categories) or filters by submitted date alone: the mirror stops counting such a search at 50,000, and a total of 50,000 there carries totalFoundIsLowerBound and means 50,000 or more.
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.
totalFoundIsLowerBoundNoPresent when totalFound is a floor: at least that many papers match. Absent when totalFound is exact.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / category / description
      Previous 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."New value: +"Restrict results to an arXiv category. A leaf code (\"cs.CL\", \"math.AG\") matches exactly. An alias code matches the papers of the canonical code arXiv lists in its place: \"cs.NA\" matches math.NA, \"cs.SY\" eess.SY, \"math.IT\" cs.IT, \"math.MP\" math-ph, \"stat.TH\" math.ST, \"q-fin.EC\" econ.GN. 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 — and the canonical codes of the aliases in it, so \"cs\" also matches math.NA and eess.SY. 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 — search the surname and narrow a common one with a category or topic: au:hinton AND cat:cs.LG; a quoted name such as au:\"geoffrey hinton\" matches when one author's name holds every quoted word, in any order, and an initial does not match a spelled-out first name), 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, uppercase only: AND, OR, ANDNOT. Space-separated terms are joined with OR, so \"quantum computing\" matches papers with either word; AND requires every term (\"quantum AND computing\"). The operators share one precedence and group to the right (\"a AND b OR c\" reads as \"a AND (b OR c)\"), so use parentheses for any other grouping. Quote a multi-word topic to match it as a phrase, and put alternatives in parentheses before a filter so the filter applies to all of them: '\"graph neural networks\" AND cat:cs.LG', '(ti:transformer OR ti:attention) AND cat:cs.CL'. arXiv ignores common words such as of, the, and, for, in, so leave them out or keep them inside a quoted phrase. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\"."New value: +"Search query. Field prefixes: ti: (title), au: (author — search the surname and narrow a common one with a category or topic: au:hinton AND cat:cs.LG; a quoted name such as au:\"geoffrey hinton\" matches when one author's name holds every quoted word, in any order, and an initial does not match a spelled-out first name), abs: (abstract), cat: (category — a leaf code matches exactly, an alias code such as cat:cs.NA matches its canonical code, math.NA, and a bare archive code such as cat:astro-ph matches its whole subtree), co: (comment), jr: (journal ref), all: (all fields). Boolean operators, uppercase only: AND, OR, ANDNOT. Space-separated terms are joined with OR, so \"quantum computing\" matches papers with either word; AND requires every term (\"quantum AND computing\"). The operators share one precedence and group to the right (\"a AND b OR c\" reads as \"a AND (b OR c)\"), so use parentheses for any other grouping. Quote a multi-word topic to match it as a phrase, and put alternatives in parentheses before a filter so the filter applies to all of them: '\"graph neural networks\" AND cat:cs.LG', '(ti:transformer OR ti:attention) AND cat:cs.CL'. arXiv ignores common words such as of, the, and, for, in, so leave them out or keep them inside a quoted phrase. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\"."
  2. Changed3 schema fields changed
    • 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 — 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, uppercase only: AND, OR, ANDNOT. Space-separated terms are joined with OR, so \"quantum computing\" matches papers with either word; AND requires every term (\"quantum AND computing\"). The operators share one precedence and group to the right (\"a AND b OR c\" reads as \"a AND (b OR c)\"), so use parentheses for any other grouping. Quote a multi-word topic to match it as a phrase, and put alternatives in parentheses before a filter so the filter applies to all of them: '\"graph neural networks\" AND cat:cs.LG', '(ti:transformer OR ti:attention) AND cat:cs.CL'. arXiv ignores common words such as of, the, and, for, in, so leave them out or keep them inside a quoted phrase. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\"."New value: +"Search query. Field prefixes: ti: (title), au: (author — search the surname and narrow a common one with a category or topic: au:hinton AND cat:cs.LG; a quoted name such as au:\"geoffrey hinton\" matches when one author's name holds every quoted word, in any order, and an initial does not match a spelled-out first name), 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, uppercase only: AND, OR, ANDNOT. Space-separated terms are joined with OR, so \"quantum computing\" matches papers with either word; AND requires every term (\"quantum AND computing\"). The operators share one precedence and group to the right (\"a AND b OR c\" reads as \"a AND (b OR c)\"), so use parentheses for any other grouping. Quote a multi-word topic to match it as a phrase, and put alternatives in parentheses before a filter so the filter applies to all of them: '\"graph neural networks\" AND cat:cs.LG', '(ti:transformer OR ti:attention) AND cat:cs.CL'. arXiv ignores common words such as of, the, and, for, in, so leave them out or keep them inside a quoted phrase. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\"."
    • changedOutput schema / properties / papers / items / properties / published / description
      Previous value: -"Original submission date (ISO 8601)."New value: +"Original submission instant, ISO 8601 UTC (e.g., \"2018-10-11T00:50:01Z\")."
    • changedOutput schema / properties / papers / items / properties / updated / description
      Previous value: -"Last update date (ISO 8601)."New value: +"Last update instant, ISO 8601 UTC (e.g., \"2018-10-11T00:50:01Z\")."
  3. Changed3 schema fields changed
    • 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 — 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\"."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, uppercase only: AND, OR, ANDNOT. Space-separated terms are joined with OR, so \"quantum computing\" matches papers with either word; AND requires every term (\"quantum AND computing\"). The operators share one precedence and group to the right (\"a AND b OR c\" reads as \"a AND (b OR c)\"), so use parentheses for any other grouping. Quote a multi-word topic to match it as a phrase, and put alternatives in parentheses before a filter so the filter applies to all of them: '\"graph neural networks\" AND cat:cs.LG', '(ti:transformer OR ti:attention) AND cat:cs.CL'. arXiv ignores common words such as of, the, and, for, in, so leave them out or keep them inside a quoted phrase. Examples: \"au:bengio AND ti:attention\", \"all:transformer AND cat:cs.CL\"."
    • changedOutput schema / properties / totalFound / description
      Previous value: -"Total matching papers reported by arXiv (before pagination)."New value: +"Total matching papers before pagination. Exact, except for a search the local mirror answers with no free-text term that spans several category codes (a whole archive such as cat:cs, or two categories) or filters by submitted date alone: the mirror stops counting such a search at 50,000, and a total of 50,000 there carries totalFoundIsLowerBound and means 50,000 or more."
    • addedOutput schema / properties / totalFoundIsLowerBound
      Added value: +{
      +  "const": true,
      +  "description": "Present when totalFound is a floor: at least that many papers match. Absent when totalFound is exact.",
      +  "type": "boolean"
      +}
  4. Changed1 schema 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."
  5. Added

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true already declares the safety profile, so the description adds only a return-content summary. The genuinely important behaviors — the 50-results-per-call cap, the 10,000-result arXiv ceiling, and the date-window workaround — live in the parameter descriptions rather than the tool description, and the cap in particular is a surprise an agent should have flagged up front.

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 operation and its filters — efficient and easy to scan. The second sentence restates the return payload, which an output schema already supplies, so it is mild redundancy rather than waste.

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

Completeness3/5

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

For an 8-parameter tool with non-obvious paging limits and query syntax, two sentences is thin, and the caller would not learn from the description that results are capped at 50. It is rescued from inadequacy only by an output schema and exceptionally rich parameter descriptions that carry the real semantics.

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% and the parameter docs are unusually detailed (query field prefixes, Boolean precedence, alias category codes, paging seams). The description adds essentially nothing beyond naming the category and sort filters, so the schema does all the work — baseline 3.

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 gives a specific verb and resource ("Search arXiv papers") plus the two narrowing facets (category, sort). It is clearly distinct from arxiv_read_paper and arxiv_get_metadata by name and function, but it never explicitly names those siblings to route the agent, so it stops 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.

Usage Guidelines3/5

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

Usage is only implied by the phrase "by query with category and sort filters" — the agent must infer this is the discovery tool versus the id-based arxiv_get_metadata or arxiv_read_paper. No when-not-use conditions, no mention of the category-discovery sibling, and no guidance on choosing between this and the metadata lookup.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.