Skip to main content
Glama
blazickjp

ArXiv MCP Server

by blazickjp

arxiv-mcp-server

PyPI Downloads License MCP Registry Tests GitHub stars

Install in VS Code Install MCP Server Add to Kiro Claude Code OpenAI Codex Hermes Agent

A local MCP server for agent literature work. The differentiator is original-LaTeX section reads, BibTeX from arXiv metadata, and topic watches. Papers stay on disk. The working loop is paper ID → outline → one section → citations. Search is optional.

Install

The default install is uvx arxiv-mcp-server. Command-based integrations need uv, which provides uvx. No repository clone or Python environment setup is required.

uvx arxiv-mcp-server

Add this stdio configuration to clients that accept the mcpServers JSON shape, such as Claude Desktop and Kiro. Other clients may use a top-level servers object, TOML, or their own settings UI; consult the client's MCP documentation.

{
  "mcpServers": {
    "arxiv": {
      "type": "stdio",
      "command": "uvx",
      "args": ["arxiv-mcp-server"]
    }
  }
}

The default paper directory is ~/.arxiv-mcp-server/papers. To choose another directory, append "--storage-path", "/absolute/path/to/papers" to args.

The supported package is published on PyPI as arxiv-mcp-server==0.7.2. An unrelated npm package uses the same name, so do not install this server with npm, pnpm, or npx arxiv-mcp-server.

Listed on the official MCP registry, latest 0.7.2.

Related MCP server: arxiv-mcp

Why this is not a search wrapper

Search, source retrieval, citation graphs, and downloads call their respective external services. What stays local is the literature loop: read author-submitted LaTeX one section at a time, export BibTeX from authoritative arXiv metadata, and keep topic watches on disk. The server runs locally over stdio by default.

Use the default JSON above unless your client has a one-line helper.

Claude Code

Add the MCP server for all projects:

claude mcp add --transport stdio --scope user arxiv -- uvx arxiv-mcp-server

For the richer plugin integration—which installs the MCP connection plus the bundled arXiv research skill—register this repository as a marketplace and install the plugin:

claude plugin marketplace add blazickjp/arxiv-mcp-server
claude plugin install arxiv-mcp-server@arxiv-mcp

Verify the direct MCP installation with claude mcp get arxiv. Restart Claude Code or run /reload-plugins after installing the plugin.

OpenAI Codex

Add the MCP server:

codex mcp add arxiv -- uvx arxiv-mcp-server

Or install the MCP connection and bundled research skill as a Codex plugin:

codex plugin marketplace add blazickjp/arxiv-mcp-server
codex plugin add arxiv-mcp-server@arxiv-mcp

Verify the direct MCP installation with codex mcp get arxiv. Codex CLI, the Codex IDE extension, and Codex in the ChatGPT desktop app share this MCP configuration.

Hermes Agent

Hermes Agent

Add the server, approve the discovered tools, and test the saved connection:

hermes mcp add arxiv --command uvx --args arxiv-mcp-server
hermes mcp test arxiv

VS Code and Kiro

Install in VS Code Install MCP Server Add to Kiro

For the richer Kiro Power integration, open the Powers panel, choose Add Custom Power → Import power from GitHub, and enter:

https://github.com/blazickjp/arxiv-mcp-server

The Power installs the MCP connection from mcp.json and adds focused arXiv research guidance. Kiro users who prefer manual configuration can place the generic configuration above in .kiro/settings/mcp.json for one workspace or ~/.kiro/settings/mcp.json for all workspaces.

Claude Desktop bundle

macOS users can install a bundled .mcpb extension from the v0.7.2 release or the latest GitHub release:

Double-click the bundle, drag it into Claude Desktop, or open Settings → Extensions → Advanced settings → Install Extension…. The bundle includes the server dependencies and requires CPython 3.11.x.

Other MCP clients

Other clients may use a top-level servers object, TOML, or their own settings UI; consult the client MCP documentation. Direct MCP installation is the shortest path. Install a plugin when you also want the research workflow that steers the client toward focused searches, bounded reads, citation traversal, and section-level LaTeX retrieval.

Plugin manifests

The same MCP server and research skill are packaged for both major plugin systems:

Integration

Manifest

Marketplace

Claude Code

.claude-plugin/plugin.json

.claude-plugin/marketplace.json

OpenAI Codex / ChatGPT Work

.codex-plugin/plugin.json

.agents/plugins/marketplace.json

Kiro Power

POWER.md

mcp.json

Shared MCP launch

.mcp.json for Claude and repository-local clients; .codex-mcp.json for Codex plugins

uvx arxiv-mcp-server

Shared research workflow

skills/arxiv-mcp-server/SKILL.md

Installed with either plugin

If a desktop client cannot find uvx

Desktop applications do not always inherit the same PATH as your terminal. If uvx arxiv-mcp-server works in a terminal but the client reports that the server failed to connect, find the executable's absolute path:

# macOS and Linux
command -v uvx
# Windows PowerShell
(Get-Command uvx).Source

Replace "command": "uvx" with the returned absolute path, then restart the client. Keep the args value unchanged.

If an existing installation is missing newer tools

uvx reuses cached tool environments. Force it to resolve the current PyPI release with a supported interpreter, then restart your MCP client:

uvx --python 3.11 --refresh-package arxiv-mcp-server arxiv-mcp-server

If your client still launches an older environment, add "--python", "3.11" before "arxiv-mcp-server" in its args array.

Persistent command install

To place arxiv-mcp-server on your PATH instead of launching it through uvx:

uv tool install arxiv-mcp-server

If the command is not immediately available, run uv tool update-shell and restart the terminal. Afterward, use "command": "arxiv-mcp-server" and omit the package name from args.

Tools

The server currently exposes 19 tools.

Tool

Purpose

Notes

search_papers

Search arXiv by query, category, date, and sort order

Default ≤5 compact results (abstract_mode=snippet); remote arXiv API

get_abstract

Fetch metadata and an abstract by arXiv ID

Does not download the paper

download_paper

Download and convert a paper to local Markdown

HTML first; PDF fallback uses [pdf]; force=true re-fetches; content bounded to 12,000 chars by default

list_papers

List papers stored locally

Returns id, title, authors, published; compact for IDs only

read_paper

Read locally stored paper content

Bounded to 12,000 chars by default; supports start/max_chars/return_full_text

get_paper_outline

Paginated markdown heading outline

Stable hierarchical section IDs

read_paper_section

Read one bounded markdown section

By outline ID or unique title

search_paper_text

Bounded passage search in a paper

Source offsets; no Torch required

get_paper_latex

Retrieve bounded author-submitted LaTeX

Remote arXiv source archive

list_paper_latex_sections

Return a paginated LaTeX outline

Supports start and max_sections

get_paper_latex_section

Read one bounded LaTeX section

Select by outline ID or exact title

citation_graph

Fetch references and citing papers

Remote Semantic Scholar API (1 call per paper, cached on disk); optional free API key improves reliability

export_citations

Export BibTeX for one or more arXiv IDs

Authoritative arXiv metadata

watch_topic

Save or update an arXiv topic watch

Stored locally; omit categories to preserve on update, categories: [] to clear

list_watches

List saved topic watches

Read-only; does not advance last_checked

check_alerts

Check saved watches for new papers

Returns papers since the last check

unwatch_topic

Delete a saved topic watch

Exact topic match; not-found if missing

semantic_search

Search downloaded papers by semantic similarity

Requires [pro]

reindex

Rebuild the local semantic index

Requires [pro]

Research alerts (watch_topic)

Save standing topic watches with watch_topic, inspect them with list_watches, poll with check_alerts, and remove with unwatch_topic.

