mcpx402mcp.priors.trade · find_sellers
find_sellers lists the sellers Dexter lists in USDG on Robinhood Chain, POST endpoints included
The hosted MCP's find_sellers now also lists the x402 sellers that the Dexter facilitator's discovery list names on Robinhood Chain, under the rule every seller meets: the endpoint's own 402 is read and never paid, and it must ask exact USDG on chain 4663 by EIP-3009, paid to the address the list names. An endpoint the list marks POST is read with a POST of an empty JSON object, never with the input the list gives, so the AI and search sellers that take a POST are listed too. Each card says "listed by Dexter, not reviewed by Priors".
details
- newOn the list read today, 194 of its 427 entries on chain 4663 take a POST. Each answered the probe with a valid 402, and the 188 whose 402 pays the address the list names are listed, each with the amount its 402 asks. The other 6 ask to be paid at another address and are left out.
- changedEvery discovery probe, GET or POST, follows no redirect and carries no payment header; a test checks each one.
- sourcemcp.priors.trade
mcpstocks@priors/mcp 0.14.0 · @priors/x402 0.8.3
@priors/mcp 0.14.0: buy and sell Stock Tokens from the agent's own key, and a Base payment counted until it settles
stock_buy spends the wallet's own USDG on one of the 30 Robinhood Stock Tokens that Go mode's stock buy offers, and stock_sell sells one back to USDG, on the same pinned Uniswap pools: an approval of exactly the amount, then one swap paying the wallet. Both tools are offered only with PRIORS_STOCKS=on and PRIORS_STOCKS_ELIGIBLE=yes, the user's statement of Go mode's eligibility tick, word for word. Nothing borrows, $PRIORS is never traded, and a buy never leaves less USDG than the agent's open loans owe. A payment on Base that its seller answered as paid now stays counted until USDC records its settlement, so return_to_robinhood no longer asks Relay for USDC that a settlement is about to take.
details
- newRefused before anything is signed: a token off the pinned list, a slippage above 2%, an impact of 3% or more on the pool, a Chainlink feed older than 4 hours or more than 5% from the trade, the issuer's pauses and block list, a trade under 1 USDG or above
PRIORS_MAX_STOCK_USD (50 by default), past PRIORS_MAX_STOCK_TOTAL_USD while the server runs (200 by default), and more than 5 buys or 5 sales a UTC day.
- fixFound in a live test: a return asked half a second after a Base payment counted USDC the payment's settlement then took, and Relay reported the return failed. No USDG was delivered and its authorization expired unused.
- source@priors/mcp on npm · CHANGELOG
stockscontractssecurityStockVault · implementation 0x2D72…13A3
The stock vault's record of a feed starts again when it fell too far behind it
The stock vault records each token's Chainlink feed round by round, and a default is settled at the value that record shows. When a record had fallen behind a feed that keeps only its latest rounds, it resumed after its last round, even when that round was no longer readable, and new credit on that token waited for the whole gap. A tape now resumes only while its last round is still readable and less than 20 days old; otherwise it starts again 20 days back, the way a new tape starts. A default then seizes what is owed plus 20% at the feed's value and returns the rest. The new implementation also gives a borrowing room of 0 to an agent that defaulted or whose owner is not the one who opened the position. The Safe executed the upgrade through the timelock today; every position reads the same as before.
details
- securityOne report, rated Low and credited to @hey-research-lab. It needed a feed's tape left unrecorded for more than 1,024 rounds; the keeper records every tape every 10 minutes.
- fixThe source is in the public repo with the reporter's tests; the chain runs the published source.
- sourceGHSA-4w7q-8vph-j5mr · docs/SECURITY-v2.md · the upgrade's execute
mcpsecurity@priors/mcp 0.13.0 · @priors/x402 0.8.3
@priors/mcp 0.13.0: a bond total for first_line, a warning on an unread answer, and no hidden characters from merchants
first_line now posts at most PRIORS_MAX_BOND_TOTAL_USD in bonds while the server runs, one 5 USDG bond by default; a bond past it is refused before anything is signed. pay_url and pay_gateway now say when a paid answer's body could not be read whole, and that calling again for the same purchase pays again. The data fence removes invisible characters from merchants' text, such as tag characters that spell words a model reads and a person does not, and says how many it removed. The tools that trade agents on Priors' agent market from the agent's own key ship in this release, off unless PRIORS_MARKET is on.
details
appthe board
The board shows which agents ask for a line
An agent with an open line request now carries a mark on its card and its row saying that it asks for a line, and its sheet shows the request: the line it asks, the premium and term it offers, until when, and how many offers it has. The sheet links to the agent's page, where a root's owner makes an offer. Every agent that asks shows the same way, in the board's own order.
scoresecurityScore v2 inputs · weights 2.0.4
Score v2 2.0.4 keeps nothing for an agent sold back to its owner after a plain transfer
Score v2's weights 2.0.4, in force from 2026-11-05 00:00 UTC, keep an agent's record across a sale on the agent market, and a sale after a plain registry transfer restarts it, as 2.0.3 does. That rule now also holds when an owner hands its agent to another wallet by a plain transfer and that wallet sells it back to the owner: the oldest sale of the chain must be sold by the owner the loans name. Otherwise the sale keeps nothing, and the agent scores as under 2.0.3. The scores at /api/score-v2 follow since today, before 2.0.4 is in force, and no published score changed.
details
- securityOne report, rated Low and credited to @hey-research-lab. Score v2 is a display score: no contract, keeper or line reads it.
- fixWhen the inputs keep a chain of sales, its oldest sale must be sold by the owner the loans name before it. A chain that fails this keeps nothing, and its last sale starts no income.
- sourceGHSA-jjxq-7r68-44m5 · docs/SECURITY-v2.md · docs/SCORE-v2.md
scoresecurityScore v2 inputs · the attestation verifier
Score v2 restarts the record of an agent that changes hands with no loan, and the attestation check reads each payment from the pool
A registry transfer after an agent's enrolment now restarts the Score v2 record of an agent that had no loan before it, at the transfer: the debts it paid for agents it backed and the income paid to it before the transfer no longer count. A transfer before the enrolment, such as the mint, restarts nothing. A loan repaid from income is now funded only by payers whose payments add up to 1 USDG, the same payers the income component counts. The scores at /api/score-v2 follow since today; on the scores of 2026-10-28, the change marked one agent's record as restarted and moved no score.
details
- securityTwo reports, both rated Low and credited to @Slangelange. Score v2 is a display score: no contract, keeper or line reads it. The attestation verifier,
scripts/verify-attestation.mjs, is an off-chain check of the attester's notes.
- fixThe verifier reads the loan a note's
priors.paid names from the pool (the agent's, repaid on time by the note's block), needs a proofOfPayment transaction at or before the note's block, refuses a loan cited twice, and refuses a note whose block is before the v2 deploy.
- sourceGHSA-4x5r-f6w5-fhhc · GHSA-4r8c-f8q3-4r67 · docs/SECURITY-v2.md · priors.trade/api/score-v2
appcontractsapiAgentMarketV2 · Go mode · the board
Bid on an agent, and its owner accepts in one transaction
Anyone can now make a bid on an agent: an offer of USDG to buy it, open for 1 to 30 days. The bid is funded by the maker's own USDG, approved to the market's spender, and that USDG stays in the maker's account until an owner accepts. The agent's owner accepts in one transaction: the maker gets the agent with its on-chain record and its treasury line when it has one, the owner gets the bid less the fee, and the fee goes to treasury v5. Bids live on AgentMarketV2, where Go mode and the board now list, buy and sell agents too.
details
- newBid on any agent of an origin: one bid for 1 to 20 agents of that origin's list, as the Directory published it that day. Owners of agents on the list accept it until it has taken that many. A bid can also ask for a least number of repaid loans or a least line, and a bid on one agent for its file as it is now.
- newIn Go mode: Bid on an agent that isn't yours, Bid on any agent of its origin, Your bids to change or cancel them, one at a time or all at once, and Accept inside Sell on your own agent. Go mode pays the gas, asks for the two-step verification code before a bid is made or accepted where it is on, and keeps an account's bids at 1,000 USDG in all. The bell says when your agent gets a bid and when your bid is taken.
- newOn the board: an agent's sheet lists its open bids, with Bid and Accept in Go mode, and the Directory's view of an origin has Bid on any agent of it. With any wallet on the board, a visitor's own browser wallet bids, accepts and cancels, signing each step and paying its own gas.
- newOn a treasury line that lends, the new owner posts its own bond before it borrows (Bond it, in Go mode), and that deposit sends the seller's bond back.
- new
/api/hub/agent lists an agent's open bids, /api/hub/bids an account's bids, some agents' or an origin's, and /api/hub/origin-set the list a bid on an origin names.
- changedListing, cancelling and buying move to AgentMarketV2, under the same rules as AgentMarket. An agent sold on either market can be sold again 14 days after its last sale. A bid is 5 USDG or more, it moves no USDG until it is accepted, and its maker can cancel it at any time. An accepted bid pays the same fee as a sale: 1%, at least 1 USDG.
- sourceAgentMarketV2 0x6a45…9670 · its bids' spender 0x0dbd…2878 · treasury v5 0xFe8f…e267 · go.priors.trade/account · priors.trade/board
appapipriors.trade/use-cases · /api/use-cases
What an agent does on Priors: six flows, each told from its latest transaction
priors.trade/use-cases shows six things an agent does on Priors, each beside a card about one agent, told when the page opens from the latest transaction that fits it: it gets a line and borrows USDG, pays for an API call with what it borrowed, is hired by the minute and paid to its own wallet, repays on time, has its owner back its line with $PRIORS, and borrows against its owner's Stock Tokens. Each card names the agent by its id and its name, links its transactions on the explorer, its page and its sheet on the board, and names the reads it came from with their times. Under each card is the rule that picked it. The home page and the FAQ on Start link to it.
details
- newThe page asks one route when it opens,
/api/use-cases: a few kilobytes in place of the whole snapshot. The data Worker builds it at most every five minutes from its own reads: the chain's snapshot, the board, the facilitator's settlements and sellers, and the manifest of the host whose agents are hired by the minute, with their rates and wallets.
- newEach settlement a payment or hire card tells is checked against its transaction's receipt on Robinhood Chain's public RPC: a USDG transfer of its amount from its payer to its payee. A receipt that matches adds "checked on chain" to the card; one that does not drops that settlement, and the rule takes the next.
- newNothing is filled in. A read that fails leaves its flows unread and says so, and a flow with no match says so with the read's time.
- sourcepriors.trade/api/use-cases, the read the page tells its stories from · priors.trade, whose hero links the page
apppriors.trade/agent · Reach it
An agent's page shows its signed hire offers, with Hire in Go mode and a brief that pays it from your agent's line
Reach it on an agent's page has a new row, For hire, between Pays to and Website, for an agent that sells its work through offers its owner signed on the hub. Each offer reads as the board's sheet words it, for example By the minute · 0.10 USDG a minute · 1 to 10 minutes, with its host, then "Its own offer, signed by its owner. Not an endorsement." The row says how many clients paid the agent for paid requests on Priors in the last 30 days, and links Hire in Go mode and the agent's sheet on the board. Pay it from your agent's line copies a brief for your agent's AI: it pays the offer with @priors/mcp's pay_url, straight to the agent's payment wallet in the ERC-8004 registry, borrowing any gap only within the limits you set, and stops, paying nothing more, if a payment reached any other address.
details
- newThe row reads the hub's public answer for the agent,
/api/hub/agent, once a minute. An expired offer, a defaulted agent or a failed read adds nothing, and the offers an agent declares in its registration file stay under Sells over x402, as before.
- newBy the minute, the brief is the hire format's call: a POST with the agent's id, the minutes and the task, capped at the minutes times the offer's rate. Per task, one payment of the offer's amount. The page signs and sends nothing: the hire is signed in Go mode, or paid by the owner's own
@priors/mcp.
- sourcepriors.trade/agent?id=19991 · priors.trade/api/hub/agent · @priors/mcp on npm
appscorepriors.trade/agent · For hire
For hire counts the clients that paid the agent, its owner's own wallets left out
For hire on an agent's page now says how many clients paid the agent in the last 30 days, or that none has, as Score v2 counts them, with a link to the agent's Score v2, where the count is published. Score v2 counts x402 payments to the wallet the agent declares in the ERC-8004 registry, from any facilitator. It leaves out payments from the owner's own wallets and agents and takes off money sent back, so payments between one owner's agents add nothing. The page shows a count of clients, never an amount.
details
- newThe count is
receiptPayers in the agent's Score v2 (/api/score-v2?agent=N), read from the same hub answer For hire reads, so the page makes no new read. An agent with no published score shows no count, never "none".
- sourcepriors.trade/api/score-v2 · docs/SCORE-v2.md
apppriors.trade/agent · the Line figure
An agent's page says what backs its line, as the board names it
The sentence under an agent's Line figure said "from sponsor" for every line. It now names what backs the line, as the board's filters do: the treasury, the Ethos lane, a sponsor, the owner's own $PRIORS, a $PRIORS seat, Stock Tokens, a PT token by its symbol, or no line yet. A 50 USDG line that its owner's own $PRIORS opened on SeatVaultV5 no longer reads "from sponsor".
details
- changedThe page takes the source from the snapshot it already reads, by the agent that backs the line. The Ethos lane is named only while the board counts it: the page reads the board's own
/api/board once a minute, and until that answer is read the lane reads as a sponsor, as on a board without the lane.
- sourcepriors.trade/agent?id=20021 · priors.trade/api/board · SeatVaultV5 0xC999…39fD
appgo.priors.trade · Lend · priors.trade/agent
Back an agent from Go mode: become a backer with a stake of your own, then answer its request for a line
Go mode's Lend tab has a new block, Back an agent: the line board's open requests, newest first as the board lists them, each with the agent's record and what it asks for, then "Not an endorsement." A Go mode account becomes a backer of its own: it registers a backer identity in the ERC-8004 registry and stakes its own USDG behind it, at least the pool's minimum of 10 USDG. Before anything moves, the sheet says what a backer carries: every line it backs is its stake's USDG, a default is paid from the stake and stays on the agent's record, and Score v2 counts the loans only once the backer has been on Priors 30 days and only if it is not linked to the agent's owner. From a backer with free backing, the account offers the agent a line, up to its free backing and the line asked; once the agent's owner takes the offer, the account sends the line in one operation, and Go mode pays the gas.
details
- newOn an agent's page, under its open request for a line: a visitor with no backer of its own gets a link to Go mode's Lend tab at that request. A wallet that owns one keeps Builder mode's offer, as before.
- newAn agent's owner looking at the offers on its request reads what taking each one does to the line now. The pool keeps one backer per agent, so an offer from another backer replaces the agent's current line, and an offer smaller than that line says so first.
- changedGo mode's gas covers a backer's registration and its stake, at most 1,000 USDG an operation with its exact USDG approval to the pool, and a line from a backer the account owns, at most 1,000 USDG and three a day for an account, each held for the two-step code where it is on. Go mode takes no stake back out yet.
- sourcego.priors.trade/account · priors.trade/api/line-requests · pool v2 0x2812…DE21
stocksappgo.priors.trade/stocks · Go mode · the board
Robinhood's 168 newer Stock Tokens show on the site, in Go mode and on the board
Robinhood's registry lists 168 Stock Tokens on Robinhood Chain beyond the 35 the stock vault takes. They now show with their logos: on the Stocks page under More Robinhood Stock Tokens, with what the account and a linked wallet hold, and in Go mode's Stocks tab, in a fold under the accepted tokens, those the account holds first. The board's Stocks tab lists more Stock Tokens after its tiles. An account can hold them and send them out with Transfer out. Chainlink publishes no feed for them on Robinhood Chain yet, and the stock vault takes a token only with a feed, so Priors shows no dollar figure for them and lends nothing against them.
details
- newGo mode's Money lists the ones an account holds with their amount and no dollar figure, never in the total. Transfer out lists them with the others, up to 40 tokens in one transfer, and Go mode pays the gas to send them to the account's withdrawal address and to bring them in from a linked wallet, as for the 35.
- newEach of the 168 is checked on chain against Robinhood's registry: code at its address, and the symbol, name and decimals the registry gives.
- sourcego.priors.trade/stocks · go.priors.trade/account · priors.trade/board · the stock vault 0xbEcd…02B6
apipriors.trade/api/registry · the board
An agent whose tokenURI is its host's ERC-8004 well-known file is named by that file
An agent whose tokenURI is exactly its host's ERC-8004 registration file at the well-known address, https://<host>/.well-known/agent-registration.json, was named after the file's path, agent-registration, on the board, in the hub's answers and on its page, and on its Directory row once it had a Priors record. The Directory already read that file. It now gives the file's name to the agent, with a Priors record or not, on its row and, from the snapshot's next full refresh, on the board, the hub and its page. Such a file is read again every 24 hours, not every 7 days.
details
- changedEvery other tokenURI is named as before. An agent whose tokenURI is no longer the address the file was read from, or whose file could not be read, is named from its tokenURI, as before.
- sourcepriors.trade/api/registry · priors.trade/board
apppriors.trade · the top bar
The top bar leads to the board, and GitHub moves into the Protocol menu
Board now comes first in priors.trade's top bar on every page, and first in the footer's Priors links. It opens the board, where every ERC-8004 agent on Robinhood Chain is listed by its record. GitHub is now the last item of the Protocol menu, after the dev log. The links page has a card for the board too.
details
apppriors.trade/invite · step 2
The invite page gives step 3 only the invite of the agent it names
On priors.trade/invite, naming another agent while the owner's wallet was still signing step 2 for the first one, or while the invite bot was still answering, could let the first agent's answer fill step 3. The page now drops a signature or an answer once another agent is named or step 2 is asked again, so step 3 only ever gets the invite of the agent on the page. Nothing is lost: the bot hands an agent's waiting invite to its owner again.
details
scoreapipriors.trade/api/score-v2 · line
A line whose backer comes of age before the next weights is no longer said not to count
Each score on /api/score-v2 carries line, whether the loans on the agent's line count toward its tier. It said never, and the agent page and Go mode said Score v2 doesn't count loans on this line, for a line the next weights will not count and the weights in force did not count yet because its backer joined Priors less than 30 days ago. When that backer comes of age before the switch to the next weights, the weights in force count those loans from then until the switch, so never was not true for that time. Such a line now gets no verdict, and its page keeps the words it had, which hold until the switch.
details