x402 · Algorand mainnet

Pay-per-call tools your agent can use

11 HTTP APIs for agents working on Algorand, one of them free to call. No signup, no API key, no subscription — your agent attaches a USDC micropayment to a normal HTTP request and gets a useful result back. Payment is the authorization layer.

Tools

GET /api/wallet-risk/{address} $0.03

Algorand wallet risk scoring

Explainable 0-100 risk score for any Algorand address, computed from real on-chain indexer data. No LLM — deterministic and auditable.

Input
An Algorand address (58 characters) in the URL path.
Output
{ address, riskScore (0-100), riskLevel (low|medium|high), signals: { accountAgeDays, txCount, balanceAlgo, usdcOptedIn, distinctCounterparties, rekeyed } }
GET /api/explain-tx/{txid} $0.03

Algorand transaction explainer

Turn a transaction id into a plain-language summary plus structured detail — every transfer with resolved asset names, decoded app calls and inner transactions. No LLM.

Input
An Algorand transaction id (52-character base32) in the URL path.
Output
{ txid, type, typeLabel, summary, sender, confirmedRound, timestamp, feeAlgo, transfers: [{ asset, assetName, amount, amountRaw, from, to }], application, note, grouped }
GET /api/asset-risk/{asaId} $0.03

ASA risk / scam screen

Explainable 0-100 risk score for any Algorand Standard Asset: clawback and freeze powers, mutable supply, largest-holder concentration, and creator age. No LLM.

Input
An Algorand Standard Asset id (numeric) in the URL path.
Output
{ asaId, name, unitName, creator, riskScore, riskLevel, signals: { clawbackEnabled, freezeEnabled, defaultFrozen, managerCanReconfigure, topHolderPct, holdersSampled, concentrationExact, creatorAgeDays } }
GET /api/portfolio/{address} FREE · no payment required

Account portfolio snapshot

Every holding for an Algorand address in one call — ALGO balance plus each ASA with resolved names and decimals-corrected amounts, largest first. No LLM.

Input
An Algorand address (58 characters) in the URL path.
Output
{ address, algo: { amount, amountRaw }, assets: [{ asaId, name, unitName, amount, amountRaw, decimals, isFrozen }], assetCount, truncated, priced }
GET /api/relationship?a={addressA}&b={addressB} $0.03

Address relationship check

Have two Algorand addresses transacted? Returns transaction count, value moved per asset in each direction, and first/last interaction timestamps. No LLM.

Input
Two Algorand addresses as query parameters: a and b.
Output
{ addressA, addressB, haveTransacted, txCount, totalMoved: [{ asset, assetName, amount, aToB, bToA }], firstInteraction, lastInteraction, scanned, windowComplete }
GET /api/asset/{asaId} $0.02

ASA metadata & supply

Identify an Algorand token: name, decimals, declared and real circulating supply, creator, and configuration flags. Price data is not yet included. No LLM.

Input
An Algorand Standard Asset id (numeric) in the URL path.
Output
{ asaId, name, unitName, decimals, totalSupply, totalSupplyRaw, circulatingSupply, url, creator, destroyed, config: { hasManager, hasFreeze, hasClawback, hasReserve, defaultFrozen }, price (null for now), priceError }
POST /api/verify-payment $0.02

Payment verification

Check a transaction against what you expected — sender, receiver, asset, amount — and get a pass/fail verdict with a per-check breakdown. Matches through inner transactions. No LLM.

Input
{ "txid": string, "expectedSender"?: string, "expectedReceiver"?: string, "expectedAsset"?: string, "expectedAmount"?: number, "amountTolerance"?: number }
Output
{ txid, verified, checks: { sender?, receiver?, asset?, amount? }, matchedTransfer, confirmedRound, timestamp }
POST /api/code-review $0.08

GitHub pull request review

Give a repo and PR number, get a structured review of the diff — concrete bugs, security issues, and error-handling gaps with file and line. Fetches the diff for you.

Input
{ "owner": string, "repo": string, "pull": number, "focus"?: string }
Output
{ repository, pull, title, review, filesChanged, additions, deletions, diffBytesReviewed, diffTruncated, truncated }
POST /api/nl-to-sql $0.03

Natural language to SQL

Question plus schema in, a ready-to-run SQL query out, with a readOnly flag and warnings for destructive operations. Generates only — never executes.

Input
{ "question": string (max 2000), "schema": string (max 20000), "dialect"?: "postgres" | "mysql" | "sqlite" | "sqlserver" | "bigquery" | "snowflake" }
Output
{ sql, dialect, readOnly, warnings, executed (always false), truncated }
POST /api/inference $0.02

LLM text generation

Send a natural-language prompt, receive generated text. Powered by Claude Haiku 4.5.

Input
{ "prompt": string (max 8000 chars) }
Output
{ "response": string, "truncated": boolean }
POST /api/summarize $0.03

Text summarization

Condense up to 50,000 characters into a concise summary, with optional length and style control.

Input
{ "text": string (max 50000 chars), "maxWords"?: number, "style"?: "concise" | "bullets" | "detailed" }
Output
{ "summary": string, "truncated": boolean }

Calling from an agent

Any agent running the GoPlausible Algorand MCP server can discover and pay these endpoints with no integration work:

bazaar_search "Algorand wallet risk scoring"
make_http_request_with_x402 "https://agenthub-production-8c75.up.railway.app/api/wallet-risk/<address>"

Or hand-roll it: call the endpoint, receive HTTP 402 with the payment quote, sign a USDC transfer for the quoted amount, and retry with the PAYMENT-SIGNATURE header.

Settlement: USDC (ASA 31566704) on Algorand mainnet via the GoPlausible facilitator. All endpoints pay to a single address: G3YVTPURK6VFSM5CXEH7QFTZXLCXBJL6UMAIUUYJO4P2XF3MHQ4FUHYYB4.

Machine-readable summary: /llms.txt