Voidly Pay · For builders
Add agent payments in one install.
The marketplace for AI-agent payments. 42 paid MCP tools, 17 live endpoints, drop-in adapters for the runtimes you already use — LangChain, CrewAI, Pydantic AI, Vercel AI SDK, MCP. USDC-backed on Base mainnet with public proof of reserves.
Scaffold a paid agent in one command
npx create-voidly-agent my-agentPick a template:
mcp,
hono,
fastapi, or
proxy (zero-code paywall via the universal proxy). Also see the
Voidly Pay cookbook for runnable recipes (proxy, Hono x402, LangChain paying agent).
Paid MCP tools
42
@voidly/pay-mcp@0.5.1
Live paid endpoints
17
Voidly + open self-serve
Settles in
<200ms
atomic D1 batch
Public proof
On-chain
vault USDC ≥ credits
Pick your stack. Copy. Run.
Every snippet below is a full working integration. The first call mints an Ed25519 keypair, persists it, and grants 10 starter credits via the faucet. Promote to real USDC by depositing on Base — no protocol changes needed.
Scaffold a paid agent in one command
Package ↗npx create-voidly-agent my-agent
# Pick a template:
# mcp — paid MCP server (Claude Desktop, Cursor, Windsurf)
# hono — Hono web server with one paid /expensive route
# fastapi — FastAPI app with one paid /expensive route
#
# Drops a working app + Ed25519 keypair into ./my-agent.
# First run mints the keypair and earnings DID.
cd my-agent
npm install # (or pip install -r requirements.txt for fastapi)
npm start
pip install voidly-pay-langchain
from voidly_pay_langchain import VoidlyPayToolkit
from langchain_anthropic import ChatAnthropic
toolkit = VoidlyPayToolkit()
tools = toolkit.get_tools() # 8 tools, ready to bind
llm = ChatAnthropic(model="claude-sonnet-4-6").bind_tools(tools)
# Agent now has: balance, transfer, faucet, fetch-with-pay,
# history, capability_search, hire, health_check.
pip install voidly-pay-crewai
from voidly_pay_crewai import VoidlyPayToolkit
from crewai import Agent
toolkit = VoidlyPayToolkit()
treasurer = Agent(
role="Treasurer",
goal="Pay providers fairly and verify the rail before settling.",
backstory="Holds the team wallet and signs every transfer.",
tools=toolkit.get_tools(), # 8 Voidly Pay tools
verbose=True,
)
Pydantic AI (Python) — first-mover, Stripe doesn’t ship this
Package ↗pip install voidly-pay-pydantic-ai
from pydantic_ai import Agent
from voidly_pay_pydantic_ai import voidly_pay_tools
agent = Agent(
"anthropic:claude-sonnet-4-7",
tools=voidly_pay_tools(), # 8 type-safe tools
system_prompt="You manage agent payments via Voidly Pay.",
)
# Pydantic AI builds the LLM-visible schema from each tool's
# function signature. Type errors become clean validation errors.
result = await agent.run("Check my balance and faucet if low.")
print(result.output)
Build a paid MCP server (registerPaidTool, v0.2.0+)
Package ↗npm install @voidly/pay-mcp
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { VoidlyPay } from "@voidly/pay";
import { registerPaidTool } from "@voidly/pay-mcp";
const pay = await VoidlyPay.create();
const server = new Server({ name: "paid", version: "1" }, { capabilities: { tools: {} } });
registerPaidTool(server, {
name: "summarize_pdf",
description: "Summarize a PDF document.",
inputSchema: { type: "object", properties: { url: { type: "string" } }, required: ["url"] },
pay,
priceCredits: 0.01, // $0.01/call in Stage 2
reason: "PDF summarization",
handler: async ({ url }) => ({ summary: await summarizePdf(url) }),
});
// First call → returns 402 with quote. Second call (with quote_id) verifies + runs.
// Same pattern as @stripe/agent-toolkit's registerPaidTool, but settles in <200ms.
npm install @voidly/pay-vercel-ai
import { generateText } from "ai";
import { anthropic } from "@ai-sdk/anthropic";
import { voidlyPayTools } from "@voidly/pay-vercel-ai";
const tools = await voidlyPayTools();
const { text } = await generateText({
model: anthropic("claude-sonnet-4-6"),
tools,
prompt: "Hire a sha256 provider for $0.005 and verify the result.",
});
npx @voidly/pay-mcp
# claude_desktop_config.json
{
"mcpServers": {
"voidly-pay": {
"command": "npx",
"args": ["-y", "@voidly/pay-mcp"]
}
}
}
# Restart Claude Desktop. 42 Voidly Pay tools appear.
npm install @voidly/pay
import { VoidlyPay } from "@voidly/pay";
const pay = await VoidlyPay.create();
console.log("My DID:", pay.did);
await pay.faucet(); // 10 starter credits
await pay.transfer({ to: "did:voidly:provider", amount: 0.5 });
// Auto-pay any HTTP 402 from any server
const r = await pay.fetchWithPay("https://api.voidly.ai/v1/forecast-pro/IR/30day");
const { forecast } = await r.json();
pip install voidly-pay
from voidly_pay import VoidlyPay
pay = VoidlyPay()
print("My DID:", pay.did)
pay.faucet()
pay.transfer(to="did:voidly:provider", amount=0.5)
# Auto-pay any HTTP 402
r = pay.request_with_pay("https://api.voidly.ai/v1/forecast-pro/IR/30day")
forecast = r.json()["forecast"]
Drop a Voidly Pay badge in your README
Package ↗
# In your README.md




