Frisk
Evalúa a la contraparte de un pago x402 antes de que tu agente lo realice: una herramienta determinista devuelve permitir/revisar/bloquear con razones, y no realiza ninguna llamada de red por defecto.
Documentación
Frisk
Evaluación de riesgo previa a la transacción para agentes de IA autónomos.
Antes de que tu agente pague a un vendedor x402 o llame a una herramienta desconocida, consulta a Frisk si la contraparte es confiable y si la transacción se ajusta a tu política. Frisk devuelve un veredicto — allow, review o block — con una puntuación de confianza y razones legibles para humanos. Es de carácter consultivo: tu agente mantiene el control de la decisión.
import { Client } from "frisk-screen";
const client = new Client(); // lite mode, no key required
const result = await client.screen("0x9a3f1b2c3d4e5f60718293a4b5c6d7e8f9a0bc12", {
endpoint: "https://api.seller.x402/quote",
amount: 2.5,
asset: "USDC",
policy: { maxPerCall: 5.0 },
});
if (!result.allowed) {
console.log(result.verdict, result.trustScore, result.reasons);
}
Superficies
| Superficie | Paquete | Fuente |
|---|---|---|
| SDK de TypeScript | frisk-screen (npm) | typescript/ |
| SDK de Python | frisk-screen (PyPI) | python/ |
| Servidor MCP | frisk-mcp (npm) | mcp/ |
Ambos SDK exponen el mismo modelo: un Client con una llamada screen(), un modo lite que se ejecuta localmente con cero dependencias, y un modo alojado opcional para historial de reputación e inteligencia de amenazas en vivo.
Servidor MCP
Para agentes que no pueden importar una biblioteca, y para plantear la pregunta de forma interactiva, las mismas verificaciones están disponibles como un servidor MCP que expone una herramienta, screen_payment:
{
"mcpServers": {
"frisk": {
"command": "npx",
"args": ["-y", "frisk-mcp"]
}
}
}
Sin clave API ni cuenta: sin configuración, evalúa completamente en tu máquina. Está listado en el registro MCP como dev.tryfrisk/frisk.
Una herramienta MCP se ejecuta solo cuando un modelo elige llamarla, por lo que una verificación que el modelo puede omitir es una garantía más débil que la misma verificación en la ruta de código que firma el pago. Donde el dinero realmente se mueve, prefiere el SDK. Detalles en mcp/.
Modo Lite vs. alojado
| Lite (predeterminado) | Alojado (clave API) | |
|---|---|---|
| Ejecución | Local, sin conexión | API de Frisk |
| Señales | Solo verificaciones públicas y estructurales | Grafo de reputación, modelos entrenados, feed de amenazas |
| Confianza | Siempre low | Aumenta con la cobertura |
| Costo | Gratis | Basado en uso |
El modo Lite detecta problemas evidentes — contrapartes mal formadas, swaps payTo, endpoints inseguros, violaciones de política y una pequeña lista de bloqueo inicial — sin una llamada de red. La API alojada (https://api.tryfrisk.dev) añade historial de reputación e inteligencia de amenazas actualizada continuamente.
Qué cubre un veredicto
Frisk evalúa a quién estás pagando. Un allow significa que no se encontró nada descalificante en las verificaciones para las que proporcionaste suficiente información para ejecutarse: la contraparte se analiza como una dirección y no está en la lista de bloqueo, el payTo que el endpoint solicitó coincide con la contraparte que nombraste, el endpoint se sirve a través de HTTPS, y el monto y el activo están dentro de la política que proporcionaste. Una verificación cuya entrada omites no se ejecuta y no falla — omite observedPayTo y no ocurre ninguna comparación de payTo. En modo alojado, un allow también significa que no se encontró historial de reputación adverso.
No dice nada sobre lo que se devuelve. Si la respuesta coincide con la forma que esperabas, contiene los datos por los que pagaste o vale el precio es una pregunta separada, y Frisk deliberadamente no la responde. Verificar el contrato de respuesta vale la pena; pertenece después de la llamada, en el lado del comprador, contra la propia definición del comprador de una respuesta satisfactoria.
Un allow tampoco es una afirmación de seguridad en general. En modo Lite, la confianza es siempre low, porque las verificaciones son estructurales: una contraparte sin historial y sin defectos se evalúa igual que una con un largo historial limpio. El veredicto es una entrada para tu decisión, por eso es consultivo.
Principios de diseño
- Consultivo, no en la ruta. Frisk nunca retiene tus fondos ni bloquea un pago por sí mismo; devuelve un veredicto y tu código decide.
- Cero dependencias en tiempo de ejecución. El SDK de TypeScript se basa en la API de plataforma
fetch(Node, Bun, Deno, Workers, navegador); el SDK de Python usa solo la biblioteca estándar. - Tipado. Ambos SDK incluyen información de tipos completa.
Contribuciones
Consulta CONTRIBUTING.md. Divulgaciones de seguridad: SECURITY.md.
Licencia
La API alojada en api.tryfrisk.dev está además regida por los Términos de servicio.