Headwater View source

Honesty table

What’s real, what’s simplified and disclosed, and what isn’t built yet. Plain statements, checkable in the code itself, not buried in comments.

Real
ERC-8004 registry reads
Calls the actual Identity and Reputation registries live on Monad mainnet. Function signatures pulled from the reference contracts, not the spec doc.
Funding-provenance signal
Reads real transfer events on Monad, verified against real wallets and real transactions. One caveat stated plainly, because the raw numbers are easy to misread: the circular-funding and fan-out checks run over AUSD, and no reviewer wallet on this registry has ever moved AUSD. So their hit counts describe unrelated token traffic, not agent reputation, and they are not evidence about any agent. The checks that actually apply to reviewers are the native-MON provenance ones listed above.
Shared funding origin
Records who paid into each wallet, then checks whether wallets that present as separate parties were capitalised by the same payer. As deployed this follows native MON only. Every funder record on the live indexer has source “native”, checked 2026-09-23. Token funding is a real evasion route and is not covered: an ERC-20 transfer’s transaction recipient is the token contract rather than the wallet, so it is invisible to a native scan. It was measured before being treated as a gap. Of 7,690 rater wallets on this chain, 7,684 already have a native funding record; five of the remaining six are contracts that never needed funding, and the last is a wallet holding 0.0007 MON. Token tracing would today explain one wallet. Gas top-ups are excluded from the verdict: the earliest payment into a wallet is often a small fee subsidy rather than whoever actually funded it, and treating those as the same relationship produces a confident wrong answer. Both of those corrections are carried over from an earlier project where each was caught against live data. Known limit: native value moved by an internal contract call does not appear in top-level transactions, so some funding routes remain invisible. Measured again on 8 October 2026 against the rebuilt index: 13 of 7,711 reviewer wallets have no funding record. Seven are smart wallets that never held any money because someone else sent their reviews, which the review-sender check below now covers. Five are contracts. One is an ordinary wallet with no direct funding, most likely paid through a contract call, and that one stays unexplained.
Wallets created together
Looks up when each reviewer wallet first appeared on chain in any transaction, then checks whether an agent’s reviewers share a creation window. Needs three or more inside a day: two wallets born near each other is a coincidence that will happen constantly across thousands of reviewers, but a batch is not. The verdict is reached against each agent’s own reviewer set rather than stored per wallet, since the same wallet can sit in a tight cluster for one agent and a loose spread for another. Wallets whose creation date could not be resolved are left out rather than treated as born at block zero, which would make every unknown wallet cluster with all the others.
Shared funding source
Catches one wallet quietly bankrolling several different reviewers, the case the other two funding checks miss: circular funding needs money flowing back, and fan-out only fires at 15 or more recipients. Because exchanges pay reviewers incidentally among thousands of others, any funder already shaped like a payment processor is recorded but not flagged. That exclusion uses the indexer’s own fan-out result rather than an outside label service, so it keeps working regardless of third-party availability.
Automated review timing
Measures how ragged the gaps are between a wallet’s consecutive reviews of one agent. People review at irregular intervals, minutes then hours then days; a script does not. The measure is the coefficient of variation, which is scale-free, so it catches a bot firing every 50 seconds and one firing every 50 minutes alike. It only fires on 5 or more intervals, so a short uniform run is not enough. Zero-second gaps from reviews sharing a block are excluded, since counting them would manufacture a perfect score. Scoring is per agent after an earlier version measured whole histories and missed three of four scripted wallets: a burst on one agent was separated from the next by a long pause, and averaging those pauses in hid the regularity inside each burst.
Deep per-wallet funding history
A live index only covers a recent window, which a patient funder could simply pay around: the money arrives long before the wallet ever reviews anything and becomes worth watching. So the first time a wallet appears as a reviewer, its full history is pulled on demand, back to its very first transaction. An earlier version did this for AUSD as well, and it was removed once measured: it returned nothing across 4,476 reviewers, because reviewers here do not hold AUSD, while consuming roughly half of all indexing time.
9 detection signals
135 automated tests passing in Headwater and 19 in the indexer, covering every funding-relationship, review-sender and reputation-overlap check the tool runs.
Headwater is a listed agent
Registered on 2026-10-09 in the same ERC-8004 Identity Registry it reads, as agent 10324, so other agents can find it there. Its card is at agent.json. Registration transaction.
Simplified, disclosed not hidden
Token coverage
This page previously said AUSD was “the stablecoin real agents use to pay each other on Monad today”. That was wrong, and it was never checked before being published. Measured on 2026-09-21: across 4,476 reviewer wallets the AUSD trace returned zero results, and querying transfer history directly for individual reviewers, including the most active ones in the flagged cluster, returned zero transfers each. Reviewers on this registry do not use AUSD at all. The funding that matters here moves in native MON, which is what the provenance checks above now follow. Submitting a review costs nothing but gas, so there is no payment attached to a review to trace in the first place.
Not built yet
Wallet reputation labels
Previously described here as working. It is not. The code path exists but points at api.nansen.ai/v2/wallet/overview, which does not exist, so not a single wallet has ever been screened against exchange or institutional labels. The lookup page reports this as NOT ACTIVE rather than showing an empty result as if it were a clean pass. Corrected on 2026-09-21 after checking the live table and finding it empty chain-wide. A second correction, 2026-09-23: it would be wrong to leave this reading as “Nansen does not cover Monad”. It does. POST api.nansen.ai/api/v1/profiler/address/first-funder answers HTTP 402 with a payment offer of 0.01 USDC per call, and Monad, chain 143, is one of the networks it accepts payment on. The service is reachable, permissionless and cheap. We have not bought a single call, so this check stays NOT ACTIVE, and it will keep saying so until a purchase receipt exists to point at.
Agent Wallet hook
The gap it would fill is real and documented, but no code exists for it yet. This is what would make Headwater infrastructure other apps call, not a standalone checker.
The provenance verdict, and how to call it
Why this needs Envio, in one command
Every funding edge here comes from Envio HyperSync, which is asked for one wallet’s entire native-MON history back to genesis the moment that wallet first appears as a rater or an agent owner. There is no second route to that answer on this chain. Ask the public RPC for a wider window and it replies eth_getLogs is limited to a 100 range, and a native MON transfer emits no log at all, so even a million such calls would return nothing useful. Chain tip was 107,087,266 when this was checked on 2026-09-23. Remove HyperSync and there is no funding trace, no two-hop check and no round trip, which is to say no product.
Two funding hops
Checking only whether an agent’s owner paid its raters directly is defeated by one burner wallet in the middle, and one wallet is a few seconds of work. Funding is therefore traced across owner to rater, and owner to intermediary to rater. On agent 153 the second hop finds a rater the direct check does not see. A third hop is not attempted: on a chain where almost every wallet traces back to the same distributor, a long enough path connects everything to everything and the answer stops meaning anything.
Owner identity beats distributor shape
A funder that has paid a great many wallets is normally a faucet, and flagging it would flag every agent on the chain, so those are excluded. That rule had one catastrophic exception: the funder behind agent 182’s 7,665 raters funded exactly 7,665 wallets, and is that agent’s own owner. Shape said faucet. Identity said the rated party paid for its own raters. Identity now wins, because a distributor that is also the agent’s owner is the strongest case here rather than the weakest.
Raters that are not people
A rater’s deployed code is checked before its behaviour is described. Agents 153 to 158 read as a coordinated ring until the rating contracts are decoded and turn out to expose createGame, games and getRound, with every transaction carrying one positive and one negative score, which is a winner and a loser. An earlier version of this product called that manipulation, and it was wrong. When most raters are application contracts the verdict says APP GENERATED instead of leading with owner funding, and a test pins that ordering so the mistake cannot return quietly.
Who sent the review
A review is recorded under the address that wrote it, but a smart wallet or a contract can have that review sent, and paid for, by somebody else. So the index records the sender of every review transaction, not only the reviewer. Measured on 8 October 2026: 206 of 9,293 reviews, on 24 agents, were sent by someone other than the reviewer, and on 21 agents that someone was the agent’s own owner. Most of those reviewer wallets are smart wallets that have never held a single MON, so they show no funding at all, and comparing the reviewer’s address with the owner’s says they are unrelated. Before this check, agents such as 10167 and 10188 read as THIN, one ordinary review from a stranger. They now read SELF REVIEWED. Twelve of these reviews on agent 10261 were checked against the chain directly through a second provider, Quicknode, and all twelve senders matched the index. A sender other than the owner is treated as the reviewer’s funder, so an owner who paid that sender is still found at the second hop.
Same agent, two readings
Quicknode runs its own ERC-8004 reputation explorer and it covers Monad. Its published formula (v1.4) scores what it calls sybil resistance as unique reviewers divided by total reviews. On 8 October 2026 it gave agent 182 a sybil resistance of 100 out of 100 with high confidence, because its 7,665 reviews come from 7,665 different wallets. That number is correct for what it measures. Headwater asks a different question, who paid those wallets, and the answer is the agent’s own owner, every time. Counting wallets and tracing their money are different checks, and only the second one sees a campaign.
Whether a rater ever paid the agent, and when
The obvious filter is that a rating from somebody who paid for the service should count for more than a rating from a stranger. It was measured before it was trusted. Across all 93 rated agents there are 7,824 rater-and-agent relationships (measured 5 October 2026). In 7,670 of them the rater did send native MON to the agent’s owner. In exactly 3 of them the payment arrived BEFORE the rating, and those 3 come from 2 wallets. ProofLines, who built the same filter independently and published first, arrive at the same 3 pairs from 2 wallets (they count them rating by rating, 16 ratings, 15 of them from one wallet), which is worth saying plainly: two different pipelines agree. Looked at closely on 6 October 2026, only 1 of the 3 is a payment to an agent that already existed. On agents 145 and 146 the rater sent each owner wallet 0.1 MON two minutes before the agent was registered, which pays for the wallet to exist rather than for a service. The one that remains is agent 4, where the rater paid 42 MON three days after the agent was registered and has paid nobody else. So a payment-backed filter certifies almost nothing on this chain, and used on its own it reads the chain backwards, because on agent 182 the payment is the owner’s own money coming home. Payments are therefore recorded with their direction and their timing, never as a bare yes or no. One stated limit: the index keeps the earliest payment from each payer, so “paid before rating” means that payer’s first payment predates its first rating.
The round trip on agent 182
Agent 182 holds 82 percent of all feedback on this chain, so what its ratings are made of matters more than any other single answer here. The owner sends a wallet 11.000000 MON. Fourteen seconds later the wallet rates agent 182. Six seconds after that the wallet sends 10.934585768 MON back to the same owner. All 7,665 of its raters do this. The owner is out the gas and nothing else. Both transactions are public and can be checked without us: 0x2c7cebc273da93a5a66a41986ab36a2b6fe2ca96a57d928c58adb8600ced64d6 out, and 0x62fad4d296f9d510a2b38ea8c09a3cdefc5bc57f39cb829fbfd674e1b01c9461 back, with the rating in 0xf9f76e73916e1193d3453dbe6dc333b42888bb04dca50605514dd31d6b694661 between them. This says where the money went, not why anyone moved it, and a funded campaign can be entirely legitimate.
What the verdicts mean
NO EVIDENCE, never rated, which is the normal case on this chain. THIN, every rating came from one address. SELF REVIEWED, the owner is among the raters, or the owner sent a rater wallet’s review itself. APP GENERATED, the raters are software recording outcomes rather than people forming opinions. OWNER FUNDED, the owner paid for its raters directly or through one hop, coloured by share so a third is not dressed up like everything. ROUND TRIP, the owner paid its raters and the same wallets sent funds back to the owner after rating, so the money the score rests on returned to the party being rated. RING, the raters trace to one money source that also sits behind several other agents, found by looking at every rating and every funding record on the chain at once, because each of those agents looks ordinary on its own. NO LINK FOUND, nothing found across two hops, stated as weaker evidence than a link would be and published alongside how much of the rater set could be traced at all.
When the live index is down
The index runs on Envio’s free development tier, where a deployment expires after 30 days and a rebuild takes about an hour. During either, Agent Lookup shows the published verdict for that agent, with the date it was measured, instead of an error, and the home page says the live feed is offline. Nothing is presented as live when it is not.
Callable by an agent, not just readable by a person
Monad’s own ERC-8004 documentation tells agents to check reputation before a high-value transaction, so this answers as JSON as well as as a page. A static API is published at api/index.json and api/agents/<id>.json, with no key and no rate limit. An id with no file has never been rated, which index.json states as a verdict rather than leaving a 404 to be interpreted. An MCP server in the repository answers live and covers every registered agent. The page, the API and the MCP server all read the same rules out of one file, so they cannot answer the same question differently.