# Each badge SVG pulls live numbers from /v1/pay/marketplace,
# 5-min edge-cached. No tracking, no JS.
voidly-ai/x402-pay-action@v1
# .github/workflows/pay-and-fetch.yml
- uses: voidly-ai/x402-pay-action@v1
id: forecast
with:
url: https://api.voidly.ai/v1/forecast-pro/IR/30day
voidly-pay-secret: ${{ secrets.VOIDLY_PAY_SECRET }}
output-path: forecast.json
- run: |
echo "Paid ${{ steps.forecast.outputs.amount-credits }} credits"
echo "Transfer: ${{ steps.forecast.outputs.transfer-id }}"
cat forecast.json | jq '.summary'
npm install @voidly/pay express
import express from "express";
import { VoidlyPay, x402Express } from "@voidly/pay";
const app = express();
const pay = await VoidlyPay.create();
// Charge $0.01 per request — settles atomically with the response.
app.get("/expensive", x402Express({ pay, amount: 0.01 }), (req, res) => {
res.json({ data: "the goods", paid_by: req.voidlyPayment.payer_did });
});
app.listen(3000);
Run a paid endpoint (Hono / Vercel / Cloudflare Workers)
Package ↗npm install @voidly/pay hono
import { Hono } from "hono";
import { VoidlyPay, x402Hono } from "@voidly/pay";
const app = new Hono();
const pay = await VoidlyPay.create();
app.get("/expensive", x402Hono({ pay, amount: 0.01 }), (c) => {
return c.json({ data: "the goods", paid_by: c.var.voidlyPayment.payer_did });
});
export default app;
Agent-fetch toolkit (one MCP install, 4 paid tools)
Package ↗npx @voidly/pay-mcp@0.3.0
# Add to claude_desktop_config.json (or any MCP client):
{
"mcpServers": {
"voidly-pay": {
"command": "npx",
"args": ["-y", "@voidly/pay-mcp@latest"]
}
}
}
# After restart, your agent gets 42 Voidly Pay tools, including:
# voidly_fetch — country-pinned URL fetch (37+ probes) $0.05
# voidly_extract — PDF → plain text $0.01
# voidly_markdown — HTML → LLM-context markdown $0.001
# voidly_meta — URL metadata (og, title, canonical) $0.001
#
# First call mints + persists an Ed25519 keypair to ~/.voidly-pay/.
# Faucet grants 10 free credits. No API key signups, no monthly subs.
Cite a URL with a signed receipt (Pay Scrape)
Package ↗npm install @voidly/pay
import { VoidlyPay } from "@voidly/pay";
const pay = await VoidlyPay.create();
await pay.faucet(); // 10 starter credits, one-shot
// Pay 1¢, fetch any URL, get a Voidly-signed receipt:
const r = await pay.fetchWithPay(
"https://api.voidly.ai/v1/pay/scrape" +
"?url=" + encodeURIComponent("https://example.com")
);
const receipt = await r.json();
console.log("body sha256:", receipt.body_sha256_hex);
console.log("body preview:", receipt.body_text?.slice(0, 80));
console.log("verifiable signature:", receipt.signature);
// Anyone with /v1/pay/x402/facilitator-key can verify the receipt
// without trusting the agent that fetched it. Solves AI-citation,
// audit trails, IP rate limits, paywalled doc retrieval.
pip install voidly-pay fastapi
from fastapi import FastAPI, Depends
from voidly_pay import VoidlyPay
from voidly_pay.middleware import fastapi_x402
app = FastAPI()
pay = VoidlyPay()
@app.get("/expensive", dependencies=[Depends(fastapi_x402(pay, amount=0.01))])
def expensive():
return {"data": "the goods"}
Real paid endpoints, today
Voidly itself runs paid endpoints on the rail. Use them as flagship consumers, copy them as templates, or just call them.
Fetch any URL from inside Iran, Russia, China, or 30+ other censored countries via Voidly’s 37+ probe network. Signed receipt binds (URL, body SHA-256, country, ASN, probe-DID, timestamp). The asymmetric primitive: Stripe/Coinbase/ATXP literally cannot ship this.
Pay 1¢, get plain text from any PDF or document URL. Useful when an agent’s reasoning needs the body of an academic paper or government doc but the runtime can’t parse PDFs locally.
~10x context-window reduction. Strips nav/footer/scripts, returns clean markdown for LLM ingestion. Mercury Reader / Diffbot are $50–500/mo subscriptions.
og:title, og:description, og:image, twitter:card, canonical, language, favicon. Tiny payload, micropayment-priced. Bundled in @voidly/pay-mcp.
Pay 1¢, fetch any URL, get a Voidly-signed receipt. The citation/audit primitive AI agents have been missing.
Pay 0.5¢, get a signed attestation that a host is reachable from N of M global probes. Backed by 37+ probe nodes.
Live JSON catalog of all 17 paid endpoints Voidly runs (plus third-party listings via /pay/list-your-service), with 24h revenue and call counts. Agents can ingest this directly.
Why agents pick Voidly Pay
- Live & source-verified. Vault 0xb592…1c12 on Base mainnet. Sourcify exact_match.
- Public proof of reserves. /pay/proof refreshes every 15s with on-chain USDC vs Stage 2 credits issued. Backing must be ≥ 1:1.
- x402-ready. Server middleware ships for Express, Hono, FastAPI, Flask, and any web-fetch handler. Quotes are signed by Voidly's facilitator key (anti-MitM).
- No KYC, no Stripe. Agents bootstrap in <60s; faucet grants 10 starter credits per DID.
- Open source, MIT. All packages and the worker source live at github.com/voidly-ai/voidly-pay.
Discoverable from your tools
- • Anthropic MCP Registry — `io.github.voidly-ai/pay-mcp` (auto-published from this repo)
- • Smithery — auto-imported from the MCP Registry
- • npm — keywords:
x402 · agent-payments · voidly-pay · mcp-server - • PyPI — same keywords;
pip search voidly - • awesome-mcp-servers + awesome-x402 — open PRs
- • /.well-known/ai-services.json — machine-readable Voidly catalog