SiteCheck

29 herramientas de agente de pago por llamada (página web a Markdown, PDF a texto, stack tecnológico, verificación de correo, RDAP de dominio, Solana, KYB), pagadas por llamada en USDC vía x402.

Servidor MCP alojado

npx add-mcp 'https://api.sitecheck-api.workers.dev/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

SiteCheck: herramientas de pago por llamada para agentes de IA (x402 en Base, Solana y Arc)

En vivo: https://api.sitecheck-api.workers.dev · listado en x402scan · descubrimiento: /.well-known/x402, /openapi.json

SiteCheck es una API pequeña que los agentes de IA pueden usar sin cuenta ni clave de API: 29 herramientas de pago por llamada en total. Además de sus herramientas de IA y web (incluyendo un lector de páginas web a Markdown), ofrece conversión de PDF a texto, traducción, detección de stack tecnológico, URLs de sitemaps, tipos de cambio, correo electrónico, datos de dominios y de tokens y wallets de Solana, datos de negocio y cumplimiento (IVA de la UE, IBAN, LEI, retiros de productos en EE. UU., acciones de cumplimiento de OSHA/EPA, avisos de insolvencia en el Reino Unido), datos de mercados de predicción y transacciones comerciales sin firmar impulsadas por Panta. Cada llamada se paga por solicitud en USDC con el protocolo x402, en Base, Solana o Arc (la L1 de Circle), según la red donde el comprador tenga USDC. Haz la llamada, obtén un 402 Payment Required con el precio en cada red, firma el pago y recibe el resultado. Se ejecuta en Cloudflare Workers y Workers AI.

EndpointPrecioQué hace
GET /api/audit?url=$0.02Auditoría de sitio web: problemas de accesibilidad WCAG 2.2 con correcciones y una puntuación (Ley Europea de Accesibilidad), conceptos básicos de SEO, cabeceras de seguridad, stack tecnológico
GET /api/contacts?url=$0.01Enriquecimiento de contactos de empresa desde un dominio: correos, teléfonos, redes sociales, tecnología
GET /api/hiring?q=&remote=$0.01Busca en el hilo actual de "Who is hiring?" de Hacker News
POST /api/chat$0.004Completado de chat con Llama 3.3 70B
POST /api/image$0.005Texto a imagen con FLUX.1 schnell
POST /api/transcribe$0.01Voz a texto con Whisper large-v3-turbo
POST /api/tts$0.02Texto a voz con Deepgram Aura-2
POST /api/embed$0.001Embeddings BGE-M3 (1024-d, multilingüe)
GET /api/vat?number=$0.002Verificación de número de IVA de la UE: formato y suma de verificación localmente, luego el servicio oficial VIES (27 estados de la UE + Irlanda del Norte)
GET /api/iban?iban=$0.001Validación de IBAN sin llamada de red: estructura y longitud del registro, mod-97, dígitos de verificación nacionales, división banco/sucursal/cuenta; ibans= para hasta 50
GET /api/lei?q=$0.005Búsqueda GLEIF por LEI o nombre de empresa: estado, registro, matrices, filiales, kycSummary de una línea
GET /api/recalls?q=&source=&since=&classification=&limit=$0.003Retiros de productos en EE. UU. de openFDA y CPSC en un solo esquema, con severidad alta/media/baja
GET /api/violations?company=&state=&since=&minPenalty=&source=&limit=$0.005Casos de cumplimiento en EE. UU.: OSHA (API del DOL, necesita clave en el despliegue) y EPA ECHO, con enlaces a registros oficiales
GET /api/uk-insolvency?since=&q=&postcode=&type=&limit=$0.003Avisos de insolvencia de empresas del Reino Unido de The Gazette (nuestra caché nocturna de los últimos 8 días), enriquecimiento opcional con Companies House
GET /api/read?url=&format=&maxChars=&links=$0.002Una página web como Markdown limpio o texto para un LLM: solo contenido principal, título, descripción, autor, fecha, idioma, canónica; se respeta robots.txt
GET /api/email-check?email=$0.001Pre-verificación de correo sin SMTP: sintaxis, DNS de correo, dominio desechable, cuenta de rol, proveedor gratuito, sugerencia de errores tipográficos; emails= para hasta 50
GET /api/domain?domain=$0.002RDAP (sucesor de WHOIS) y DNS: registrado o disponible, registrador, fechas de creación/expiración, estado, DNSSEC, servidores de nombres, IPs, MX
GET /api/solana/token?address=$0.002Verificación de token de Solana: precio, capitalización de mercado, liquidez, tenedores, trading en 24h, puntuación orgánica, participación de los principales tenedores, autoridad de acuñación/congelación en cadena y extensiones Token-2022, señales de alerta
GET /api/solana/trending?mode=&interval=&minLiquidityUsd=$0.003Tokens de Solana en tendencia, nuevos, más negociados o más orgánicos con los mismos campos y señales
GET /api/solana/wallet?address=$0.003Tenencias de wallet de Solana: SOL y cada token con símbolo, precio y valor en USD, total en USD
GET /api/tech?url=$0.003Detección de tecnología de sitio web (CMS, comercio electrónico, analítica, CDN, hosting, chat, pagos, proveedor de correo) con versión, confianza y evidencia
POST /api/pdf$0.003PDF a texto por URL o base64 (hasta 15 MB), página por página, con título, autor y fechas; solo PDFs de texto
GET /api/sitemap?url=&pathPrefix=&since=$0.002Cada URL en los sitemaps XML de un sitio con lastmod, más recientes primero
GET /api/fx?from=&to=&amount=&date=$0.001Tipos de cambio del BCE (últimos, una fecha pasada o una serie temporal) con conversión de importes
POST /api/translate$0.002Traducción con Llama 3.1 8B, hasta 6.000 caracteres, formato conservado