When updating an existing watch (same topic string):

  • Omit categoriespreserve the stored category filters (and other fields you leave unchanged).

  • Pass categories: []clear category filters.

  • Pass a non-empty list → replace the stored filters.

Create path: omitting categories stores an empty list (no category filter).

search_papers query guide

Tool schemas stay short on purpose. Use this section (not the always-loaded MCP description) for query tutorials, category catalogs, and workflow examples.

Query construction

  • Use quoted phrases for exact matches: "multi-agent systems", "neural networks"

  • Combine related concepts with OR: "AI agents" OR "software agents"

  • Field-specific searches: ti:"exact title phrase", au:"author name", abs:"keyword", cat:cs.LG

  • Exclude with ANDNOT: "machine learning" ANDNOT "survey"

  • Prefer 2–4 core concepts over long keyword lists

Advanced patterns

  • Field + phrase: ti:"transformer architecture"

  • Multiple fields: au:"Smith" AND ti:"quantum"

  • Exclusions: "deep learning" ANDNOT ("survey" OR "review")

  • Broad + narrow: "artificial intelligence" AND (robotics OR "computer vision")

Category filtering (recommended for relevance)

Computer Science: cs.AI (AI), cs.LG (ML), cs.CL (NLP), cs.CV (vision), cs.MA (multi-agent), cs.RO (robotics), cs.NE (neural/evolutionary), cs.IR (IR), cs.HC (HCI), cs.CR (security), cs.DB (databases)

Statistics & Math: stat.ML, stat.AP, math.OC, math.ST

Physics & other: quant-ph, eess.SP, eess.AS, physics.data-an

Effective examples

  • ti:"reinforcement learning" with categories: ["cs.LG", "cs.AI"]

  • au:"Hinton" AND "deep learning" with categories: ["cs.LG"]

  • "multi-agent" ANDNOT "survey" with categories: ["cs.MA"]

  • abs:"transformer" AND ti:"attention" with categories: ["cs.CL"]

Dates and sorting

  • Dates use YYYY-MM-DD (date_from / date_to)

  • Default sort_by is relevance; use date for newest-first monitoring

  • Foundational work: date_to: "2010-12-31" with title/abstract field searches

Result size, abstracts, and pagination

  • Default max_results is 5 (cap 50). Pass an explicit value for larger pages.

  • abstract_mode: snippet (default, ~280 chars, marked … [truncated] when cut), full (complete abstract), or none (omit abstracts). Other metadata (title, authors, categories, dates, URLs) is always returned.

  • Responses report total_results (corpus hits), returned, has_more, start, next_start, and abstract_mode

  • Pass start=next_start with the same abstract_mode for the next page

  • arXiv enforces ~3 seconds between requests (handled server-side); on rate-limit errors wait ~60s

Search and inspect a paper

Ask your MCP client to call search_papers with:

{
  "query": "\"Kolmogorov-Arnold Networks\"",
  "categories": ["cs.LG", "cs.AI"],
  "sort_by": "date"
}

Defaults return up to five compact results with abstract snippets. Use "abstract_mode": "full" when you need complete abstracts in the search response, or call get_abstract for a single paper after a compact search:

{
  "paper_id": "2404.19756"
}

Do not call get_abstract again for papers already returned with abstract_mode=full.

Download and read full text

Call download_paper with:

{
  "paper_id": "2404.19756"
}

Omitting max_chars returns a bounded first chunk (default 12,000 paper characters). Cached papers are returned immediately. Pass "force": true to re-download and overwrite the local markdown and sidecar (also happens automatically when the HTML extractor version changes).

Then page through the cached content with read_paper:

{
  "paper_id": "2404.19756",
  "start": 0
}

Or continue from a prior chunk:

{
  "paper_id": "2404.19756",
  "start": 12000
}

Large-content responses include content_length, returned_chars, next_start, is_truncated, and (when truncated) next_retrieval with the next-call instruction. Pass next_start into the next call's start to continue reading. Pass an explicit max_chars to override the default chunk size, or "return_full_text": true to opt into the previous unbounded full-paper response.

Migration notes (bounded content default)

Previously, omitting max_chars on download_paper / read_paper returned the entire paper. That default is now a 12,000-character chunk so a single MCP tool call cannot flood the client context window.

Need

Call

First bounded chunk (new default)

{ "paper_id": "…" }

Continue reading

{ "paper_id": "…", "start": <next_start> }

Custom chunk size

{ "paper_id": "…", "max_chars": 5000 }

Old unbounded behavior

{ "paper_id": "…", "return_full_text": true }

Clients that already passed max_chars are unchanged. Only callers that relied on the omitted-max_chars = full-text behavior need to add return_full_text: true or page via next_start.

Read original LaTeX by section

Call get_paper_latex with:

{
  "paper_id": "1706.03762"
}

Get the first page of its section outline with list_paper_latex_sections:

{
  "paper_id": "1706.03762",
  "start": 0,
  "max_sections": 100
}

Then call get_paper_latex_section using an ID from that outline:

{
  "paper_id": "1706.03762",
  "section_id": "3.2",
  "max_chars": 12000
}

LaTeX archives are validated, size-limited, and cached locally before content is returned.

Optional dependencies

Choose the install variant that matches the features you need:

# Base server
uv tool install arxiv-mcp-server

# Base server plus PDF conversion
uv tool install "arxiv-mcp-server[pdf]"

# Base server plus local semantic search
uv tool install "arxiv-mcp-server[pro]"

If the base tool is already installed, reinstall the selected variant:

uv tool install --force "arxiv-mcp-server[pdf]"

The pdf extra installs pymupdf4llm and pymupdf-layout for papers without usable arXiv HTML. The pro extra adds local embedding dependencies for semantic_search and reindex; semantic search only operates on papers already downloaded to the configured storage directory.

For older papers that require PDF conversion, run the package with its PDF extra:

{
  "mcpServers": {
    "arxiv": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "arxiv-mcp-server[pdf]",
        "arxiv-mcp-server"
      ]
    }
  }
}

Built-in prompts

The server provides seven MCP prompt workflows. Prompt availability depends on the client; the server provides workflow instructions but does not run a separate model.

Prompt

Required arguments

Purpose

research-discovery

topic

Map terminology, searches, papers, research clusters, and a reading path

deep-paper-analysis

paper_id

Analyze one paper in depth

summarize_paper

paper_id

Summarize methods, results, and limitations

compare_papers

paper_ids

Compare multiple papers

literature_review

topic

Synthesize a topic and optional paper set

literature-synthesis

paper_ids

Synthesize themes, methods, timelines, or gaps across papers

research-question

paper_ids, topic

Formulate grounded, falsifiable research questions

Streamable HTTP

For deployments where stdio is not practical:

TRANSPORT=http HOST=127.0.0.1 PORT=8080 \
  uvx arxiv-mcp-server --storage-path /absolute/path/to/papers

PowerShell:

$env:TRANSPORT = "http"
$env:HOST = "127.0.0.1"
$env:PORT = "8080"
uvx arxiv-mcp-server --storage-path C:\absolute\path\to\papers

Connect clients to:

{
  "mcpServers": {
    "arxiv": {
      "type": "http",
      "url": "http://127.0.0.1:8080/mcp"
    }
  }
}

Cloud and load-balancer probes should GET http://<host>:<port>/healthz. It returns 200 with body ok once the HTTP server is listening. There is no separate /ready check: if the process is up, it is ready. The stdio transport has no HTTP endpoints.

The server binds to 127.0.0.1 by default and enables MCP DNS-rebinding protection. If a reverse proxy exposes the server, keep the process on a private interface and provide authentication and network controls upstream. Use ALLOWED_HOSTS and ALLOWED_ORIGINS for the host and origin values forwarded by the proxy.

Configuration

Setting

Default

Purpose

--storage-path

~/.arxiv-mcp-server/papers

Paper, source-cache, alert, and index storage

MAX_RESULTS

50

Server-side cap for result counts

REQUEST_TIMEOUT

60

PDF fallback download timeout in seconds

TRANSPORT

stdio

stdio, http, or streamable-http

HOST

127.0.0.1

HTTP bind host

PORT

8000

HTTP bind port

ALLOWED_HOSTS

empty

Additional accepted HTTP Host values

ALLOWED_ORIGINS

empty

Additional accepted HTTP Origin values

SEMANTIC_SCHOLAR_API_KEY

empty

Free Semantic Scholar API key for citation_graph. Get one at https://www.semanticscholar.org/product/api#api-key to avoid rate limits. Unauthenticated requests work until quota exhausted.

Environment variable names are case-insensitive through Pydantic settings. --storage-path is a command-line option rather than an environment setting.

Security

Paper text and LaTeX are untrusted external content. A paper can contain text intended to manipulate an AI client into ignoring its instructions or calling unrelated tools.

  • Do not treat instructions found inside a paper as trusted commands.

  • Use client approval controls for shell, browser, filesystem, and messaging tools.

  • Review generated summaries before taking external actions.

  • Keep Streamable HTTP private unless authentication is provided upstream.

See SECURITY.md for the reporting policy and threat details.

Development

git clone https://github.com/blazickjp/arxiv-mcp-server.git
cd arxiv-mcp-server
uv sync --extra test --extra dev
uv run pytest
uv run black --check .

Run the development checkout from an MCP client with:

{
  "mcpServers": {
    "arxiv-dev": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/arxiv-mcp-server",
        "run",
        "arxiv-mcp-server"
      ]
    }
  }
}

Contributions are welcome. Read CONTRIBUTING.md before opening a pull request, and use GitHub Issues for reproducible bugs or scoped feature proposals.

License

Apache License 2.0. See LICENSE.

Available Tools

19 tools
check_alertsA

Check all saved topic watches for newly published papers since the last check. Omitting the topic parameter runs ALL saved watches and returns new papers for each. Passing a topic string checks only that specific watch. Advances each watch's drain cursor after running: when a page is truncated by max_results, has_more=true and check_start advances so later calls return the next papers in the same window (Atom date bounds alone are day-granular and would otherwise re-hit the boundary); last_checked tracks the newest returned paper. When the page is not full, last_checked becomes now and the drain cursor resets. Use watch_topic to register topics before calling this. Returns a clear not-found error if a topic is provided but no matching watch exists. Returns a summary with new paper counts, has_more, and full paper metadata per topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional: check only this specific watched topic (must match the topic string used in watch_topic exactly). Omit to check all saved watches.

TDQS

A4.6/5.0
Behavior5/5

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

The description extensively discloses nontrivial behavioral details: the drain cursor advances, has_more/check_start/last_checked semantics, truncation behavior, cursor reset conditions, and not-found errors. These go far beyond the annotations, which only indicate non-read-only and non-idempotent behavior.

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?

Although the description is long, every sentence contributes operational detail: purpose, parameter behavior, cursor mechanics, prerequisites, error cases, and return summary. It is front-loaded with the core purpose and the rest earns its place.

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

Completeness5/5

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

Given the single optional parameter, no output schema, and stateful behavior, the description is remarkably complete. It explains how the tool mutates internal state across calls, what the client can expect in terms of pagination, error semantics, and the response summary.

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

Parameters4/5

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

Even though the schema already describes the topic parameter with 100% coverage, the description adds crucial semantic nuance: omission runs all watches, a topic string must match exactly, and calling with a nonexistent topic yields a clear error. This meaningfully extends the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Check all saved topic watches for newly published papers since the last check.' It clearly distinguishes itself from sibling tools like watch_topic and search_papers by centering on alerting for saved watched topics, not general search or watch creation.

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?

The description gives clear operational context: when to use it (checking saved watches for new papers) and a prerequisite ('Use watch_topic to register topics before calling'). It lacks explicit comparisons to alternatives, but the intended usage is unambiguous.

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

citation_graphA
Read-only

Return papers citing an arXiv paper and papers that it references using Semantic Scholar's citation graph. Results are bounded (default 50) to stay within the unauthenticated quota. Under load, export SEMANTIC_SCHOLAR_API_KEY for a higher limit; without a key, persistent rate limits return status=rate_limited instead of failing hard.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYesarXiv ID (for example: 2401.12345).
max_citationsNoMaximum citations and references to return (default 50).

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description reveals concrete behavior: results are bounded by default to stay within the unauthenticated quota, an API key can raise the limit, and persistent rate limits return status=rate_limited instead of failing hard. These are valuable, non-obvious behavioral details from the agent's perspective.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states exactly what the tool returns, and the second covers the important operational constraints. There is no filler or repetition of structured metadata.

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 no output schema, the description provides enough about the return set ('papers citing' and 'papers referenced') and the special status behavior. It could also mention how max_citations applies to each citation/reference grouping, but the core context needed to select and invoke the tool is present.

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?

The input schema already fully documents both parameters, including the default of 50 for max_citations. The description does not add significant new parameter-level semantics beyond reminding the caller about quota/rate-limit context, so the baseline for high schema coverage is appropriate.

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

Purpose5/5

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

The description states a clear verb and resource: 'return papers citing an arXiv paper and papers that it references' using Semantic Scholar's citation graph. It names both the input kind (arXiv paper) and the operation, making the tool separable from sibling tools like list_papers or search_papers at a glance.

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?

The description implies the tool is for citation and reference graph traversal, which is a clear use case, but it does not explicitly contrast it with sibling tools like export_citations or search_papers. The operational context about rate limits is useful, but the 'when to use this instead of that' guidance is only implied, not stated.

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

download_paperA

Download a paper from arXiv and return its text content. Tries the HTML version first for clean extraction; falls back to PDF conversion if HTML is unavailable. Stores the paper locally. Returned text is bounded to roughly 12,000 characters by default so one call cannot return an unbounded paper body. When is_truncated is true, call again with start=next_start (see next_retrieval) to continue, or pass return_full_text=true for the entire remaining paper. Set force=true to re-fetch and overwrite a cached paper (required to replace a newer stored arXiv version with an older one).

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoIf true, re-download and overwrite the local markdown and metadata sidecar even if the paper is already cached, including when replacing a newer stored arXiv version with an older one. Default false.
startNoZero-based character offset for returning large papers in chunks; pass next_start from a prior truncated response to continue
paper_idYesThe arXiv ID of the paper to download (e.g. '2103.12345')
max_charsNoMaximum raw paper characters to return from start; omit for the bounded default (12,000 chars)
return_full_textNoSet true to opt out of the bounded default and return the entire remaining paper from start in one call

TDQS

A4.6/5.0
Behavior5/5

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

The annotations only say readOnlyHint=false and openWorldHint=true, so the description carries the burden for behavior. It discloses meaningful side effects: it stores locally, permits overwriting cached versions, and can return truncated paginated responses. It also explains fallback behavior between HTML and PDF conversion, which annotations cannot capture.

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?

The description is compact and front-loads the core action before diving into edge cases. Every sentence earns its place; the pagination, cache overwrite, and full-text options are all tightly packed without rambling.

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

Completeness5/5

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

Given there is no output schema, the description adequately covers what an agent needs for correct invocation: return length cap, truncation behavior, continuation semantics, and cache invalidation. The operational contract is complete enough to use the tool without additional research.

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

Parameters4/5

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

The input schema already documents all parameters with 100% coverage, so the baseline is 3. The description adds value beyond schema by explaining the bounded default (~12,000 chars), the interaction between start and next_retrieval, and the real-world use at force=true. This raises it slightly above baseline.

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

Purpose5/5

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

The description states a specific verb ('download'), a precise resource ('a paper from arXiv'), and the delivered output ('text content'). It clearly explains retrieval strategy (HTML first, PDF fallback) and local storage, making the tool's purpose distinguishable from simple reading siblings like read_paper.

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?

The description gives clear operational guidance: how to handle truncated results with start and return_full_text, and when force=true is needed to overwrite a cached paper. It does not explicitly route away from siblings like read_paper or search_paper_text, so it lacks explicit exclusions, but the usage context is otherwise clear.

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

export_citationsA
Read-only

Export BibTeX citations for one or more arXiv papers using authoritative arXiv metadata (title, authors, year, primary category), never model-generated fields. Version suffixes (e.g. '2401.12345v2') are preserved and citation keys are deterministic. Returns the rendered BibTeX plus per-paper status/error. BibTeX only; RIS/CSL-JSON are not yet supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idsYesarXiv IDs, new-style ('2401.12345', optionally versioned '2401.12345v2') or legacy ('hep-ph/9901234').

TDQS

A4.5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint), the description adds significant behavioral context: uses authoritative metadata, never model-generated fields, preserves version suffixes, deterministic keys, and returns status/error per paper. No contradictions with annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose. Every sentence provides value: first sentence defines the action and data source, second covers edge cases and limitations. No wasted words.

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

Completeness5/5

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

Given the simple one-parameter input, no output schema, and annotations present, the description covers all essential aspects: purpose, data source, behavior (deterministic keys, version handling), return content, and format limitation. Complete for this tool's complexity.

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?

The single parameter 'paper_ids' is fully described in the input schema (format, constraints). The description adds context about using authoritative metadata but does not add new parameter-level semantics beyond schema. Schema coverage is 100%, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it exports BibTeX citations using authoritative arXiv metadata. The verb 'export' and resource 'BibTeX citations' are specific, and the scope (arXiv papers, authoritative metadata) differentiates it from siblings like download_paper or get_abstract.

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?

The description states 'BibTeX only; RIS/CSL-JSON are not yet supported,' providing a key limitation. It implies when to use this tool (when BibTeX is needed) but does not explicitly state when not to use it or list alternative tools. The guidance is clear but lacks explicit exclusions.

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

get_abstractA
Read-only

Fetch abstract and metadata by arXiv ID without downloading the paper. Use before download_paper to assess relevance. Returns title, authors, abstract, categories, published date, and PDF URL. After compact search, use for one full abstract; skip if search used abstract_mode=full.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYesThe arXiv paper ID (e.g. '2401.12345' or '2404.19756')

TDQS

A4.7/5.0
Behavior5/5

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

The readOnlyHint and openWorldHint annotations already cover the safety profile. The description adds extra behavioral context by explicitly stating it fetches metadata without downloading the paper, enumerating the returned fields, and advising usage as a relevance-screening step. There is no contradiction with the annotations.

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

Conciseness5/5

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

The description is three sentences, each with a distinct purpose: what it does, when to use it, and what it returns. There is no filler; it is front-loaded and every sentence earns its place.

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 simple metadata-fetching tool with one parameter, readOnly annotations, and no output schema, the description covers invocation context, return fields, and conditional usage. Nothing important is missing for an agent to call it correctly.

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?

The single parameter paper_id is fully described in the schema with a type and example. The description merely mentions 'by arXiv ID,' which adds no meaning beyond the schema. With 100% schema coverage, the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with a precise verb and resource: 'Fetch abstract and metadata by arXiv ID,' and immediately differentiates itself by noting 'without downloading the paper,' which distinguishes it from the sibling download_paper. Listing the returned fields (title, authors, abstract, categories, published date, PDF URL) makes the purpose unmistakable.

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

Usage Guidelines5/5

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

The description gives explicit usage context: 'Use before download_paper to assess relevance' and 'After compact search, use for one full abstract; skip if search used abstract_mode=full.' This provides both when-to-use and when-to-skip guidance, clearly distinguishing it from alternate flows.

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

get_paper_latexA

Download, safely process, cache, and return bounded original LaTeX source. Use section tools for targeted reading.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoZero-based character offset within this source or section
paper_idYesValidated modern or legacy arXiv paper ID
max_charsNoMaximum source characters to return (default 12000)
return_full_textNoSet true to opt out of the bounded default and return the entire remaining source or section from start in one call

TDQS

A4.2/5.0
Behavior4/5

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

Annotations mark readOnlyHint as false, and the description aligns by disclosing caching and processing side effects. It adds useful behavioral context beyond the annotations: the operation downloads, processes, caches, and returns bounded source, and it tells the agent the result is bounded rather than unbounded. It does not detail what 'safely process' entails, but this is a meaningful disclosure for a side-effecting tool.

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?

Two sentences with no filler. The first sentence front-loads the core behavior and constraints, and the second gives a crisp usage directive. Every piece of text earns its place, and the key differentiator ('bounded', 'use section tools') appears immediately.

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?

Given the annotations are sparse and there is no output schema, the description provides the essential behavior (returns bounded LaTeX source), the caching/processing side effects, and a usage pointer to section tools. It does not describe the output format or error conditions, but the schema fully documents the parameters and the core purpose is clear enough for correct invocation.

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 all four parameters (paper_id, start, max_chars, return_full_text) are already documented. The description does not need to repeat parameter details. It adds only a high-level 'bounded' concept, which is already reflected in max_chars and return_full_text, so it stays at the baseline for high schema coverage.

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

Purpose5/5

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

The description names a specific resource ('original LaTeX source'), a clear action set ('Download, safely process, cache, and return'), and a key constraint ('bounded'). It also distinguishes itself from section-level tools by explicitly directing targeted reading to section tools, helping an agent separate this from sibling tools like get_paper_latex_section and read_paper_section.

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?

The description explicitly tells the agent to use section tools for targeted reading, which is a clear exclusion that prevents misuse. However, it does not explicitly state when to choose this tool over download_paper or read_paper, nor does it name specific section tools, leaving some inference to the agent.

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

get_paper_latex_sectionA

Return one bounded LaTeX section by outline ID or title (whitespace/case normalized; macros expanded).

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoZero-based character offset within this source or section
paper_idYesValidated modern or legacy arXiv paper ID
max_charsNoMaximum source characters to return (default 12000)
section_idYesSection ID from list_paper_latex_sections or section title
return_full_textNoSet true to opt out of the bounded default and return the entire remaining source or section from start in one call

TDQS

A3.7/5.0
Behavior4/5

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

The description discloses meaningful behavioral traits beyond the annotations: results are bounded, matching is whitespace/case normalized, and macros are expanded. While readOnlyHint is false, the description's 'Return' language does not explicitly contradict that annotation, and the added normalization/expansion context is valuable.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It packs the core purpose and key matching behaviors into minimal words, making it easy for an agent to parse quickly.

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?

The description is adequate for selecting the tool, but with no output schema and only terse behavioral notes, it leaves some gaps: it does not describe the return structure, how 'bounded' interacts with max_chars/return_full_text, or what happens when a section is not found. The schema compensates partially, but the description alone is not fully self-sufficient.

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 the schema already documents all five parameters. The description adds useful semantics for section_id by mentioning title/outline ID and normalization, but it does not add significant meaning for start, max_chars, or return_full_text beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific verb ('Return'), a specific resource ('one bounded LaTeX section'), and the selection mechanism ('by outline ID or title'). It also adds useful matching semantics ('whitespace/case normalized; macros expanded'). This clearly distinguishes it from siblings like get_paper_latex and list_paper_latex_sections.

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 implies usage when a single bounded LaTeX section is needed, but it gives no explicit guidance about when to use this tool instead of related tools such as get_paper_latex, read_paper_section, or list_paper_latex_sections. There are no stated exclusions or alternative-selection conditions.

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

get_paper_outlineA
Read-only

Return a paginated heading outline for a downloaded paper (markdown). Stable hierarchical section IDs; use read_paper_section to fetch one.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoZero-based section index (default 0)
paper_idYesValidated modern or legacy arXiv paper ID
max_sectionsNoMaximum headings to return (default 100)

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnlyHint=true annotation, the description adds 'paginated', 'Stable hierarchical section IDs', and the markdown context. These are meaningful behavioral details. It does not disclose failure modes, but the read-only nature is already annotated and there is no contradiction.

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?

Two short sentences with zero filler. The core behavior is front-loaded, and the second sentence adds the most actionable routing hint an agent needs. Every word earns its place.

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?

With a fully documented input schema, a read-only annotation, and a clear description of the returned outline and its IDs, the tool is fully specified for correct invocation. The pointer to read_paper_section completes the usage contract without needing an output schema.

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 is already well documented. The description adds a light link to pagination semantics but no deeper parameter detail, which is acceptable given the high schema coverage baseline.

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

Purpose5/5

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

The description has a specific verb ('Return'), a precise resource ('heading outline for a downloaded paper (markdown)'), and distinguishes itself from section content retrieval by explicitly pointing to read_paper_section. It is immediately clear what the tool produces and how it differs from its siblings.

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?

The description provides a clear usage clue by saying 'use read_paper_section to fetch one', signaling that this tool is for outlines, not content. It does not exhaustively enumerate all alternatives, but the routing guidance is sufficient for a heading-list tool.

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

list_paper_latex_sectionsA

Return a compact outline of headings from original LaTeX source.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoZero-based section index (default 0)
paper_idYesValidated modern or legacy arXiv paper ID
max_sectionsNoMaximum headings to return (default 100)

TDQS

A3.5/5.0
Behavior2/5

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

Annotations are sparse: readOnlyHint is false (implying possible side effects, but the tool appears read-only), and openWorldHint is true (suggesting external effects, but none are described). The description provides no insight into behavior beyond the basic function, such as whether it may access external resources, handle missing LaTeX, or have performance implications. It does not contradict annotations, but it does not add meaningful context.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core purpose. It contains no fluff and is easy to scan. It earns its place by being clear and direct without extraneous information.

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?

Given the tool's complexity (3 params, no output schema), the description is minimally acceptable. The schema covers parameters well, but the description lacks details on the output format (e.g., how headings are structured) and edge cases (e.g., papers without LaTeX). For a tool that returns a list of headings, an agent might need more context, but it is not severely deficient.

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?

Parameter descriptions in the schema cover all three parameters (paper_id, start, max_sections) with reasonable details, achieving 100% coverage. However, the description itself adds little beyond the schema; it doesn't explain how start and max_sections affect the outline or provide examples. The baseline of 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool returns a compact outline of headings from LaTeX source, which is specific and distinguishes it from sibling tools like get_paper_latex_section (which likely fetches a single section) and get_paper_latex (which likely returns the full source). The verb 'list' and resource 'headings' are precise.

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?

The description implies the tool is for obtaining a structural overview of a paper's LaTeX source, but it does not explicitly state when to prefer this over get_paper_latex or get_paper_latex_section, nor does it mention when not to use it (e.g., for papers without LaTeX source). The sibling names provide some context, but the description itself lacks direct guidance.

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

list_papersA
Read-only

List all papers that have been downloaded and stored locally via download_paper. Returns id, title, authors, published, and arxiv_version/versioned_id from local metadata — no live re-fetch. Set compact=true to return arXiv IDs only. Returns an empty list if no papers have been downloaded yet. Workflow: search_papers -> download_paper -> list_papers -> read_paper.

ParametersJSON Schema
NameRequiredDescriptionDefault
compactNoIf true, return arXiv IDs only. Default is full local metadata (id, title, authors, published, arxiv_version, versioned_id).

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description explicitly says this does not do a live re-fetch, reads from local metadata only, returns an empty list when nothing has been downloaded, and describes the compact mode. These are meaningful behavioral disclosures that help the agent predict behavior without invoking the tool.

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

Conciseness5/5

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

The description is concise, well-structured, and front-loaded with the core action. Every sentence adds value: what is listed, source of data, return fields, compact behavior, empty-list behavior, and workflow placement. No filler or redundancy.

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

Completeness5/5

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

Given the simple parameter set, readOnlyHint annotation, and absence of an output schema, the description covers what an agent needs to know: what is returned, the data source, the compact option, the empty-list edge case, and the intended workflow. No critical information 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 coverage is 100% (the compact parameter is fully documented in the schema). The description restates the default and compact behavior but does not add new meaning beyond the schema. Baseline 3 is appropriate because the schema already carries the parameter semantic burden.

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

Purpose5/5

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

The description uses a specific verb and resource—'List all papers that have been downloaded and stored locally via download_paper'—and explicitly distinguishes it from live re-fetching. It also names the exact fields returned, making the tool's purpose unmistakable and distinct from sibling search/read tools.

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?

The description gives clear workflow context: 'search_papers -> download_paper -> list_papers -> read_paper', which tells an agent when in the workflow this tool applies. It does not explicitly name when not to use it or point to alternatives like search_papers for live results, but the 'no live re-fetch' phrasing and workflow chain effectively convey the intended usage.

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

list_watchesA
Read-only

List all saved topic watches without checking for new papers. Returns each watch's topic, categories, last_checked timestamp, and other stored fields. Does not update last_checked — use this to inspect what is saved. Use unwatch_topic to remove a watch, or check_alerts to poll for new papers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already indicate this is read-only, and the description reinforces that by noting it does not update last_checked and does not check for new papers. This adds meaningful behavioral clarity beyond what the annotation alone provides.

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

Conciseness5/5

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

The description is concise and well-structured, leading with the core purpose and then adding behavioral notes and sibling references. Every sentence earns its place with no redundant detail.

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 zero-parameter listing tool, the description fully covers what is returned, what it does not do, and how it relates to sibling tools. Nothing essential is missing for an agent to select and invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter behavior to describe. The description appropriately focuses on the semantics of the operation itself, which is sufficient given the empty input schema.

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

Purpose5/5

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

The description clearly states the tool lists all saved topic watches and explicitly notes it does not check for new papers, which distinguishes it from check_alerts. It also enumerates the returned fields, making its purpose precise and unambiguous.

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

Usage Guidelines5/5

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

The description gives explicit usage context: use this to inspect saved watches, not to poll for updates. It also names sibling tools for related actions (unwatch_topic and check_alerts), which helps route the agent correctly.

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

read_paperA
Read-only

Read the text content of a paper that was previously downloaded via download_paper. Returns the paper in markdown format, bounded to roughly 12,000 characters by default so one call cannot return an unbounded paper body. When is_truncated is true, call again with start=next_start (see next_retrieval) to continue, or pass return_full_text=true for the entire remaining paper. Will fail with a clear error if the paper has not been downloaded yet — call download_paper first. Workflow: search_papers -> download_paper -> read_paper.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoZero-based character offset for reading large papers in chunks; pass next_start from a prior truncated response to continue
paper_idYesThe arXiv ID of the paper to read
max_charsNoMaximum raw paper characters to return from start; omit for the bounded default (12,000 chars)
return_full_textNoSet true to opt out of the bounded default and return the entire remaining paper from start in one call

TDQS

A4.8/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the readOnlyHint annotation: chunking at ~12,000 characters, continuation via is_truncated and next_start, the return_full_text opt-out, and the failure condition when the paper has not been downloaded. It also covers the typical workflow context, making the behavior predictable.

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

