@parad0x_labs/null-mcp
v0.11.1
Published
MCP server for Web0 .null names and keyless x402 agent tooling. Resolves .null records on Solana (registrar retired 2026-08-29; records read-only, writes frozen). Never holds keys.
Readme
@parad0x_labs/null-mcp
An MCP server that gives an AI agent .null name resolution and keyless x402 agent tooling on Solana. Local, keyless, no server.
null-mcp is a small program an agent runs on its own machine. It speaks the Model Context Protocol over stdio, so any MCP-capable client (Claude and others) can call it directly. It reads Solana and the Arweave permaweb directly and hands the agent back exactly what it asked for. It holds no keys, stores nothing, and has no account anyone can suspend.
license: MIT · runs over stdio · bring-your-own signerNetwork status
.nullregistrar retired 2026-08-29. The mainnet registrarNXgQhepFpDCu935H1D4g34g59ZYbo1jR4tBCZWhV8Npno longer accepts instructions. Every existing name record stays on-chain and resolves as before: resolution, content fetch, availability, reverse lookup and ownership checks all work.- Writes are frozen. Registration, record updates (content, x402 endpoint, passport), transfers and auction bids are disabled. The tools for them stay listed so agents get a clear answer: each returns a
REGISTRAR_RETIREDerror with the messageregistrar retired 2026-08-29; records read-onlyand builds no transaction. - Auction program retired 2026-07-18.
get_null_auctionstill reads the last recorded state of an auction account. - null-mcp does not anchor receipts. It configures no receipt_anchor program: the previous mainnet receipt_anchor is retired and is no longer a default anywhere in this package. A devnet receipt_anchor runs at
HSdEQWunzPtNqdzv5HfXuA3zwPLpgTXRyfbndnGamhXs(fresh key, 2026-10-06); pass it explicitly to a client that anchors. Receipts, work bindings and private-reputation proofs are still built and verified offline;verify_receiptchecks a bucket account you supply.
Prerequisites
- MCP-capable client: Claude Desktop or any MCP host
- Node.js 18+ with
npxin PATH (check withnode --version)
Config file paths (Claude Desktop):
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Code (project) | .mcp.json in the project root |
Install / run
One line registers the server with Claude Code and runs it on demand:
claude mcp add null -- npx -y @parad0x_labs/null-mcpRestart your client, then verify it by asking your agent: "Resolve the name web0.null"
To wire it by hand, add this to your MCP client config (.mcp.json for Claude Code, claude_desktop_config.json for Claude Desktop). No global install needed:
{
"mcpServers": {
"null": {
"command": "npx",
"args": ["-y", "@parad0x_labs/null-mcp"]
}
}
}Restart your client after saving.
Expected response (example: web0.null on mainnet):
{
"found": true,
"pda": "FJ5kcbFxU6pEVdUHcpvu6hX8CYfTd4LAvhHdiPcK1FG3",
"name": "web0",
"owner": "9vDnXsPonRJa7yAmvwRGMAdxt8W13Qbm7HZuvauM3Ya3",
"arweave_txid": "ETIGvFIIa7DXt72LrnDUd6FSDT3BHMxPWlYi3-NFfRM",
"arweave_url": "https://arweave.net/ETIGvFIIa7DXt72LrnDUd6FSDT3BHMxPWlYi3-NFfRM",
"x402_endpoint": null,
"passport_hash": null,
"registered_at": "2026-06-19T15:42:07.000Z",
"has_stealth": false,
"has_passport": false,
"private_pay": false,
"version": 1
}Quick smoke test before configuring anything:
npx @parad0x_labs/null-mcp --demoThis resolves web0.null against Solana mainnet and prints the JSON. If it works here, it works in your MCP client.
Or install globally:
npm install -g @parad0x_labs/null-mcp # exposes the `null-mcp` binaryTools
34 tools, grouped by what they do.
Resolve and identity (read-only, working)
resolve_null_domain: resolve a.nullname to its on-chain record (content pointer, x402 endpoint, passport commitment, owner).fetch_null_content: fetch the Arweave content a name points to.check_null_availability: taken (and by whom), unregistered, premium or invalid. Every result carriesregistration_open: false.list_my_null_names: every name a wallet owns.resolve_primary_name: reverse-resolve a wallet to its.nullname, forward-confirmed (a stale reverse record is never returned).verify_null_ownership: verify a signed ownership attestation: valid signature and the wallet is still the current on-chain owner.resolve_agent_card: fetch and verify a name's owner-signed agent card.get_null_auction: last recorded state of an auction account.
Discovery
discover_null_services: browse the public name-index snapshot on Arweave (hints; confirm withresolve_null_domain).resolve_capability·resolve_capability_semantic: find agents by capability tag or plain-language need; every candidate is re-resolved on-chain.
Delivery quality, reverse auctions, supply chains (offline, identity keys only, no funds moved)
open_work·bind_work·verify_delivery·settle_milestone·dispute_delivery.post_reverse_auction·bid_reverse_auction·settle_reverse_auction.plan_supply_chain: per-edge payment plan with the 0.05% protocol fee and an exact conservation check.
Receipts and reputation (offline)
verify_receipt: verify a receipt inclusion bundle against a supplied receipt_anchor bucket account.build_private_reputation·verify_private_reputation: prove a delivery track record while hiding who, how much and when.
Payments
build_private_payment: unsigned recipient-unlinkable payment to a.nullname that has published a stealth meta-address, plus a chained receipt.build_escrow_init: InitEscrow payload for an agent-escrow program id you supply.
Site builder
list_null_templates·describe_null_template·build_null_site_url: build a pre-filled web0 editor URL. Pointing a name at the published content is a registrar write and is frozen.
Frozen (each returns REGISTRAR_RETIRED, no transaction)
register_null_domain·set_null_content·set_null_x402_endpoint·set_null_passport·bid_null_auction·list_null_domain_for_auction.
On-chain targets
Reads use these Solana mainnet programs. Both are retired; their accounts stay readable.
null_registrar:NXgQhepFpDCu935H1D4g34g59ZYbo1jR4tBCZWhV8Np(retired 2026-08-29)null-auction:39Ayjpnucq51k94uKorzX5sRRxv2F79zpVRZdMnWgbWG(retired 2026-07-18)
Keyless contract
null-mcp never sees a private key. Tools that build a transaction return it unsigned for the agent to sign with its own wallet. The delivery and reputation tools take an agent identity seed (ed25519), never a wallet or funds key. Reads go straight to public Solana RPC and Arweave gateways.
License
MIT.
