AgentKit x402
API de utilidade de pagamento por chamada para agentes via x402 (USDC na Base): verificações de e-mail/domínio, auditoria de DMARC, auditoria de site, URL para markdown, validadores de IBAN.
Servidor MCP hospedado
npx add-mcp 'https://agentkit-x402.erikssonanton2001.workers.dev/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
API utilitária de pagamento por chamada e servidor MCP remoto para agentes de IA no Cloudflare Workers, pago em USDC via x402: validação de e-mail, SPF/DMARC, DNS, contatos de sites, URL para Markdown, IBAN, validadores suecos.
- JavaScript 100%
AgentKit x402
Dê a um agente de IA ferramentas pequenas e componíveis sem conta ou chave de API: valide um e-mail antes de enviar, inspecione SPF/DMARC/DKIM, consulte DNS, transforme uma página pública em Markdown, extraia contatos publicados, audite SEO, valide IBANs ou lide com personnummer, orgnr, bankgiro e cálculos de dias bancários suecos. Cada requisição é um HTTP GET que retorna JSON e é paga em USDC na Base com x402 v2.
Preços e endpoints
| Endpoint | Preço | Caso de uso |
|---|---|---|
/v1/email-check?email= | $0.002 | Sintaxe, flags de descartável/papel/provedor gratuito, sugestão de erro de digitação e verificações MX/A |
/v1/email-auth?domain= | $0.01 | Auditoria de SPF, DMARC, seletor DKIM, MX, BIMI, MTA-STS e TLS-RPT |
/v1/domain-dns?domain= | $0.005 | Registros A, AAAA, NS, MX, TXT, CAA, SOA, CNAME, DNSSEC |
/v1/site-contacts?url= | $0.02 | E-mails, telefones, redes sociais, dicas de endereço e números de organização suecos publicados |
/v1/site-audit?url= | $0.02 | Auditoria técnica de SEO e tecnologia de uma página |
/v1/url-markdown?url= | $0.005 | HTML estático para Markdown limpo para um LLM |
/v1/se/validate?type=&value= | $0.001 | personnummer, samordningsnummer, orgnr, bankgiro, plusgiro e OCR suecos |
/v1/iban?iban= | $0.001 | Validação de formato IBAN e mod-97 |
/v1/se/account-to-iban?clearing=&account= | $0.002 | Conta sueca para IBAN/BIC com checksum |
/v1/bank-days?from=&add= | $0.001 | Aritmética de dias bancários suecos |
Exemplos estáticos são gratuitos em /v1/demo/{slug}. Documentos de descoberta são /openapi.json, /llms.txt e /.well-known/x402.
MCP
O endpoint MCP remoto é https://agentkit-x402.erikssonanton2001.workers.dev/mcp (HTTP streamable, JSON-RPC 2.0). Claude Desktop ou Cursor podem usar a ponte mcp-remote:
{
"mcpServers": {
"agentkit-x402": {
"command": "npx",
"args": ["mcp-remote", "https://agentkit-x402.erikssonanton2001.workers.dev/mcp"]
}
}
}
Ferramentas gratuitas incluem pricing e demo. Ferramentas pagas retornam requisitos de pagamento quando chamadas sem PAYMENT-SIGNATURE; reenvie a requisição MCP com um payload de pagamento x402 v2 ou chame o endpoint REST diretamente. A maioria dos clientes MCP não consegue assinar pagamentos x402, então use um cliente compatível com x402 (por exemplo, um wrapper @x402/fetch) ao chamar ferramentas pagas.
Pagamento: 402 → assinar → tentar novamente
Uma chamada não paga intencionalmente retorna 402 Payment Required; ela não 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'
Em JavaScript, o wrapper oficial de fetch x402 executa os passos 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
Use qualquer biblioteca/cliente de carteira Python compatível com x402 que você já utilize. O fluxo do protocolo é HTTP comum: faça o GET com requests, leia o cabeçalho base64 PAYMENT-REQUIRED no 402, assine seus requisitos exatos com uma carteira Base e tente novamente com 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())
Financiando USDC na Base
- Use uma carteira que suporte Base e o esquema exato x402.
- Adquira USDC e selecione Base como a rede ao retirar ou fazer bridge; não envie na Ethereum ou em outra chain.
- Financie o endereço da carteira usado pelo seu signatário com USDC suficiente para as chamadas esperadas (mais uma pequena quantidade de ETH Base para transações da carteira, se sua carteira exigir).
- Comece com uma resposta gratuita de
/v1/demo/{slug}e depois faça uma requisição paga. Os requisitos do 402 e/.well-known/x402identificam a rede, o contrato USDC e o endereço de pagamento para o deployment.
Erros e cobrança
O pagamento é liquidado apenas para respostas HTTP 2xx. Cada JSON de erro inclui charged: false; um 402 também não é cobrado porque nenhum pagamento foi aceito ainda.
| Status HTTP | Códigos de erro | Cobrado? |
|---|---|---|
| 400 | missing_*, invalid_* (incluindo invalid_url, invalid_email, invalid_domain, invalid_iban, invalid_input, invalid_type, invalid_value, invalid_from, invalid_add, invalid_mode) | Não |
| 403 | blocked_by_robots | Não |
| 404 | domain_not_found ou rota desconhecida | Não |
| 402 | Pagamento necessário / pagamento inválido ou ausente | Não |
| 502 | upstream_error, robots_unavailable, redirect_blocked, dns_unavailable | Não |
| 504 | upstream_timeout | Não |
| 500 | internal_error | Não |
Limites e notas honestas
- Verificações de e-mail são apenas sintaxe, listas e DNS (incluindo MX/A); elas não fazem uma conexão SMTP, então a entregabilidade da caixa de entrada não é confirmada.
- Nenhum JavaScript é renderizado. Páginas são limitadas a 1,5 MB, cerca de 6 requisições de saída por chamada e um timeout de 8 segundos.
robots.txté respeitado. - Validadores suecos verificam formatos e checksums; eles não provam que uma pessoa, empresa ou conta existe. DNS usa um resolvedor Cloudflare DoH.
- O serviço não tem armazenamento em nível de aplicação e nenhum banco de dados KV/D1. A extração de contatos retorna apenas informações que um site publica; os chamadores permanecem responsáveis pelo uso legal (incluindo GDPR).
- Ele roda no plano gratuito do Cloudflare Workers; limites de taxa, limites de CPU e falhas upstream podem ocorrer. Chamadas HTTP 4xx/5xx com falha não são liquidadas.
Desenvolvimento
npm test # builds dist/worker.js, then runs node --test (no network needed)
npm run build # esbuild bundle
npm run make-deploy
Variáveis opcionais do Worker: PAY_TO, NETWORK (padrão eip155:8453), FACILITATOR_URL e PUBLIC_BASE_URL. O bundle inclui um shim mínimo de Buffer porque o Worker é implantado sem nodejs_compat.
Atribuição e licença
Dados de domínios descartáveis vêm do projeto bulk-email-verifier-mx. Validadores suecos, dados de compensação e lógica de calendário são adaptados do SweKit (https://codeberg.org/moneyman-code/swekit-api). Fonte: https://codeberg.org/moneyman-code/agentkit-x402. MIT; veja LICENSE.