Limits on chain.
The agent signs with a session key that can only pay the escrow.
An agent that buys for a person pays through Orvyn. The money goes into an escrow on Arc, not straight to the store.
An agent pays through Orvyn into an escrow on Arc, not straight to the store. If the owner reports a problem, the agent opens a claim and a judge on GenLayer decides.
The agent signs with a session key that can only pay the escrow.
Rules say which claims the agent opens alone and which need the owner.
Tenet's judge on GenLayer decides under the store's terms, settled on Arc.
The owner sets rules and approves the agent's session key for one day with the owner's tool (see Session key).
The agent places an order at a store that sells through Tenet Pay and gets a payment link.
The agent calls pay_link. Orvyn checks the owner's rules and the store's terms against the escrow, then pays. The money is held in escrow.
If something goes wrong, the agent calls open_claim. For "not as described", Orvyn asks the owner for the proof through MCP elicitation.
The store has a window to answer. The judge decides; the result is settled on Arc.
The agent calls withdraw and the refund goes back to the owner's account.
Orvyn is an MCP server (stdio). Any MCP client can use it. A client that supports elicitation can ask the owner; without it, claims that need the owner are not opened.
The server runs under Node's permission model: it can read only its own folder, the session key, the owner's approval and its ledger. Node 24 takes one --allow-fs-read per path.
The owner has 10 minutes to answer a question from Orvyn. With no answer, nothing is signed and the agent is told the step waits for the owner.
Applied in code before anything is signed. The limit per order and the number of orders are also on chain (see Session key); the daily total and the weekly claims are counted in code.
The owner's account is an ERC-4337 smart account (ZeroDev Kernel 3.3, EntryPoint 0.7). The agent never holds the owner's key. It signs with a session key that the owner approved, and the chain enforces what that key may do.
The agent creates a session key and gives the owner only its address. The owner's tool signs an approval with the limits. The approval holds no private key. On a local fork of Arc, an approval with a limit changed by the agent was refused by the chain.
Each was signed and simulated against the real network, and the policy refused it.
The real contracts copied locally, not the live network.
Both were settled on Arc: the full amounts went to the buyer and 0 to the store.
Orvyn runs on Arc testnet with testnet USDC. There is no mainnet deployment.
late claim needs a delivery email verified by Lacre, which is not live on this network yet.Dispute path tested on Arc testnet: the store disputed with a fact, the closing round ran and the judge decided DENY (claim not proven). See the transcript and the verdict.