Conciseness5/5

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

The description is compact and every sentence contributes useful guidance: what the tool reads, how chunking works, how to continue or override truncation, the failure precondition, and the intended workflow. The critical behavior is front-loaded and there is no filler.

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

Completeness5/5

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

Despite having no output schema, the description covers the important response behaviors (Markdown, truncation, continuation token) and the prerequisite download step. For a paginated reader tool with no output schema, this provides enough contextual information for an agent to call it correctly.

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

Parameters5/5

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

Schema coverage is already 100%, but the description adds meaning beyond the schema by explaining the default 12,000 character bound, the fact that start should come from a prior truncated response, and that return_full_text=true retrieves the entire remaining paper. This is exactly the kind of cross-parameter context an agent needs.

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

Purpose5/5

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

The description clearly states the action: read the text content of a previously downloaded paper and return it in markdown format. It also distinguishes this tool from download_paper by making the download prerequisite explicit, and the scope is specific enough to separate it from section or abstract readers.

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?

The description clearly tells the agent when the tool can be used: only after download_paper has been called, and it even provides the workflow search_papers -> download_paper -> read_paper. It does not explicitly contrast this tool with sibling alternatives such as read_paper_section or get_paper_outline, which is the only gap.

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

read_paper_sectionA
Read-only

Return one bounded markdown section by outline ID (or unique title). Does not include sibling or parent sections.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoZero-based character offset within this section
paper_idYesValidated modern or legacy arXiv paper ID
max_charsNoMaximum section characters to return (default 12,000)
section_idYesSection ID from get_paper_outline, or unique title
return_full_textNoIf true, return the entire remaining section from start

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already covers the safety profile, so the description only needs to add meaningful context. It does add clarity about section boundaries and markdown output, but it does not describe behavior like truncation, the effect of return_full_text, or what happens when the section is not found.

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

Conciseness5/5

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

The description is two short sentences with no filler. The key idea is front-loaded, and the scoping detail about sibling and parent sections adds useful information without repetition.

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?

For a read-only tool with fully documented parameters, the description provides enough context: a single markdown section, selected by outline ID or title, without extra surrounding sections. An explicit pointer to sibling alternatives would improve completeness, but the description is not inadequate.

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 the input schema already explains all parameters. The description repeats the meaning of section_id as outline ID or unique title, but it provides no additional semantic value beyond what the schema already states.

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

Purpose5/5

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

The description clearly identifies the action (return), the resource (one bounded markdown section), and the selector (outline ID or unique title). It also differentiates from full-paper or outline-related siblings by stating that sibling and parent sections are not included.

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?

The description implies the tool is for retrieving a single section rather than an entire paper, but it does not explicitly state when to choose it over alternatives like read_paper, get_paper_outline, or get_paper_latex_section. The boundary statement is useful but not a full usage guideline.

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

reindexA

Rebuild the local semantic index for downloaded papers.

ParametersJSON Schema
NameRequiredDescriptionDefault
clear_existingNoIf true, clear the existing index before rebuilding.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate the tool is not read-only and not destructive, so the description need not restate those. It adds useful scoping (local, downloaded papers), but it does not disclose the default behavior of clear_existing (default true) or potential side effects like deletion of the existing index before rebuild. This is a moderate addition beyond annotations.

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

Conciseness5/5

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

The entire description is a single sentence that directly states the action and scope without unnecessary words. It is concise and well-structured.

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 a simple tool with one optional parameter and no output schema, the description covers the basic function. However, it omits important context such as the default clear_existing behavior, expected use cases, and potential time cost, making it minimally adequate but lacking full completeness.

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?

The schema fully describes the only parameter, clear_existing, including its type and default value. The description adds no further parameter-level details, so it does not compensate beyond the schema's coverage.

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

Purpose5/5

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

The description uses the specific verb 'Rebuild' and identifies the resource 'local semantic index' for 'downloaded papers', which clearly defines the tool's scope. This distinguishes it from siblings like search_papers and semantic_search, which operate on the index rather than rebuild it.

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 gives no guidance on when to use this tool or alternatives. It does not mention prerequisites (e.g., after adding new papers) or contrast with other maintenance operations. Users are left to infer the appropriate context.

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

search_papersA
Read-only

Search arXiv by query with optional categories, date range, sort, and pagination.

Query: prefer quoted phrases; ti:/au:/abs:/cat:; AND/OR/ANDNOT. Unprefixed terms match title+abstract (not authors). Use categories (cs.AI, cs.LG, cs.CL, cs.CV, cs.MA, cs.RO, stat.ML, quant-ph). Catalog/examples: README 'search_papers query guide'.

Dates YYYY-MM-DD (date_from/date_to). sort_by relevance|date. max_results default 5 (cap 50). abstract_mode none|snippet|full (default snippet). start default 0; response: total_results, returned, has_more, next_start, abstract_mode. Pass next_start with same abstract_mode. Use get_abstract after compact search — not after abstract_mode=full.

arXiv ~3s between requests (server-side). Transient 429/503 are retried with backoff; persistent rate limits return status=rate_limited.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesarXiv query string. Prefer quoted phrases and ti:/au:/abs:/cat: field prefixes; AND/OR/ANDNOT supported.
startNoZero-based result offset (default: 0). Pass next_start from a previous response to fetch the next page.
date_toNoInclusive end date (YYYY-MM-DD).
sort_byNoSort by 'relevance' (default) or 'date' (newest first).
date_fromNoInclusive start date (YYYY-MM-DD).
categoriesNoarXiv category filters (e.g. ['cs.LG', 'cs.AI']). Strongly improves relevance.
max_resultsNoMaximum results to return (default: 5, max: 50).
abstract_modeNoAbstract projection (default snippet ~280 chars, marked if truncated; full=complete; none=omit).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations indicate readOnlyHint=true, and the description aligns by stating this is a search operation. It goes beyond annotations by disclosing arXiv rate limiting (~3s between requests), retry behavior for transient 429/503 errors, persistent rate limits returning status=rate_limited, and pagination behavior via next_start. It also documents default abstract_mode and truncation behavior.

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?

The description is dense but well-organized, with key behavioral details front-loaded. It covers many aspects (syntax, categories, dates, sorting, defaults, pagination, rate limits) without excessive verbosity. Some details like the rate-limit note could arguably be moved to a 'Notes' section, but overall it's efficiently structured and every sentence provides actionable information.

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?

Given the tool has 8 parameters, no output schema, and a rich behavioral profile, the description is quite complete. It covers query construction, pagination, result metadata fields, and error/rate-limit behavior. It doesn't explicitly describe the full response shape beyond those fields, but given the lack of an output schema, this is a minor gap. The description leaves little room for an agent to call incorrectly.

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

Parameters4/5

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

Schema description coverage is 100%, so all parameters are individually documented. The tool description adds value beyond the schema by explaining the overall query behavior (unprefixed terms match title+abstract, not authors) and by reinforcing the pagination contract (pass next_start with same abstract_mode). The description doesn't introduce new parameter dimensions but meaningfully supplements the schema.

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

Purpose5/5

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

The description clearly states the tool's function: searching arXiv by query with optional filters and pagination. It explicitly covers the search syntax, categories, date range, sorting, and output controls. This distinguishes it from sibling tools like semantic_search, get_abstract, and list_papers, which serve different retrieval purposes.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance including query syntax tips (prefer quoted phrases, field prefixes), category recommendations, date format expectations, and default/limit values. It also directs use of get_abstract after compact search rather than after abstract_mode=full, giving clear when-to-use context. Sibling differentiation is implicit through this comprehensive guidance.

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

