sophotron
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENALEX_EMAIL | No | Optional: OpenAlex 'polite pool' contact email (a courtesy id, not a key). | |
| UNPAYWALL_EMAIL | No | Optional: Unpaywall 'polite pool' contact email (a courtesy id, not a key). | |
| SOPHOTRON_DATA_DIR | No | Advanced override: data directory. Documented in .env.example. | |
| SOPHOTRON_LIBRARY_PATH | No | Advanced override: library path. Documented in .env.example. | |
| SOPHOTRON_OAI_ENDPOINT | No | Advanced override: OAI-PMH endpoint. Documented in .env.example. | |
| SEMANTIC_SCHOLAR_API_KEY | No | Optional: raises Semantic Scholar rate limits. Without it, S2 still works but rate-limits aggressively on its shared unauthenticated pool. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_papersA | Search for philosophy papers using Semantic Scholar. Returns metadata, abstracts, and PDF URLs where available. Pass category_id (from browse_taxonomy) to re-rank results as a semantic lens over an inferred PhilPapers-category region — papers stay under "papers", each tagged with a relative proximity tier ("nearer"/"farther"/"unplaceable"); this is a "near category C" ordering, not an authoritative classification. |
| get_paperA | Get detailed metadata for a paper by ID. Accepts S2 paper ID, DOI, arXiv ID, or PhilArchive ID. |
| get_citationsA | Get papers that cite a given paper. |
| get_referencesB | Get papers that a given paper cites (its bibliography). |
| get_relatedA | Get papers similar to a given paper (recommendations based on SPECTER embeddings). Pass category_id (from browse_taxonomy) to re-rank the related set as a semantic lens over an inferred PhilPapers-category region — papers stay under "related", each tagged with a relative proximity tier; a "related, and near category C" ordering, not an authoritative classification. |
| get_pdfA | Get PDF URL for a paper. Tries Semantic Scholar open access first, then falls back to PhilArchive. |
| search_philarchiveA | Search the local PhilArchive cache directly. Useful for finding philosophy papers that may not be in Semantic Scholar. |
| harvest_philarchiveA | Incrementally harvest papers from PhilArchive OAI-PMH. Rate limited to 2 req/sec. Run periodically to update local cache. |
| get_cache_statsB | Get statistics about the local PhilArchive cache and cross-reference mappings. |
| search_openalexA | Search papers via OpenAlex with open-access full-text discovery. Complements Semantic Scholar; OpenAlex and the OA PDFs it points to are reachable by automated clients (unlike PhilArchive, which is Cloudflare-walled). Use philosophy_only to restrict to the OpenAlex Philosophy concept, and open_access_only to return only papers with OA full text. |
| browse_taxonomyA | Browse the expert-curated PhilPapers category hierarchy (6,134 categories from a cached snapshot — the live PhilPapers API is Cloudflare-blocked). Omit category_id for the top-level areas; pass category_id to list its subcategories; pass query to find categories by name. With a category_id you can: call category_papers to list influential papers near that category region, or pass it as the category_id param to search_papers / get_related to re-rank by category proximity. (Those are an inferred semantic lens, not an authoritative classification.) |
| category_papersA | List influential papers near an INFERRED semantic region for a PhilPapers category. This is a semantic lens over an inferred mapping (category name → SPECTER2 centroid → nearby papers), NOT an authoritative PhilPapers classification or a canonical reading list. Pass a category_id from browse_taxonomy. Coarse/distinct categories (top-level areas, subfields) are MORE reliable but still an unvalidated per-category inference; fine-grained leaves — and miscellaneous/structural buckets and thin regions — are flagged low-confidence. Papers are ranked by influential citation count, each tagged with its relative proximity to the region. |
| library_addA | Save a paper to your personal library (the arxiv-sanity "library" primitive). Resolves metadata from Semantic Scholar (or CrossRef for a bare DOI) and stores it with optional tags and a note. The saved set is what |
| library_removeA | Remove a saved paper from your personal library by id, S2 id, or DOI. |
| download_paperA | Resolve the best open-access PDF for a paper, fetch it, extract its text, and store it as markdown in the shared library (default ~/.arxiv-mcp-server/papers, override with ARXIV_MCP_STORAGE_PATH). Returns a paper_id (slug) to pass to read_paper. PhilArchive PDFs are browser-only (Cloudflare) and are not fetched — the URL is returned to open manually. |
| library_listA | List the papers in your personal library, newest first, optionally filtered to a tag. Also reports the set of tags in use. |
| recommendA | Recommend papers to read next, seeded by your library — the arxiv-sanity "more like these" feature. By default it uses your whole library as positive examples; pass |
| read_paperA | Read back the markdown text of a paper previously stored by download_paper. Supports pagination via start/max_chars. Reads {storageDir}/{paper_id}.md (shared with arxiv-mcp-server). If the paper is not stored, returns an error asking to download_paper first. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rookslog/sophotron'
If you have feedback or need assistance with the MCP directory API, please join our Discord server