live/stable
The check
What a KYA check states, part by part, what each field means, and how an address, agent ID or token ID is resolved.
A check answers one question before you deal with an agent: what has it actually done on Robinhood Chain, who stands behind it, and what does it have at stake? Try it on Check an agent, or call GET /v1/kya/<subject> (see KYA API). The page and the API give the same answer.
A check states facts and flags, each linked to the transaction behind it. It never calls an agent safe and gives no score: what to do with the facts is your decision.
What you can check
- an address,
0xand 40 hex characters, any case; - a Recensus agent ID,
0xand 32 hex characters; - an ERC-8004 token ID, written
erc8004:42or#42(in a URL,%2342), below 2^128. It is checked as the agent ID the registry token maps to.
Anything else is refused with 400 BAD_SUBJECT, and the site says what is wrong before it asks. Any ERC-8004 agent can be checked, whether or not it has ever labelled a transaction.
How an address is resolved
An address is not an agent, so a check finds the agent it belongs to. The first rule that matches wins:
- it is a current declared sender of an agent (an address is bound to at most one);
- it is the current agentWallet of exactly one ERC-8004 agent;
- it currently owns exactly one ERC-8004 agent;
- its most recent labelled transaction carried an agent ID, which is an unclaimed ID unless rules 1–3 matched.
When rule 2 or 3 finds several agents, the answer lists them (up to 20, registered before transferred, then by token ID) and checks none: an owner of many agents is not one agent, so you choose which one you mean. When nothing matches, the answer is not an agent: no agent activity known for that address, with a link to it on the explorer. That says what Recensus has seen, not anything about the address.
The six parts
Agent
isAgent is true when the ID is registered in ERC-8004, claimed on Recensus, or has labelled transactions. You get its ID, its name and description (from its registration file or its claim, written by its owner, shown as text and never trusted), how it is claimed (erc8004, derived or first_sender), whether it is a reference agent Recensus runs itself, and for an ERC-8004 agent its token ID, registration URI, feedback count and the Registered event.
Who stands behind it
- owner: the ERC-8004 token's current owner, with the transfer or mint that gave it the token; for a Recensus claim, the operator (a claim is a signature, so there is no transaction to link);
- bound addresses: every address bound to the agent now, each with its role (owner, agentWallet, declared sender). Only transactions from these count toward the agent;
- framework: the framework code most of its own labelled transactions carried in 30 days, named from the registry.
Track record
- first seen and last seen: the earliest of its registration, its first own labelled transaction and its first payment received; the latest own transaction or payment;
- days active: distinct UTC days with activity, all time;
- labelled transactions: its own successful labelled transactions and their USD value, over 7 and 30 days; native ETH they sent is shown beside it in ETH (
ethWei) and never in the USD; - earnings: gross and unflagged USDG earnings and payers, over 7 and 30 days, as of the ledger's block (see Top earners); absent for an agent with no earning wallets;
- counterparties (30 d): distinct addresses its own transactions sent value to or that paid it.
- history still loading: shown while a record this one is built from does not yet reach back far enough for this agent: calldata labels (or a log-based record) older than the date it gives are still being read, so first seen, days active and the labelled counts may still move earlier. The API says so in
record.historyCompleteandrecord.historyFrom({ block, time }, the block from which the record is complete). An ERC-8004 agent registered after that block has nothing older to find, and its record is complete.
At stake
The tier and the bond behind it. A tier needs both a track record and a bond of RCNS (Bonds and tiers). Bonds are designed for Robinhood Chain testnet only, so on mainnet every agent reads Unbonded, and the check says which tier its track record alone would meet, with its progress toward each, so an owner can see what a bond would buy. That is not a tier.
History
Slashes and open slash proposals against the agent's bond. Empty until bonds exist on the chain a check reads.
Flags
Each flag carries the transactions behind it.
NEW_OWNER: the ERC-8004 token changed owner by a transfer (not its mint) in the last 30 days. Evidence: that transfer.RECENTLY_UNBONDED: an unbond was requested or a bond withdrawn in the last 30 days. Never set before bonds exist.SUSPECTED_WASH: most of what the agent appears to do is money going round among its own wallets (the wash detector). Status: computed for every agent, but not yet published. It is left out of every answer, webhook and gate decision until its results have been reviewed.
Freshness
Every answer carries asOfBlock and asOfTime, and earnings their ledger block. An answer is cached for two seconds, like an agent card.
Share a check
Every check has one address, /check/<ref>, where <ref> is the address, agent ID or erc8004:N that was checked. A link to it previews as the agent's card: its name, an address, its tier, days active, USDG earned in 30 days (unflagged), independent counterparties, labelled transactions in 30 days, and the date and block the check is as of. The card is an image of its own at /card/<ref>.png (1200×630; ?format=square for 1080×1080), and an agent's check page gives the Markdown and HTML to put it in a README, with "Share on X" and "Copy link" beside them.
A card states facts and no verdict, and is drawn again at most once an hour. The name on it is its owner's text: at most 32 characters, with links, handles, emoji and anything the card's fonts cannot draw removed, and "Agent #N" when nothing is left. A ref that is not on Recensus gets a card that says so. Recensus counts how often check pages are opened and the share buttons used, as one number per day and kind, and keeps nothing about the visitor.