AutoXiv exposes its paper corpus over the Model Context Protocol. Any LLM agent that speaks MCP can search papers, read AI overviews, and find related work — no scraping, no rate-limit tango.
https://autoxiv.vercel.app/mcp
JSON-RPC 2.0 over HTTP POST · Stateless · Bearer auth required
Every request needs a bearer API key. Create one →
Authorization: Bearer ak_live_…
Free tier: 20 requests/min · 1,000/day. Your agent pays for its own model tokens — AutoXiv only serves the data.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"autoxiv": {
"command": "npx",
"args": [
"mcp-remote",
"https://autoxiv.vercel.app/mcp",
"--header",
"Authorization: Bearer ak_live_YOUR_KEY"
]
}
}
}{
"mcpServers": {
"autoxiv": {
"url": "https://autoxiv.vercel.app/mcp",
"headers": {
"Authorization": "Bearer ak_live_YOUR_KEY"
}
}
}
}Input
{ query: string, mode?: 'semantic' | 'keyword', category?: string, limit?: number, has_code?: boolean, code_verified?: boolean }Output
Array of paper summaries with { id, title, authors, tldr, category, submitted_at, abs_url, has_code, code_status }. code_status is null (no code link), or one of: unverified | runs | partial | fails | unverifiable | unknown.
Input
{ id: string }Output
Full paper record — abstract, overview (TLDR, problem, approach, insights, results, limitations), code link, PDF URL.
Input
{ id: string }Output
Just the AI-generated structured overview (tldr, problem, approach, key_insights, results, limitations). Lighter than get_paper.
Input
{ id: string, limit?: number }Output
pgvector similarity lookup — returns the semantically nearest papers with scores. (Alias: get_related, deprecated.)
Input
{ category?: string, limit?: number }Output
Most recently submitted papers.
Input
{ paper_id: string }Output
AI-generated QA signal: verdict ('approved' | 'rejected' | 'flagged' | 'unscreened'), risk_flags (string[]), screened_at (ISO timestamp or null). Unscreened means the paper was ingested without automated review.
Input
{ limit?: number (max 200, default 50), min_papers?: number (default 1) }Output
Array of { id: number | null, label: string, description: string | null, paper_count: number } sorted by paper_count DESC. Always appends an unclustered pseudo-cluster (id: null) at the end so agents can see how many papers fall outside any cluster. Use as a discovery step before get_cluster.
Input
{ cluster_id: number | null, limit?: number (max 100, default 20) }Output
Cluster metadata (id, label, description, paper_count) plus papers: PaperSummary[] — the N most recent published papers in that cluster, with has_code / code_status flags. Pass cluster_id: null to retrieve unclustered papers.
Input
{ limit?: number (max 50, default 10), exclude_seen?: boolean (default true) }Output
{ recommendations: PaperSummary[], based_on_n_saves: number, cold_start: boolean }. Personalized from the caller's save history — requires an authenticated key (trial calls return -32001). based_on_n_saves counts only saves whose embedding influenced the recommendation. cold_start is true iff that count is < 3. With 0 embeddable saves, falls back to trending-recent.
Input
{ id: string }Output
Latest automated code review for a paper — static checks (README, requirements, license, tests, score) and reviewer notes. Returns null if the paper has no linked github_url.
Input
{ paper_id: string, verdict_filter?: "success" | "partial" | "fails_install" | "fails_run" | "timed_out" | "no_quickstart" | "unverifiable" }Output
All reproduction attempts for a paper. Each entry includes verdict, command_used, metrics extracted vs. paper claims, cost, duration, and endorsement counts (verified_locally, disputed, useful, etc.).
Input
{ run_id: string }Output
Sanitized agent_runs row by id — model, prompt id, token counts, cost, latency. Raw inputs/outputs are not exposed. Useful for auditing what produced an answer.
Input
{ id: string }Output
Enqueues an automated code review for a paper that has a linked github_url. Returns a job_id; poll get_code_review until the report appears (typically 1–4 min). Requires a key with 'write:review' scope.
Input
{ cluster_id: number, message: string (max 4000 chars), chat_id?: string | null }Output
One turn of conversation with a cluster agent — returns the assistant reply. Pass chat_id from a prior response to continue a conversation; omit it to start fresh. Requires a key with 'write:chat' scope.
Input
{ agent_type?: "cluster_reviewer" | "code_reviewer" | "reproducibility_runner" | "custom", limit?: number (max 50) }Output
Array of marketplace agents with { slug, name, description, type, run_count, rating, url }.
Input
{ slug: string }Output
Full marketplace agent record including links_to for the live tool surface.
Each paper is exposed at paper://{id}. resources/read returns a markdown-formatted overview.
summarize_paper — accepts a paper ID, asks the agent for a 150-word summary.compare_papers — accepts comma-separated IDs, asks for a comparison table.