在 Ai2 Asta MCP 工具(Semantic Scholar 语料库)领域的专业知识,涵盖意图‑工具路由、安全默认设置、工作流模式以及学术陷阱警示。
Asta is Ai2's Scientific Corpus Tool, exposing the Semantic Scholar academic graph over MCP (streamable HTTP transport). This skill tells agents which Asta tool to call for which intent, and how to compose them into useful workflows.
https://asta-tools.allen.ai/mcp/v1x-api-key header (request key at https://share.hsforms.com/1L4hUh20oT3mu8iXJQMV77w3ioxm)Before invoking any tool, verify the Asta MCP server is registered in the host agent. Tool names will be prefixed by the MCP server name chosen at install time (commonly asta__<tool> or mcp__asta__<tool>). If no Asta tools are visible, direct the user to the Installation section below.
User intentAsta toolNotesBroad topic searchsearch_papers_by_relevanceSupports venue + date filtersKnown paper titlesearch_paper_by_titleOptional venue restrictionKnown DOI / arXiv / PMID / CorpusId / MAG / ACL / SHA / URLget_paperSingle-paper lookupMultiple known IDs at onceget_paper_batchBatch lookup — prefer over N sequential get_paper callsWho cited paper Xget_citationsCitation traversal with filters, paginatedFind author by namesearch_authors_by_nameReturns profile infoAn author's publicationsget_author_papersPass author id from previous callFind passages mentioning Xsnippet_search~500-word excerpts from paper bodies
Search/citation tools accept publication_date_range (format YYYY-MM-DD:YYYY-MM-DD; year shorthand like "2021:", ":2015-01", "2015:2020" is also accepted) and venues (comma-separated) filters, plus fields for field selection — pass them whenever the user's intent constrains scope (e.g., "recent", "since 2022", "at NeurIPS").
fields parameter — avoid context blowups#get_paper / get_paper_batch accept a fields string. Never request citations or references via fields — a single highly-cited paper (e.g. Attention Is All You Need) returns 200k+ characters and will overflow the agent's context window. Use the dedicated get_citations tool for forward citations (it paginates). Asta does not provide a dedicated get_references tool — to retrieve a paper's reference list, use get_paper with fields=references only for papers you know have a small reference list (typically < 100).
Safe default fields for get_paper:
text
title,year,authors,venue,tldr,url,abstract
Add journal, publicationDate, fieldsOfStudy, isOpenAccess only when needed.
Asta's official fields list does not include externalIds, but the field is transparently passed through to the underlying Semantic Scholar API and works in practice. Add externalIds to fields to retrieve DOI, PubMed, PubMedCentral, ArXiv, MAG, DBLP, CorpusId. Caveats:
ArXiv + CorpusId.get_paper("DOI:...") lookup is not 100% reliable; some valid DOIs return not found. Prefer searching by title first, then reading externalIds off the result.search_papers_by_relevance(keyword, publication_date_range="<current_year-5>:", venues=?) → initial hits (compute the lower bound from today's date — e.g., in 2026 pass publication_date_range="2021:"; adjust or drop the filter if the user asks for older work)get_citations on the most influential, or snippet_search for specific claimsget_paper(DOI|arXiv|...) → verify seedget_citations(paperId) → forward expansionsearch_papers_by_relevance with seed title terms for sideways discoverysearch_authors_by_name(name) → pick correct profile (disambiguate by affiliation)get_author_papers(authorId) → full publication listsnippet_search(claim_query) → find passages making/supporting a claimget_paper(id) for full metadatasearch_paper_by_title before get_paper.abstract or venue, say so rather than inventing.SituationWhat to doEmpty abstractNot all corpus papers have full text — use snippet_search, or fall back to title + TLDRAuthor disambiguation uncertainInspect affiliations in search_authors_by_name results before calling get_author_papers``429 Too Many RequestsBack off; batch with get_paper_batch instead of sequential get_paper callsNeed DOI / PubMed ID / arXiv IDAdd externalIds to fields (see "Retrieving DOI" above); fall back to ArXiv ID when DOI is absent