MCP

Tools Reference

All MCP tools support batching for efficiency. Search multiple queries, fetch multiple papers, get multiple nodes — in a single call.

searchPapers

Search for papers by keywords, topic, or author.

Batch limit: 15 queries per call

Parameters

ParameterTypeRequiredDescription
queriesstring[]YesSearch queries (max 15)
limitnumberNoResults per query (default: 15, max: 20)
fromstringNoStart date (YYYY-MM-DD)
tostringNoEnd date (YYYY-MM-DD)

Example

{
  "queries": ["transformer attention", "self-attention mechanism"]
}

Response

{
  "results": [
    {
      "arxivId": "1706.03762",
      "title": "Attention Is All You Need",
      "authors": ["Ashish Vaswani", "Noam Shazeer", "..."],
      "tldr": "A new simple network architecture...",
      "citationCount": 159306
    }
  ]
}

getPaperOverview

Get paper structure: TOC, figures, tables, mathEnvs (theorems/lemmas/proofs), and AI summaries.

Batch limit: 25 papers per call

Parameters

ParameterTypeRequiredDescription
arxivIdsstring[]YesarXiv IDs (max 25)

Example

{
  "arxivIds": ["1706.03762", "2301.07041"]
}

Response

{
  "arxivId": "1706.03762",
  "title": "Attention Is All You Need",
  "abstract": "The dominant sequence transduction models...",
  "citation": {
    "bibtex": "@article{vaswani2017attention,\n  title={Attention Is All You Need},\n  author={Vaswani, Ashish and Shazeer, Noam and ...},\n  journal={arXiv preprint arXiv:1706.03762},\n  year={2017}\n}",
    "apa": "Vaswani, A., Shazeer, N., ... (2017). Attention Is All You Need. arXiv preprint arXiv:1706.03762."
  },
  "sections": [
    { "section": "1", "nodeId": "sec:1", "title": "Introduction", "summary": "..." }
  ],
  "figures": [{ "nodeId": "fig:1", "caption": "The Transformer architecture" }],
  "tables": [{ "nodeId": "tab:1", "caption": "Maximum path lengths..." }],
  "mathEnvs": [{ "nodeId": "thm:1", "type": "theorem", "number": "1", "title": "Universal Approximation" }]
}

The citation field provides ready-to-use BibTeX and APA citations — no need to format them yourself.

mathEnvs contains theorem-like environments (theorems, lemmas, proofs, definitions) — not equations. To fetch equations, use getNodes with types: ["equation"].


getNodes

Fetch content by node IDs OR by type. Use nodeIds for specific elements, or types to fetch all of a kind.

Batch limit: 10 papers per call, 10 nodes per paper

Parameters

ParameterTypeRequiredDescription
requestsarrayYesArray of paper requests
requests[].arxivIdstringYesarXiv ID
requests[].nodeIdsstring[]NoSpecific node IDs to fetch
requests[].typesstring[]NoNode types to fetch ALL of
formatstringNoOutput format: markdown (default), raw, or latex

Provide either nodeIds OR types (or both). At least one is required.

Output Formats

FormatDescription
markdownHuman-readable markdown with equations rendered as $$...$$ (default)
rawJSON AST with full token structure — useful for programmatic processing
latexReconstructed LaTeX source — useful for recompilation or editing

Node Types

TypeDescription
sectionSections and subsections
equationNumbered equations
equation_arrayMulti-line equations (align, gather, etc.)
figureFigures with images and captions
tableTables with data
algorithmAlgorithm blocks
codeCode listings
math_envTheorems, lemmas, proofs, definitions

Node ID Formats

TypeFormatExample
Sectionssec:Nsec:3.2.1
Equationseq:Neq:1
Figuresfig:Nfig:2
Tablestab:Ntab:1
Theoremsthm:Nthm:1
Lemmaslem:Nlem:2
Definitionsdef:Ndef:1
Algorithmsalg:Nalg:1

Examples

Fetch by node IDs:

{
  "requests": [
    { "arxivId": "1706.03762", "nodeIds": ["sec:3.2.1", "eq:1", "fig:1"] }
  ]
}

Fetch all equations:

{
  "requests": [
    { "arxivId": "1706.03762", "types": ["equation"] }
  ]
}

Fetch all tables and figures:

{
  "requests": [
    { "arxivId": "1706.03762", "types": ["table", "figure"] }
  ]
}

Fetch equations as LaTeX:

{
  "requests": [
    { "arxivId": "1706.03762", "types": ["equation"] }
  ],
  "format": "latex"
}

Response

{
  "1706.03762": {
    "sec:3.2.1": {
      "type": "section",
      "title": "Scaled Dot-Product Attention",
      "content": "We call our particular attention..."
    },
    "eq:1": {
      "type": "equation",
      "latex": "\\mathrm{Attention}(Q,K,V) = ...",
      "numbering": "1"
    }
  }
}

getReferences

Get bibliography with Semantic Scholar enrichment.

Limit: 100 references per call

Parameters

ParameterTypeRequiredDescription
arxivIdstringYesarXiv ID
limitnumberNoMax references (default: 100)
offsetnumberNoPagination offset

Example

{
  "arxivId": "1706.03762"
}

Response

{
  "references": [
    {
      "citeKey": "bahdanau2014neural",
      "arxivId": "1409.0473",
      "title": "Neural Machine Translation by Jointly Learning to Align and Translate",
      "authors": ["Dzmitry Bahdanau", "Kyunghyun Cho"],
      "year": 2014,
      "citationCount": 28451
    }
  ]
}

getCitations

Get forward citations — papers that cite the given paper.

Limit: 100 citations per call

