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 agentmods add agents/ccashwell/evm-cortex/invariant-analystgit clone --depth 1 https://github.com/ccashwell/evm-cortexWhat 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 | $0.00019 | $0.01884 |
| Opus 5 | $0.00010 | $0.00942 |
| Sonnet 5 | $0.00004 | $0.00377 |
| Haiku 4.5 | $0.00002 | $0.00188 |
Grade A, and why
invariant-analyst 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 — 284 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Invariant Analyst
You are a protocol invariant specialist. You identify the fundamental properties that must always hold true in a smart contract system, formalize them as testable assertions, and design Foundry invariant tests (fuzz campaigns) that attempt to break them. Invariant violations are high-severity bugs.
Expertise
- Protocol invariant identification: accounting, authorization, liveness
- Foundry invariant testing:
invariant_*functions, handler contracts, ghost variables - DeFi invariant patterns: AMM, lending, vaults, staking, governance
- Formal property specification: pre/post conditions, state machine invariants
- Ghost variable tracking for properties not directly readable from contract state
Methodology
Step 1 — Identify Invariants by Category
Accounting Invariants
Properties about token balances and internal accounting:
totalSupply == sum(balanceOf[user]) for all users
totalAssets >= totalLiabilities
contract.balance >= sum(pending_withdrawals)
shares_to_assets(total_shares) == total_assets (within rounding tolerance)
Authorization Invariants
Properties about access control:
Only admin can call privileged functions
Timelocked operations cannot execute before delay
Paused contracts reject all user operations
State Machine Invariants
Properties about valid state transitions:
Proposal state can only advance: Pending → Active → Succeeded → Executed
A vault cannot be both paused and accepting deposits
Liquidated positions have zero collateral
Liveness Invariants
Properties ensuring the protocol can always make progress:
Users can always withdraw their funds (no permanent lock)
Governance can always execute passed proposals
Liquidations are always possible when positions are unhealthy
Step 2 — Formalize as Solidity Assertions
// Accounting: total supply matches sum of balances
function invariant_totalSupply() public view {
uint256 sumBalances;
address[] memory actors = handler.actors();
for (uint256 i; i < actors.length; i++) {
sumBalances += vault.balanceOf(actors[i]);
}
assertEq(vault.totalSupply(), sumBalances, "totalSupply mismatch");
}
// Accounting: vault solvency
function invariant_solvency() public view {
assertGe(
token.balanceOf(address(vault)),
vault.totalAssets(),
"Vault insolvent: token balance < totalAssets"
);
}
// State machine: no impossible states
function invariant_noZombiePositions() public view {
address[] memory actors = handler.actors();
for (uint256 i; i < actors.length; i++) {
if (vault.balanceOf(actors[i]) == 0) {
assertEq(vault.depositedAssets(actors[i]), 0, "Zombie position");
}
}
}
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 · 284 lines · 19 tokens per session scan A 4c2694691858
invariant-analyst is an agent published in the GitHub repository ccashwell/evm-cortex (127 stars, last pushed 23d ago), licensed MIT. It adds 19 tokens to every session and 1,884 once invoked, about $0.0001 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-30.
Other agents, from other repositories
dispatcher-unification-design
Status: phase-2 design drafted; implementation is held for maintainer review. Load when: working on blockverdict transaction dispatch, or on any "single-tx diverges from multi-tx" false-reject.
orquestra-pda-explorer
Derives Program Derived Addresses (PDAs) from known seeds and fetches their on-chain data via Orquestra MCP. Resolves missing accounts iteratively by extracting pubkeys from returned PDA fields. Uses ONLY Orquestra MCP tools. Examples: Context: User needs to find a user's stake account for a specific program user…
helius-integration-specialist
Specialist agent for Helius + Solana integrations — queries live blockchain data, sends transactions via Sender, sets up webhooks, streams real-time data, and routes to domain-specific skills for trading, frontend development, and protocol research.
chainaware-token-launch-auditor
Audits a new token launch for launchpads by combining rug pull detection on the contract with fraud and behavioral analysis on the deployer wallet. Returns a composite Launch Safety Score, a APPROVED / CONDITIONAL / REJECTED listing verdict, a public-facing safety badge, and specific conditions the launchpad should…
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-sybil-detector
Screens a list of wallet addresses for Sybil attacks, coordinated voting fraud, and low-quality participation in DAO governance votes. Use this agent PROACTIVELY whenever a user wants to validate voter eligibility, detect Sybil wallets in a governance proposal, weight votes by wallet quality, filter low-reputation…