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.