Check that a reference resolves; see what supports, refutes or cites a paper. CC0 graph, read-only.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Anonymous access works at 10 req/min per IP; send Authorization: Bearer <key> to raise the limit (free key by email to [email protected] = 60/min, Pro = 600/min).
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.
Whether a reference resolves to a real work. Use when an answer is about to cite a paper. Give a DOI, an arXiv id or the reference as written. Answers found, confirm (with the reason), not found in the named sources on a date, or couldn't check. A not-found is not proof a work was never published.
The reference to check: a DOI (10.x/y, doi:10.x/y or a doi.org URL), an arXiv id, or the reference as written (a title or a full citation)
Whether a reference resolves to a real work. Use when an answer is about to cite a paper. Give a DOI, an arXiv id or the reference as written. Answers found, confirm (with the reason), not found in the named sources on a date, or couldn't check. A not-found is not proof a work was never published.
| Argument | Type | Description |
|---|---|---|
| identifier* | string | The reference to check: a DOI (10.x/y, doi:10.x/y or a doi.org URL), an arXiv id, or the reference as written (a title or a full citation) |
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"identifier": {
"type": "string",
"description": "The reference to check: a DOI (10.x/y, doi:10.x/y or a doi.org URL), an arXiv id, or the reference as written (a title or a full citation)"
}
}
}Every edge touching the given work in either direction, each tagged asserted|inferred with attribution and provenance. Use when a user asks 'what is known about this paper's citations' or wants the whole neighbourhood in one call. Paged.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer. |
| offset | integer | How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true. |
| identifier* | string | DOI, arXiv id, OpenAlex id, or internal claim id |
| asserted_only | boolean | If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges. |
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 1000,
"minimum": 1,
"description": "Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true."
},
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"default": false,
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges."
}
}
}What the given work CITES (its reference list). Use when a user asks what a paper relies on, whether a specific citation in it exists, or wants to check a reference before reusing it. Paged.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer. |
| offset | integer | How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true. |
| identifier* | string | DOI, arXiv id, OpenAlex id, or internal claim id |
| asserted_only | boolean | If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges. |
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 1000,
"minimum": 1,
"description": "Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true."
},
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"default": false,
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges."
}
}
}Whether the Retraction Watch database lists the given DOI as retracted, from the dated export CiteStamp joins weekly. Use when a user asks whether a paper has been retracted or carries a retraction notice. Not listed means not in that export; the publisher record is not checked.
| Argument | Type | Description |
|---|---|---|
| identifier* | string | DOI in any common form (10.x/y, doi:10.x/y or a doi.org URL) |
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"identifier": {
"type": "string",
"description": "DOI in any common form (10.x/y, doi:10.x/y or a doi.org URL)"
}
}
}Works that CITE the given DOI (incoming citations). Use when a user asks who cites a paper, how much a work has been cited, or whether a claimed 'cited by' is real. Returns edges with tier + attribution; paged.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer. |
| offset | integer | How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true. |
| identifier* | string | DOI, arXiv id, OpenAlex id, or internal claim id |
| asserted_only | boolean | If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges. |
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 1000,
"minimum": 1,
"description": "Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true."
},
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"default": false,
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges."
}
}
}Edges recorded as REFUTING the given work or claim: human-signed refutations plus failed replication outcomes coded by the FORRT Replication Database. Use when a user asks whether a finding failed to replicate or has been contradicted.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer. |
| offset | integer | How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true. |
| identifier* | string | DOI, arXiv id, OpenAlex id, or internal claim id |
| asserted_only | boolean | If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges. |
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 1000,
"minimum": 1,
"description": "Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true."
},
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"default": false,
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges."
}
}
}Edges recorded as SUPPORTING the given work or claim: human-signed support claims plus successful replication outcomes coded by the FORRT Replication Database. Use when a user asks whether a finding held up or was replicated.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer. |
| offset | integer | How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true. |
| identifier* | string | DOI, arXiv id, OpenAlex id, or internal claim id |
| asserted_only | boolean | If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges. |
{
"type": "object",
"required": [
"identifier"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"maximum": 1000,
"minimum": 1,
"description": "Maximum edges to return per tier (default 100, max 1000). Well-cited works have thousands; the response reports has_more and inferred_total so you can tell a page from the whole answer."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "How many edges to skip, for paging. Advance by the LIMIT you asked for, not by the number of results you got back — duplicates are removed after the window is taken, so a page can return fewer rows than it consumed. Keep going while has_more is true."
},
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"default": false,
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges."
}
}
}