Mercados de predicción (Panta)

Los agentes pueden comprar inteligencia de mercado y transacciones comerciales listas para firmar por llamada, sin cuenta y sin clave de API. Un agente que investiga un evento paga una fracción de céntimo para encontrar los mercados y un céntimo por las probabilidades de un mercado y un informe breve neutral. Un agente que quiere actuar paga por una transacción de compra sin firmar de Panta y la firma con su propia wallet. Panta ejecuta mercados de predicción en USDC en Solana.

EndpointPrecioQué hace
GET /api/markets?q=&status=&category=&limit=$0.002Busca en los mercados de Panta. Filas compactas: id, pregunta, precios SÍ/NO y probabilidades implícitas, volumen, tiempos de cierre y resolución, fuente de resolución
GET /api/markets/brief?id=$0.01Un mercado: probabilidades actuales, actividad comercial reciente y un resumen breve de IA neutral sobre qué pregunta, qué lo resuelve y qué implica el precio
POST /api/markets/quote$0.005Cuerpo { id, side: "yes"|"no", amountUsdc, wallet }. Cotización de Panta: acciones esperadas, precio medio, comisión e impacto en el precio frente al precio al contado
POST /api/markets/build-buy$0.01Mismo cuerpo, más un maxSlippageBps opcional. Devuelve la transacción sin firmar (Solana v0, base64) y las instrucciones de Panta para que el agente la firme y la transmita él mismo, además de los campos para el informe de la operación
POST /api/markets/reportgratisDespués de transmitir, envía { signature, orderId, quoteId, id, wallet }. SiteCheck lo reenvía a Panta, que confirma y atribuye la operación
  • Sin custodia. SiteCheck nunca firma, guarda claves ni custodia fondos. build-buy devuelve una transacción sin firmar cuyo único firmante es la wallet del agente.
  • Solo información, no asesoramiento financiero. Cada respuesta lo indica (disclaimer), y el informe breve nunca recomienda una operación. Si el texto del modelo parece asesoramiento, se devuelve una plantilla factual en su lugar.
  • Impulsado por Panta. Cada respuesta lleva poweredBy: { text: "Powered by Panta", url: "https://panta.market" }, como exigen los Términos de Uso de Panta.
  • Paga solo por resultados, como con cada herramienta: si Panta rechaza o falla, la llamada devuelve un error y no se liquida nada. El catálogo se almacena en caché durante 45 segundos y los precios durante 15 segundos, y las respuestas indican la antigüedad de sus datos.
  • Las herramientas solo están activas cuando el secreto PANTA_API_KEY está configurado. De lo contrario, están ocultas y GET /health explica por qué. Endpoints, formas, atribución y preguntas abiertas: docs/PANTA.md.
