MCPInstall

asta-skill

Use when the user needs papers, citations, or authors from the Semantic Scholar corpus through AI2's Asta MCP tools, covering keyword or title search with venue/date filters, who cited a paper, author profiles and publications, 500-word full-text snippets for evidence, and DOI/arXiv/PMID lookup. Trigger on "find papers on X", "who cited this paper", "papers by ", "recent work since 2024", "论文检索", "找论文", "文献综述", "谁引用了这篇", "某作者的论文". Also use for citation counts, h-index, or venue-scoped paper lists. Requires the Asta MCP server; routes intent to the right tool with context-safe limits and fields.

Installs
3.1K
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/agents365-ai/365-skills --skill asta-skill
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads asta-skill automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Asta MCP: Academic Paper Search

Asta is Ai2's Scientific Corpus Tool: the Semantic Scholar academic graph exposed over MCP (streamable HTTP). This skill tells agents which Asta tool to call for which intent, how to keep responses small enough to read, and which failure modes are silent.

  • MCP endpoint: https://asta-tools.allen.ai/mcp/v1
  • Auth: x-api-key header (request key at https://share.hsforms.com/1L4hUh20oT3mu8iXJQMV77w3ioxm)
  • Transport: streamable HTTP, stateless (no session id, no server-side state between calls)
  • Behavior verified against: Asta MCP server v1.12.3, 2026-10-01

Prerequisite Check

Before invoking any tool, verify the Asta MCP server is registered in the host agent. Tool names are prefixed by the MCP server name chosen at install time (commonly asta__<tool> or mcp__asta__<tool>).

If no Asta tools are visible, do not make raw HTTP calls or invent results. Tell the user to register https://asta-tools.allen.ai/mcp/v1 as a streamable HTTP MCP server with an x-api-key header, then restart/reload the host. Minimal setup hints:

  • Codex CLI: add [mcp_servers.asta] url = "https://asta-tools.allen.ai/mcp/v1" and env_http_headers = { "x-api-key" = "ASTA_API_KEY" } to ~/.codex/config.toml.
  • Claude Code: run claude mcp add -t http -s user asta https://asta-tools.allen.ai/mcp/v1 -H "x-api-key: $ASTA_API_KEY".
  • Generic MCP clients: configure server URL https://asta-tools.allen.ai/mcp/v1 with header { "x-api-key": "<YOUR_API_KEY>" }.

Tool Map: Intent → Asta Tool

User intentAsta toolDefaults and shape
Broad topic searchsearch_papers_by_relevancelimit default 50; supports venues + publication_date_range
Known paper titlesearch_paper_by_titleA resolver, not a searcher: returns the single best match plus matchScore (a limit of 5 still returned 1 row); supports venues + publication_date_range
One known IDget_paperIDs must carry a prefix: DOI:, ARXIV:, PMID:, PMCID:, CorpusId:, MAG:, ACL:, URL:, or a bare 40-hex Semantic Scholar id. A bare arXiv id (1706.03762) fails with Paper with id 1706.03762 not found
Several known IDsget_paper_batchids is a JSON array; unresolvable ids are silently dropped (3 ids in, 1 paper out, no error), so reconcile returned paperIds against your input
Who cited paper Xget_citationsForward citations, limit default 100; accepts publication_date_range, has no venues; each row is wrapped as {"citingPaper": {...}}
Find author by namesearch_authors_by_namefields default "name" returns only name + authorId; limit default 100
An author's publicationsget_author_papersField param is paper_fields; limit default 1000, newest first; accepts publication_date_range, has no venues
Passages mentioning Xsnippet_search~500-word excerpts (title/abstract/body, excludes captions and bibliography); limit default 20 and each row is heavy, and fewer rows than limit can come back; see its parameters below

Parameter names differ per tool (and unknown parameters are ignored, not rejected)

The server accepts unknown arguments silently, so a wrong parameter name produces an unfiltered but successful call. If results look unfiltered, suspect the parameter name before doubting the corpus.

  • get_author_papers selects fields with paper_fields, not fields. Passing fields= is ignored and you get titles only.
  • get_citations has no venues. Passing venues= is ignored and citer rows come back unfiltered.
  • snippet_search has neither fields nor publication_date_range. It has inserted_before (corpus insertion date, formats YYYY-MM-DD / YYYY-MM / YYYY), paper_ids (comma-separated, up to 100 ids, to restrict snippets to specific papers), and venues.
  • Every tool with a fields / paper_fields parameter defaults to title; omitting it is the quiet way to get an unrankable, unreadable result.
  • No tool returns a total count of matches. Report the returned row count, never a corpus total.

Row and payload budget (measured sizes)

CallRowsPayload
search_papers_by_relevance, limit=50, full preset with abstract50~296 KB (~5.9 KB/row)
get_citations, default limit=100, fields=title,year,venue100~56 KB (~0.6 KB/row)
get_paper, fields=title,year,citations (Attention Is All You Need)1~200 KB
get_paper, fields=title,year,references (same paper, 41 references)1~8 KB
get_author_papers, limit=100, paper_fields=title,year87~33 KB (~0.4 KB/row even without abstract)
search_authors_by_name, fields=name,paperCount,papers1 author~30 KB (all 87 of that author's papers)
snippet_search, limit=21 snippet~4.6 KB
  • Always pass an explicit limit: 20–50 for paper and citation lists, 5–10 for snippets. Defaults of 50, 100 and 1000 are context blowups.
  • snippet_search is the one tool whose documented default disagrees with the live server: the published docs page says 250, the live schema says 20, and an unset limit measured 20 rows / ~85 KB. Trust the live schema and set limit explicitly.
  • Never request citations or references through fields on get_paper / get_paper_batch: one highly cited paper returns 200 KB+. Use get_citations for forward citations (it paginates); for a reference list, request references only on papers you know have fewer than ~100.
  • Never request papers on search_authors_by_name: it returns the author's entire publication list and ignores limit. Use get_author_papers with an explicit limit instead.
  • Drop abstract when the output is a table or a ranking pass; fetch it only for the few papers you will actually describe.

Use task-specific field presets.

Metadata lookup:

title,year,authors,venue,tldr,url,abstract

Search/ranking/results tables:

title,year,authors,venue,tldr,url,abstract,citationCount,influentialCitationCount

DOI/export handoff:

title,year,authors,venue,tldr,url,externalIds

Add journal, publicationDate, fieldsOfStudy, isOpenAccess only when needed.

Undocumented fields that do work (pass-through)

externalIds, citationCount and influentialCitationCount are absent from the documented field list but are transparently passed through to Semantic Scholar and return correctly (verified on v1.12.3). externalIds keys seen: DOI, ArXiv, PubMed, PubMedCentral, CorpusId, MAG, DBLP. Caveats:

  • Not every paper has a DOI, especially arXiv preprints, which may carry only ArXiv + CorpusId.
  • DOI lookup works for the ids tested (DOI:10.1038/s41586-021-03819-2, DOI:10.1101/..., DOI:10.1371/journal.pone.0000308 all resolved), but treat it as best effort and fall back to a title search plus externalIds.
  • get_paper also returns paperId, isOpenAccess and openAccessPdf when not requested; journal is often only {"pages": ...}.
  • Treat all of this as best effort and degrade gracefully if a future Asta release drops it.

Date and venue filters

publication_date_range accepts YYYY-MM-DD:YYYY-MM-DD with both terms optional, and year or month shorthand: 2021:, :2015-01, 2015:2020, 2019-03. It works on search_papers_by_relevance, search_paper_by_title, get_citations and get_author_papers (verified correct for get_author_papers: 2024:2024 returned exactly the 7 in-range papers of an 87-paper author).

  • Papers with an unknown exact date still keep year, while publicationDate comes back null. Unknown dates are treated as January 1 of their year, so boundary-year filtering is approximate.
  • venues matches Semantic Scholar venue strings. Common abbreviations resolve (verified: NeurIPS and ICML both returned hits), and the venue field comes back canonical (Neural Information Processing Systems). Safest pattern: run one unfiltered keyword search, read the venue values, then filter with those exact strings.
  • A venue string that matches nothing returns zero rows, not an error, so an empty result can mean a wrong venue string rather than a missing paper.

Response Shapes (verified)

paper (get_paper, get_paper_batch, search_*, get_author_papers, get_citations):
  paperId, externalIds{DOI?, ArXiv?, PubMed?, PubMedCentral?, CorpusId?, MAG?, DBLP?},
  title, venue, year, publicationDate?, abstract?, tldr{model, text},
  authors[{authorId, name}], journal{pages?}, citationCount?, influentialCitationCount?,
  isOpenAccess, openAccessPdf, fieldsOfStudy[]

citing row (get_citations):   {"citingPaper": {paperId, title, year, ...}}
author (search_authors_by_name):  authorId, name, affiliations[] (often empty), homepage?,
  paperCount?, citationCount?, hIndex?, externalIds{DBLP: ["Name"]}
snippet (snippet_search):  {"data":[{"score":0.77,
  "paper":{"corpusId":..., "title":..., "authors":["Name", ...], "openAccessInfo":{...}},
  "snippet":{"text":"..."}}], "retrievalVersion":...}
  • authors is a list of objects in paper tools but a list of plain strings inside snippets.
  • Snippet papers carry corpusId, not paperId; look one up with CorpusId:<corpusId>.
  • search_paper_by_title adds matchScore; higher is better, useful for accepting or rejecting a fuzzy title.

Workflow Patterns

Pattern 1: Topic Discovery

  1. search_papers_by_relevance(keyword, publication_date_range="<current_year-5>:", fields="title,year,authors,venue,tldr,url,citationCount,influentialCitationCount", limit=20), computing the lower bound from today's date (in 2026, pass 2021:); drop or widen the filter if the user wants older work
  2. Rank and present the top N by citationCount + recency
  3. Offer follow-ups: get_citations on the most influential hit, or snippet_search for specific claims

Pattern 2: Seed-Paper Expansion

  1. get_paper(DOI|ARXIV|...) to verify the seed
  2. get_citations(paperId, fields="title,year,venue,citationCount", limit=50) for forward expansion
  3. Optionally search_papers_by_relevance with the seed's title terms for sideways discovery
  4. Deduplicate by paperId before presenting

Pattern 3: Author Deep-Dive

  1. search_authors_by_name(name, fields="name,affiliations,paperCount,citationCount,hIndex,externalIds", limit=10). These fields must be requested: the default returns only name + authorId. Disambiguate by externalIds.ORCID when present, then paperCount / citationCount / hIndex; affiliations is frequently empty even when requested (verified) and is only a tiebreaker. Name variants split the same person across ids (F. Theis and Fabian J. Theis were separate profiles), so check the top few candidates rather than the first row.
  2. get_author_papers(authorId, limit=50, paper_fields="title,year,authors,venue,tldr,url,citationCount", publication_date_range=?) for a bounded first page, newest first
  3. Filter client-side by topic keywords or date

Pattern 4: Evidence Retrieval

  1. snippet_search(claim_query, limit=5) to find passages making or supporting a claim
  2. To ground a claim within specific papers, pass paper_ids="<id1>,<id2>,…" (≤100) so snippets come only from that set
  3. For each hit, get_paper("CorpusId:<corpusId>") for full metadata

Output & Interaction Rules

  • Always report which tool was used and the returned row count (no tool exposes a total).
  • Present up to 10 results as a table (title, year, venue, citations if fetched), then details for the most relevant few.
  • If the user writes in Chinese, present summaries in Chinese; keep titles in their original language.
  • After results, offer: Details / Refine / Citations / Snippet / Export / Done.

Handling Asta Responses

SituationWhat to do
isError: true in the resultFailures arrive as a normal result with isError: true and a plain-text message while HTTP stays 200, so never trust the transport status. Examples: a bad key gives Error executing tool get_paper: HTTP status 403 Forbidden.; an unknown tool name gives Unknown tool: get_references
Empty content arrayA legitimate empty result (for example a venues string that matches nothing). It is not an error
Stream carries only : ping keepalives and no resultObserved on zero-result queries: the server can hold the SSE stream open until the client times out instead of returning content: []. Set a client timeout, retry once, and only then report "no results"; do not silently hang
Empty abstractNot all corpus papers have full text. Fall back to snippet_search, or present title + tldr
Author disambiguation uncertainRequest the ranking fields up front (Pattern 3); prefer externalIds.ORCID, then paperCount / citationCount / hIndex, with affiliations as a tiebreaker only
Date-filtered resultspublicationDate can be null while year is always present, and unknown dates behave as January 1, so boundary-year filtering is approximate
429 Too Many RequestsBack off and batch with get_paper_batch instead of sequential get_paper calls
Need DOI / PubMed ID / arXiv IDAdd externalIds to fields; fall back to ArXiv when DOI is absent

Critical Rules

  • Prefer batched intent over ping-pong. If a question needs two independent lookups, issue them as parallel MCP calls in one turn, not sequentially.
  • Never guess IDs. A fuzzy title goes through search_paper_by_title first, and ids always carry their prefix.
  • Check isError before reading content, since transport-level status is always 200.
  • Respect rate limits. An API key buys higher limits but not unlimited ones; stop expanding citation graphs beyond what the user asked for.
  • Do not fabricate fields. If Asta returns a null abstract, venue or citationCount, say so rather than inventing one.

FAQ

What does the asta-skill skill do?

Use when the user needs papers, citations, or authors from the Semantic Scholar corpus through AI2's Asta MCP tools, covering keyword or title search with venue/date filters, who cited a paper, author profiles and publications, 500-word full-text snippets for evidence, and DOI/arXiv/PMID lookup. Trigger on "find papers on X", "who cited this paper", "papers by ", "recent work since 2024", "论文检索", "找论文", "文献综述", "谁引用了这篇", "某作者的论文". Also use for citation counts, h-index, or venue-scoped paper lists. Requires the Asta MCP server; routes intent to the right tool with context-safe limits and fields.

How do I install asta-skill?

Run npx skills add https://github.com/agents365-ai/365-skills --skill asta-skill in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/asta-skill/ (personal) or .claude/skills/asta-skill/ (project).

Which AI agents can use asta-skill?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is asta-skill safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains asta-skill?

It is published by agents365-ai in agents365-ai/365-skills. It has 3,068 recorded installs.

More from agents365-ai/365-skills

View all →

drawio-skill

agents365-ai/365-skills

Create, edit, synchronize, inspect, test, and publish editable draw.io diagrams. Use when the user explicitly requests draw.io/diagrams.net, needs a polished architecture, ERD, UML, sequence, C4, SysML, BPMN, network, swimlane, ML, or infrastructure diagram, wants code/IaC/SQL/OpenAPI/AsyncAPI/Protobuf converted into a diagram, or wants an existing diagram queried, reviewed, diffed, restyled, kept in sync, or made interactive. Prefer Mermaid/PlantUML elsewhere when the requested artifact is diagrams-as-code rather than an editable draw.io file.

Docs & Writing9K installs

excalidraw

agents365-ai/365-skills

Use when user requests diagrams, flowcharts, architecture charts, or visualizations. Also use proactively when explaining systems with 3+ components, complex data flows, or relationships that benefit from visual representation. Generates .excalidraw files and exports to PNG/SVG via Kroki API or locally using excalidraw-brute-export-cli.

Backend & APIs4.6K installs

creating-mermaid-diagrams

agents365-ai/365-skills

Generate Mermaid diagrams (.mmd) and export to PNG/SVG/PDF using mmdc CLI or Kroki API. USE THIS SKILL when user mentions diagram, flowchart, sequence diagram, class diagram, ER diagram, state machine, architecture, visualize, git graph, 画图, 架构图, 流程图, 时序图. PROACTIVELY USE when explaining ANY system with 3+ components, API flows, authentication sequences, class hierarchies, database schemas, or state machines. Supports 11+ diagram types with fully automatic layout.

Docs & Writing4.2K installs

plantuml-skill

agents365-ai/365-skills

Use when user requests diagrams, flowcharts, sequence diagrams, class diagrams, component diagrams, ER diagrams, architecture charts, or visualizations — including generating a diagram from existing source code, or rendering/extracting PlantUML embedded in a Markdown file to images (e.g. preparing docs for Confluence/Notion). Also use proactively when explaining systems with 3+ components, APIs, data flows, or class hierarchies. Generates .puml files and exports to PNG/SVG via Kroki API (no local install required).

Docs & Writing4.1K installs

tldraw-skill

agents365-ai/365-skills

Use when user requests diagrams, flowcharts, architecture charts, or visualizations. Also use proactively when explaining systems with 3+ components, complex data flows, or relationships that benefit from visual representation. Generates .tldr JSON files and exports to PNG/SVG locally using @kitschpatrol/tldraw-cli.

paper-fetch

agents365-ai/365-skills

Use whenever the user wants to obtain, download, or fetch a paper's PDF — given a DOI, an arXiv id, a paper title, a citation, or a list of DOIs. Trigger on phrases like "download this paper", "find the PDF for [DOI]", "grab me the [Nature/bioRxiv/arXiv] paper on X", "get the open-access version", "I need this article", or any bulk/batch paper download request, even when the user doesn't explicitly say "PDF" or "DOI". Resolves via Unpaywall → Semantic Scholar → arXiv → PubMed Central → bioRxiv/medRxiv → publisher direct (institutional opt-in) → Sci-Hub mirrors as last-resort fallback.

Education & Science3.4K installs

Popular education & science skills

View category →

teach

mattpocock/skills

Teach the user a new skill or concept, within this workspace.

Education & Science874K installs

scaffold-exercises

mattpocock/skills

Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.

Education & Science488.2K installs

paper-context-resolver

lllllllama/rigorpilot-skills

Rigor Paper Context helper for README-first deep learning repo reproduction. Use only when the README and repository files leave a narrow reproduction-critical gap and the task is to resolve a specific paper detail such as dataset split, preprocessing, evaluation protocol, checkpoint mapping, or runtime assumption from primary paper sources while recording conflicts. Do not use for general paper summary, repo scanning, environment setup, command execution, title-only paper lookup, or replacing README guidance by default.

Education & Science478.3K installs

caveman-learn

juliusbrussee/caveman

Act on a Caveman learn report - review the ranked token sinks, apply cost-lowering fixes with per-edit consent, and report what those fixes returned. Use when asked to lower an agent's token cost, what caveman has saved, to trim a heavy CLAUDE.md, or to offload re-pasted context into cavemem.

Education & Science107.9K installs

gsap-plugins

greensock/gsap-skills

Official GSAP skill for GSAP plugins — registration, ScrollToPlugin, ScrollSmoother, Flip, Draggable, Inertia, Observer, SplitText, ScrambleText, SVG and physics plugins, CustomEase, EasePack, CustomWiggle, CustomBounce, GSDevTools. Use when the user asks about a GSAP plugin, scroll-to, flip animations, draggable, SVG drawing, or plugin registration.

Education & Science67.9K installs

teach-impeccable

pbakaus/impeccable

DEPRECATED: Use /impeccable teach instead. This command has been folded into the impeccable skill.