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. 1 · Set a budget once. The agent runs under a Circle Agent Wallet spending cap — no blanket approval, no custody of your funds.
  2. 2 · The agents work. The Researcher pays for papers via x402, delegates narrowed scopes to specialists, and reasons with Venice.
  3. 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:

  • Plannerdecomposes the question into focused sub-questions
  • Reader fan-outone parallel sub-agent per sub-question (scaled by budget)
  • Citation-MatcherVenice embeddings → relevance-weighted payouts
  • Fact-checkercan reject a weak answer and force a revision round
  • Summarizercondenses the verified result to a TL;DR
  • Adjudicatorthe 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
0x6a1AB9C449173e
Records each citation attestation + splits USDC to authors
NameRegistry
0x4bc59e38a76E1C
Binds ORCID/OpenAlex identity → real author wallet
UnclaimedEscrow
0xf7E7c161025812
Holds unclaimed authors' shares until they claim
GroundingRegistry
0x18FfEEbb9636D1
Commits a tamper-evident digest of each grounded answer
ReputationBond
0xEBfe7B6246f463
Directional trust bond — capital staked behind a citation, slashable
AgentRegistry8004
0x53aaF839B23f9d
ERC-8004 identity + reputation for the 5 agents
StableFXPool
0x3B95B94BeDCEff
On-chain USDC↔EURC swap so EU authors can take EURC
MockUSYC
0xEe59BD1412115d
ERC-4626 yield vault (USYC-style stand-in on testnet)
CitationYieldUSYC
0x9E48A2D1be28d8
Routes unclaimed rewards into the vault; redeem principal + yield
ShareRegistry
0x25BC0d7e3227Df
Publishes results on-chain for public /r/<id> share links + reverse-x402
BountyMarket
0x9B06C931E0444a
Sponsor a topic with USDC; settled payout splits to the cited authors

API

POST /api/researchRun the agent mesh → synthesis + payout plan + agent trace
POST /api/settleRecord the on-chain attestation (operator-relayed)
POST /api/agents/feedbackBump on-chain ERC-8004 reputation for contributors
GET /api/activity · /api/agents · /api/bountiesLive on-chain reads (attestations, reputation, bounties)
GET /api/owed · /api/bonusAn author's escrowed principal + accruing citation yield
POST /api/claimOperator-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 /payPay Venice itself via x402 (EIP-3009, USDC on Base)
POST/GET /api/relayer-webhookCircle Gateway Ed25519 webhook receiver + status source
POST/GET /api/sharePublish/read a public result permalink

On-chain proof

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.