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
| Parameter | Type | Required | Description |
|---|---|---|---|
queries | string[] | Yes | Search queries (max 15) |
limit | number | No | Results per query (default: 15, max: 20) |
from | string | No | Start date (YYYY-MM-DD) |
to | string | No | End 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
| Parameter | Type | Required | Description |
|---|---|---|---|
arxivIds | string[] | Yes | arXiv 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
| Parameter | Type | Required | Description |
|---|---|---|---|
requests | array | Yes | Array of paper requests |
requests[].arxivId | string | Yes | arXiv ID |
requests[].nodeIds | string[] | No | Specific node IDs to fetch |
requests[].types | string[] | No | Node types to fetch ALL of |
format | string | No | Output format: markdown (default), raw, or latex |
Provide either nodeIds OR types (or both). At least one is required.
Output Formats
| Format | Description |
|---|---|
markdown | Human-readable markdown with equations rendered as $$...$$ (default) |
raw | JSON AST with full token structure — useful for programmatic processing |
latex | Reconstructed LaTeX source — useful for recompilation or editing |
Node Types
| Type | Description |
|---|---|
section | Sections and subsections |
equation | Numbered equations |
equation_array | Multi-line equations (align, gather, etc.) |
figure | Figures with images and captions |
table | Tables with data |
algorithm | Algorithm blocks |
code | Code listings |
math_env | Theorems, lemmas, proofs, definitions |
Node ID Formats
| Type | Format | Example |
|---|---|---|
| Sections | sec:N | sec:3.2.1 |
| Equations | eq:N | eq:1 |
| Figures | fig:N | fig:2 |
| Tables | tab:N | tab:1 |
| Theorems | thm:N | thm:1 |
| Lemmas | lem:N | lem:2 |
| Definitions | def:N | def:1 |
| Algorithms | alg:N | alg: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
| Parameter | Type | Required | Description |
|---|---|---|---|
arxivId | string | Yes | arXiv ID |
limit | number | No | Max references (default: 100) |
offset | number | No | Pagination 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
| Parameter | Type | Required | Description |
|---|---|---|---|
arxivId | string | Yes | arXiv ID |
limit | number | No | Max citations (default: 100) |
offset | number | No | Pagination 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
| Parameter | Type | Required | Description |
|---|---|---|---|
authorId | string | Yes | Semantic Scholar author ID (from paper overview authors[].authorId) |
sort | string | No | Sort order: recent (default) or citations |
limit | number | No | Max papers (default: 20, max: 100) |
offset | number | No | Pagination 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
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | No | Filter by artifact type (e.g., weekly_digest, monthly_digest) |
field | string | No | Filter by research field (e.g., rl, nlp, robotics, cv) |
limit | number | No | Max results (default: 20) |
offset | number | No | Pagination 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
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Artifact 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
| Parameter | Type | Required | Description |
|---|---|---|---|
fileContent | string | Yes | Base64-encoded file content |
filename | string | Yes | Filename 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
| Parameter | Type | Required | Description |
|---|---|---|---|
jobId | string | Yes | Job 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.