For AI agents

A research workflow, not just search

Plenty of sites let a human search papers. AIConfPaper is built so your LLM agent can run the whole literature loop on its own: find accepted papers from top AI conferences by meaning, save them to a collection, pull each paper's LaTeX source and code, then develop new ideas or set up a quick experiment. One REST API, or a single pasted prompt.

agent session
user"Find the top papers on diffusion policies for robot manipulation, save them to a collection, and summarize each paper's key idea from its LaTeX source."
POST/api/v1/search?q=diffusion policies for robot manipulation → 12 papers
POST/api/v1/collections {"name":"diffusion_policies"} → created
POST/api/v1/collections/{id}/papers → added 12
GET/api/v1/papers/{id} → links.arxiv_src → downloads the .tex
doneSummarized 12 papers. 3 share the same limitation on long-horizon tasks. Proposed idea: ...

What your agent can do

1

Find & collect

Search by meaning across ~190k accepted papers, then create a collection and add the best hits, saved to your account so you can open it in the UI later.

2

Read & ideate

Pull the LaTeX source of every paper in a collection, analyze the methods, and propose concrete ideas that improve on their shared limitations.

3

Reproduce

Follow each paper's code link, clone the repositories, and set up a minimal experiment environment to try the methods.

Paste a prompt

Give one of these to your agent (Claude Code, Cursor, and similar). It reads this page, works out the API calls, and runs the whole flow. Replace YOUR_KEY with your key from Account.

Using the API at https://aiconfpaper.com/developers, find the 20 papers most
relevant to "efficient attention for long-context transformers", create a
collection named "attention_papers", and add them all to it. My API key is YOUR_KEY.
Using the API at https://aiconfpaper.com/developers: find the 8 most relevant
papers on "diffusion policies for robot manipulation", save them to a new
collection, then download each paper's LaTeX source (links.arxiv_src) and give me
3 concrete research ideas that improve on their common limitations. Key: YOUR_KEY.
Using the API at https://aiconfpaper.com/developers, find the 3 most relevant
papers on "3D Gaussian splatting" that have a code link, clone their repos, and
outline the steps to run a minimal experiment from each (flag any setup blockers
like CUDA, git submodules, or gated datasets). Key: YOUR_KEY.

Notes & limits for agents

  • links.arxiv_src comes from /papers/{id} (it is always null in search results). It can be null: retry once, but some papers have no source link at all even when an arXiv version exists elsewhere, so fall back to another paper rather than retrying forever.
  • The LaTeX source is a gzip-compressed tar (arXiv-<id>vN.tar.gz); tar xzf extracts it. The main .tex may have a generic name (e.g. an unrenamed template).
  • links.code is present for roughly a third to half of papers and is best-effort. Sanity-check the cloned repo's README/title against the paper before trusting it, since a link can occasionally point to a project page or a different project.
  • To save a specific paper you already know by title: search the exact title (/search?q=<the title>&limit=3), confirm the top result's title matches, then add its paper_id to a collection. For an arXiv paper outside the index, register it first via POST /papers/external.
  • Limits: 120 requests per rolling minute per client. Every /api/v1 response carries X-RateLimit-Limit / X-RateLimit-Remaining; a 429 carries Retry-After (seconds) — honor it instead of guessing a backoff. POST /papers/external additionally shares a global arXiv lookup queue: a new id can take a few seconds and may return 503 (retry shortly). Collection caps: 50 folders, 1000 papers per folder, 5000 papers total. Errors are RFC 9457 application/problem+json with a detail recovery hint.
  • Prefer the batch endpoints: GET /papers?ids=… (up to 50 full records in one call) beats looping GET /papers/{id}, and GET /collections/{id}/export?format=bibtex returns a whole collection as one ready-to-use references.bib.

MCP server

Prefer tools over raw HTTP? Connect any MCP client (Claude Code, Claude Desktop, Cursor, and similar) to the Streamable HTTP endpoint at https://aiconfpaper.com/mcp. It exposes the read side as typed tools: search_papers, get_paper, batch_get_papers, find_similar_papers, list_facets. Collections (create, add, share, export) stay on the REST API below. Auth is the same key, sent as an Authorization header.

# Claude Code (one command; put your key in the env var)
claude mcp add --transport http aiconfpaper https://aiconfpaper.com/mcp \
  --header "Authorization: Bearer $AICONFPAPER_API_KEY"