node scripts/demo-markets.mjs --q bitcoin            # search, brief and quote, paid on Solana (~0.017 USDC)
node scripts/demo-markets.mjs --q bitcoin --build    # also builds the unsigned transaction (+0.01); never signs or sends it

Datos web, documentos, correo, dominios y Solana

HerramientaFuenteNotas
/api/readLa propia página, obtenida una vez con el User-Agent SiteCheckReaderSe respeta robots.txt (una página no permitida responde 403 y no se cobra). No se ejecuta JavaScript, por lo que las páginas que solo se renderizan en el navegador devuelven vacío (422, sin cobro). Los PDFs y otros archivos binarios responden 415. El contenido pertenece a su editor.
/api/email-checkDNS sobre HTTPS (Cloudflare, Google) y la lista disposable-email-domains (CC0)No se realiza ninguna conexión SMTP: unknown significa que no hay nada malo con la dirección o su dominio, no que la bandeja de entrada exista.
/api/domainEl bootstrap RDAP de IANA y el servidor RDAP de cada registro; DNS sobre HTTPSavailable significa que el registro no tiene constancia; los nombres premium o reservados pueden seguir sin estar disponibles para comprar. Los TLD sin RDAP se infieren del DNS.
/api/solana/token, /api/solana/trending, /api/solana/walletAPIs de token, precio y tenencias de Jupiter, JSON-RPC de mainnet de Solana (cuenta de acuñación), GeckoTerminal para pools (mejor esfuerzo)Solo información, no asesoramiento financiero. Nada se firma ni se envía. La autoridad de acuñación y congelación en cadena prevalece sobre la auditoría de la API cuando ambas están disponibles.
/api/techLa página de inicio del sitio, cabeceras, cookies y DNS (MX, TXT); 231 huellas propias (MIT, no derivadas de Wappalyzer)No se ejecuta JavaScript; un sitio detrás de un desafío de bot devuelve lo que muestran sus cabeceras y DNS.
/api/pdfLa capa de texto del PDF, leída con unpdf (PDF.js)Sin OCR: un PDF escaneado responde 422 y no se cobra.
/api/sitemapEl robots.txt del sitio y los sitemaps XMLLos índices se siguen hasta 25 sitemaps hijos por llamada.
/api/fxTipos de referencia del Banco Central Europeo vía FrankfurterPublicados en días laborables alrededor de las 16:00 CET; los fines de semana devuelven el último día publicado.
/api/translateWorkers AI @cf/meta/llama-3.1-8b-instruct-fastTraducción automática: revisa textos importantes.

Datos de negocio y cumplimiento

Seis herramientas para un agente que debe verificar una contraparte antes de operar con ella. Todas leen fuentes oficiales gratuitas (o nuestra propia caché de una de ellas), no necesitan clave del llamante y siguen la misma regla que todas las rutas aquí: una llamada que falla (entrada incorrecta, proveedor caído, tiempo de espera agotado) devuelve 4xx/5xx y no se liquida, por lo que el comprador no paga.

