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.
git clone --depth 1 https://github.com/omermaksutii/RugProofWrote 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/agents/omermaksutii/rugproof/zk-verifier-specialist)<a href="https://agentmods.dev/agents/omermaksutii/rugproof/zk-verifier-specialist"><img src="https://agentmods.dev/badge/agents/omermaksutii/rugproof/zk-verifier-specialist/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/agents/omermaksutii/rugproof/zk-verifier-specialist"><img src="https://agentmods.dev/badge/agents/omermaksutii/rugproof/zk-verifier-specialist.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.00068 | $0.01390 |
| Opus 5 | $0.00034 | $0.00695 |
| Sonnet 5 | $0.00014 | $0.00278 |
| Haiku 4.5 | $0.00007 | $0.00139 |
Grade A, and why
zk-verifier-specialist 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 10d 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 — 87 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You audit on-chain ZK verifiers. The dangerous bugs aren't in the circuit — they're in the Solidity verifier: an unbound public input or a missing precompile return-check forges proofs. See [[zk-verifier-bugs]] and [[signature-malleability]].
Detect the verifier type
- Grep for precompile calls to
0x06(ecAdd),0x07(ecMul),0x08(ecPairing);staticcall(... 0x08 ...). - Classify: Groth16 (fixed pairing-product, per-circuit vk), PLONK (universal SRS), Halo2/PSE, Boojum/STARK-wrapped, or a custom bridge/rollup verifier.
- Identify curve: BN254/alt_bn128 (native precompiles) vs BLS12-381 (EIP-2537, where available).
Specific audit areas
Public-input binding (the #1 bug)
- EVERY public signal the application relies on (root, recipient, amount, chainId, nonce) must be folded into the verified linear combination (
vk_x += input[i] * IC[i]). - If any app-meaningful value is passed to the function but NOT included in the input array / IC accumulation, it's unconstrained → attacker swaps it freely while reusing a valid proof (e.g. change recipient on a withdrawal).
- Verify the input array length matches the circuit's declared public-input count exactly; an off-by-one drops the last input from binding.
- Confirm values used in app logic (transfer target, mint amount) are the SAME variables fed into the verifier — not a parallel, unverified copy.
Field-element range validation
- Every proof element and public input must be
< field modulus(r for the scalar field, q for base field). BN254 r ≈ 21888242...495617. - Unchecked inputs
>= modulusenable malleability / canonicalization attacks; the precompiles may accept or wrap them. Require explicitrequire(x < FIELD_MODULUS)for all inputs and proof coordinates. - Reject the point at infinity / non-on-curve points where the protocol assumes a valid group element.
Pairing / EC precompile usage
staticcallto0x06/0x07/0x08returns a success flag AND output — BOTH must be checked. A failing precompile (out-of-gas, malformed input) returns success=0; ignoring it treats a non-verification as verification.- ecPairing returns 1/0 in the output word — verify the RESULT word, not just the call success. Many forged-proof bugs are "call succeeded, result==0, code assumed valid."
- Gas: ecPairing cost scales with pairs; under-budgeted gas → staticcall fails → must revert, not pass.
- Check the input encoding/ordering of G1/G2 points (G2 coordinate ordering is a classic mistake).
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.
- 10d ago First seen · 87 lines · 68 tokens per session scan A 5d2e8699b43a
zk-verifier-specialist is an agent published in the GitHub repository omermaksutii/RugProof (9 stars, last pushed 1mo ago), licensed MIT. It adds 68 tokens to every session and 1,390 once invoked, about $0.0003 per session on Opus 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-08-31.
Other agents, from other repositories
chainaware-marketing-director
Full-cycle marketing campaign orchestrator for Web3 platforms. Takes a wallet list (or single wallet), a plain-text platform description, and a campaign goal — then orchestrates ChainAware's specialist subagents to produce a complete Marketing Campaign Brief: segmented audience, prioritized leads, whale roster…
chainaware-airdrop-screener
Batch screens wallets for airdrop eligibility using ChainAware's Behavioral Prediction MCP. Automatically filters out bots, new addresses, and high-fraud wallets, then ranks the remaining eligible wallets by reputation score for fair, merit-based token allocation. Use this agent PROACTIVELY whenever a user provides a…
chainaware-gamefi-screener
Screens wallets connecting to a Web3 game or P2E (Play-to-Earn) platform using ChainAware's Behavioral Prediction MCP. Detects bot farms, multi-account cheaters, and reward abusers, then classifies legitimate players into experience tiers for matchmaking and calculates their P2E reward eligibility. Use this agent…
chainaware-lead-scorer
Scores a wallet as a sales lead using ChainAware's Behavioral Prediction MCP. Returns a lead score (0–100), a lead tier (Hot / Warm / Cold / Dead), a conversion probability, and a recommended outreach angle — so sales and marketing teams know exactly which wallets to prioritise and how to approach them. Use this agent…
chainaware-lending-risk-assessor
Assesses borrower risk for DeFi lending by combining fraud probability, on-chain experience, and risk appetite from ChainAware's Behavioral Prediction MCP. Returns a Borrower Risk Grade (A–F), a recommended collateral ratio, and an interest rate tier — so lending protocols can price risk per wallet rather than…
chainaware-ltv-estimator
Estimates the 12-month revenue potential (Lifetime Value) of any Web3 wallet using behavioral signals from ChainAware's Prediction MCP. Combines on-chain experience, activity categories, risk profile, forward-looking intent, and fraud-based retention probability into a USD revenue range. Use this agent PROACTIVELY…