api.liquidagent.ai
Buy tokenized US stocks and ETFs on-chain. Invest in NVIDIA, Apple, Meta and Alphabet from $1, build and rebalance your own stock basket. No brokerage, no token, no oracle.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Live 402 challenge
Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.
{
"docs": {
"docs": "https://api.liquidagent.ai/v1/guide",
"flow": [
"POST /v1/gas {jsonrpc:'2.0',method:'pm_getPaymasterStubData',params:[userOp, entryPoint, chainId, {}]} -> stub fields for gas estimation (free)",
"POST /v1/gas {method:'pm_getPaymasterData',params:[userOp, entryPoint, chainId, {}]} -> error 402 with data = x402 PaymentRequired (price in USDC, valid 10 minutes)",
"sign the x402 payment (EIP-3009, as for any x402 call) and retry with params[3] = {x402: <payment object>} -> {paymaster, paymasterData, paymasterVerificationGasLimit, paymasterPostOpGasLimit}",
"submit the op through your own bundler; our deposit pays the gas",
"NOTE: public bundlers only relay operations whose paymaster has posted the ERC-7562 stake, and this paymaster is not staked yet, so a bundler will reject the op at that last step. Until it is staked, use bringYourOwnOperation below: POST the unsigned operation here, pay the same quote, sign it your account's way, POST it back and we submit it ourselves."
],
"what": "An ERC-4337 paymaster you pay per operation in USDC over x402. No account, no API key. Point your wallet SDK's paymaster URL at POST /v1/gas.",
"chain": "Base",
"price": "max($0.03, 1.3 × the op's gas cap) where cap = (verificationGasLimit + callGasLimit + preVerificationGas + 60000) × maxFeePerGas. The signed sponsorship locks those limits and the max fee, so the sponsor can never be charged more than the quote.",
"stats": "GET /v1/gas/stats (public: sponsorships, fees, gas paid, margin, deposit balance)",
"chains": [
"eip155:8453",
"eip155:137"
],
"native": "ETH",
"signer": "0x79D41854496D62b3f236Bc0dc2597cDA2309E46a",
"solana": {
"how": "GET /v1/gas/solana for the rules: build a Solana transaction with our sponsor as fee payer, POST it, pay the 402 in Solana USDC, get it back co-signed.",
"lane": "POST /v1/gas/solana",
"enabled": true,
"feePayer": "BBcAL97dyJPGmsjQ7pPxCdUsFk1wgZ6jqYQ4DFvCVHkn"
},
"chainId": 8453,
"enabled": true,
"retries": "If a paid sponsorship expires unused or your submitted operation reverts, your next quote for the same sender within 30 minutes is free: just repeat the plain request (no payment) and you get the sponsored operation back with quote.priceUsd = 0 and a `credit` field. One free re-quote per paid sponsorship.",
"service": "Liquid Agent gas sponsor (Base)",
"endpoint": "https://api.liquidagent.ai/v1/gas",
"pickChain": "One URL for every chain. Default is Base (8453). For Polygon send chainId: 137 (or chain: \"polygon\") in the body of any direct-lane call, params[2] = 0x89 in ERC-7677 calls, or ?chain=polygon on GET. The fee is USDC on whichever of these you hold: Base, Polygon, Arbitrum or Avalanche (the 402 lists all four; pick one).",
"directLane": {
"flow": [
"POST /v1/gas {sender, calls:[{to,data,value?}]} -> 402 with the exact USDC price (the quote, valid 10 minutes)",
"pay it: retry the same call with X-PAYMENT -> {userOperation (sponsored), typedData, authorization (EIP-7702, only if your EOA is not delegated yet), validUntil}",
"sign typedData (eth_signTypedData_v4) -> userOperation.signature; sign the authorization if given; POST /v1/gas {userOperation, authorization?} -> we submit and our deposit pays the gas. No further charge; only operations we sponsored are accepted, once each."
],
"enabled": true,
"submitter": "0x585f1DECcaAF44B06b4935F417C4183BB6C1a353",
"simple7702Implementation": "0xe6Cae83BdE06E4c305530e199D7217f42808555B",
"alreadyDelegatedElsewhere": "If your EOA is already EIP-7702-delegated to another implementation you get a 409. Either add \"redelegate\": true to the same {sender, calls} body and we return an authorization (signed by you, applied in the same transaction, reversible) that re-points the wallet to Simple7702Account, or use bringYourOwnOperation and keep your current delegation."
},
"paymasters": {
"v07": null,
"v08": "0x9676897C3BF08977Cdbe78213F84e72A29b844eC"
},
"entryPoints": {
"v07": "0x0000000071727De22E5E9d8BAf0edAc6f37da032",
"v08": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108"
},
"feeNetworks": [
{
"key": "base",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"network": "eip155:8453",
"offered": true,
"domainOk": true,
"relayerGas": "0.003999040664298788",
"facilitators": [
"cdp",
"payai",
"heurist",
"daydreams"
],
"localFallback": true
},
{
"key": "polygon",
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"network": "eip155:137",
"offered": true,
"domainOk": true,
"relayerGas": "34.664761821102436827",
"facilitators": [
"cdp",
"payai"
],
"localFallback": true
}
],
"oneEndpoint": "POST /v1/gas does everything; the body says what you want. JSON-RPC = the ERC-7677 lane for smart-wallet SDKs. {sender, calls} = the direct lane for plain wallets (402 = the quote; pay it and the same call returns the sponsored operation + typed data to sign). {userOperation with signature} = submit it; the fee you paid covers the gas.",
"otherChains": [
{
"how": "same URL with chainId: 137",
"chain": "Polygon",
"chainId": 137
}
],
"bringYourOwnOperation": {
"flow": [
"build the unsigned EntryPoint v0.8 user operation with your wallet's own SDK (sender = your account, your calldata, your gas limits)",
"POST /v1/gas {userOperation} -> 402 with the exact USDC price (the quote, valid 10 minutes)",
"pay it: retry with X-PAYMENT -> {userOperation (with our paymaster fields), typedData, validUntil}",
"sign the operation the way your account expects (Simple7702: eth_signTypedData_v4 of typedData; others: your SDK)",
"POST /v1/gas {userOperation} with the signature -> we dry-run it through the EntryPoint, then submit from our wallet; our deposit pays the gas. A rejected dry run costs nothing and can be retried before validUntil."
],
"what": "Any EntryPoint v0.8 account (a wallet already delegated to another EIP-7702 implementation, or a deployed smart account) can use the sponsor without a bundler and without a paymaster stake: you build the operation, we submit it.",
"enabled": true,
"entryPoint": "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108"
}
},
"error": "X-PAYMENT header is required",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"chainId": 8453,
"version": "2",
"verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"payTo": "0x487b28A4FbbA8Cf46eb6E1d72e6959202Bb75e90",
"amount": "30000",
"scheme": "exact",
"network": "eip155:8453",
"resource": "https://api.liquidagent.ai/v1/gas",
"maxAmountRequired": "30000",
"maxTimeoutSeconds": 60
},
{
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"extra": {
"name": "USD Coin",
"chainId": 137,
"version": "2",
"verifyingContract": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
},
"payTo": "0x487b28A4FbbA8Cf46eb6E1d72e6959202Bb75e90",
"amount": "30000",
"scheme": "exact",
"network": "eip155:137",
"resource": "https://api.liquidagent.ai/v1/gas",
"maxAmountRequired": "30000",
"maxTimeoutSeconds": 60
}
],
"resource": {
"url": "https://api.liquidagent.ai/v1/gas",
"tags": [
"gas",
"paymaster",
"erc-4337",
"sponsorship",
"base"
],
"iconUrl": "https://api.liquidagent.ai/icon.png",
"mimeType": "application/json",
"description": "Gas sponsorship for one ERC-4337 user operation on Base (EntryPoint v0.8). Price = max($0.03, 1.3× the op's gas cap); this is the floor — send your user operation to get the exact quote. Bodies this URL accepts: {sender, calls[, redelegate:true]} (plain wallet, EIP-7702) | {userOperation} unsigned (any EntryPoint v0.8 smart account, bring your own operation) | JSON-RPC ERC-7677. Then POST the signed operation back here; we submit it. GET this URL?docs=1 for details. Quote valid 600s.",
"serviceName": "Liquid Agent — Gas Sponsor (paymaster over x402)"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"method": "pm_getPaymasterData",
"params": [
{
"nonce": "0x0",
"sender": "0xYourSmartAccount",
"callData": "0x",
"callGasLimit": "0x30d40",
"maxFeePerGas": "0x5f5e100",
"preVerificationGas": "0x13880",
"maxPriorityFeePerGas": "0xf4240",
"verificationGasLimit": "0x186a0"
},
"0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
"0x2105",
{
"x402": "<payment object>"
}
]
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"paymaster": "0x9676897C3BF08977Cdbe78213F84e72A29b844eC",
"validUntil": 1790000000,
"paymasterData": "0x…",
"paymasterPostOpGasLimit": "0x0",
"paymasterVerificationGasLimit": "0xea60"
}
}
},
"schema": {
"type": "object",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"required": [
"method",
"params"
],
"properties": {
"method": {
"const": "pm_getPaymasterData"
},
"params": {
"type": "array",
"description": "[userOperation, entryPoint, chainId, context] per ERC-7677; put the x402 payment object in context.x402"
}
}
},
"type": {
"const": "http"
},
"method": {
"const": "POST"
}
}
},
"output": {
"type": "object",
"properties": {
"type": {
"const": "json"
},
"example": {
"paymaster": "0x9676897C3BF08977Cdbe78213F84e72A29b844eC",
"validUntil": 1790000000,
"paymasterData": "0x…",
"paymasterPostOpGasLimit": "0x0",
"paymasterVerificationGasLimit": "0xea60"
}
}
}
}
}
}
},
"x402Version": 2
}Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.03 USDC on Base to 0x487b…75e90. The signed payment is good for 1 minute.
- Paid to
- 0x487b…75e90
- USD Coin contract
- 0x8335…02913
- Payment window
- 1 minute
- As published
- 30000 smallest units
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- 0x487b…75e90
- Token contract
- 0x3c49…c3359
- Payment window
- 1 minute
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"chainId": 8453,
"version": "2",
"verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"payTo": "0x487b28A4FbbA8Cf46eb6E1d72e6959202Bb75e90",
"amount": "30000",
"scheme": "exact",
"network": "eip155:8453",
"resource": "https://api.liquidagent.ai/v1/gas",
"maxAmountRequired": "30000",
"maxTimeoutSeconds": 60
},
{
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"extra": {
"name": "USD Coin",
"chainId": 137,
"version": "2",
"verifyingContract": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
},
"payTo": "0x487b28A4FbbA8Cf46eb6E1d72e6959202Bb75e90",
"amount": "30000",
"scheme": "exact",
"network": "eip155:137",
"resource": "https://api.liquidagent.ai/v1/gas",
"maxAmountRequired": "30000",
"maxTimeoutSeconds": 60
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {
"method": "pm_getPaymasterData",
"params": [
{
"nonce": "0x0",
"sender": "0xYourSmartAccount",
"callData": "0x",
"callGasLimit": "0x30d40",
"maxFeePerGas": "0x5f5e100",
"preVerificationGas": "0x13880",
"maxPriorityFeePerGas": "0xf4240",
"verificationGasLimit": "0x186a0"
},
"0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108",
"0x2105",
{
"x402": "<payment object>"
}
]
},
"type": "http",
"method": "POST",
"bodyType": "json"
},
"output": {
"type": "json",
"example": {
"paymaster": "0x9676897C3BF08977Cdbe78213F84e72A29b844eC",
"validUntil": 1790000000,
"paymasterData": "0x…",
"paymasterPostOpGasLimit": "0x0",
"paymasterVerificationGasLimit": "0xea60"
}
}
},
"schema": {
"type": "object",
"properties": {
"input": {
"type": "object",
"properties": {
"body": {
"type": "object",
"required": [
"method",
"params"
],
"properties": {
"method": {
"const": "pm_getPaymasterData"
},
"params": {
"type": "array",
"description": "[userOperation, entryPoint, chainId, context] per ERC-7677; put the x402 payment object in context.x402"
}
}
},
"type": {
"const": "http"
},
"method": {
"const": "POST"
}
}
},
"output": {
"type": "object",
"properties": {
"type": {
"const": "json"
},
"example": {
"paymaster": "0x9676897C3BF08977Cdbe78213F84e72A29b844eC",
"validUntil": 1790000000,
"paymasterData": "0x…",
"paymasterPostOpGasLimit": "0x0",
"paymasterVerificationGasLimit": "0xea60"
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-09-17 19:41Z
- Last indexed by Roundhouse
- 2026-09-24 15:00Z
- Last enriched (probe, favicon, geo)
- 2026-09-17 21:15Z
- x402 version
- 2
- Max timeout
- 60s
- Liveness probe
- HTTP 402
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 7 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service api.liquidagent.ai and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=api.liquidagent.ai' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://api.liquidagent.ai/v1/gas, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.