Pay per call
in stocks

x402 payments on Robinhood Chain, settled in tokenized stocks. Price your API in dollars. An agent pays in SPY, NVDA or any of 29 stock tokens at the live Chainlink price, without holding ETH, and the tokens land in your wallet.

NVDA$219.67AAPL$337.06SPCX$155.13GOOGL$347.39TSLA$366.84AMD$543.78AMZN$251.37PLTR$175.23MSFT$496.03META$682.43COIN$172.48MU$982.33ORCL$150.40SPY$762.86INTC$109.24CRWV$80.11SNDK$1,614.82QQQ$716.62GME$22.71USO$155.00CRCL$84.56MSTR$131.49SGOV$101.06TSM$428.79BABA$108.55RKLB$67.75IONQ$40.07EWY$182.92SLV$58.91
29 stock tokenspriced by Chainlinkbuyer holds no ETHx402 v2 exact scheme

How it settles

One request, two signatures, one transfer

The 402 quotes the price in every stock the seller accepts. The buyer signs a permit for the settler and a payment that names the token, the recipient, the amount and a time window. The facilitator checks both and pays the gas, and the stock tokens move from buyer to seller in one transaction.

x402 · verify + settle
$ curl https://api.example.dev/report
HTTP/1.1 402 Payment Required
PAYMENT-REQUIRED: x402 scheme=exact network=eip155:4663
$0.01 = 0.00001311 SPY chainlink $762.86
$0.01 = 0.00004552 NVDA chainlink $219.67
# buyer signs a permit + a payment to payTo, retries
$ curl -H 'PAYMENT-SIGNATURE: <signed>' …/report
HTTP/1.1 200 OK
PAYMENT-RESPONSE: settled 0.00001311 SPY
tx=0x9c4b…e2f1 chain=robinhood 4663 gas paid by relayer

Accepted stocks

29 stocks, priced on every call

Each row is a stock token on Robinhood Chain with its own Chainlink feed. The middleware reads the feed when it quotes, so the amount in a 402 follows the market. This table reads the same feeds.

TickerCompanyChainlink price$0.01 paysFeed updated
NVDANVIDIA$219.670.00004552 NVDASep 17 14:15 UTC
AAPLApple$337.060.00002967 AAPLSep 17 19:04 UTC
SPCXSpace Exploration Technologies Corp$155.130.00006446 SPCXSep 17 19:55 UTC
GOOGLAlphabet Class A$347.390.00002879 GOOGLSep 17 19:39 UTC
TSLATesla$366.840.00002726 TSLASep 17 18:24 UTC
AMDAMD$543.780.00001839 AMDSep 17 23:47 UTC
AMZNAmazon$251.370.00003978 AMZNSep 17 14:55 UTC
PLTRPalantir Technologies$175.230.00005707 PLTRSep 17 22:37 UTC
MSFTMicrosoft$496.030.00002016 MSFTSep 17 22:13 UTC
METAMeta Platforms$682.430.00001465 METASep 17 19:55 UTC
COINCoinbase$172.480.00005798 COINSep 17 21:53 UTC
MUMicron Technology$982.330.00001018 MUSep 17 20:13 UTC
ORCLOracle$150.400.00006649 ORCLSep 17 19:33 UTC
SPYSPDR S&P 500 ETF Trust$762.860.00001311 SPYSep 17 12:21 UTC
INTCIntel$109.240.00009154 INTCSep 17 22:12 UTC
CRWVCoreWeave$80.110.00012483 CRWVSep 17 19:49 UTC
SNDKSandisk Corporation$1,614.820.00000619 SNDKSep 17 19:54 UTC
QQQInvesco QQQ$716.620.00001395 QQQSep 17 12:32 UTC
GMEGameStop$22.710.00044042 GMESep 17 23:10 UTC
USOUnited States Oil Fund$155.000.00006452 USOSep 17 22:03 UTC
CRCLCircle Internet Group$84.560.00011826 CRCLSep 17 22:03 UTC
MSTRStrategy Inc.$131.490.00007605 MSTRSep 17 22:09 UTC
SGOViShares 0-3 Month Treasury Bond ETF$101.060.00009895 SGOVSep 17 00:01 UTC
TSMTaiwan Semiconductor Manufacturing$428.790.00002332 TSMSep 17 17:01 UTC
BABAAlibaba$108.550.00009212 BABASep 17 15:56 UTC
RKLBRocket Lab Corporation$67.750.00014761 RKLBSep 17 19:41 UTC
IONQIonQ$40.070.00024954 IONQSep 17 20:12 UTC
EWYiShares MSCI South Korea fund$182.920.00005467 EWYSep 17 16:24 UTC
SLViShares Silver Trust$58.910.00016976 SLVSep 17 19:24 UTC

A feed updates while that stock's trading session is open, so a price can be hours old once the session closes. A seller sets which tickers it accepts and how old a price it will still quote from. Stock tokens are issued by Robinhood and are not offered in every country, including the United States.

Middleware

Price in dollars, get paid in stock

Add stock402-middleware to an Express app, set a dollar price, a payout address and the tickers you take. Every request without a payment gets a 402 quoting the price in each of them.

server.ts
import { stock402 } from "stock402-middleware"

app.use(stock402({
  price: "0.01",   // USD per request
  payTo: "0x5f…a10c",
  accept: ["SPY", "NVDA", "AAPL"],  // or "all"
}))

Settlement contract

A permit alone can't pick the recipient

Stock tokens on Robinhood Chain accept EIP-2612 permits but not signed transfers. A bare permit would let whoever relays it send the tokens anywhere. Stock402Settler also needs the buyer's payment signature, which fixes the token, recipient, amount, time window and nonce. A relayer can submit that payment or drop it, but it cannot change where the tokens go.

Stock402Settler.settle
validAfter < now < validBeforeelse NotYetValid / Expired
to is not zero and not the payerelse InvalidRecipient
nonce never used by this payerelse AuthorizationAlreadyUsed
payment signed by fromelse InvalidSignature
permit applied if allowance is shorta front-run permit still settles
transferFrom(from → to, value)emits PaymentSettled

settler 0xaf8412644d7cD448aD5123B1C245f9B2eD0D9e58

Paid MCPTemplate

Let agents pay per tool call

Ship an MCP server where each tool call is paid in stock before it runs. The stdio proxy lets Claude pay from a local wallet, with a dollar cap on every call and your preferred tickers first.

claude · mcp session
› agent calls tool
tool quote({ ticker: "NVDA" })
402 payment required · $0.01
  prefer SPY · signing permit + payment…
200 settled · 0.00001311 SPY · tx 0x3a9f…c4d2

{ ticker: "NVDA", source: "chainlink" }
  spent $0.01 · cap $0.05 per call · 0 ETH needed

Directory

Live x402 lanes on Robinhood Chain

Paywalled endpoints that settle through Stock402. An agent finds a lane, pays in the stock it holds, and gets the response.

settlements on-chainrelayer gas robinhood chain 4663
EndpointPriceAcceptsStatus
stock402.app/report$0.01SPY QQQ NVDA AAPL TSLA +5OPEN

Open a lane on Robinhood Chain

Paywall a route, pick the stocks you take, and the next agent that calls it pays you in them.