Search papers
search_papersSearches full-text, peer-reviewed papers from top-tier venues. Use for questions about academic papers, research topics, literature reviews, surveys, “what's been published on X”, named methods, or any claim that should be backed by a peer-reviewed citation. Returns each paper's metadata and the passages that matched. Hybrid semantic + lexical search over titles, abstracts, and full text. Phrase the query the way a researcher would describe the topic in prose, not a keyword bag. Triggering questions: “what's the latest on diffusion guidance”, “which papers compare against SimPO” (requirements beyond the topic are checked per paper: conditions, evidence first in contexts). paper_id is a handle for YOU to fetch full text via get_paper_fulltext; never show it to the user: cite papers by title, authors, and venue. rerank_score is the calibrated Cohere Rerank v3.5 relevance (0..1), null when the reranker did not run (a lone term, or a failure); score is uncalibrated: keep the hits' order. The top-level best_score and low_confidence derive from rerank_score: low_confidence marks weaker matches, so rephrase for stronger ones and still cite a hit that fits; with no reranked hit, best_score is null and low_confidence false, so judge each hit yourself. Each hit carries metadata, abstract, ids, and contexts spans to ground or quote from; detail: false returns concise hits with one snippet. Page with offset (re-call with offset += limit while has_more is true and conditions match page 1's; offset + limit <= 50). Order with sort_by (relevance / date / citations, within the ranked shortlist, not the corpus). Narrow with year_min / year_max / venues.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"query": "<query>"
},
"name": "search_papers"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| limit | No | ||
| query | Yes | Full natural-language research query; phrase it the way you would ask a human research assistant. On the paper corpus the server drops request wording ("find me papers on"), adds the standard names of what the query describes and a hypothetical abstract (HyDE), and expands an abbreviation only when the rest of the query fixes its meaning, so give context ("MPC for drone control", not "MPC"); a lone term is searched as typed, without expansion, HyDE or rerank. The richer the input, the better the recall. Good: "methods for retrieval-augmented generation that reduce hallucination on long-form QA". Less optimal: "RAG hallucination". | |
| detail | No | true (default): include the full abstract, ids, and contexts[] matched spans for grounding. false: concise hits (title, authors, year, venue, citations, score, and a single grounding snippet) for token-saving triage. For the complete paper text call get_paper_fulltext. | |
| offset | No | Pagination offset over the ranked results. Re-call with offset += limit while the response `has_more` is true. offset + limit must stay <= 50. | |
| venues | No | Restrict to these conference short names (e.g. ["NeurIPS", "ICML"]). | |
| sort_by | No | Result ordering within the ranked shortlist: `relevance` (default), `date` (newest first), or `citations` (most-cited first). | relevance |
| year_max | No | Only include papers published in this year or earlier. | |
| year_min | No | Only include papers published in this year or later. | |
| conference | No | Filter by conference short name, e.g. "CCS", "NeurIPS". |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| results | Yes | The ranked hits. | |
| has_more | Yes | True when more results exist past this page; re-call with offset += limit. | |
| best_score | Yes | The highest per-hit rerank_score (calibrated 0..1), or null when no hit was reranked (a lone-term query, or a reranker failure) or there were no results. | |
| conditions | No | What the request requires of its papers beyond the topic (compares against a method, evaluates on a dataset, releases code), when the search checked it in the papers' own text: every hit meets each, with its evidence first among its contexts, and an empty first page means none of the top-ranked papers the check read does. Absent when nothing was checked, so the hits are unverified. | |
| low_confidence | Yes | True when the best rerank_score fell below the relevance floor: these are weaker matches, so rephrase for stronger ones and still cite a hit that fits. False when a hit cleared the floor, and also when no hit was reranked or there were no results: best_score is then null, so there is no calibrated basis and you judge each hit's fit yourself. |