HerramientaFuenteTérminos
/api/vatAPI REST VIES de la Comisión EuropeaServicio público de la Comisión. Un estado miembro que está caído da HTTP 503 con un viesStatus como MS_UNAVAILABLE, por lo que una respuesta desconocida nunca se informa como "inválida". Algunos estados (p. ej. DE, ES) confirman la validez pero no revelan nombre y dirección: esos campos son null.
/api/ibanCalculado localmente desde la estructura del registro IBAN de SWIFT (versión 101)Sin red, sin búsqueda de nombre de banco o BIC (no se incluye ningún conjunto de datos abierto; la respuesta dice bankLookup: false). Los dígitos de verificación nacionales se aplican solo donde existe un algoritmo público (FR, ES, IT, BE, NL para ABNA/INGB/RABO, NO, FI, PL, PT, RS, ME, MK, XK, SI); otros países informan not-available. Alemania no tiene un algoritmo nacional general.
/api/leiÍndice Global LEI de GLEIFDominio público CC0. Sin clave.
/api/recallsInformes de cumplimiento de openFDA (alimentos, medicamentos, dispositivos) y la API de retiros SaferProducts.gov de CPSCLos datos de openFDA son de dominio público según sus términos de uso (no para decisiones médicas). CPSC no clasifica los retiros: su severidad se deriva del texto de peligro, la Clase I/II/III de la FDA se asigna a alta/media/baja.
/api/violationsData API v4 del Departamento de Trabajo de EE. UU. (OSHA) y EPA ECHOObras del gobierno de EE. UU. OSHA necesita el secreto opcional DOL_API_KEY: sin él, la ruta devuelve solo EPA y dice que OSHA está desactivada. Los registros se emparejan por nombre y muestran inspecciones y casos, no culpabilidad.
/api/uk-insolvencyThe Gazette, a través de nuestra propia caché nocturna (gazette-cache.sitecheck-api.workers.dev, últimos 8 días del Reino Unido). The Gazette nunca se llama directamente.Licencia de Gobierno Abierto v3.0. Las respuestas llevan el dataTimestamp de la caché y cualquier missingDays. Enriquecimiento opcional con Companies House (estado, fecha de constitución, códigos SIC, dirección; como máximo 10 filas por llamada) cuando COMPANIES_HOUSE_API_KEY está configurado.

Se respetan los límites de Workers: cada llamada ascendente tiene un tiempo de espera (como máximo 10 s) y un User-Agent SiteCheck/1.x, cada herramienta se mantiene muy por debajo de 50 sub-solicitudes, y nada grande se analiza por solicitud (el texto de The Gazette se escanea y solo se analizan los avisos coincidentes). Las respuestas estables de los proveedores se almacenan en caché con la API de caché donde funciona.

curl -s "https://api.sitecheck-api.workers.dev/api/vat?number=DE811907980"        # 402 first: pay with any x402 client

Servidor MCP

https://api.sitecheck-api.workers.dev/mcp es un servidor MCP remoto (HTTP Streamable, sin estado, respuestas JSON). Cada endpoint de pago es una herramienta MCP con el mismo esquema de entrada (read, pdf, tech, email_check, domain, solana_token, vat, lei, ...), y el mismo precio. El pago utiliza el transporte MCP x402: una tools/call sin pago devuelve isError con el objeto x402 PaymentRequired en structuredContent; el cliente firma una opción y repite la llamada con el PaymentPayload en params._meta["x402/payment"]; la respuesta incluye la liquidación en result._meta["x402/payment-response"]. Una llamada a herramienta que falla no se liquida. Cada llamada se reproduce dentro del Worker contra la ruta /api correspondiente, de modo que los compradores de MCP y HTTP pasan por los mismos controles de pago.

import { createx402MCPClient } from "@x402/mcp";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = createx402MCPClient({
  name: "my-agent", version: "1.0.0",
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }], // a viem account holding USDC on Base
  autoPayment: true,
});
await client.connect(new StreamableHTTPClientTransport(new URL("https://api.sitecheck-api.workers.dev/mcp")));
const page = await client.callTool("read", { url: "https://docs.x402.org/introduction" }); // pays $0.002

Los clientes MCP sin soporte x402 (por ejemplo, un conector remoto simple) pueden listar las herramientas y ver cada precio, pero una llamada devuelve los requisitos de pago en lugar de un resultado.

Redes

RedCAIP-2USDCFacilitador
Baseeip155:84530x8335…2913PayAI
Solanasolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpEPjF…Dt1vPayAI
Arceip155:50420x3600…0000Circle Facilitator Service