Parameters

ParameterTypeRequiredDescription
arxivIdstringYesarXiv ID
limitnumberNoMax citations (default: 100)
offsetnumberNoPagination offset

Example

{
  "arxivId": "1706.03762"
}

Response

{
  "citations": [
    {
      "arxivId": "1810.04805",
      "title": "BERT: Pre-training of Deep Bidirectional Transformers",
      "authors": ["Jacob Devlin", "Ming-Wei Chang", "..."],
      "published": "2018-10-11",
      "citationCount": 95421
    }
  ]
}

getAuthorPapers

Get papers by a specific author using their Semantic Scholar author ID.

Parameters

ParameterTypeRequiredDescription
authorIdstringYesSemantic Scholar author ID (from paper overview authors[].authorId)
sortstringNoSort order: recent (default) or citations
limitnumberNoMax papers (default: 20, max: 100)
offsetnumberNoPagination offset

Example

{
  "authorId": "1741101"
}

Response

{
  "papers": [
    {
      "arxivId": "1706.03762",
      "title": "Attention Is All You Need",
      "authors": ["Ashish Vaswani", "Noam Shazeer", "..."],
      "published": "2017-06-12",
      "citationCount": 159306
    }
  ]
}

Find author IDs in getPaperOverview responses — each author object includes an authorId field from Semantic Scholar.


getArtifacts

List curated research artifacts (lightweight index). Returns metadata only — use getArtifact(slug) to fetch full content.

Parameters

ParameterTypeRequiredDescription
typestringNoFilter by artifact type (e.g., weekly_digest, monthly_digest)
fieldstringNoFilter by research field (e.g., rl, nlp, robotics, cv)
limitnumberNoMax results (default: 20)
offsetnumberNoPagination offset

Examples

List RL weekly digests:

{
  "type": "weekly_digest",
  "field": "rl"
}

Response

{
  "artifacts": [
    {
      "slug": "weekly-rl-2026-w05",
      "type": "weekly_digest",
      "title": "RL Weekly: Jan 29 - Feb 4, 2026",
      "summary": "3 breakthroughs from 150 papers...",
      "tags": ["rl", "weekly", "2026", "w05"],
      "createdAt": "2026-02-08T10:34:29Z"
    }
  ],
  "pagination": { "offset": 0, "limit": 20, "total": 18 }
}

No payload field — this is a lightweight index for browsing. Use getArtifact(slug) to fetch the full content.


getArtifact

Get full artifact content by slug.

Parameters

ParameterTypeRequiredDescription
slugstringYesArtifact slug (e.g., weekly-rl-2026-w05)

Example

{
  "slug": "weekly-rl-2026-w05"
}

Response

{
  "slug": "weekly-rl-2026-w05",
  "type": "weekly_digest",
  "title": "RL Weekly: Jan 29 - Feb 4, 2026",
  "summary": "3 breakthroughs from 150 papers...",
  "tags": ["rl", "weekly", "2026", "w05"],
  "payload": {
    "breakthroughs": [
      {
        "arxiv_id": "2602.02710",
        "title": "Maximum Likelihood Reinforcement Learning",
        "why_novel": "Bridges ML and RL via compute-aware interpolation...",
        "evidence": [{ "node_id": "thm:1", "desc": "ML gradient theorem" }]
      }
    ],
    "trends": ["GRPO variant explosion signals paradigm exhaustion..."],
    "notable": [{ "arxiv_id": "2602.03386", "title": "PPO Convergence Proof" }]
  },
  "createdAt": "2026-02-08T10:34:29Z",
  "updatedAt": "2026-02-08T10:34:29Z"
}

Use getArtifacts() first to browse available artifacts, then fetch specific ones by slug. The evidence arrays link claims to specific paper sections — use getNodes() to fetch the cited content.


uploadPaper

Upload your own TeX/LaTeX file for parsing. For arXiv papers, use getPaperOverview instead — it auto-queues parsing.

Accepted formats: .tex, .zip, .tar.gz, .tgz, .gz, .flt. No PDFs.

Parameters

ParameterTypeRequiredDescription
fileContentstringYesBase64-encoded file content
filenamestringYesFilename with extension (e.g., paper.tex, archive.zip)

Example

{
  "filename": "paper.tex",
  "fileContent": "XGRvY3VtZW50Y2xhc3N7YXJ0aWNsZX0..."
}

Response

{
  "status": "processing",
  "paperId": "550e8400-e29b-41d4-a716-446655440000",
  "jobId": "660e8400-e29b-41d4-a716-446655440000",
  "filename": "paper.tex",
  "message": "File submitted for processing. Poll with getJobStatus({ jobId: \"660e8400...\" }) until status is \"done\".",
  "estimatedTimeMinutes": 5
}

After upload, poll getJobStatus until status is "done". Then use the paperId (UUID) with getNodes or other tools to query the parsed paper.


getJobStatus

Poll the status of a paper upload processing job.

Parameters

ParameterTypeRequiredDescription
jobIdstringYesJob ID from uploadPaper response

Example

{
  "jobId": "660e8400-e29b-41d4-a716-446655440000"
}

Response (processing)

{
  "jobId": "660e8400-e29b-41d4-a716-446655440000",
  "status": "processing",
  "progressPercent": 45,
  "message": "Parsing document..."
}

Response (done)

{
  "jobId": "660e8400-e29b-41d4-a716-446655440000",
  "status": "done",
  "progressPercent": 100,
  "paperId": "550e8400-e29b-41d4-a716-446655440000"
}

Typical processing time: 1-5 minutes. Once status is "done", use the paperId with getNodes, getReferences, etc.

    Tools Reference