[ Documentation ]

How Euthyna works

Everything you need to understand the agent and put your own treasury on it. It runs on Arc testnet, so it uses free test USDC, but the bills, decisions and on-chain records are real.

01

Overview

Euthyna is an AI treasurer for small businesses. It pays your bills in USDC, keeps enough cash on hand for what's coming due, and parks the rest in a reserve.

Most AI agents get a spending limit from a config file, which means trusting whoever wrote it. Euthyna's limit lives in a smart contract and moves only with the agent's own track record, which the contract checks itself. It's an AI treasurer on probation.

02

How it works

  1. 01
    You own a vault
    A smart contract that holds your USDC, your approved payees and your bills. Your wallet is the owner. The agent has its own Circle wallet and can act only through the vault.
  2. 02
    The agent pays bills
    Before each bill is due, the agent pays it, but only to payees you approved and only within limits the contract enforces. It has no function that sends money to an address of its choosing.
  3. 03
    It makes commitments
    When cash sits idle, the agent moves some into reserve and commits on-chain: “every bill due before time T will still be paid on time from liquid cash.”
  4. 04
    The contract grades it
    After T (plus a short grace period), anyone can call settle(). The contract checks its own records: if every covered bill was paid on time, it's a hit; otherwise, a miss.
  5. 05
    The limit moves
    A hit raises the agent's score, and with it the amount it can pay on its own. A miss halves the score and freezes sweeps for 24 hours.
Every decision is auditable
Each run, the agent snapshots the vault, code computes every number that matters, the LLM proposes actions, a policy layer checks them, and the full record is hashed (keccak256). That hash goes on-chain with the transaction. On the Replay page you can re-hash any record in your own browser and check it matches.
Scoring
Autonomous limit
min(owner ceiling, base limit + rate × score)
Base limit (new vault)
25 USDC
Daily cap
min(owner daily ceiling, 3 × limit)
Hit
score += min(avg reserve, bills paid on time) × window / 30 days
Miss
score ÷ 2, sweeps frozen 24h
03

Get started (5 min)

[ Before you start ]

  1. a.Install MetaMask.
  2. b.Get free test USDC from faucet.circle.com. Choose Arc Testnet and paste your address. On Arc, USDC is also the gas token.
  3. c.Pick one real bill (hosting, a subscription, a supplier) and get the payee's wallet address. Keep it at 25 USDC or less so the agent can pay it on its own.

[ Set up: 3 signatures ]

  1. 01
    Create your vault
    Open Onboard and connect your wallet; Arc Testnet is added automatically. Optionally enter a business name (shown publicly), then click Create. You get your own vault and agent wallet.
  2. 02
    Add a payee
    Paste the payee's address and a name. Keep or lower the default limits. The page then shows when the payee goes live, about 1 hour later.
  3. 03
    Register the bill
    Enter the amount and an invoice number. The due date defaults to 1 hour after go-live, and earlier dates are refused, because the agent couldn't pay them in time.
  4. 04
    Fund the vault
    Send test USDC to your vault address, from the faucet or from MetaMask. Send enough to cover the bill, plus a little extra.
Open Onboard

[ What happens next ]

The agent checks your vault every 30 minutes and whenever a new bill arrives, and pays the bill before it's due. Your business shows up in Live businesses on the home page.

04

Using the console

Treasury
Balance, reserve, the agent's current limit, upcoming bills, expected inflows and owner alerts.
Trust
The limit over time and every commitment with its hit or miss.
Decisions
Every agent run: what it proposed, what policy allowed, what was sent.
Replay
Re-hash a decision record in your browser and compare it with the on-chain hash.
Escalations
Bills over the agent's limit wait here for you to approve (paid from your wallet) or cancel.
Onboard
Create a vault, add payees, register bills.
Public stats
Totals across all real (non-test) vaults.

Connect your wallet and the console opens your vault automatically. Any vault can be viewed with ?vault=0x… in the URL.

05

Safety rules

  • +Allowlist only. The agent can pay only payees you added, and only bills that exist.
  • +Payee delay. A new payee goes live after a delay (1 hour on production vaults, never under 10 minutes), so nobody can add an address and get paid instantly.
  • +Per-payee caps. Each payee has a max per invoice and a max per month.
  • +Limits in the contract. Bills above the agent's limit or daily cap are escalated to you, not paid.
  • +A cash floor. The agent can't sweep cash below the vault's minimum liquid balance.
  • +The model never decides a number. Code computes every amount; the policy layer rejects or clamps anything outside the rules, and the contract has the final word.
06

FAQ

Can the agent send my money anywhere?
No. It can pay only your approved payees, only for registered bills, and only within limits the contract enforces.
Is this real money?
No. It's Arc testnet, and test USDC has no value. The bills, the decisions and the on-chain records are real.
What if I change my mind?
Only your wallet can cancel a bill (cancelObligation) or replace or remove the agent (setAgent). Escalations has a Cancel button for bills waiting on you; anything else can be called on your vault's page on Arcscan.
Why wasn't my bill paid yet?
Check that the payee is live (1 hour after adding), the vault has enough USDC, and the bill is within the agent's limit. Bills over the limit wait in Escalations.
Which AI model makes the decisions?
A chain of free models (Gemini first, OpenRouter as fallback). If one fails or runs out of quota, the next takes over, and each decision record says which model answered.
07

Use with AI assistants (MCP)

Euthyna ships an MCP server, so you can ask Claude, Cursor or any Model Context Protocol client about a vault in plain English: its cash, the agent's decisions, its trust record. It can also verify any decision's hash for you. It is read-only and holds no keys, so it can't move money.

[ Set up (Claude Code) ]

git clone https://github.com/theyuvan/Euthyna
cd Euthyna/mcp && npm install
claude mcp add euthyna -- node "$(pwd)/dist/index.js"

Claude Desktop, Cursor and HTTP setup are in the MCP guide.

[ Then ask ]

  • +“What's the state of the Euthyna production vault?”
  • +“What did the agent decide in its last 5 runs, and why?”
  • +“Has the agent kept its promises? Show its trust history.”
  • +“Verify the agent's last decision that moved money.”
Read
get_public_stats, list_businesses, list_vaults, get_vault, list_bills, list_payees, list_commitments, get_trust_history, list_decisions, get_decision
Verify
verify_decision: re-hashes a decision record locally and checks it against the chain
Build (unsigned)
build_settle_tx, build_add_payee_tx, build_register_bill_tx: you sign them in your own wallet
Resources
how-it-works docs, contract addresses, euthyna://vault/{address}
Prompts
treasury_report, audit_decision, explain_trust
08

For developers

Deeper docs live in the repository:

  • +contract.md: mechanism, scoring, the 22-attack loophole audit, deployed addresses
  • +backend.md: the agent loop, LLM chain, setup, full API reference
  • +frontend.md: pages, wallets, running and deploying the console
  • +mcp/README.md: the MCP server, its tools and client setup