El precio es el mismo en todas las redes. Los compradores solo necesitan USDC: los pagos EVM son firmas EIP-3009, y el facilitador paga el gas y las tarifas de Solana. Fuentes y decisiones de diseño: docs/NETWORKS.md.

Pruébalo

curl -si "https://api.sitecheck-api.workers.dev/api/audit?url=example.com" \
  | grep -i '^payment-required:' | cut -d' ' -f2 | tr -d '\r' | base64 -d
# {"x402Version":2,"error":"Payment required", ..., "accepts":[{ "network":"eip155:8453", "amount":"20000", ... }, ...]}

Paga con cualquier cliente x402. Base o Arc, con @x402/fetch y una cuenta viem:

import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY);  // holds a little USDC
const client = x402Client.fromConfig({
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],   // Arc: "eip155:5042"
  // Arc only: its USDC is not in @x402/evm's built-in asset list yet, so opt in (cap: $0.10 per call).
  // spendControls: { allowedAssets: [{ network: "eip155:5042", asset: "0x3600000000000000000000000000000000000000", maxAmountPerPayment: "100000" }] },
});
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://api.sitecheck-api.workers.dev/api/audit?url=example.com");
console.log(await res.json());

Solana, con @x402/svm y un firmante @solana/kit:

import { readFileSync } from "node:fs";
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactSvmScheme } from "@x402/svm/exact/client";
import { createKeyPairSignerFromBytes } from "@solana/kit";

const signer = await createKeyPairSignerFromBytes(Uint8Array.from(JSON.parse(readFileSync("buyer.json", "utf8"))));
const client = new x402Client().register("solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", new ExactSvmScheme(signer));
const pay = wrapFetchWithPayment(fetch, client);
console.log(await (await pay("https://api.sitecheck-api.workers.dev/api/audit?url=example.com")).json());

Cada endpoint declara su esquema de entrada y un ejemplo de salida mediante la extensión de descubrimiento x402 Bazaar, de modo que los agentes puedan encontrarlo y llamarlo sin leer documentación.

Agente de demostración

scripts/demo-agent.mjs descubre la API a través de /.well-known/x402, paga por una auditoría en la red que elijas e imprime el resultado y el enlace de la transacción:

node scripts/demo-agent.mjs --network base     # or arc, solana

En la primera ejecución crea una billetera desechable en un archivo ignorado por git (.env.evm para Base y Arc, .env.solana para Solana) e imprime su dirección. Fúndala con unos 0,10 USDC en esa red; una auditoría cuesta 0,02 USDC y no se necesita ETH ni SOL. --dry-run se detiene antes de pagar, y --url lo apunta a otro despliegue.

Notas de diseño

  • Paga solo por resultados. La liquidación se ejecuta después del handler. Si un modelo o un servicio upstream falla, el handler devuelve un estado de error y el pago no se liquida, por lo que no se cobra al comprador. Esto se aplica en las tres redes y está cubierto por las pruebas.
  • Una ruta, varias redes. Cada ruta lista una entrada x402 accepts por red configurada. Base y Solana liquidan a través de PayAI. Arc liquida a través del Facilitator Service de Circle en su prueba sin clave: cada solicitud lleva una prueba del vendedor firmada por la clave de la billetera receptora de Arc (ver más abajo). Cada cliente facilitador solo informa las redes que se le asignaron (lib/payments.js).
  • Middleware x402 seguro para Workers. Un Worker no puede esperar una promesa creada por otra solicitud, y el middleware x402 se inicializa de forma diferida. Cada solicitud construye e inicializa su propio middleware hasta que uno termina; ese se reutiliza entonces (lib/app.js).
  • Sin claves en el repositorio. Las direcciones receptoras viven en wrangler.toml [vars] (vacías por defecto). La clave de vendedor de Arc (o, como alternativa, la clave API de Circle) es un secreto del Worker. Los scripts auxiliares mantienen sus billeteras en archivos .env.* ignorados por git.

Arc: la prueba sin clave de Circle y una billetera activa