search_paper_textA
Read-only

Search a downloaded paper for bounded matching passages with section/source offsets. Suppresses high-overlap near-duplicates and prefers section-diverse hits. Lightweight substring search; no Torch.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCase-insensitive substring to find
paper_idYesValidated modern or legacy arXiv paper ID
max_passagesNoMaximum passages to return (default 8)
passage_charsNoMax characters per excerpt (default 800)

TDQS

A4.2/5.0
Behavior4/5

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

Given annotations only provide readOnlyHint=true, the description adds valuable non-obvious behaviors: suppression of high-overlap near-duplicates, preference for section-diverse hits, and the use of bounded substring matching. It does not fully describe the output format or error conditions, but what it provides goes clearly beyond the annotations.

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

Conciseness5/5

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

The description is tightly written in three sentences with no wasted repetition. The core purpose is front-loaded, then the deduplication/diversity behaviors are added, and finally the technology-focused scoping is stated. Each sentence contributes useful selection and invocation information.

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?

For a read-only search tool, the description covers the main behaviors: scope to downloaded papers, substitution search, bounded results, section offsets, and near-duplicate suppression. It does not explicitly describe failure behavior for missing downloads or give a detailed return shape, but with no output schema and a simple matcher, the provided context is largely sufficient.

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?

The schema already covers all 4 parameters at 100%, including case-insensitive substring behavior and default values for max_passages and passage_chars. The description adds context about bounds and diversity but does not need to restate parameter details; the baseline 3 applies.

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

Purpose5/5

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

The description states a specific action — searching a downloaded paper for bounded matching passages with section/source offsets — which clearly defines what the tool does. It also differentiates via 'substring search' and 'no Torch' from semantic_search and search_papers siblings, making the tool's specific role apparent.

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?

The description gives clear context: it is for substring search within a single downloaded paper, implying use when the agent needs exact lightweight matching rather than semantic similarity or cross-paper search. However, it does not explicitly name alternatives or state when not to use the tool, so it stops slightly short of full usage routing.

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

unwatch_topicA
Destructive

Delete a saved topic watch by exact topic string. The topic must match the stored watch_topic value exactly. Returns a clear not-found error if no matching watch exists. Use list_watches to inspect saved watches before deleting.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesExact topic string of the watch to remove. Must match the topic used in watch_topic.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation is known. The description adds value beyond that by disclosing the exact-match requirement and the explicit not-found error behavior, which are behavioral details not present in the annotations.

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, each carrying unique value: the main action, the matching constraint, and the error/fallback behavior. Ends with a pointed pointer to list_watches, with zero filler words.

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?

For a single-param delete tool, the description covers the core behavior, the error path, and the recommended pre-use step. The lack of an output schema is partially offset by the not-found error description; the only minor gap is the success return shape, which is not critical given the low complexity.

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 coverage is 100%, so the schema already documents the topic parameter well. The description reinforces the exact-match concept and the relationship to watch_topic, but adds no new parameter syntax, formatting, or constraint beyond what the schema already provides.

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 the verb 'Delete' with a precise resource ('saved topic watch') and the exact matching mechanism. This clearly distinguishes it from siblings like list_watches (inspect) and watch_topic (create), so an agent knows which tool to pick.

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?

Gives concrete guidance: 'Use list_watches to inspect saved watches before deleting,' which is a practical pre-step and names the relevant sibling. It stresses the exact-match prerequisite but doesn't explicitly cover when-not-to-use scenarios relative to other siblings like check_alerts, so it stops at clear context with no exclusion list.

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

watch_topicA

Save or update a persistent research topic watch. When checked via check_alerts, returns only papers published since the last check — acting as a standing alert for new work on a topic. New watches seed last_checked to creation time so the first check does not dump historical matches. The topic string uses the same query syntax as search_papers (quoted phrases, field specifiers, boolean operators). Examples: '"diffusion models" AND ti:"video generation"', 'au:"LeCun" AND cs.LG'. Calling watch_topic with the same topic string updates the existing watch rather than creating a duplicate. On update, omit categories to preserve existing filters; pass categories: [] to clear them. Pair with check_alerts to poll for new papers.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesQuery string to monitor. Uses arXiv search syntax — quoted phrases for exact matches, field specifiers (ti:, au:, abs:), and boolean operators (AND, OR, ANDNOT). Example: '"reinforcement learning" AND "robotics"'.
categoriesNoOptional arXiv category filter (e.g. ['cs.LG', 'cs.AI']). Narrows results to specific fields. On update, omit this field to preserve existing categories; pass an empty array [] to clear them.
max_resultsNoMaximum papers to return per alert check (default: 10).

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false, so the description carries the burden of explaining the mutation profile — and it does so richly. It discloses the last_checked seeding side-effect ('first check does not dump historical matches'), the upsert semantics, and the subtle update behavior for categories ('omit categories to preserve existing filters; pass categories: [] to clear them'). This goes well beyond what annotations provide and flags exactly the behaviors an agent could not infer from the schema alone.

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?

Seven sentences, and every one earns its place: purpose, check_alerts behavior, first-check seeding, query syntax, upsert semantics, category-update gotcha, and integration pairing. The most decision-relevant information is front-loaded, and the length is justified by the tool's genuinely subtle stateful semantics. There is zero filler or repetition.

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?

For a stateful tool with no output schema and only three boolean annotations, the description covers nearly everything an agent needs: lifecycle behavior, first-run nuance, update semantics, query syntax, and the companion tool. The only notable gap is that it describes what check_alerts returns but never states what watch_topic itself returns on success (acknowledgment, watch object, etc.), which the absence of an output schema makes more consequential.

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 the baseline is 3; the schema already documents topic syntax, category update semantics, and max_results default. The description adds some value by providing two concrete query examples with field specifiers and boolean operators, and it reinforces the categories-preservation rule. But it largely restates what the schema already says and adds nothing new about max_results, so it does not rise above the baseline.

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

Purpose5/5

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

The opening verb-resource pair 'Save or update a persistent research topic watch' is specific and precise, and the tool's role is further differentiated from siblings by explaining it 'returns only papers published since the last check' when polled via check_alerts. It also distinguishes itself from search_papers by noting the shared query syntax while making clear this is a persistent standing alert, not a one-off search. The upsert behavior ('same topic string updates the existing watch rather than creating a duplicate') removes any ambiguity about what calling this tool does.

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?

