From veriglow-agent-map
Create verifiable evidence citations for data claims. Use after obtaining data from web APIs or KB documents to create citations with source links, text anchors, and automatic screenshots. Returns [@ev:TOKEN] markers to embed in responses.
How this skill is triggered — by the user, by Claude, or both
Slash command
/veriglow-agent-map:citeanythingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
CiteAnything creates verifiable, replayable citations for every data claim. Each citation stores the source URL, a text anchor for highlight positioning, and triggers an automatic screenshot as visual proof.
CiteAnything creates verifiable, replayable citations for every data claim. Each citation stores the source URL, a text anchor for highlight positioning, and triggers an automatic screenshot as visual proof.
Use this skill after you have obtained data (from a web API, web page, or KB document) and need to:
[@ev:TOKEN] marker to embed in your responseEvery data claim in your response must have a citation. Never skip the citation step.
POST https://citeanything.veri-glow.com/api/citation
Authentication: Authorization: Bearer $USER_JWT
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
claim | string | Yes | — | The claim being cited (e.g. "Tesla's total revenues were $94.8B") |
source_url | string | Yes | — | URL of the data source |
quoted_text | string | No | "" | Verbatim excerpt (1-3 sentences) from the source. Must be copied exactly — never paraphrase. |
citation_type | string | No | "text" | "text" for text citations, "table" for table citations |
action_steps | string | No | "" | JSON string of browser action steps (for dynamic pages) |
anchor | string | No | "" | Short verbatim excerpt (5-10 words) for highlight positioning. Must be exact copy from source. |
row_anchor | string | No | "" | Table citation: row identifier |
col_anchor | string | No | "" | Table citation: column identifier |
selection_scope | string | No | "cell" | Table citation: "cell" or "row" |
source_type | string | No | "web" | "web" for web sources, "kb" for knowledge base documents |
kb_file | string | No | "" | KB document file stem (e.g. "bd922df1043e") |
page | string | No | "" | KB document page number for highlight positioning |
{
"token": "a1b2c3d4",
"uid": "unique-id",
"url": "https://citeanything.veri-glow.com/e/a1b2c3d4"
}
Insert the token as a citation marker in your final answer:
Tesla's total revenues in 2025 were $94.8 billion [@ev:a1b2c3d4].
The user's frontend will render [@ev:TOKEN] as a clickable citation link.
curl -X POST "https://citeanything.veri-glow.com/api/citation" \
-H "Authorization: Bearer $USER_JWT" \
-H "Content-Type: application/json" \
-d '{
"claim": "Shanghai SSE bond trading volume was 2,087.45 billion RMB",
"source_url": "https://www.sse.com.cn/market/bonddata/overview/day/",
"quoted_text": "成交金额(亿元) 2,087.45",
"citation_type": "text",
"anchor": "成交金额 2,087.45",
"source_type": "web",
"action_steps": "[{\"action\":\"navigate\",\"url\":\"https://www.sse.com.cn/market/bonddata/overview/day/\"}]"
}'
When citing knowledge base documents, use source_type: "kb" with additional KB-specific fields:
curl -X POST "https://citeanything.veri-glow.com/api/citation" \
-H "Authorization: Bearer $USER_JWT" \
-H "Content-Type: application/json" \
-d '{
"claim": "Tesla total revenues in 2025 were $94.8 billion",
"source_url": "https://citeanything.veri-glow.com/kb/user/1/abc123def456.html",
"quoted_text": "Total revenues 94,827 97,690 96,773 Cost of revenues 76,303 79,087 79,113 Gross profit 18,524 18,603 17,660",
"anchor": "Total revenues 94,827",
"citation_type": "text",
"source_type": "kb",
"kb_file": "abc123def456",
"page": "53"
}'
KB citation rules:
anchor: short verbatim excerpt (5-10 words) — exact copy from extracted text, used for highlight positioningquoted_text: longer verbatim passage (1-3 sentences) surrounding the anchor — exact copy, used for context highlighting. If no longer passage is available, set equal to anchorpage: the actual page number where the text was extracted — never guessanchor and quoted_text must be copied verbatim from your extraction output. Never paraphrase, reorganize, or combine text from different parts of the documentcitation_type: "text")Use anchor + quoted_text for positioning. The replay system highlights the matching text on the source page.
citation_type: "table")Use row_anchor + col_anchor for cell-level positioning:
row_anchor: identifies the row (e.g. "国债", "Tesla Inc")col_anchor: identifies the column header (e.g. "成交金额", "Revenue")selection_scope: "cell" highlights one cell, "row" highlights the entire rowcurl + Python extraction/agentmap for API specs:
curl the page directly or web search as fallbackPOST /api/citation for each claim (this skill)[@ev:TOKEN] in your response textWhen a website is not indexed by AgentMap (404 response), report it so the team can prioritize adding it:
curl -X POST "https://agentmap.veri-glow.com/api/request-map" \
-H "Content-Type: application/json" \
-d '{"path": "www.example.com/data-page", "user_query": "what the user asked"}'
This does not block your work — still attempt to get the data by other means after reporting.
Users can upload local PDF files to the CiteAnything server for citation. The server converts PDFs to browsable HTML using pdf2htmlEX.
curl -X POST "https://citeanything.veri-glow.com/api/kb/upload" \
-H "Authorization: Bearer $USER_JWT" \
-F "file=@/path/to/document.pdf" \
-F "display_name=My Research Report"
Response:
{
"doc_id": 42,
"stem": "bd922df1043e",
"status": "processing",
"message": "Document uploaded. Converting to HTML..."
}
Save the stem — you'll need it for citations.
PDF → HTML conversion runs in the background. Poll until status becomes "ready":
curl -s "https://citeanything.veri-glow.com/api/kb/documents" \
-H "Authorization: Bearer $USER_JWT"
Check the document's status field:
"processing" → still converting, wait a few seconds and retry"ready" → HTML is available at the url field"failed" → conversion failedOnce ready, the document is available at:
https://citeanything.veri-glow.com/kb/user/{user_id}/{stem}.html
Important: Do NOT use WebFetch — KB HTML files are too large and WebFetch will only return CSS. Always use curl + Python:
curl -s "https://citeanything.veri-glow.com/kb/user/{user_id}/{stem}.html" -o document.html
Then extract text with Python. Critical: pdf2htmlEX uses PUA (Private Use Area) Unicode characters (U+E000–U+F8FF) instead of spaces. You MUST replace them:
import re
from html.parser import HTMLParser
class TextExtractor(HTMLParser):
def __init__(self):
super().__init__()
self.texts = []
self.skip = False
def handle_starttag(self, tag, attrs):
if tag in ('script', 'style'):
self.skip = True
def handle_endtag(self, tag):
if tag in ('script', 'style'):
self.skip = False
def handle_data(self, data):
if not self.skip and data.strip():
self.texts.append(data)
with open("document.html", encoding="utf-8") as f:
html = f.read()
parser = TextExtractor()
parser.feed(html)
text = "\n".join(parser.texts)
# Replace PUA characters with spaces
text = re.sub(r'[\ue000-\uf8ff]', ' ', text)
print(text)
Use POST /api/citation with KB-specific fields (see "Example: KB Document Citation" above).
# List all documents
curl -s "https://citeanything.veri-glow.com/api/kb/documents" \
-H "Authorization: Bearer $USER_JWT"
# Delete a document
curl -X DELETE "https://citeanything.veri-glow.com/api/kb/documents/{doc_id}" \
-H "Authorization: Bearer $USER_JWT"
[@ev:TOKEN] link takes the user to a replay page that re-opens the source and highlights the cited content$USER_JWT environment variable for authentication — it is set automatically by the CiteAnything workspacenpx claudepluginhub chizhongwang/veriglow-agent-map-skill --plugin citeanythingVerifies citations in academic/legal manuscripts by checking existence, accuracy, quotes, and claim grounding using Paperpile, BibTeX, and RAG.
Produces grounded, citation-backed responses from source documents via direct quotes, uncertainty permission, and claim verification. Use for analyzing codebases, specs, or long documents.
Distills a research directory into a compact research.md containing only sources actually cited in content. Useful for creating appendices, extracting used references, or compiling portable research files.