
Research paper search with real citations and reference formatting for AI assistants
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List papers that cite a work (relation cited_by) or papers that work cites (relation references). Every row is an API hit. An empty list means the API returned none, not that none exist.
List papers that cite a work (relation cited_by) or papers that work cites (relation references). Every row is an API hit. An empty list means the API returned none, not that none exist.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| relation* | string | |
| identifier* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"identifier",
"relation"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"relation": {
"enum": [
"cited_by",
"references"
],
"type": "string"
},
"identifier": {
"type": "string",
"maxLength": 300,
"minLength": 2
}
},
"additionalProperties": false
}Format a real paper in APA, MLA, Chicago author-date, or BibTeX using metadata fetched for the identifier. Titles are kept as the source provided them. Author particles may need a human check because display names are split mechanically. If the paper cannot be resolved, do not hand-write a citation.
| Argument | Type | Description |
|---|---|---|
| style* | string | |
| identifier* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"identifier",
"style"
],
"properties": {
"style": {
"enum": [
"apa",
"mla",
"chicago",
"bibtex"
],
"type": "string"
},
"identifier": {
"type": "string",
"maxLength": 300,
"minLength": 2
}
},
"additionalProperties": false
}Fetch one paper's title, authors, year, venue, and abstract by DOI, PMID, arXiv id, or OpenAlex work id. Metadata comes from the API that resolved the identifier. If no source returns a record, say so. Do not guess the abstract.
| Argument | Type | Description |
|---|---|---|
| identifier* | string | DOI, PMID, arXiv id, or OpenAlex work id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"identifier"
],
"properties": {
"identifier": {
"type": "string",
"maxLength": 300,
"minLength": 2,
"description": "DOI, PMID, arXiv id, or OpenAlex work id"
}
},
"additionalProperties": false
}Search peer-reviewed and preprint records by question or keywords. Filters: year_from, year_to, field, open_access, and source (openalex, semantic_scholar, pubmed, crossref, arxiv, or all). Returns only works those APIs returned, each with a source link and an identifier. An empty list means the APIs returned nothing. Do not invent papers to fill a gap.
| Argument | Type | Description |
|---|---|---|
| field | string | Subject area, such as Medicine or Computer Science |
| limit | integer | Maximum papers to return. Defaults to 8. |
| query* | string | Question or keywords |
| source | string | Index to search. Defaults to all, which mixes sources. |
| year_to | integer | |
| year_from | integer | |
| open_access | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"field": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Subject area, such as Medicine or Computer Science"
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum papers to return. Defaults to 8."
},
"query": {
"type": "string",
"maxLength": 400,
"minLength": 2,
"description": "Question or keywords"
},
"source": {
"enum": [
"openalex",
"semantic_scholar",
"pubmed",
"crossref",
"arxiv",
"all"
],
"type": "string",
"description": "Index to search. Defaults to all, which mixes sources."
},
"year_to": {
"type": "integer",
"maximum": 2100,
"minimum": 1800
},
"year_from": {
"type": "integer",
"maximum": 2100,
"minimum": 1800
},
"open_access": {
"type": "boolean"
}
},
"additionalProperties": false
}