Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add dbcls/togomcp --skill query-provenancegit clone --depth 1 https://github.com/dbcls/togomcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dbcls/togomcp/query-provenance)<a href="https://agentmods.dev/skills/dbcls/togomcp/query-provenance"><img src="https://agentmods.dev/badge/skills/dbcls/togomcp/query-provenance/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dbcls/togomcp/query-provenance"><img src="https://agentmods.dev/badge/skills/dbcls/togomcp/query-provenance.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00188 | $0.02372 |
| Opus 5.5 | $0.00075 | $0.00949 |
| Sonnet 5.5 | $0.00038 | $0.00474 |
| Haiku 4.5 | $0.00019 | $0.00237 |
Grade A, and why
query-provenance scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 179 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Query provenance — a reproducible record of what was actually run
The goal is a record a reader can re-run: for every claim, the tool calls that support it, copied exactly as they were sent, plus what they returned, checked by running them again. A prompt is not a record (an LLM does not take the same path twice); a call with its arguments is.
This skill's record is the query ledger. It is not PRISM's "provenance ledger" (PRISM's is a per-member evidence table for one intersection); the two can coexist.
Files under references/ are fetched with
get_workflow(name="query-provenance", path="references/...") (when this skill is
installed locally, read them as files instead):
- references/ledger-format.md — the full
ledger.yamlspecification. Read it before writing the first entry. - references/methods-template.md — the Methods paragraph template and citation.
- references/reproduce.md — the re-run script for readers: pinned URL, command, full copy.
- references/worked-example.md — one small investigation, ledger to package.
Two modes
| Mode | When | What you do |
|---|---|---|
| Prospective (preferred) | The user says at the start that this is for a paper, or the purpose is clearly publication | Append to the ledger as you go, right after each call that may support a conclusion |
| Retrospective | The user asks after the investigation is done | Build the ledger from tool calls visible in this conversation. A call whose exact text you cannot see is recorded as unrecoverable — never filled in from memory — and re-run fresh if it is needed |
A retrospective package must say at its top: "Reconstructed after the fact; calls lost to context compaction may be missing."
The rules that make the record worth having
- Copy, do not rewrite.
argsis the argument object you passed to the tool, character for character — the same keys (if you passedquery=torun_sparql, recordquery), the same whitespace, the same PREFIX lines (write a multi-line query as a YAML|-block, which adds no trailing newline). Do not reformat, do not "clean up", do not reconstruct from memory. A plausible rewrite is the single worst failure of this skill: it looks right and reproduces something else. - Never invent a value you could not observe. In a session:
result_sha256is alwaysnull— you cannot compute a SHA-256 without running code. The reader's script fills it in.togomcp.server_versionisnull— the server version is not visible to you. The script reports it.executed_atis a date (2026-11-02) unless you really know the time.
- Resolve
endpoint_url, do not guess it.run_sparqldoes not print the URL it used. Callget_sparql_endpointsonce and takedatabases[<database>].url; if the call passedendpoint_nameorendpoint_url, those win (priorityendpoint_url > endpoint_name > database). - Support a count with a COUNT. You will miscount a 200-row result. When a
claim is a number, make the evidence call
SELECT (COUNT(DISTINCT ?x) AS ?n)and record its value inobserved.value. An aggregate with noGROUP BYreturns ONE row even when nothing matched — compare the value, not the row count. - Strip the empty-result note.
run_sparqlprepends lines starting with#when a result is empty (0 rows, or a lone aggregate of 0). They are not data: drop leading#lines before counting rows. - Do not write a reproduction script. One tested script already exists for
readers (
references/reproduce.md); the ledger is its input. Code you cannot run to check is code nobody will catch an error in. In an environment with a shell (Claude Code) you MAY additionally run that script — never a script of your own.
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 179 lines · 188 tokens per session scan A d1dd4f73c06d
query-provenance is a skill published in the GitHub repository dbcls/togomcp (21 stars, last pushed 2d ago), licensed MIT. It adds 188 tokens to every session and 2,372 once invoked, about $0.0008 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-03.
query-provenance compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| query-provenancedbcls/togomcp | Skill | 21 | 2d ago | MIT | A | 188 | Claude Code, Codex |
| open-ontologiesfabio-rovai/open-ontologies | Skill | 2.8k | 2d ago | MIT | A | 109 | Claude Code |
| lacuna-code-to-papertiptreesystems/lacuna-research-mcp | Skill | 57 | yesterday | MIT | A | 53 | Claude Code, Codex |
| lacuna-prior-worktiptreesystems/lacuna-research-mcp | Skill | 57 | yesterday | MIT | A | 46 | Claude Code, Codex |
| post-cortex-memoryjulymetodiev/post-cortex | Skill | 20 | 17d ago | MIT | A | 194 | Claude Code |
| ml_inference_optimizationLeeroo-AI/leeroopedia-mcp | Skill | 14 | 1mo ago | MIT | A | 0 | Claude Code, Codex |
| leeroopedia-mcpLeeroo-AI/leeroopedia-mcp | Skill | 14 | 1mo ago | MIT | A | 42 | Claude Code, Codex |