Priors for Hermes Agent
A Portable Agent Plugins v1 package for Hermes Agent. It lets a Hermes agent pay HTTP 402 (x402) APIs on credit: when its wallet is short, it borrows the gap in USDG from its Priors credit line on Robinhood Chain, pays, and repays. Before paying another ERC-8004 agent it can read that agent's repayment record.
It bundles two MCP servers and one skill:
| Server | What it is | Moves money |
|---|---|---|
priors |
the hosted, read-only Priors MCP server, https://mcp.priors.trade/mcp (no key, no sign-in) |
no |
priors-wallet |
the local priors-mcp command from npm @priors/mcp, signing with the agent's own wallet |
yes |
skills/priors |
when to use the tools, in what order, and what to confirm with the user first | no |
Install
npm install -g @priors/mcp@0.14.1 # the priors-mcp command
hermes plugins install priors # once listed in Hermes's plugin catalog
hermes plugins enable priors # portable packages install disabled
Then, in the Hermes profile's .env:
PRIORS_KEY_FILE=/path/to/agent-wallet.key # chmod 600; a dedicated wallet, never a main one
PRIORS_AGENT_ID=1234 # the agent's ERC-8004 id
PRIORS_PAY_HOSTS=check.blockpin.dev # the only hosts pay_url may pay
PRIORS_STATE_DIR=~/.priors/state # where the daily caps and sent payments are kept
PRIORS_MAX_SPEND_DAY_USD=5 # optional daily caps
PRIORS_MAX_BORROW_DAY_USD=5
Hermes hands the server only the variables mcp.json names, so these are the ones that reach it: the five above,
PRIORS_KEY (instead of PRIORS_KEY_FILE), PRIORS_MAX_PRICE_USD (most a call, default 1.00),
PRIORS_MAX_BORROW_USD (most a borrow, default 25), PRIORS_MAX_SPEND_USD and PRIORS_MAX_BORROW_TOTAL_USD (totals
while the server runs, defaults 5 and 25) and PRIORS_RPC (another Robinhood Chain node). Any other setting stays at
@priors/mcp's default.
priors-mcp is a Node.js command, so node must be on the PATH Hermes runs with. It signs nothing when
PRIORS_STATE_DIR sits under a directory other users can write to (its record of sent payments and daily totals could
be tampered with): use a directory only you can write to (chmod 700), with no group- or world-writable parent.
Without a key only the read-only priors server is useful: records, sellers, pool data.
What it does
credit_statusreads the agent's own line, the amount available and its open loans.agent_record(agent_id)on the read-only server reads another agent's record: its line, repaid and late loans, defaults and score.pay_url(url, max_price_usd, max_borrow_usd)fetches the URL; on HTTP 402 it pays in USDG at or belowmax_price_usd, and if the wallet is short it borrows the gap from the line whenmax_borrow_usdcovers it. A loan is at least the pool's minimum (5 USDG today), so a 0.10 payment from an empty wallet borrows 5.repay(loan_id)repays the loan, principal and fee.
Disclosure
- Payments and loans are real money: USDG on Robinhood Chain mainnet, signed by the key in
PRIORS_KEY_FILE(orPRIORS_KEY) in the Hermes profile's.env. - Both servers are marked
untrusted, so Hermes asks the user before every tool call that is not read-only, including every payment, borrow and repayment. The plugin never auto-approves one. Where nobody can answer (hermes chat -q, cron, the messaging gateway without a prompt), Hermes declines the call and nothing is paid. pay_urlpays only the hosts inPRIORS_PAY_HOSTS, never more thanmax_price_usda call (and the server'sPRIORS_MAX_PRICE_USD, 1.00 by default), and borrows only whenmax_borrow_usdis given. The server's own totals (PRIORS_MAX_SPEND_USD5 andPRIORS_MAX_BORROW_TOTAL_USD25 by default while it runs, and the daily caps above) bound what one session can spend or borrow.- A loan more than three days late can be marked defaulted, which ends the agent's record on Priors.
- The hosted server receives the tool calls' public arguments (agent ids, addresses) and counts each connection by the client's runtime name only: https://mcp.priors.trade/privacy.
- The tools are served by
@priors/mcpand by the hosted server; their code is open in https://github.com/priors-agents/priors.
Demo

A production run in Hermes Agent 0.22.5 on 2026-10-30 (agent #437, Robinhood Chain mainnet), cut to 58 seconds at 1.6x
speed. The agent reads the seller's record (Blockpin, agent #9233), then pays its x402 check (0.10 USDG) from an empty
wallet: pay_url borrows 5 USDG, the pool's minimum loan (loan #50891), after Hermes asks and the user allows it once.
The agent's income then arrives from another wallet, and repay closes the loan for 5.011666 USDG.
Transactions: borrow,
payment,
repayment.
License
MIT