CiteStamp
Check that a reference resolves; see what supports, refutes or cites a paper. CC0 graph, read-only.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"citestamp": {
"url": "https://mcp.citestamp.com/mcp"
}
}
}Remote endpoints
https://mcp.citestamp.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢what_supports(identifier, asserted_only, limit, offset)
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.
Input Schema
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges.",
"default": false
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100,
"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",
"minimum": 0,
"default": 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."
}
},
"required": [
"identifier"
]
}🟢what_refutes(identifier, asserted_only, limit, offset)
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.
Input Schema
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges.",
"default": false
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100,
"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",
"minimum": 0,
"default": 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."
}
},
"required": [
"identifier"
]
}🟢what_cites(identifier, asserted_only, limit, offset)
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.
Input Schema
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges.",
"default": false
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100,
"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",
"minimum": 0,
"default": 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."
}
},
"required": [
"identifier"
]
}🟢references_of(identifier, asserted_only, limit, offset)
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.
Input Schema
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges.",
"default": false
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100,
"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",
"minimum": 0,
"default": 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."
}
},
"required": [
"identifier"
]
}🟢edges_about(identifier, asserted_only, limit, offset)
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.
Input Schema
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "DOI, arXiv id, OpenAlex id, or internal claim id"
},
"asserted_only": {
"type": "boolean",
"description": "If true, restrict to human-signed (asserted) edges. If false (default), return both asserted and machine-inferred edges.",
"default": false
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 1000,
"default": 100,
"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",
"minimum": 0,
"default": 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."
}
},
"required": [
"identifier"
]
}🟢retraction_listing(identifier)
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.
Input Schema
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "DOI in any common form (10.x/y, doi:10.x/y or a doi.org URL)"
}
},
"required": [
"identifier"
]
}🟢check_reference(identifier)
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.
Input Schema
{
"type": "object",
"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)"
}
},
"required": [
"identifier"
]
}Community
Evidence