building with priors.
An agent's wallet that can borrow the gap, and a repayment record that sets the price it pays. Test one here, then see how it works.
· GET https://priors.trade/api/check?agent=<id> (record)
· GET /api/agent/<id> (record + fleet check + what a merchant's door answers)
· MCP, read-only: https://mcp.priors.trade/mcp
Paid test (1 USDG over x402, ask your human first): see /llms.txt, test 3.
Check an agent's record
A merchant can put one line in front of its paywall that reads the payer's Priors record first. Enter an agent id or a wallet: this is what that line would answer.
// the merchant's one line, before its paywall app.use(requireRecord({ minRepaid: 1, refuseDefaulted: true, })); app.use(paymentMiddleware(routes, server));
See who backs it
A record says whether loans were repaid. It does not say whether the agent borrows on its own or as one of many agents run by one owner or desk. Our MCP server reads that from the pool. This box calls the same tool your agent would.
# add our server to any MCP client (Streamable HTTP) claude mcp add --transport http bucks https://…/mcp # then: fleet_check({ agentId: 6522 }) free # undertow_lookup({ token }) 1 USDG over x402
Pay for a real answer
Undertow is our service: give it a token and it says where that token's trading fee actually goes. It answers 402 Payment Required until it is paid. Read the free sample, see the live price, then pay it from your own wallet, or show your agent how.
- Read the 402: price, network, who gets paid
- Connect your wallet and switch it to Robinhood Chain
- Check your USDG balance
- You sign one USDG authorization (no gas, nothing sent yet)
- Send it with the request; the Priors facilitator settles it
# a local MCP server with your agent's wallet behind it; money tools ask you first npx @priors/mcp # then ask Claude, or call the tool directly: pay_url({ url: "https://bucks-check.vercel.app/undertow?token=0x1b54…&chain=eth&format=summary", max_price_usd: 1, // the default cap is $0.10: this offer costs $1 max_borrow_usd: 0, // set above 0 to let its Priors line borrow the gap })
// npm i @priors/x402 @x402/core @x402/evm ethers import { createPayer, robinhood } from "@priors/x402"; const payer = createPayer({ signer, // the agent's wallet, which controls its Priors agent maxPrice: "$1", pool: robinhood.pool, agentId: 1234, // optional: borrow the gap from its line… maxBorrow: "$5", // …up to this much }); const { response, paid, borrowed, dueAt } = await payer.pay(url); await payer.settleLoans(); // repay before dueAt: the record grows
# the price, without paying: decode the PAYMENT-REQUIRED header curl -si "https://bucks-check.vercel.app/undertow?token=0x1b54…&chain=eth&format=summary" \ | grep -i payment-required | cut -d' ' -f2 | base64 -d
One paid call, start to finish
Step 3 above, drawn out. The only difference for an agent with a Priors line: if its wallet is short, it borrows the difference and repays later. Press play, or tap a step.
Three pieces, one stack
Pick the top layer you need. Each is built on the one below, so the rules are the same whichever you start from.
An assistant's hands
Claude, or any MCP client, gets a USDG wallet. Money tools ask you first.
Pay, get paid, check
x402 in USDG on chain 4663, plus credit. One import for each side of the counter.
The contracts, typed
Read and write the pool directly: loans, backers, scores. What the two above are made of.
Robinhood Chain
Where the money and the record actually live.
Credit is ahead of spending
Most pool loans are Priors' own test desks. Taking those out leaves the loans backed for agents Priors does not run, and the paid calls that agents have actually made.
Every loan to an outside agent
One dot per loan, on the day it was borrowed. Size is the amount. Tap one for its transaction.
Services an agent can pay today
Approved by Priors on its facilitator; self-registered, unreviewed services are left out. Live.
Built by Bucks