k402-mcp — pay-per-call APIs for AI agents, settled in Kaspa
An MCP server that gives any agent (Claude Code, Claude Desktop, agent SDKs) a catalog of agent-payable APIs: text tools (summarize, schema-guaranteed extraction, classify, rewrite), web reading, embeddings + semantic search, live Kaspa mainnet chain data, GPU model tiers, covenants-as-a-service (compile/derive/inspect/build/check/broadcast Silverscript covenants), and RISC Zero attestation-as-a-service (upload a guest, preflight for a cycle-exact quote, prove, verify). No account, no card, no API key — the agent opens a session, gets a personal KAS deposit address, and every call meters against the prepaid balance. Prices are USD-pegged, fractions of a cent per call, settled on Kaspa L1 (sub-second, ~zero fees).
The payment loop is agent-native: an unfunded call returns instructions ("send KAS to this address, this call costs X"), so an agent can discover the service, learn how to pay, and use it autonomously — the x402 idea, on Kaspa.
Hosted endpoint — zero install
The same server runs hosted at the public gateway (streamable HTTP):
https://x402-compute.68cxgfyr0.workers.dev/mcp
Claude Code:
claude mcp add --transport http k402 https://x402-compute.68cxgfyr0.workers.dev/mcp
Hosted sessions are per-connection: open_session binds the payment session to your MCP
connection and returns the key — save it, and re-attach with use_session(<key>) after a
reconnect. Nothing is shared between connections.
Install (local stdio)
pip install k402-mcp
Claude Code:
claude mcp add k402 -- k402-mcp
Claude Desktop / generic MCP config:
{ "mcpServers": { "k402": { "command": "k402-mcp" } } }
Env (all optional): K402_GATEWAY (defaults to the public gateway), K402_SESSION (pin a funded
session key), K402_STATE (where the auto-opened session persists, default ~/.k402/session.json).
Use
catalog— see every service and its live KAS/USD price (free)open_session— get a session + personal Kaspa mainnet deposit address (free); fund it from any wallet (min 0.25 KAS — confirmed in seconds)- Call anything:
summarize,extract,classify,rewrite,read_url,embed_text,search_index/search_query,kaspa_balance,kaspa_utxos,kaspa_tx_status,kaspa_fee_estimate,kaspa_network,generate(tiers: chat / llama / reason / think / code / kaspa-expert),covenant_compile/covenant_address/covenant_utxos/covenant_build/covenant_check/covenant_broadcast,prove_guest_upload/prove_preflight/prove_submit/job_status/job_result/attest_verify,payment_options,pay_per_call session_status— watch the balance draw down (free)
New here? Start with open_session — one funded deposit address, and every call meters
against it. That's the whole loop. The other schemes (per-call coins, or trustless payment
channels) are for when you want them; payment_options explains each.
Trustless payment channels (kaspa-channel)
Where the gateway offers it, channel_config/channel_status expose a covenant payment channel:
your KAS sits in a Kaspa L1 covenant (not the merchant's wallet), and you pay per call with signed
vouchers — the merchant can only ever claim what you signed, and you reclaim the rest. Opening and
funding a channel needs your Kaspa key, so that part runs in the k402
Python client (k402.channel); these MCP tools cover discovery and status.
Example, in Claude Code after claude mcp add:
"Use the k402 tools to check the current Kaspa network status and summarize https://kaspa.org"
The first call returns how-to-pay instructions; fund the deposit address it gives you and retry.
Notes & honest caveats
- Prototype. Payments settle either custodial-prepaid (sessions) or trustlessly via
kaspa-channelcovenant payment channels (live on mainnet, covenant unaudited — channel sizes are capped). Keep balances small: a few KAS covers thousands of calls. - Paid tools return
payment_required+ instructions instead of failing opaquely. - The gateway rate-limits per IP; prices float with KAS/USD, so
catalogshows current numbers. - Need KAS? Any exchange or wallet works — deposits are plain mainnet transfers.
mcp-name: io.github.Kali123411/k402
MIT © Kaspa Lab
Metadata
Release files for k402-mcp 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| k402_mcp-0.7.0.tar.gz | 14.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| k402_mcp-0.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.2 kB
Release files / k402_mcp-0.7.0.tar.gz
| Download URL | k402_mcp-0.7.0.tar.gz |
|---|---|
| Size | 14.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
669cbd6e5476a24ec6da7cb01094c5ac939300b8259219bbbad62010ddbad039
|
|
BLAKE2b-256 checksum How to use checksums |
a26bb3ffa086849269c2ec5df42fe90db0175c5a8354f3dba88895688601e119
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / k402_mcp-0.7.0-py3-none-any.whl
| Download URL | k402_mcp-0.7.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d1965a22d406302ecd04fc6107667e1ddf88ed547de4fc92799f031f0af59312
|
|
BLAKE2b-256 checksum How to use checksums |
2900e1496ba3c40f0c525c4abb22d370e9fac20759b14c2a438d60f73be7a7a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|