The description gives explicit integration context ('Pair with check_alerts to poll for new papers') and explains when the tool behaves differently on first use versus updates, which helps the agent choose correctly. It references search_papers for query syntax, implicitly distinguishing one-off searches from standing alerts. However, it never explicitly states 'use search_papers instead for a one-off search' or names when NOT to use watch_topic, so the exclusion logic is left slightly to inference.

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. 3 tool updatesv0.7.2
    • Changedget_paper_latex1 field changed
      • addedInput schema / properties / return_full_text
        Added value: +{
        +  "description": "Set true to opt out of the bounded default and return the entire remaining source or section from start in one call",
        +  "type": "boolean"
        +}
    • Changedget_paper_latex_section1 field changed
      • addedInput schema / properties / return_full_text
        Added value: +{
        +  "description": "Set true to opt out of the bounded default and return the entire remaining source or section from start in one call",
        +  "type": "boolean"
        +}
    • Changedwatch_topic1 field changed
      • changedInput schema / properties / categories / description
        Previous value: -"Optional arXiv category filter (e.g. ['cs.LG', 'cs.AI']). Narrows results to specific fields."New value: +"Optional arXiv category filter (e.g. ['cs.LG', 'cs.AI']). Narrows results to specific fields. On update, omit this field to preserve existing categories; pass an empty array [] to clear them."
  2. 11 tool updatesv0.7.0
    • Changedcitation_graph1 field changed
      • addedInput schema / properties / max_citations
        Added value: +{
        +  "description": "Maximum citations and references to return (default 50).",
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changeddownload_paper4 fields changed
      • addedInput schema / properties / force
        Added value: +{
        +  "description": "If true, re-download and overwrite the local markdown and metadata sidecar even if the paper is already cached, including when replacing a newer stored arXiv version with an older one. Default false.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / max_chars / description
        Previous value: -"Maximum raw paper characters to return from start; omit for full content"New value: +"Maximum raw paper characters to return from start; omit for the bounded default (12,000 chars)"
      • addedInput schema / properties / return_full_text
        Added value: +{
        +  "description": "Set true to opt out of the bounded default and return the entire remaining paper from start in one call",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start / description
        Previous value: -"Zero-based character offset for returning large papers in chunks"New value: +"Zero-based character offset for returning large papers in chunks; pass next_start from a prior truncated response to continue"
    • Changedget_paper_latex_section1 field changed
      • changedInput schema / properties / section_id / description
        Previous value: -"Section ID from list_paper_latex_sections or exact title"New value: +"Section ID from list_paper_latex_sections or section title"
    • Addedget_paper_outline
    • Changedlist_papers1 field changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "description": "If true, return arXiv IDs only. Default is full local metadata (id, title, authors, published, arxiv_version, versioned_id).",
        +  "type": "boolean"
        +}
    • Addedlist_watches
    • Changedread_paper3 fields changed
      • changedInput schema / properties / max_chars / description
        Previous value: -"Maximum raw paper characters to return from start; omit for full content"New value: +"Maximum raw paper characters to return from start; omit for the bounded default (12,000 chars)"
      • addedInput schema / properties / return_full_text
        Added value: +{
        +  "description": "Set true to opt out of the bounded default and return the entire remaining paper from start in one call",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / start / description
        Previous value: -"Zero-based character offset for reading large papers in chunks"New value: +"Zero-based character offset for reading large papers in chunks; pass next_start from a prior truncated response to continue"
    • Addedread_paper_section
    • Addedsearch_paper_text
    • Changedsearch_papers8 fields changed
      • addedInput schema / properties / abstract_mode
        Added value: +{
        +  "description": "Abstract projection (default snippet ~280 chars, marked if truncated; full=complete; none=omit).",
        +  "enum": [
        +    "none",
        +    "snippet",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / categories / description
        Previous value: -"Strongly recommended: arXiv categories to focus search (e.g., ['cs.AI', 'cs.MA'] for agent research, ['cs.LG'] for ML, ['cs.CL'] for NLP, ['cs.CV'] for vision). Greatly improves relevance."New value: +"arXiv category filters (e.g. ['cs.LG', 'cs.AI']). Strongly improves relevance."
      • changedInput schema / properties / date_from / description
        Previous value: -"Start date for papers (YYYY-MM-DD format). Use to find recent work, e.g., '2023-01-01' for last 2 years."New value: +"Inclusive start date (YYYY-MM-DD)."
      • changedInput schema / properties / date_to / description
        Previous value: -"End date for papers (YYYY-MM-DD format). Use with date_from to find historical work, e.g., '2020-12-31' for older research."New value: +"Inclusive end date (YYYY-MM-DD)."
      • changedInput schema / properties / max_results / description
        Previous value: -"Maximum number of results to return (default: 10, max: 50). Use 15-20 for comprehensive searches."New value: +"Maximum results to return (default: 5, max: 50)."
      • changedInput schema / properties / query / description
        Previous value: -"Search query using quoted phrases for exact matches (e.g., '\"machine learning\" OR \"deep learning\"') or specific technical terms. Avoid overly broad or generic terms."New value: +"arXiv query string. Prefer quoted phrases and ti:/au:/abs:/cat: field prefixes; AND/OR/ANDNOT supported."
      • changedInput schema / properties / sort_by / description
        Previous value: -"Sort results by 'relevance' (most relevant first, default) or 'date' (newest first). Use 'relevance' for focused searches, 'date' for recent developments."New value: +"Sort by 'relevance' (default) or 'date' (newest first)."
      • addedInput schema / properties / start
        Added value: +{
        +  "description": "Zero-based result offset (default: 0). Pass next_start from a previous response to fetch the next page.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Addedunwatch_topic
  3. 6 tool updatesv0.6.3
    • Addedcheck_alerts
    • Addedcitation_graph
    • Addedget_paper_latex
    • Addedlist_paper_latex_sections
    • Addedlist_papers
    • Addedsearch_papers
  4. 7 tool updatesv0.6.1
    • Removedcheck_alerts
    • Removedcitation_graph
    • Addedexport_citations
    • Removedlist_paper_latex_sections
    • Removedlist_papers
    • Addedreindex
    • Addedwatch_topic
  5. 10 tool updatesv0.5.1
    • Addedcheck_alerts
    • Addedcitation_graph
    • Changeddownload_paper5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / check_status
        Removed value: -{
        -  "default": false,
        -  "description": "If true, only check conversion status without downloading",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / max_chars
        Added value: +{
        +  "description": "Maximum raw paper characters to return from start; omit for full content",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / paper_id / description
        Previous value: -"The arXiv ID of the paper to download"New value: +"The arXiv ID of the paper to download (e.g. '2103.12345')"
      • addedInput schema / properties / start
        Added value: +{
        +  "description": "Zero-based character offset for returning large papers in chunks",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Addedget_abstract
    • Addedget_paper_latex_section
    • Addedlist_paper_latex_sections
    • Changedlist_papers1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedread_paper3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / max_chars
        Added value: +{
        +  "description": "Maximum raw paper characters to return from start; omit for full content",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / start
        Added value: +{
        +  "description": "Zero-based character offset for reading large papers in chunks",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Removedsearch_papers
    • Addedsemantic_search
  6. 4 tool updatesv1.0.0
    • Addeddownload_paper
    • Addedlist_papers
    • Addedread_paper
    • Addedsearch_papers

TDQS

A3.6/5.0

Scored across 19 tools

Disambiguation3/5

Most tools are distinct (search vs. download vs. read), but several overlap: read_paper and read_paper_section both read content, and get_paper_latex vs. get_paper_latex_section have similar boundaries. Also, search_paper_text and semantic_search both find content in downloaded papers, though one is keyword and one is semantic.

Naming Consistency3/5

Many tools follow verb_noun (search_papers, download_paper, list_papers, read_paper, get_abstract, watch_topic), but there is inconsistency: 'list_paper_latex_sections' vs 'get_paper_latex_section' mixes list/get, and 'reindex' is a vague verb. Also 'check_alerts' vs 'list_watches' uses different verb styles.

Tool Count2/5

With 19 tools, the server feels heavy for its core purpose of searching and reading individual papers. Several tools (latex variants, outline, section readers) add significant granularity that may not be necessary for most workflows, making the toolset feel bloated.

Completeness2/5

While core search/download/read is covered, there are gaps: no update/delete for downloaded papers, no tool to remove local papers, and no direct DOI export or reference manager integration beyond BibTeX. The watch_topic lifecycle is complete (create/check/list/delete), but local paper management is incomplete.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A streamlined MCP server that connects AI assistants to arXiv's vast collection of academic papers, enabling search, retrieval, and analysis of research papers.
    7
    1
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    An advanced scholarly research MCP server that enables AI assistants to discover, fetch, process, and manage academic papers across multiple sources like arXiv, PubMed, and Semantic Scholar, with capabilities for summarization, citation analysis, and concept relationship extraction.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides AI assistants with a seamless, programmatic interface to search and read academic papers from the open-access arXiv repository.
    2
    MIT