Agent Verifier

Prueba y depura la firma Web Bot Auth (RFC 9421) de tu agente de IA: ¿es válida y qué corregir?

Servidor MCP alojado

npx add-mcp 'https://fp.packet.guru/api/v1/mcp'

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

Documentación

Servidor MCP

La misma verificación, como una herramienta que un agente puede encontrar y llamar por sí mismo.

Acerca del servidor MCP

Un agente conectado a este servidor encuentra la verificación por sí mismo: lista las herramientas, lee qué hace esta, y la llama. La respuesta proviene del mismo motor que la API HTTP y tiene la misma forma.

Endpoint

https://fp.packet.guru/api/v1/mcp

HTTP Streamable, solo POST. No requiere cuenta ni clave.

Cómo agregarlo a un cliente

La mayoría de los clientes solo piden la dirección anterior. Pégala y listo. Los clientes que guardan servidores en un archivo de configuración quieren algo como esto. Los nombres de los campos varían entre clientes, así que revisa el tuyo si no coincide.

{
  "mcpServers": {
    "agent-verifier": {
      "type": "http",
      "url": "https://fp.packet.guru/api/v1/mcp"
    }
  }
}

Qué expone

self_check_web_bot_auth

Informa cómo se ve desde afuera la solicitud que lleva esta llamada: si su firma Web Bot Auth (RFC 9421) se verificó, qué publica el directorio de claves que nombró, la falla exacta si la hay y la frase que dice qué cambiar, además de datos simples sobre la dirección desde la que llegó. Firma la llamada como firmas solicitudes a cualquier otro. Gratis, anónimo, sin cuenta. No toma argumentos: una llamada sin firmar aún recibe una respuesta sobre su dirección.

Solo lectura. La respuesta describe la solicitud que llevó la llamada, así que no hay nada que puedas pasar que la cambie.

Dos cosas que vale la pena saber antes de la primera llamada

  • Pon tu firma en los encabezados de la solicitud, no en los argumentos. La verificación lee la conexión que abrió tu cliente, así que los encabezados Web Bot Auth tienen que estar en ese POST.
  • No la enrutes a través de un proxy. La respuesta describe la solicitud exactamente como llega, así que cualquier cosa que la reenvíe en tu nombre cambia de qué trata la respuesta.

La llamada cruda

Para cualquiera que implemente el transporte a mano en lugar de usar un cliente. El método y el nombre de la herramienta se reflejan en los encabezados además del cuerpo, y un servidor que lee el cuerpo tiene que rechazar cualquier solicitud donde los dos no coincidan, así que envía ambos. El encabezado de versión lleva la revisión que habla el cliente, y el ejemplo usa la actual. El servidor también acepta el protocolo de enlace más antiguo que abre con initialize, que los clientes SDK estándar aún usan.

POST /api/v1/mcp HTTP/1.1
Host: fp.packet.guru
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: self_check_web_bot_auth

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "self_check_web_bot_auth",
    "arguments": {},
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientCapabilities": {}
    }
  }
}

No hay sesiones ni flujo GET aquí, así que GET y DELETE responden 405. El resultado lleva el veredicto dos veces: una vez como texto, una vez como structuredContent. Son el mismo objeto.

Prompt: pide a un agente que ejecute la verificación

Pega esto en un agente que ya tenga el servidor anterior conectado. Llama a la única herramienta e informa. Solo lee, así que no cambia nada en tu lado.

Call the self_check_web_bot_auth tool on the agent-verifier server, then tell me:

1. Did my Web Bot Auth signature verify? If not, quote the fault and the fix sentence from the answer.
2. What does my key directory look like from outside, and did it prove it published the key that was used?
3. What kind of network does my address belong to, and is it inside any published crawler range?
4. List, in order, exactly what I should change. If nothing, say so plainly.

Do not guess at anything the answer does not state.