Live on Algorand mainnet

Useful APIs.
Paid as they run.

A production catalog of on-chain intelligence and AI utilities built for autonomous agents. No signup, API keys, or subscriptions—each request settles its own USDC micropayment over x402.

One free endpoint Structured JSON No custodial keys
agent-session / mainnet
agent # discover a capability
bazaar_search("Algorand wallet risk scoring")
agent # call it; x402 handles payment
GET /api/wallet-risk/G3YVTP…YYB4
→ 402 quote · $0.10 USDC
→ payment signed · retrying
{
  "riskScore": 8,
  "riskLevel": "low",
  "signals": { /* auditable */ }
}
HTTP 200 · 1.2ssettled ✓
15Live endpoints
11Deterministic tools
$0.05+Micropayments
0API keys required
Capability catalog

One endpoint.
One clear job.

On-chain research, transaction verification, developer workflows, and model utilities—all discoverable by agents and priced independently.

01 On-chain intelligence $0.10

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.

GET /api/wallet-risk/{address}
Request & response schema
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 } }
02 On-chain intelligence $0.08

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.

GET /api/explain-tx/{txid}
Request & response schema
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 }
03 On-chain intelligence $0.10

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.

GET /api/asset-risk/{asaId}
Request & response schema
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 } }
04 Free entry point FREE

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.

GET /api/portfolio/{address}
Request & response schema
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 }
05 On-chain intelligence $0.10

Smart contract metadata

Creator, state schemas, decoded global state, program sizes and whether the contract still exists. Every DeFi protocol, DAO and NFT mint on Algorand is an application. No LLM.

GET /api/app/{appId}
Request & response schema
Input
An Algorand application id in the URL path.
Output
{ appId, creator, deleted, createdAtRound, approvalProgramBytes, clearStateProgramBytes, globalStateSchema, localStateSchema, globalState }
06 On-chain intelligence $0.18

Smart contract risk screen

Disassembles the approval program to detect references to update and delete modes, plus privileged-looking state keys, and reports a cautious 0-100 structural risk score. References do not prove a path succeeds or identify its authority. No LLM.

GET /api/app-risk/{appId}
Request & response schema
Input
An Algorand application id in the URL path.
Output
{ appId, creator, riskScore, riskLevel, signals: { updatePathReferenced, deletePathReferenced, deleted, privilegedRoles, programAnalysed }, findings, disclaimer }
07 On-chain intelligence $0.20

Wallet clustering

Find addresses whose behaviour is consistent with the same owner — shared funder, overlapping counterparties, direct transfers — each scored with the evidence behind it. Heuristic leads to verify, not proof of ownership. No LLM.

GET /api/cluster/{address}
Request & response schema
Input
An Algorand address in the URL path.
Output
{ address, candidates: [{ address, score, confidence, signals: [{ signal, points, detail, evidence }] }], target, limits, truncatedBy, complete, disclaimer }
08 On-chain intelligence $0.15

Fund flow tracing

Follow value out of an address across up to four hops and see where it actually went — every edge, the addresses reached, and the largest destinations. Answers "where did this money go" when you do not know the destination. No LLM.

GET /api/trace/{address}?hops={1-4}
Request & response schema
Input
An Algorand address in the URL path. Optional hops (1-4, default 2) and asset ("algo" or an ASA id) as query parameters.
Output
{ origin, asset, hops, nodes: [{ address, hop, received, truncated }], edges: [{ from, to, hop, asset, amount, txCount, latestTxId, firstSeen, lastSeen }], topDestinations, limits, truncatedBy, scannedTransactions, complete }
09 On-chain intelligence $0.10

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.

GET /api/relationship?a={addressA}&b={addressB}
Request & response schema
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 }
10 On-chain intelligence $0.05

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.

GET /api/asset/{asaId}
Request & response schema
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 }
11 On-chain intelligence $0.06

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.

POST /api/verify-payment
Request & response schema
Input
{ "txid": string, "expectedSender"?: string, "expectedReceiver"?: string, "expectedAsset"?: string, "expectedAmount"?: number, "amountTolerance"?: number }
Output
{ txid, verified, checks: { sender?, receiver?, asset?, amount? }, matchedTransfer, confirmedRound, timestamp }
12 AI utility $0.15

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.

POST /api/code-review
Request & response schema
Input
{ "owner": string, "repo": string, "pull": number, "focus"?: string }
Output
{ repository, pull, title, review, filesChanged, additions, deletions, diffBytesReviewed, diffTruncated, truncated }
13 AI utility $0.08

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.

POST /api/nl-to-sql
Request & response schema
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 }
14 AI utility $0.05

LLM text generation

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

POST /api/inference
Request & response schema
Input
{ "prompt": string (max 8000 chars) }
Output
{ "response": string, "truncated": boolean }
15 AI utility $0.10

Text summarization

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

POST /api/summarize
Request & response schema
Input
{ "text": string (max 50000 chars), "maxWords"?: number, "style"?: "concise" | "bullets" | "detailed" }
Output
{ "summary": string, "truncated": boolean }
Built for tool use

From discovery to result in one agent turn.

Use the Algorand MCP integration, the typed npm SDK, or any HTTP client. The 402 challenge carries the quote; payment becomes the authorization.

// discover bazaar_search("Algorand wallet risk scoring") // execute with automatic x402 settlement make_http_request_with_x402({ url: "https://agenthub-production-8c75.up.railway.app/api/wallet-risk/<address>", method: "GET" })