mcpbeat

Arxiv

hezaohezao/arxiv

Search arXiv papers by keyword, author, category, or ID.

787 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
117
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/HezaoHezao/poirot --skill arxiv

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting

The instruction itself

9 sections, as written by the author

arXiv Research

Search and retrieve academic papers from arXiv via their free REST API. No API

key, no dependencies — just bash with curl.

Quick Reference

| Action | Command |

|--------|---------|

| Search papers | bash("curl -s 'https://export.arxiv.org/api/query?search_query=all:QUERY&max_results=5'") |

| Get specific paper | bash("curl -s 'https://export.arxiv.org/api/query?id_list=2402.03300'") |

| Read abstract | browse_page(url="https://arxiv.org/abs/2402.03300") |

| Read full paper (PDF) | browse_page(url="https://arxiv.org/pdf/2402.03300") |

Searching Papers

The API returns Atom XML. Parse with python3 for clean output.

curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5"

Clean output (parse XML to readable format)

curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5&sortBy=submittedDate&sortOrder=descending" | python3 -c "
import sys, xml.etree.ElementTree as ET
ns = {'a': 'http://www.w3.org/2005/Atom'}
root = ET.fromstring(sys.stdin.read())
for entry in root.findall('a:entry', ns):
    title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
    published = entry.find('a:published', ns).text[:10]
    summary = entry.find('a:summary', ns).text.strip()[:200]
    link = entry.find('a:id', ns).text
    print(f'{published} | {title}')
    print(f'  {link}')
    print(f'  {summary}...')
    print()
"

Search Query Syntax

| Field | Example |

|-------|---------|

| All fields | all:transformer |

| Title | ti:attention |

| Author | au:vaswani |

| Abstract | abs:reinforcement |

| Category | cat:cs.CL |

| Combine (AND) | all:transformer+AND+ti:attention |

| Combine (OR) | all:LLM+OR+all:large+language+model |

Common Categories

  • cs.CL — Computation and Language (NLP)
  • cs.CV — Computer Vision
  • cs.LG — Machine Learning
  • cs.AI — Artificial Intelligence
  • stat.ML — Machine Learning (Stats)
  • physics — Physics

Workflow

  • Search by keyword/author/category to find relevant papers
  • Read abstracts from search results
  • Fetch full abstract page with browse_page for promising papers
  • Read PDF with browse_page for full content (if needed)

Pitfalls

  • Rate limiting: arXiv API asks for 3-second间隔 between requests. Don't

hammer it.

  • Query too specific: `"diffusion models in computer vision for medical

imaging"` returns 0 results. Use 2-3 core keywords + category filter.

  • sortBy=relevance is usually better than submittedDate for topical

searches; use submittedDate only when user wants chronological order.

  • PDF parsing: browse_page on PDF URLs may return raw text or fail on

some papers. Prefer abstract pages for reliable content.

How to use it

Copy the folder

Take hezaohezao/arxiv from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.