AlphaXiv MCP
Vendor MCP18 toolsOAuth 2.1/DCRAISearchDeveloper ToolsConnect to AlphaXiv MCP to search and retrieve arXiv research papers, abstracts, authors, and citations from your AI workflows.
AlphaXiv MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'alphaxivmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize AlphaXiv MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'alphaxivmcp_find_researchers',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "alphaxivmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize AlphaXiv MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="alphaxivmcp_find_researchers",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Researcher unfollow, follow — Stop following a researcher
- Folder save papers to, rename, remove papers from — Add one or more papers (by arXiv id or alphaXiv/arXiv URL) to a folder in the user’s library
- Researchers resolve, find — Turns a list of people extracted from a webpage or other external source into current, citeable alphaXiv researcher entries
- Folders move papers between — Move papers from a source folder to a destination folder in a single atomic operation: each paper is added to the destination and removed from the source
- List library, followed researchers — List the user’s alphaXiv library: their folders (bookmark collections) with folder_id, name, type, parent_id, sharing_status, and paper_count
- Get researcher papers, researcher, paper content — Papers on alphaXiv for one or many researchers, grouped per researcher
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
alphaxivmcp_answer_pdf_queries#Returns raw filtered page content from one PDF as XML. Supports arXiv, alphaXiv, and Semantic Scholar abstract pages. Multiple queries on the same paper can be batched into one call.2 params
Returns raw filtered page content from one PDF as XML. Supports arXiv, alphaXiv, and Semantic Scholar abstract pages. Multiple queries on the same paper can be batched into one call.
paperstringrequiredThe paper to read, as an ID ('2307.12307'), a URL ('https://arxiv.org/pdf/2307.12307', 'https://www.alphaxiv.org/abs/2307.12307'), or a title or keyword ('DeepSeek-V4'). An title resolves to a single best match, which you should prefer instead of using lookup_paper.queriesarrayrequiredA brief description of what information you're looking for in the paper.alphaxivmcp_create_folder#Create a new custom folder in the user's library. Optionally nest it under parent_folder_id (from list_library). Returns the new folder_id.2 params
Create a new custom folder in the user's library. Optionally nest it under parent_folder_id (from list_library). Returns the new folder_id.
namestringrequiredThe name to give the new folder (1-100 characters).parent_folder_idstringoptionalNest the new folder under this existing folder.alphaxivmcp_delete_folder#Delete a folder and its paper memberships (the papers themselves are not deleted). The publications and private-papers folders cannot be deleted. Get folder_id from list_library.1 param
Delete a folder and its paper memberships (the papers themselves are not deleted). The publications and private-papers folders cannot be deleted. Get folder_id from list_library.
folder_idstringrequiredThe folder_id of the folder to delete, obtained from list_library.alphaxivmcp_discover_papers#Discovers and ranks multiple candidate papers for a research topic. Use for literature discovery, related work, or broad topical coverage.6 params
Discovers and ranks multiple candidate papers for a research topic. Use for literature discovery, related work, or broad topical coverage.
difficultynumberrequiredA 1-10 estimate of how much retrieval effort this request warrants.keywordsarrayrequired3-4 concise keyword terms for exact-name, acronym, method, benchmark, author, or title matching.questionstringrequiredA detailed semantic description of the papers that would best answer the user's request.prioritizestringoptionalWhat to weigh once topical relevance is accounted for. Omit it for the default, which grounds results in roughly the past year of work while letting strong older matches through. Use 'recency' when the request is about what is new — 'latest work', 'what has X been up to', 'recent papers' — which ranks the newest plausible matches first, needing no date bound and excluding nothing. Use 'historical' for seminal, foundational, or best-known work, where lifetime standing outweighs freshness. Use 'popular' only where the request names popularity, votes, or community standing — 'best' on its own asks which work is strongest, not which is most upvoted — which gives community votes the dominant weight among the topically relevant matches and mostly ignores age; for a pure most-popular list with no subject to search for, browse_paper_feed is the better tool.published_afterstringoptionalOnly return papers first published on or after this date (YYYY-MM-DD). Omit it unless the request names a real boundary, e.g. 'since 2024' — this excludes papers outright, so to merely favour new work set prioritize to 'recency' instead of guessing a cutoff.published_beforestringoptionalOnly return papers first published on or before this date (YYYY-MM-DD). Omit it unless the request names a historical window, e.g. 'before AlexNet' or 'papers from 2025'. Results thin out the further back and narrower the window is; report what comes back rather than retrying the same window.alphaxivmcp_find_researchers#The first tool for researcher affiliations, organization rosters, who left an organization, career moves, and what researchers are doing now. It composes name or subject relevance, current affiliation or role, citation range, position history, and verified coauthorship. Never use this tool merely to resolve a name for another call; pass the name directly to that profile or relationship call. Advising and lab-membership questions are answered here: coauthored_with returns the joint-work record behind each candidate, and require_position_overlap narrows it to people who were at the same place at the same time. Position constraints bind to one LinkedIn experience row. Returns [SLUG=...] handles.13 params
The first tool for researcher affiliations, organization rosters, who left an organization, career moves, and what researchers are doing now. It composes name or subject relevance, current affiliation or role, citation range, position history, and verified coauthorship. Never use this tool merely to resolve a name for another call; pass the name directly to that profile or relationship call. Advising and lab-membership questions are answered here: coauthored_with returns the joint-work record behind each candidate, and require_position_overlap narrows it to people who were at the same place at the same time. Position constraints bind to one LinkedIn experience row. Returns [SLUG=...] handles.
affiliationstringoptionalCurrent organization ('DeepSeek', 'UC Berkeley'). Every indexed spelling of it is matched, so write the name plainly and never spell out variants yourself. For a historical organization use position.affiliation, or include_past_affiliations as shorthand.include_past_affiliationsbooleanoptionalShorthand for a past position at `affiliation`, excluding researchers whose current affiliation still matches. Use `position` for role or date constraints.limitintegeroptionalResults per page. Defaults to 12, or 50 for a relationship search, whose rows are one line each.max_citationsintegeroptionalCitation ceiling, e.g. to find rising researchers who are not yet famous.min_citationsintegeroptionalCitation floor, to keep a roster to established researchers.pageintegeroptional1-based page over the same ordering. Every result says whether more matched beyond it, so page on when the answer needs the tail rather than re-running a narrower search. A page that reports no total is not a count of the roster; only the last page of a search establishes one.positionobjectoptionalComposable LinkedIn position-history filter. Affiliation, role, status, and every date bound apply to the same experience row. For a recent departure use a past position with ended_after and end-date ordering; combine with top-level affiliation or role for transitions.querystringoptionalA person's name only when identifying that person is the final task, or a research subject ('mechanistic interpretability'). Never use this to resolve an anchor for another call; pass the name directly there. Omit for structured roster, relationship, or career queries.relationshipobjectoptionalCoauthorship evidence from linked public alphaXiv papers, one line per coauthor: shared papers, what share of that person's own output the collaboration is, how often they lead a paper the anchor closes, the years it ran, and their current position. require_position_overlap composes it with position history to add shared time.rolestringoptionalCurrent role to filter by, token-matched ('professor' matches assistant and associate professors; 'phd student'). Only current roles are indexed. Omit or leave empty when not filtering by role.sortstringoptional'relevance' ranks a query, or relationship strength for a relationship-only search, otherwise citations. 'recent_activity' ranks by latest linked paper. 'relationship_strength' requires relationship.topicstringoptionalResearch subject to answer from authorship of papers on it, for 'who works on X' and 'who does prominent work on X'. One concept in the vocabulary its own papers use — name the architecture, benchmark, or subfield, and spell out an acronym alongside it. Never concatenate several related concepts to widen the net.topic_authorsstringoptionalWhich byline slot `topic` weights: 'lead' for the students and postdocs who drive the work, 'senior' for the PIs who close the author list, 'any' for both.alphaxivmcp_follow_researcher#Follow a researcher so their new papers reach the user's feed. Idempotent: following someone already followed changes nothing. Get the slug from find_researchers, get_researcher, or a /@<slug> profile URL.1 param
Follow a researcher so their new papers reach the user's feed. Idempotent: following someone already followed changes nothing. Get the slug from find_researchers, get_researcher, or a /@<slug> profile URL.
slugstringrequiredResearcher slug, as returned in [SLUG=...] handles and rendered at /@<slug>.alphaxivmcp_get_paper_content#Get the content of an arXiv/alphaXiv paper as text. By default returns a structured AI-generated intermediate report. Use the fullText option to get raw extracted text.2 params
Get the content of an arXiv/alphaXiv paper as text. By default returns a structured AI-generated intermediate report. Use the fullText option to get raw extracted text.
urlstringrequiredAn arXiv or alphaXiv URLfullTextbooleanoptionalIf true, return the full extracted text instead of the intermediate report.alphaxivmcp_get_researcher#Gets compact profiles for one or many researchers. Pass full names or exact raw [SLUG=...] handles together in `researchers`; each name resolves to the best-matching indexed researcher, tolerating a misspelling. Never use get_researcher merely before get_researcher_papers; a larger or date-bounded paper question goes directly there. Current positions and up to five curated past positions are returned by default; request additional sections with `include`. Papers are independently opt-in for small profile context. For compact current-role enrichment of names extracted from a webpage, use resolve_researchers.4 params
Gets compact profiles for one or many researchers. Pass full names or exact raw [SLUG=...] handles together in `researchers`; each name resolves to the best-matching indexed researcher, tolerating a misspelling. Never use get_researcher merely before get_researcher_papers; a larger or date-bounded paper question goes directly there. Current positions and up to five curated past positions are returned by default; request additional sections with `include`. Papers are independently opt-in for small profile context. For compact current-role enrichment of names extracted from a webpage, use resolve_researchers.
researchersarrayrequiredOne to 25 researcher full names or exact raw slugs. Names resolve to the best-matching indexed researcher; a corrected spelling is reported inline.includearrayoptionalAdditional sections to return. Available sections: bio, full curated position_history, raw linkedin_experience, education, citation_trajectory, coauthors, alphaxiv_account, and links.paper_limitintegeroptionalPapers per researcher. Defaults to 3.papersstringoptionalOptional paper context. notable selects high-attention work and one cross-organization paper when available; recent orders by publication date.alphaxivmcp_get_researcher_papers#Papers on alphaXiv for one or many researchers, grouped per researcher. Pass full names or exact raw [SLUG=...] handles together in `researchers`; each name resolves to the best-matching indexed researcher, tolerating a misspelling. Never call get_researcher or find_researchers first for one named person's papers. Sort 'recent' with published_after answers what-are-they-doing-now; 'cited' answers best-known work. Paper [ID=...] handles chain into the paper tools.4 params
Papers on alphaXiv for one or many researchers, grouped per researcher. Pass full names or exact raw [SLUG=...] handles together in `researchers`; each name resolves to the best-matching indexed researcher, tolerating a misspelling. Never call get_researcher or find_researchers first for one named person's papers. Sort 'recent' with published_after answers what-are-they-doing-now; 'cited' answers best-known work. Paper [ID=...] handles chain into the paper tools.
researchersarrayrequiredOne to 25 researcher full names or exact raw slugs. Names resolve to the best-matching indexed researcher; a corrected spelling is reported inline.limit_per_researcherintegeroptionalMaximum number of papers to return per researcher (1-25). Defaults to 10.published_afterstringoptionalOnly papers first published on or after this date (YYYY-MM-DD). Use with sort 'recent' for activity windows; omit unless the request names one.sortstringoptional'cited' for notable work, 'recent' for current activity, 'viewed' for alphaXiv attention.alphaxivmcp_list_followed_researchers#List the researcher profiles the user follows, with each one's slug, name, current headline or affiliation, and citation count. Following a researcher surfaces their new papers in the user's alphaXiv feed. Pass a slug from here to get_researcher or get_researcher_papers for the full profile.0 params
List the researcher profiles the user follows, with each one's slug, name, current headline or affiliation, and citation count. Following a researcher surfaces their new papers in the user's alphaXiv feed. Pass a slug from here to get_researcher or get_researcher_papers for the full profile.
alphaxivmcp_list_library#List the user's alphaXiv library: their folders (bookmark collections) with folder_id, name, type, parent_id, sharing_status, and paper_count. Set include_papers to also list papers per folder. Pass paper_ids_or_urls to check which folders already contain specific papers. The default folders 'default-to-read', 'default-reading', and 'default-completed' represent reading status; a paper may belong to any number of folders at once.2 params
List the user's alphaXiv library: their folders (bookmark collections) with folder_id, name, type, parent_id, sharing_status, and paper_count. Set include_papers to also list papers per folder. Pass paper_ids_or_urls to check which folders already contain specific papers. The default folders 'default-to-read', 'default-reading', and 'default-completed' represent reading status; a paper may belong to any number of folders at once.
include_papersbooleanoptionalAlso list the papers inside each folder (capped per folder).paper_ids_or_urlsarrayoptionalReport which folders already contain each of these papers.alphaxivmcp_move_papers_between_folders#Move papers from a source folder to a destination folder in a single atomic operation: each paper is added to the destination and removed from the source. A paper already in the destination is reported as a duplicate and left untouched in the source. Get folder ids from list_library.3 params
Move papers from a source folder to a destination folder in a single atomic operation: each paper is added to the destination and removed from the source. A paper already in the destination is reported as a duplicate and left untouched in the source. Get folder ids from list_library.
from_folder_idstringrequiredThe folder_id of the source folder, obtained from list_library.paper_ids_or_urlsarrayrequiredOne or more papers to move, each as an arXiv id or an alphaXiv/arXiv URL.to_folder_idstringrequiredThe folder_id of the destination folder, obtained from list_library.alphaxivmcp_read_files_from_github_repository#Reads the contents of a file or directory from the paper's codebase repository. Returns repository structure for '/', directory listing for directories, or file contents for files.2 params
Reads the contents of a file or directory from the paper's codebase repository. Returns repository structure for '/', directory listing for directories, or file contents for files.
githubUrlstringrequiredThe URL of the paper's codebase repository.pathstringrequiredThe path to the file or directory. Use '/' to get the entire repository structure.alphaxivmcp_remove_papers_from_folder#Remove one or more papers from a single folder in the user's library. Only affects the given folder; the paper stays in any others. Get folder_id from list_library.2 params
Remove one or more papers from a single folder in the user's library. Only affects the given folder; the paper stays in any others. Get folder_id from list_library.
folder_idstringrequiredThe folder_id of the folder to remove the papers from, obtained from list_library.paper_ids_or_urlsarrayrequiredOne or more papers to remove from the folder, each as an arXiv id or an alphaXiv/arXiv URL.alphaxivmcp_rename_folder#Rename a custom folder. Only custom folders can be renamed, not the default reading-status or publications folders. Get folder_id from list_library.2 params
Rename a custom folder. Only custom folders can be renamed, not the default reading-status or publications folders. Get folder_id from list_library.
folder_idstringrequiredThe folder_id of the custom folder to rename, obtained from list_library.namestringrequiredThe new name for the folder (1-100 characters).alphaxivmcp_resolve_researchers#Turns a list of people extracted from a webpage or other external source into current, citeable alphaXiv researcher entries. Use this once after reading a roster, team page, award list, or similar source, before repeating its possibly stale affiliations. Pass every person in one batch. Optional personal URLs and related researchers disambiguate names; related anchors are matching context, not proof of the source's claimed relationship.2 params
Turns a list of people extracted from a webpage or other external source into current, citeable alphaXiv researcher entries. Use this once after reading a roster, team page, award list, or similar source, before repeating its possibly stale affiliations. Pass every person in one batch. Optional personal URLs and related researchers disambiguate names; related anchors are matching context, not proof of the source's claimed relationship.
peoplearrayrequiredUp to 50 externally named people to identify in one call.related_researchersarrayoptionalOptional full names or exact raw slugs related to the whole list; coauthorship only disambiguates.alphaxivmcp_save_papers_to_folder#Add one or more papers (by arXiv id or alphaXiv/arXiv URL) to a folder in the user's library. Papers not yet in the database are fetched from arXiv. Omit folder_id to save to the 'Want to read' folder. Get folder_id from list_library. Adding is idempotent and never removes a paper from its other folders.2 params
Add one or more papers (by arXiv id or alphaXiv/arXiv URL) to a folder in the user's library. Papers not yet in the database are fetched from arXiv. Omit folder_id to save to the 'Want to read' folder. Get folder_id from list_library. Adding is idempotent and never removes a paper from its other folders.
paper_ids_or_urlsarrayrequiredOne or more papers to add, each as an arXiv id or an alphaXiv/arXiv URL.folder_idstringoptionalTarget folder. Defaults to the user's 'Want to read' folder.alphaxivmcp_unfollow_researcher#Stop following a researcher. Idempotent: unfollowing someone not followed changes nothing. Get the slug from list_followed_researchers.1 param
Stop following a researcher. Idempotent: unfollowing someone not followed changes nothing. Get the slug from list_followed_researchers.
slugstringrequiredResearcher slug, as returned in [SLUG=...] handles and rendered at /@<slug>.