CiteStamp

Check that a reference resolves; see what supports, refutes or cites a paper. CC0 graph, read-only.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
83%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,832Tokens (tool definitions)
~2.1 KBTypical response size
Moderate attention impact (1.43% of 128k context)

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-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools