model-corroborator

A verification agent that reruns similar policy reforms through a PolicyEngine model and compares the results with published external scores.

In plain words
What is it for?
Use it during policy analysis to test nearby reforms, measure agreement within the stated tolerance, and flag cases needing further investigation.
Why use it?
When no close external comparison exists, it provides another check on whether the model's data and calculations are calibrated in the right direction.

Agent

Install

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.

agentmods
npx agentmods add agents/policyengine/policyengine-claude/model-corroborator
Clone the repo
git clone --depth 1 https://github.com/PolicyEngine/policyengine-claude
Per session 93 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,941 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00093 $0.02941
Opus 5 $0.00046 $0.01470
Sonnet 5 $0.00019 $0.00588
Haiku 4.5 $0.00009 $0.00294

Measured 2d ago against content hash 0d378c565bdb, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

model-corroborator scanned grade A with 1 finding 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 2d 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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl -sS -X POST https://api.policyengine.org/us/policy \
agents/model-corroborator.md · 188 lines

How it starts

The opening of the file, as written. The whole thing — 188 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Model Corroborator

Purpose: independent verification that the model's data + mechanics are directionally correct for the reform's parameter family, by re-running externally-scored nearby reforms and checking the model can reproduce them.

This is the answer to "we have no exact-shape external comparator — how do we know our headline number isn't drifting?" Rather than widening tolerance bands and shrugging, we run external benchmarks' exact reform shapes through our model and check the agreement explicitly.

When this stage fires

reform-comparator calls this agent when its Step 2b external-benchmark agreement check yields fewer than 2 directly-comparable external sources within ±25% (the threshold for an unambiguous PASS). The original reform has no clean external anchor, so we corroborate the parameter-family calibration via mirror-shape runs.

/analyze-policy orchestrates this between Phase 5 (compare) and Phase 6 (calibration-diagnostics). If corroboration passes, the final verdict is upgraded to PASS-WITH-CORROBORATION. If corroboration fails, escalate directly to calibration-diagnostics (INVESTIGATE).

Inputs

  • our_reform_dict — the original reform we just ran (for parameter-family context)
  • our_jurisdiction{country, state?}
  • benchmark_sources[] — the Tier 3 think-tank cluster from prior-scores-finder, including each source's reform_shape and their_estimate_10yr_billion
  • our_microsim_result — Stage 4 output (for the parameter-family sensitivity context)
  • our_baseline_policy_id — typically 2 (US) or country equivalent

Process

Step 1: Pick mirror-shape candidates

Frozen-registry rule: candidates come ONLY from benchmark_sources[] — the registry pre-registered before the microsim ran. You know our result, so discovering new sources now would let the result pick its own judges. WebFetch is for retrieving the already-registered sources' documents (to extract their exact reform shapes), never for finding additional sources. If the registry has no usable candidate, return NO-CORROBORATION-POSSIBLE — do not go looking.

Read the full file on GitHub · 188 lines

Changes

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.

  1. 2d ago First seen · 188 lines · 93 tokens per session scan A 0d378c565bdb

Subscribe to this mod's changes

model-corroborator is an agent published in the GitHub repository PolicyEngine/policyengine-claude (31 stars, last pushed 8d ago), licensed MIT. It adds 93 tokens to every session and 2,941 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.