Boring infrastructure
for AI agents.
22 pay-per-call x402 utility APIs for AI agents — pay per call in USDC on Base, no accounts, no API keys, no subscriptions.
- Charge-on-failure-safe fleet. Payment only settles on successful 2xx + non-empty content. Robots.txt enforced. SSRF-hardened across all 22 services.
- Composes naturally. Each service is a building block: scrape → clean → guard → validate → notify. Canonical workflows in the Compose guide.
- One install.
npx @melis-ai/x402-tools-mcpgives any MCP-aware agent access to the full catalogue.
22 services. Zero subscriptions.
Each call is a discrete payment. Your agent pays only for what it uses.
ScrapePay
Web extraction via Playwright. Charge-on-failure-safe.
MarkdownOpt
URL or HTML → clean LLM-ready markdown. ~70% token reduction.
StructExtract
HTML → structured JSON. Tables, links, emails, phones, headings.
CacheServe
Fetch a URL with server-side caching. Avoid redundant requests.
LinkRisk
Lightweight URL risk profile. Heuristic, fast, cheap.
LinkSafe
Definitive URL safety verdict. Playwright sandbox + VirusTotal.
PromptGuard
Score untrusted input for prompt injection risk.
SchemaGate
Validate LLM output against JSON Schema before passing downstream.
DocConvert-Text
Format conversion: md↔html, html↔txt, json↔csv.
DocConvert-PDF
HTML or markdown → PDF. Base64 output.
NotifyRelay /email
Send a transactional email from your agent. $0.005.
NotifyRelay /notify
Send a Telegram message from your agent. $0.002.
NotifyRelay /webhook
POST JSON to any public URL. Optional HMAC signing. $0.001.
PDF Render
High-fidelity URL or HTML → PDF via Playwright. $0.49.
ImageGuard
NSFW image classification. Score adult/explicit content before publishing.
MemoryServe
Agent memory store with semantic recall. Write memories, query by meaning.
MemScrub
Detect indirect prompt injection in RAG content before LLM injection.
EmbedPay
Vector embeddings for RAG pipelines. Pay per 1k tokens, no API key.
IntentFlow
Context handoff relay for multi-agent delegation. Async, returns retrieve_url.
xAudit
API response quality validation with cryptographic certificates.
KYA Oracle
Know-Your-Address: on-chain trust score for any Ethereum/Base wallet.
Loopwall
Recursive loop firewall + budget provenance for multi-agent chains.
Crypto-Tech Daily Brief
Daily x402 + crypto-AI ecosystem brief — 14 sources incl. 5 audit-verified melis services, professional synthesis, verifiable provenance
Polymarket Alpha
Daily prediction-market intelligence — odds shifts, smart-money tracking, news catalysts, powered by live melis bot infrastructure
Competitor Intel
Weekly digest of what your competitors are doing — pricing, features, hiring, key tweets — with change-detection vs last week's snapshot
Activity heatmaps show inbound USDC settlements per price tier over 30 days, sourced from on-chain data at build time. Multiple services share a tier — counts are not per-service.
Services that compose.
Three canonical workflows used in production by OpenClaw agents.
Safe research workflow
Screen input → scrape the page → clean for LLM → validate output schema.
import { McpClient } from "@modelcontextprotocol/sdk/client";
// assuming x402-tools-mcp is configured in your MCP client
const guard = await client.callTool("promptguard", {
prompt: userInput,
sensitivity: "medium",
});
if (!guard.safe) throw new Error("Rejected: " + guard.risk);
const page = await client.callTool("scrapepay", {
url: targetUrl, format: "html",
});
const md = await client.callTool("markdownopt", {
html: page.content,
});
const check = await client.callTool("schemagate", {
response: llmOutput,
schema: expectedSchema,
});
if (!check.valid) throw new Error(check.hint); Full workflow → Notification pipeline
Scrape a page → extract structured data → send alert when condition is met.
const page = await client.callTool("scrapepay", {
url: "https://example.com/listings",
format: "html",
});
const data = await client.callTool("structextract", {
html: page.content,
extract: ["tables", "links"],
});
if (data.tables[0].rows.length > previousCount) {
await client.callTool("notifyrelay_telegram", {
chat_id: CHAT_ID,
message: `🆕 ${data.tables[0].rows.length} listings found`,
});
} Full workflow → Document generation workflow
Fetch content → clean it → convert to PDF → deliver by email.
const page = await client.callTool("scrapepay", {
url: reportUrl, format: "html",
});
const md = await client.callTool("markdownopt", {
html: page.content,
});
const pdf = await client.callTool("docconvert_pdf", {
from: "md", to: "pdf", content: md.markdown,
});
await client.callTool("notifyrelay_email", {
to: userEmail,
subject: "Your report",
body: "PDF attached: [base64]" + pdf.content,
}); Full workflow →