// or in a project's .mcp.json
{
  "mcpServers": {
    "aiconfpaper": {
      "type": "http",
      "url": "https://aiconfpaper.com/mcp",
      "headers": { "Authorization": "Bearer ${AICONFPAPER_API_KEY}" }
    }
  }
}

REST API

Every request needs a free key from Account, sent as Authorization: Bearer acp_…. Errors are RFC 9457 problem+json with a recovery hint.

Endpoints

GET /api/v1/search?q=…&limit=10

Rank papers by semantic similarity to q. Filters: venue, year_min, year_max, sort.

GET /api/v1/papers/{id}

Full record: abstract, BibTeX, citation count, and links (links.pdf, links.code, links.arxiv_src for the LaTeX source bundle). Also accepts arxiv:<id> ids.

GET /api/v1/papers?ids=…

Batch detail: full records for up to 50 comma-separated ids in one call (unknown ids come back in missing).

GET /api/v1/papers/{id}/similar

Nearest-neighbor papers in embedding space. Filters: venue, year_min, year_max.

GET /api/v1/facets

Valid venue/tier values and the year range.

POST /api/v1/collections

Create a collection. Body: {"name":"…"}. Returns its id.

POST /api/v1/collections/{id}/papers

Add papers. Body: {"paper_ids":["…"]} — ids from /search, or arxiv:<id> ids from /papers/external. Idempotent; unknown ids are counted in skipped.

POST /api/v1/papers/external

Register an arXiv paper that is not in the index. Body: {"arxiv":"2107.02192"} (id or arxiv.org URL). Returns paper_id arxiv:<id> to use with add-papers.

DELETE /api/v1/collections/{id}/papers

Remove papers (symmetric with add). Body: {"paper_ids":["…"]}. Idempotent; no more delete-and-rebuild to prune a collection.

PATCH /api/v1/collections/{id}

Rename and/or describe. Body: {"name":"…","description":"…"} (either field; empty description clears it).

POST /api/v1/collections/{id}/share

Toggle the public read-only link. Body: {"public":true}. Returns the /c/<slug> URL to hand to a collaborator (view / follow / copy, no edit).

POST /api/v1/collections/{id}/collaborate

Toggle an EDITABLE invite link. Body: {"enabled":true}. Returns a /collab/<slug> URL; a logged-in user who opens it joins as an editor. The collection then appears in THEIR GET /collections (owned: false) and they can read / add / remove / export it with their own key.

GET /api/v1/collections/{id}/members

List who joined the collaboration invite (owner-only; includes emails).

DELETE /api/v1/collections/{id}/members/{user_id}

Revoke a collaborator's edit access (idempotent).

GET /api/v1/collections/{id}/export?format=bibtex

One-call export of the whole collection: bibtex (a ready references.bib), csv, or json.

GET /api/v1/collections

List your collections — your own and ones shared with you for co-editing (owned: false).

GET /api/v1/collections/{id}

List the papers in one of your collections (includes registered arXiv papers).

DELETE /api/v1/collections/{id}

Delete a collection you created (its papers go to trash). Lets an agent clean up after itself.

Worked example: search to saved collection

KEY="acp_live_..."

# 1) search (grab paper_id values from results)
curl -s -H "Authorization: Bearer $KEY" \
  "https://aiconfpaper.com/api/v1/search?q=efficient+attention+long+context&limit=20"

# 2) create a collection (note the returned id)
curl -s -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"name":"attention_papers"}' https://aiconfpaper.com/api/v1/collections

# 3) add papers to it
curl -s -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"paper_ids":["nips-2025-GEzd5K5s5u","iclr-2026-02NbD16OnA"]}' \
  https://aiconfpaper.com/api/v1/collections/COLLECTION_ID/papers

# 3b) optional: add an arXiv paper that is NOT in the index
curl -s -X POST -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"arxiv":"2107.02192"}' https://aiconfpaper.com/api/v1/papers/external
#    -> paper_id "arxiv:2107.02192"; then add it like any other id (step 3)

# 4) get a paper's LaTeX source link, then download it
curl -s -H "Authorization: Bearer $KEY" \
  "https://aiconfpaper.com/api/v1/papers/nips-2025-GEzd5K5s5u"   # -> links.arxiv_src

# 5) export the whole collection as a ready-to-use references.bib
curl -s -H "Authorization: Bearer $KEY" \
  "https://aiconfpaper.com/api/v1/collections/COLLECTION_ID/export?format=bibtex" \
  -o references.bib

Machine-readable spec

Point a tool at /openapi.json (OpenAPI 3.1) or /llms.txt (agent quickstart).

For AI agents · AIConfPaper