Skip to content

KYA for Robinhood Chain · know your agent

KNOW YOUR AGENT.

Before you let an AI pay you, trade with you or borrow from you, check it. Recensus shows what any agent on Robinhood Chain has actually done on-chain, who stands behind it, and how much it has at stake.

Takes an address (0x + 40 hex), an agent ID (0x + 32 hex) or an ERC-8004 token ID (erc8004:42 or #42).

what a check states →KYA APIgate an endpoint

the census · live on Robinhood Chain

The public proof behind every check.

A check reads the same rows, the same attribution rule and the same earnings ledger as this census: every labelled transaction, every ERC-8004 registration and the USDG agents are paid on Robinhood Chain, counted in public as it lands.

Agents label their transactions; Recensus counts them.

numbers unavailableclaimed agents · last 24 hours

—

numbers unavailable: the Recensus API could not be reached. Nothing here is a zero.

operators
—
agent txs 24h
—
value moved 24h (usd)
—
top framework
—
unclaimed ids
—
block
—

on robinhood chain · how an agent reaches the count

Three ways to be counted.

Who an agent is, and where its label goes. Gas is paid in ETH; payments and every dollar figure are in USDG.

byte 024 bytes · the label
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  • agentId16 bytes · 0–15
  • framework2 bytes · 16–17
  • flags1 byte · 18
  • version1 byte · 19
  • magic4 bytes · 20–23

magic 0x50554C53 · read by tail, no ABI · both byte layouts, calldata and x402 nonce, in the spec →

  1. 01erc-8004

    ERC-8004 agents are recognised automatically.

    An agent registered in the ERC-8004 Identity Registry is claimed by the registry, with no Recensus claim needed. Its owner and its agentWallet count as its senders, and so does any sender the owner declares; when the token changes hands, the binding moves with it from that block on. It labels with its token ID: label version 0x02 with the erc8004 flag set.

    ERC-8004 agents →

    agentId = registry token ID · flags bit 2 (erc8004) · version 0x02

    How a transaction under a registered agent’s token ID is attributed
    sent by, at that blockcounts as
    the token’s ownerbound
    its agentWalletbound
    a sender the owner declaredbound
    anyone elseunclaimed
  2. 02x402 · usdg

    x402 payments in USDG carry the label in the payment itself.

    In an x402 payment the agent signs an EIP-3009 authorization and someone else sends it, so there is no calldata of the agent’s to label. The label goes in the 32-byte EIP-3009 nonce the payer signs, is read back from USDG’s AuthorizationUsed event, and counts under the payer, not the relayer.

    the label in a nonce →

  3. 03direct transactions

    Direct transactions use the 24-byte tail.

    A transaction the agent sends itself carries the label as the last 24 bytes of its calldata. Standard ABI decoding ignores trailing bytes, so the call does what it did; the SDKs simulate it both ways and send it unlabelled if anything differs. The extra bytes are paid for in ETH, like the rest of the transaction’s gas.

    RECENSUS-1 spec →

every way in, the same rule: a transaction counts toward a claimed agent only when its sender — for a payment, its payer — is bound to that agent. a copied ID is counted as unclaimed, never under someone else’s name · the label, in full →

adoption · 7 days

Who is building agents here.

framework numbers unavailable: the Recensus API could not be reached. A dash is not a zero.

all frameworks →
  • 0x0011create-recensus-agent—claimed agents
  • 0x0001Recensus MCP—claimed agents
  • 0x0003Recensus SDK (Python)—claimed agents
  • 0x0002Recensus SDK (TypeScript)—claimed agents
  • 0x0000Unknown / custom—claimed agents
  • unclaimedNobody has claimed these IDs—ids
  • referenceReference (run by Recensus)—agents · not counted

live

Every labelled transaction, as it lands.

the whole feed →

Numbers unavailable.

The feed could not be read from the Recensus API. Rows appear here as soon as it answers.

integrate

Get counted in two minutes.

$ npx create-recensus-agent my-agent
cd my-agent && npm install
npm run address              # the new wallet and its balances; fund it (the README says where)
npm run register             # ERC-8004 on mainnet; a rehearsal on the testnet
npm run transfer -- 0x...    # 0.01 USDG, with the label
npm run buy                  # pay for a KYA check over x402
npm run sell                 # an x402 seller behind a KYA gate

# The testnet by default. For Robinhood Chain itself:
npx create-recensus-agent my-agent --mainnet
what it does
Makes a small agent project with its own new wallet: registration, a labelled transfer, an x402 buyer and a KYA-gated seller. The generator makes no network request.
what it never does
No keys leave your machine. Recensus never holds your keys or your funds.
where the label goes
Twenty-four bytes on the end of the calldata; in an x402 payment, the nonce the payer signs. The call itself is unchanged.
claim your agent
Claim your ID to attribute those transactions to you and see your own dashboard.

for apps · the gate

Check every agent that pays you.

@recensus/kya checks whoever pays or signs a request before your endpoint serves it: refuse an agent with a flag, refuse one below a tier, or quote a price by tier. The same answer as a check on this site, cached, in one line of middleware for Hono, Express or Python.

the gate · KYA API · agent lane · badge

import { createKya, kyaGate } from '@recensus/kya';

const kya = createKya({ apiKey: 'rk_…' }); // a key from the dashboard
app.use('/paid/*', kyaGate(kya, { refuseFlags: true, minTier: 'bronze' }));
// The gate alone authenticates nothing: your x402 middleware,
// mounted after it, checks the payment is real.
app.use('/paid/*', yourX402Middleware);

the token

RCNS

RCNS is what an agent’s owner will bond behind it, so a tier on a check is costly to fake and can be slashed. It launches only together with working, audited bonds: until then bonds run on Robinhood Chain testnet against a mock token, and there is nothing to bond on mainnet. Nothing on Recensus is paid for in it — checks past the free quota are paid in USDG — and it is not required to be counted, to check an agent, or to use the API, the SDKs or the dashboard. Where it will trade on Robinhood Chain is not decided.

contractnone on Robinhood Chain yet

venuenot decided

token page →