AgentKit x402
API de utilidad de pago por llamada para agentes sobre x402 (USDC en Base): verificaciones de correo/dominio, auditoría DMARC, auditoría de sitio, URL a markdown, validadores IBAN.
Servidor MCP alojado
npx add-mcp 'https://agentkit-x402.erikssonanton2001.workers.dev/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
API de utilidad de pago por llamada y servidor MCP remoto para agentes de IA en Cloudflare Workers, pagado en USDC mediante x402: validación de correo electrónico, SPF/DMARC, DNS, contactos de sitios web, URL a Markdown, IBAN, validadores suecos.
- JavaScript 100%
AgentKit x402
Dale a un agente de IA herramientas pequeñas y componibles sin cuenta ni clave API: valida un correo electrónico antes de enviarlo, inspecciona SPF/DMARC/DKIM, consulta DNS, convierte una página pública en Markdown, extrae contactos publicados, audita SEO, valida IBAN o maneja personnummer, orgnr, bankgiro y cálculos de días bancarios suecos. Cada solicitud es un GET HTTP que devuelve JSON y se paga en USDC en Base con x402 v2.
Precios y endpoints
| Endpoint | Precio | Caso de uso |
|---|---|---|
/v1/email-check?email= | $0.002 | Sintaxis, indicadores de desechable/rol/proveedor gratuito, sugerencia de errores tipográficos y comprobaciones MX/A |
/v1/email-auth?domain= | $0.01 | Auditoría de SPF, DMARC, selector DKIM, MX, BIMI, MTA-STS y TLS-RPT |
/v1/domain-dns?domain= | $0.005 | Registros A, AAAA, NS, MX, TXT, CAA, SOA, CNAME, DNSSEC |
/v1/site-contacts?url= | $0.02 | Correos electrónicos, teléfonos, redes sociales, pistas de dirección y números de organización suecos publicados |
/v1/site-audit?url= | $0.02 | Auditoría técnica SEO y tecnológica de una página |
/v1/url-markdown?url= | $0.005 | HTML estático a Markdown limpio para un LLM |
/v1/se/validate?type=&value= | $0.001 | Personnummer, samordningsnummer, orgnr, bankgiro, plusgiro y OCR suecos |
/v1/iban?iban= | $0.001 | Validación de formato IBAN y mod-97 |
/v1/se/account-to-iban?clearing=&account= | $0.002 | Cuenta sueca a IBAN/BIC con suma de verificación |
/v1/bank-days?from=&add= | $0.001 | Aritmética de días bancarios suecos |
Los ejemplos estáticos son gratuitos en /v1/demo/{slug}. Los documentos de descubrimiento son /openapi.json, /llms.txt y /.well-known/x402.
MCP
El endpoint MCP remoto es https://agentkit-x402.erikssonanton2001.workers.dev/mcp (HTTP transmisible, JSON-RPC 2.0). Claude Desktop o Cursor pueden usar el puente mcp-remote:
{
"mcpServers": {
"agentkit-x402": {
"command": "npx",
"args": ["mcp-remote", "https://agentkit-x402.erikssonanton2001.workers.dev/mcp"]
}
}
}
Las herramientas gratuitas incluyen pricing y demo. Las herramientas de pago devuelven requisitos de pago cuando se llaman sin PAYMENT-SIGNATURE; reenvía la solicitud MCP con un payload de pago x402 v2 o llama al endpoint REST directamente. La mayoría de los clientes MCP no pueden firmar pagos x402, así que usa un cliente compatible con x402 (por ejemplo, un wrapper de @x402/fetch) al llamar a herramientas de pago.
Pago: 402 → firmar → reintentar
Una llamada no pagada devuelve intencionalmente 402 Payment Required; no cobra nada.
# 1. Request the resource and save/read the PAYMENT-REQUIRED header.
curl -i 'https://agentkit-x402.erikssonanton2001.workers.dev/v1/email-check?email=anna@example.com'
# 2. Have an x402 v2 exact-scheme client sign that header's requirements
# with a wallet funded in USDC on Base. The signature is request-specific.
# 3. Retry with the client-produced header (placeholder shown here).
curl -i \
-H 'PAYMENT-SIGNATURE: <base64 x402 v2 payment signature>' \
'https://agentkit-x402.erikssonanton2001.workers.dev/v1/email-check?email=anna@example.com'
En JavaScript, el wrapper oficial de fetch de x402 realiza los pasos 1–3:
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const signer = privateKeyToAccount(process.env.PRIVATE_KEY);
const client = new x402Client().register("eip155:*", new ExactEvmScheme(signer));
const payFetch = wrapFetchWithPayment(fetch, client);
const response = await payFetch(
"https://agentkit-x402.erikssonanton2001.workers.dev/v1/email-check?email=anna@example.com"
);
console.log(await response.json());
Python
Usa cualquier cliente/biblioteca de wallet de Python compatible con x402 que ya uses. El flujo del protocolo es HTTP ordinario: haz el GET con requests, lee el encabezado base64 PAYMENT-REQUIRED en el 402, firma sus requisitos exactos con una wallet de Base, y luego reintenta con PAYMENT-SIGNATURE.
import requests
url = "https://agentkit-x402.erikssonanton2001.workers.dev/v1/iban?iban=GB82WEST12345698765432"
first = requests.get(url)
if first.status_code == 402:
requirements = first.headers["PAYMENT-REQUIRED"]
signature = sign_x402_exact(requirements) # supplied by your x402 client
result = requests.get(url, headers={"PAYMENT-SIGNATURE": signature})
else:
result = first
result.raise_for_status()
print(result.json())
Financiar USDC en Base
- Usa una wallet que admita Base y el esquema exacto de x402.
- Adquiere USDC y selecciona Base como red al retirar o hacer puente; no lo envíes en Ethereum u otra cadena.
- Financia la dirección de wallet usada por tu firmante con suficiente USDC para las llamadas que esperas (más una pequeña cantidad de ETH de Base para transacciones de wallet si tu wallet lo requiere).
- Comienza con una respuesta gratuita de
/v1/demo/{slug}, luego haz una solicitud de pago. Los requisitos del 402 y/.well-known/x402identifican la red, el contrato USDC y la dirección de pago para el despliegue.
Errores y cobros
El pago se liquida solo para respuestas HTTP 2xx. Cada JSON de error incluye charged: false; un 402 tampoco se cobra porque aún no se ha aceptado ningún pago.
| Estado HTTP | Códigos de error | ¿Se cobra? |
|---|---|---|
| 400 | missing_*, invalid_* (incluyendo invalid_url, invalid_email, invalid_domain, invalid_iban, invalid_input, invalid_type, invalid_value, invalid_from, invalid_add, invalid_mode) | No |
| 403 | blocked_by_robots | No |
| 404 | domain_not_found o ruta desconocida | No |
| 402 | Pago requerido / pago inválido o faltante | No |
| 502 | upstream_error, robots_unavailable, redirect_blocked, dns_unavailable | No |
| 504 | upstream_timeout | No |
| 500 | internal_error | No |
Límites y notas honestas
- Las comprobaciones de correo electrónico son solo sintaxis, listas y DNS (incluyendo MX/A); no realizan una conexión SMTP, por lo que la entregabilidad del buzón no se confirma.
- No se renderiza JavaScript. Las páginas están limitadas a 1.5 MB, aproximadamente 6 solicitudes salientes por llamada y un tiempo de espera de 8 segundos.
robots.txtse respeta. - Los validadores suecos verifican formatos y sumas de verificación; no prueban que exista una persona, empresa o cuenta. DNS usa un resolver de Cloudflare DoH.
- El servicio no tiene almacenamiento a nivel de aplicación ni base de datos KV/D1. La extracción de contactos devuelve solo información que un sitio publica; los llamantes siguen siendo responsables del uso legal (incluido el GDPR).
- Se ejecuta en el plan gratuito de Cloudflare Workers; pueden ocurrir límites de tasa, límites de CPU y fallos ascendentes. Las llamadas fallidas HTTP 4xx/5xx no se liquidan.
Desarrollo
npm test # builds dist/worker.js, then runs node --test (no network needed)
npm run build # esbuild bundle
npm run make-deploy
Variables opcionales del Worker: PAY_TO, NETWORK (por defecto eip155:8453), FACILITATOR_URL y PUBLIC_BASE_URL. El bundle incluye un shim mínimo de Buffer porque el Worker se despliega sin nodejs_compat.
Atribución y licencia
Los datos de dominios desechables provienen del proyecto bulk-email-verifier-mx. Los validadores suecos, los datos de compensación y la lógica de calendario están adaptados de SweKit (https://codeberg.org/moneyman-code/swekit-api). Fuente: https://codeberg.org/moneyman-code/agentkit-x402. MIT; ver LICENSE.