
tx402
io.github.MahesvannanPublished by GitHub account Mahesvannanv0.2.0Updated Oct 24, 2026
Explain Algorand transactions, groups, batches, and account activity with x402.
Overview
Explains Algorand transactions, atomic groups, batches, and account activity in plain English through a paid x402 API.
- What you can do
- Wraps a hosted service that turns raw Algorand indexer data into readable explanations. It can explain a single transaction, every leg of an atomic group, a batch of up to ten transaction IDs, or recent account activity, returning scaled amounts, inner transactions, asset names, fees, timestamps, counterparties, and protocol labels. The MCP wrapper is read-only by default and returns x402 payment requirements for paid calls.
- When to use it
- Useful when an assistant needs to describe Algorand on-chain activity to a person rather than return raw indexer JSON, for example explaining a payment, an atomic group, or an account's recent history.
- Requirements
- Runs locally as an npm package (npx tx402-mcp) over stdio; Node.js is needed. Paid routes require a funded Algorand wallet and Mainnet USDC; the hosted service is reached over the network. No environment variables are declared in the manifest.
Installation
In SourceWeft
- Open tx402 in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
tx402
Plain-English explanations of Algorand transactions, sold as a pay-per-call API with x402 on Algorand.
Live service:
Explain one transaction, every leg of an atomic group, a batch of IDs, or recent account activity. Responses include scaled amounts, inner transactions, asset names, fees, timestamps, counterparties, and source-verified protocol labels.
Try the free fixed-transaction demo without a wallet:
Example response after payment:
Raw Algorand indexer JSON is optimized for machines doing bookkeeping: amounts are base units, assets are numeric IDs, and notes are base64. tx402 is the translation layer for agents and applications that need to explain a transaction to a person.
API
Public routes:
GET /- landing page with service metadata linksGET /health- process livenessGET /health?deep=1&network=mainnet- readiness check for upstream servicesGET /discovery- machine-readable service description and pricing metadataGET /openapi.json- OpenAPI 3.1 specificationGET /.well-known/agent.json- agent marketplace manifestGET /.well-known/x402- x402 resource manifestGET /llms.txt- agent-readable documentationGET /demo?example=algo|usdc- free allowlisted Mainnet examplesGET /explain?txid=...&network=mainnet- paid transaction explanationGET /group?txid=...&network=mainnet- paid atomic-group explanationPOST /batch- paid batch of 1 to 10 transaction IDsGET /account/activity?address=...&limit=25- paid activity summaryGET /analytics- free aggregate adoption counters
Default prices are $0.005 for /explain, $0.01 for /group, $0.02 for
/batch, and $0.01 for /account/activity. Production accepts Mainnet USDC:
- network:
algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8= - asset:
31566704 - receiver:
6RK3U3OF2B4Q773L4KC7OVFHQGU5I74NHRZ36QN6CVF527CKXAL62YR754
Architecture
tx402 has a small deterministic core and a thin serving shell.
Core:
- src/decoder.js converts raw Algorand indexer JSON into a normalized transaction object.
- src/narrator.js converts that normalized object into one readable sentence.
- src/insights.js builds group and account-level summaries.
- src/explainer.js resolves assets and orchestrates the single, group, batch, and account products.
- src/knownApps.js maps known app and asset IDs to human labels with a verification source for every narrated protocol claim.
Serving shell:
- src/index.js owns HTTP routes, middleware ordering, logging, rate limits, health checks, and graceful shutdown.
- src/indexer.js is the only module that talks to AlgoNode's public indexer.
- src/payments.js declares the x402 price and receiver, then delegates verification and settlement to the hosted GoPlausible facilitator.
- src/rateLimit.js provides the in-memory per-IP limiter.
- src/analytics.js keeps aggregate process-local adoption counters without cookies, raw wallet addresses, query strings, or IP history.
The server never stores private keys. Buyer signing happens client-side. The resource server only advertises a price, validates payment, and settles through the facilitator after a successful product-route response.
Run Locally
Local endpoints:
The app reads .env when present. Leave USDC_ASSET_ID unset unless you need a
non-standard asset; the code derives the canonical USDC asset from NETWORK.
Client Examples
Read-only example client:
The default client prints discovery metadata and the x402 payment challenge
without spending funds. To make it pay, configure a funded buyer wallet and set
TX402_EXAMPLE_PAY=1 plus CONFIRM_MAINNET_PAYMENT=1.
OpenAPI:
- openapi.json
https://tx402-production.up.railway.app/openapi.json
Agent marketplace metadata:
https://tx402-production.up.railway.app/.well-known/agent.jsonhttps://tx402-production.up.railway.app/.well-known/x402https://tx402-production.up.railway.app/llms.txt
Copy-paste integrations and distribution assets:
The paid route also declares the standard x402 Bazaar extension, including its input/output schemas, service metadata, and example request. Facilitators can index that metadata after a successful settlement.
MCP wrapper:
After the public npm package is published, agents can install it without cloning this repository:
By default the MCP wrapper is read-only and returns x402 payment requirements
for paid calls. To let it pay from a local wallet, set
TX402_MCP_ENABLE_PAYMENTS=1 and CONFIRM_MAINNET_PAYMENT=1.
The six-part adoption roadmap is tracked in PLAN.md.
Submission Assets
Security Notes
- Output strings can contain untrusted on-chain data, including asset names and notes. JSON output is safe as JSON, but consumers rendering HTML must escape it.
- Invalid
txidinput is rejected before indexer access and before payment. - Payment only settles after a successful response.
- All product routes,
/analytics,/discovery, and deep health checks are rate-limited. - Protocol/app names are only stated as fact when marked
verified: true. - Application logs omit query strings and client IP addresses.
Status
- Phase 1 - core explainer, free and local
- Phase 2 - x402 payment middleware on Testnet, verified end-to-end
- Phase 3 - public HTTPS deployment
- Phase 4 - Mainnet payment configuration
- Phase 5 - first real Mainnet settlement
- Phase 6 - example client, OpenAPI spec, optional MCP wrapper
First Mainnet settlement:
- txid:
XA7HMRPUV4X2GWI4AAGUT5FKAVTNCQJ5ZMUNTVTBKG3GZMES27LA - amount:
0.005000USDC
Maintainer Notes
Implementation runbooks, deployment commands, phase evidence, and operational cautions live in CLAUDE.md.
Source: README.md at commit 6932592
Tools
0Version history
1- v0.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts