Documentation
Kuot
An autonomous AI research agent that cites and pays its sources. Kuot runs under a Circle Agent Wallet spending cap; the agent buys papers, reads them with Venice, and splits USDC back to every author it cites — gas-free, non-custodial, attested on-chain.
Overview
Most “AI + crypto” agents hold a blanket token approval or custody your funds. Kuot does neither: the agent runs under a developer-controlled Circle Agent Walletwith a cryptographically enforced spending cap — a periodic USDC budget (e.g. “10 USDC/day”) it can never exceed, MPC-signed by Circle, never touching a user’s keys or funds. Every citation becomes an on-chain payment to its author.
How it works
- 1 · Set a budget once. The agent runs under a Circle Agent Wallet spending cap — no blanket approval, no custody of your funds.
- 2 · The agents work. The Researcher pays for papers via x402, delegates narrowed scopes to specialists, and reasons with Venice.
- 3 · Authors are paid. The payout is attested on-chain and relayed gas-free via the Circle Gateway. Unclaimed shares wait in escrow (and earn a loyalty yield) until the author binds their ORCID.
The agent mesh (A2A)
Five on-chain principals in the ERC-8004 registry, working as specialist steps. The Researcher delegates strictly narrower scopes to specialists — authority only ever shrinks:
- Planner — decomposes the question into focused sub-questions
- Reader fan-out — one parallel sub-agent per sub-question (scaled by budget)
- Citation-Matcher — Venice embeddings → relevance-weighted payouts
- Fact-checker — can reject a weak answer and force a revision round
- Summarizer — condenses the verified result to a TL;DR
- Adjudicator — the agent itself splits the payout across sources by how much each grounded the answer, and sets the total USDC (embeddings are the fallback)
Contributors earn on-chain reputation after settlement, and an agent memory (recall of related prior runs) keeps the mesh from being amnesiac.
Author rewards
Cited authors who haven't claimed a wallet have their share recorded on-chain in UnclaimedEscrow, keyed by identity. It accumulates every time the agent cites them again — and the unclaimed share sits in a real ERC-4626 vault (CitationYieldUSYC) that accrues yield the longer it stays unclaimed. On testnet this is a USYC-style stand-in (real USYC is institution-gated), so the yield is seeded, not from treasuries — but the deposit/redeem path is real on-chain. To claim, an author proves their ORCID (OAuth) + signs once; the operator relays the binding (zero gas for the author), then they withdraw principal + bonus.
Smart contracts (Ethereum Arc)
| AttributionLedger 0x6a1AB9C4…49173e | Records each citation attestation + splits USDC to authors |
| NameRegistry 0x4bc59e38…a76E1C | Binds ORCID/OpenAlex identity → real author wallet |
| UnclaimedEscrow 0xf7E7c161…025812 | Holds unclaimed authors' shares until they claim |
| GroundingRegistry 0x18FfEEbb…9636D1 | Commits a tamper-evident digest of each grounded answer |
| ReputationBond 0xEBfe7B62…46f463 | Directional trust bond — capital staked behind a citation, slashable |
| AgentRegistry8004 0x53aaF839…B23f9d | ERC-8004 identity + reputation for the 5 agents |
| StableFXPool 0x3B95B94B…eDCEff | On-chain USDC↔EURC swap so EU authors can take EURC |
| MockUSYC 0xEe59BD14…12115d | ERC-4626 yield vault (USYC-style stand-in on testnet) |
| CitationYieldUSYC 0x9E48A2D1…be28d8 | Routes unclaimed rewards into the vault; redeem principal + yield |
| ShareRegistry 0x25BC0d7e…3227Df | Publishes results on-chain for public /r/<id> share links + reverse-x402 |
| BountyMarket 0x9B06C931…E0444a | Sponsor a topic with USDC; settled payout splits to the cited authors |
API
| POST /api/research | Run the agent mesh → synthesis + payout plan + agent trace |
| POST /api/settle | Record the on-chain attestation (operator-relayed) |
| POST /api/agents/feedback | Bump on-chain ERC-8004 reputation for contributors |
| GET /api/activity · /api/agents · /api/bounties | Live on-chain reads (attestations, reputation, bounties) |
| GET /api/owed · /api/bonus | An author's escrowed principal + accruing citation yield |
| POST /api/claim | Operator-relayed ORCID→wallet binding (NameRegistry) |
| GET /api/paper/[id] | x402-gated paper unlock (HTTP 402 → on-chain USDC) |
| /api/facilitator/{supported,verify,settle} | x402 + Circle Gateway facilitator (verify + settle) |
| GET /api/venice-x402/quote · POST /pay | Pay Venice itself via x402 (EIP-3009, USDC on Base) |
| POST/GET /api/relayer-webhook | Circle Gateway Ed25519 webhook receiver + status source |
| POST/GET /api/share | Publish/read a public result permalink |
On-chain proof
- Grounding proof committed on Arc0xad77a890ee39fe4327d3455f2c140bf21d4ff02dc4f332419f118329463c01ed
- Settlement on Arc (attestAndSplit)0xd4f7988cc5ce80bcfa165eac7dcc9a6ac55f571ac0cebfe648b9df5418a7e36e
- CCTP V2 mint on Base (Arc→Base round-trip)0x62f3fabe1c9f4c425bcc9c83187b06ab8eb3ae634889b51315fdc2ab27dfbdcc
Plus live attestations on the Activity page, real attestAndSplit USDC transfers, and the x402 + Gateway facilitator. 183 tests (59 Foundry + 124 Vitest) plus 21 Playwright E2E + 10 live-integration tests (real Crossref/pipeline/on-chain + a security fail-closed suite), no mocks in the critical path.
Tech & tracks
Circle Agent Stack (Agent Wallets, Gateway nanopayments, on-chain StableFX pool) · Venice AI (chat, web-search, embeddings, image, TTS) · Circle Gateway permissionless (batching, gas in USDC, Ed25519 webhooks) · x402 · CCTP V2 (Arc→Base burn+mint) · Next.js · viem · wagmi · Foundry. Spans RFB-1 Autonomous Paying Agents, RFB-3 Agent-to-Agent, and RFB-6 Creator Monetization.
Two reusable primitives ship with it: an MCP server any agent can call (research, cite, pay), and a Citation-Toll x402 sidecar — a drop-in reverse-proxy that puts a sub-cent on-chain toll in front of any HTTP resource and pays its sources, no fork required (npm run toll). The rail is reusable, not a single-app demo.