pi-paper-search
v0.1.0
Published
Pi extension: search Semantic Scholar, arXiv, and OpenAlex. API credentials via the built-in /login.
Readme
pi-paper-search
A Pi extension that searches academic papers on Semantic Scholar, arXiv, and OpenAlex. API credentials are managed through Pi's built-in /login command.
Install
pi install npm:pi-paper-searchConfigure credentials (optional)
All three sources work anonymously. Credentials only raise rate limits (Semantic Scholar) or put you in the polite pool (OpenAlex). Stored in pi's global ~/.pi/agent/auth.json.
/login semantic-scholar # paste a Semantic Scholar Graph API key
/login openalex # enter an OpenAlex polite-pool contact emailarXiv has no auth system, so it is not a /login target.
search_papers tool
Searches any of the three sources (or all of them at once) and returns normalized paper records.
| Parameter | Type | Default | Notes |
|---------------|---------------------------------------------------|-------------|-------|
| query | string | required | Free-text search |
| source | semantic-scholar | arxiv | openalex | all | required | all merges and deduplicates by normalized title |
| limit | number | 10 | Max results per source |
| year | string | — | e.g. 2024 or 2023-2026 (Semantic Scholar, OpenAlex) |
| sort | relevance | citations | relevance | Semantic Scholar, OpenAlex |
| openAccess | boolean | false | Only return papers with a free PDF link |
Each result is normalized to:
{
"source": "semantic-scholar",
"id": "abc-1",
"title": "Attention Is All You Need",
"year": 2017,
"citations": 90000,
"authors": "A. Vaswani, N. Shazeer",
"abstract": "...",
"venue": "NeurIPS",
"pdf": "https://...",
"url": "https://...",
"doi": "10.5555/...",
"arxivId": "1706.03762"
}How it works
Registers two auth-only pi-ai providers (semantic-scholar, openalex) that declare no LLM models, so they never appear in /model but do show up in /login. The search_papers tool reads the stored credentials via ctx.modelRegistry.getProviderAuth(...). This follows the same pattern as pi-zotero-web.
Development
npm test # node:test suite
npm run check # tsc --strictLicense
MIT