El Facilitator Service de Circle normalmente necesita una clave API y, en mainnet, eso requiere una cuenta de Circle con una tarjeta de crédito registrada. SiteCheck usa la prueba sin clave de Circle en su lugar. Cada solicitud /verify y /settle lleva un encabezado Facilitator-Seller-Proof: una firma EIP-712 de la clave que controla el payTo de Arc, vinculada a la ruta, al cuerpo exacto de la solicitud y a un nonce nuevo (lib/sellerProof.js, lib/circle.js).

La contrapartida: esa clave tiene que vivir en el Worker, como el secreto ARC_SELLER_KEY. Por lo tanto, el payTo de Arc es una billetera activa dedicada que solo recibe pagos. El propietario la vacía regularmente a una billetera fría (scripts/sweep-arc.mjs), de modo que una clave filtrada expondría como máximo lo que entró desde el último vaciado. El límite de la prueba también es limitado y Circle no lo publica. Cuando se agota, Circle responde 403 registration_required. El pago no se liquida y no se cobra al comprador, el Worker lo registra y GET /health muestra arc.trialExhausted: true. A partir de entonces, Arc necesita una clave API de Circle o debe desactivarse. Detalles: docs/NETWORKS.md.

Ejecuta el tuyo

npm install
npm test                    # no network needed: the facilitators and Panta are mocked
npx wrangler dev            # local

Despliegue: establece account_id y al menos una dirección receptora en wrangler.toml (o pásala con --var). Para Arc, crea primero la billetera activa y guarda su clave:

node scripts/new-arc-wallet.mjs            # Arc only: prints the new address; the key goes to .env.arc-seller
npx wrangler secret put ARC_SELLER_KEY     # paste the key from .env.arc-seller
npx wrangler secret put PANTA_API_KEY      # optional: a pk_live_... key switches the prediction-market tools on
npx wrangler secret put DOL_API_KEY        # optional: switches OSHA on in /api/violations
npx wrangler secret put COMPANIES_HOUSE_API_KEY   # optional: enriches /api/uk-insolvency rows
npx wrangler deploy
node scripts/sweep-arc.mjs --to 0xYourColdWallet          # later, regularly: shows what it would send
node scripts/sweep-arc.mjs --to 0xYourColdWallet --yes    # sends it
VariableRedNotas
PAY_TOBasedirección EVM
PAY_TO_SOLANASolanadirección de la billetera; ya debe tener una cuenta de token USDC
ARC_SELLER_KEY (secreto)Arcclave privada de la billetera receptora dedicada de Arc; activa Arc y establece su payTo
PAY_TO_ARCArcopcional con ARC_SELLER_KEY (si se establece, debe coincidir con la dirección de la clave); sin clave de vendedor, la dirección de Arc para usar con CIRCLE_API_KEY
CIRCLE_API_KEY (secreto)Arcsolo alternativa, se usa cuando ARC_SELLER_KEY no está establecido
FACILITATOR_URLBase, Solanapor defecto https://facilitator.payai.network
FACILITATOR_URL_ARCArcpor defecto https://api.circle.com/v1/facilitator/x402
PANTA_API_KEY (secreto)todasactiva las herramientas de mercado de predicción: npx wrangler secret put PANTA_API_KEY (ver docs/PANTA.md)
PANTA_BASE_URLtodaspor defecto https://live-api.panta.market/api/v1
DOL_API_KEY (secreto)todasopcional: activa OSHA en /api/violations: npx wrangler secret put DOL_API_KEY. Sin él, la ruta es solo EPA
COMPANIES_HOUSE_API_KEY (secreto)todasopcional: enriquecimiento de Companies House en /api/uk-insolvency: npx wrangler secret put COMPANIES_HOUSE_API_KEY

Deja una dirección vacía para desactivar esa red. GET /health muestra qué redes están activas y por qué las demás no, y si las herramientas de Panta están activadas. Para Arc también muestra el modo de autenticación, la dirección receptora y el estado de la prueba.

Licencia

MIT

Transacciones en mainnet

Liquidaciones x402 reales en las tres redes: