Citation Safe Verifier
Verifies legal citations vs primary sources: existence, quote match, proposition support.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"verifier": {
"url": "https://citationsafe.com/api/mcp"
}
}
}Puntos de conexión remotos
https://citationsafe.com/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (8)
⚪verify_citation(text)
Checks every legal citation in the given text against primary sources: does the cited case exist (Layer 1, CourtListener database lookup — deterministic, no LLM), does a quoted passage appear in the source opinion (Layer 2), and — on paid CitationSafe tiers — does the case support the proposition it's cited for (Layer 3). Returns VERIFIED / UNCONFIRMED / UNCONFIRMED — OUTSIDE COVERAGE / SOURCE UNAVAILABLE per citation, never a bare true/false, with source links. Not legal advice.
Esquema de entrada
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 64000,
"description": "Raw text containing one or more legal citations to verify"
}
},
"required": [
"text"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪verify_document(url)
Fetches a document (PDF, DOCX, or plain text) from a URL and runs the same 3-layer citation verification as verify_citation. Use this when you have a link to a brief rather than pasted text.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "URL of the PDF, DOCX, or text document to fetch and verify"
}
},
"required": [
"url"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_verification(id)
Retrieves a previously run CitationSafe verification (by the verificationId returned from verify_citation/verify_document, or from a citationsafe.com/v/{id} share link) and returns its full per-citation results.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Verification ID"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪batch_verify_citations(texts)
Runs the same 3-layer citation verification as verify_citation across multiple texts in a single call. Each item is billed against your CitationSafe usage exactly like an individual verify_citation call — batching never bypasses your plan's monthly limit. Max 10 items per batch, 64,000 characters per item. Requires a signed-in CitationSafe account (Authorization: Bearer <access_token>) — anonymous batch calls are not supported, use verify_citation for anonymous single-text checks.
Esquema de entrada
{
"type": "object",
"properties": {
"texts": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64000
},
"description": "Array of texts to verify, each processed as a separate verification (max 10 items, 64,000 chars each)"
}
},
"required": [
"texts"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_sanctions(query, court)
Searches CitationSafe's database of real court sanctions/orders arising from AI-hallucinated legal citations, by court name, party/case name keyword, or free-text keyword. Read-only, public data — same dataset backing citationsafe.com/sanctions-database.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"description": "Free-text keyword to match against the case name",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"court": {
"description": "Filter by court name (partial match, e.g. \"S.D.N.Y.\")",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢is_this_case_real(citation)
Deterministic existence check (Layer 1 only, no LLM) for one legal citation against CourtListener's primary-source database. Answers the single question "is this case real" for one citation — for multi-citation quote-checked verdicts across a whole brief, use verify_brief instead. Free tier: 5 checks/day per IP, no key required. For unlimited access, pass an API key as "Authorization: Bearer <key>" (contact [email protected] to request one).
Esquema de entrada
{
"type": "object",
"properties": {
"citation": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "A single citation, e.g. \"410 U.S. 113\" or \"Roe v. Wade, 410 U.S. 113 (1973)\""
}
},
"required": [
"citation"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢verify_brief(text)
Runs existence (Layer 1) and quote-match (Layer 2) checks — both deterministic, no LLM — on every citation found in the given text and returns one verdict per citation. The multi-citation counterpart to is_this_case_real. Proposition support (Layer 3) is not included on this free/API-key surface; sign in at citationsafe.com for full 3-layer verification via verify_citation. Free tier: 5 checks/day per IP (one verify_brief call = one check, regardless of how many citations the text contains); an API key bypasses the daily cap.
Esquema de entrada
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 64000,
"description": "Raw text (brief excerpt, motion, memo) containing one or more legal citations"
}
},
"required": [
"text"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_phantoms(query)
Searches CitationSafe's phantom-citation registry — fabricated case names/citations that have shown up in real, sanctioned AI-hallucination incidents — by case name or the AI system that produced them. Read-only, public data. Returns an empty array (not an error) if nothing matches or the registry has no entries yet.
Esquema de entrada
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Free-text match against the phantom case name or the AI system that generated it"
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia