asta-skill
Domain expertise for Ai2 Asta MCP tools (Semantic Scholar corpus). Intent-to-tool routing, safe defaults, workflow patterns, and pitfall warnings for academic paper search, citation traversal, and author discovery.
install
source · Clone the upstream repo
git clone https://github.com/Agents365-ai/asta-skill
Claude Code · Install into ~/.claude/skills/
git clone --depth=1 https://github.com/Agents365-ai/asta-skill ~/.claude/skills/agents365-ai-asta-skill-asta-skill
manifest:
SKILL.mdsource content
Asta MCP — Academic Paper Search
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.
- MCP endpoint:
https://asta-tools.allen.ai/mcp/v1 - Auth:
header (request key at https://share.hsforms.com/1L4hUh20oT3mu8iXJQMV77w3ioxm)x-api-key - Transport: streamable HTTP
Update Notifications
If
<skill_directory>/.last_version_check is missing or >24h old, fetch the version from https://raw.githubusercontent.com/Agents365-ai/asta-skill/main/SKILL.md, compare to the local version, then write the current Unix timestamp to .last_version_check. If remote is newer, tell the user once: 📢 asta-skill X.Y.Z → A.B.C. Run 'git -C <skill_directory> pull' to update. Silently skip on any failure. Never run git pull yourself.
Prerequisite Check
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.
Tool Map — Intent → Asta Tool
| User intent | Asta tool | Notes |
|---|---|---|
| Broad topic search | | Supports venue + date filters |
| Known paper title | | Optional venue restriction |
| Known DOI / arXiv / PMID / CorpusId / MAG / ACL / SHA / URL | | Single-paper lookup |
| Multiple known IDs at once | | Batch lookup — prefer over N sequential calls |
| Who cited paper X | | Citation traversal with filters, paginated |
| Find author by name | | Returns profile info |
| An author's publications | | Pass author id from previous call |
| Find passages mentioning X | | ~500-word excerpts from paper bodies |
Search/citation tools accept
(format publication_date_range
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
fieldsget_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:
title,year,authors,venue,tldr,url,abstract
Add
journal, publicationDate, fieldsOfStudy, isOpenAccess only when needed.
Workflow Patterns
Pattern 1 — Topic Discovery
→ initial hits (compute the lower bound from today's date — e.g., in 2026 passsearch_papers_by_relevance(keyword, publication_date_range="<current_year-5>:", venues=?)
; adjust or drop the filter if the user asks for older work)publication_date_range="2021:"- Rank/present top N by citationCount + recency
- Offer follow-ups:
on the most influential, orget_citations
for specific claimssnippet_search
Pattern 2 — Seed-Paper Expansion
→ verify seedget_paper(DOI|arXiv|...)
→ forward expansionget_citations(paperId)- Optionally
with seed title terms for sideways discoverysearch_papers_by_relevance - Deduplicate by paperId before presenting
Pattern 3 — Author Deep-Dive
→ pick correct profile (disambiguate by affiliation)search_authors_by_name(name)
→ full publication listget_author_papers(authorId)- Filter client-side by topic keywords or date
Pattern 4 — Evidence Retrieval
→ find passages making/supporting a claimsnippet_search(claim_query)- For each hit, optionally
for full metadataget_paper(id)
Output & Interaction Rules
- Always report total count and which tool was used.
- Present top 10 as a table (title, year, venue, citations), then details for the most relevant.
- If the user writes in Chinese, present summaries in Chinese; keep titles in original language.
- After results, offer: Details / Refine / Citations / Snippet / Export / Done.
Critical Rules
- Prefer batched intent over ping-pong. If the user's question needs two independent lookups, issue them as parallel MCP tool calls in one turn, not sequentially.
- Never guess IDs. If a user gives a fuzzy title, use
beforesearch_paper_by_title
.get_paper - Respect rate limits. An API key buys higher limits but not unlimited — stop expanding citation graphs beyond what the user asked for.
- Do not fabricate fields. If Asta returns null
orabstract
, say so rather than inventing.venue
Handling Asta responses
| Situation | What to do |
|---|---|
Empty | Not all corpus papers have full text — use , or fall back to title + TLDR |
| Author disambiguation uncertain | Inspect affiliations in results before calling |
| Back off; batch with instead of sequential calls |