agentready

API

REST sencillo, autenticado con una clave Bearer. También exponemos nuestras propias herramientas WebMCP en /mcp.

Autenticación

Authorization: Bearer ar_live_…

Crea claves en el panel. Requiere plan Pro o superior.

Iniciar un análisis

curl -X POST https://agentreadyfunnel.com/v1/scans   -H "authorization: Bearer $AGENTREADY_KEY"   -H "content-type: application/json"   -d '{"url":"example.com","locale":"en","depth":1}'

→ 202 {"scan_id":"scan_…","status":"queued"}

El esquema es opcional: example.com y https://example.com funcionan igual. Sondea hasta que scan.status sea done.

Cuerpo de la petición

CampoTipoPor defectoQué hace
url string obligatorio La página a analizar. El esquema es opcional.
locale "en" | "es" Accept-Language Idioma del informe y de los hallazgos.
depth integer 1 Cuántas páginas rastrear. Se recorta en silencio al máximo del plan; no da error.
tier 1 | 2 | 3 2 Con cuánta profundidad mirar. Pedir un nivel por encima del plan devuelve 402 tier_not_entitled.
render boolean false Fuerza el nivel 2 aunque el pase estático ya haya respondido. Para páginas cuyos campos se inyectan en tiempo de ejecución.
public boolean false Publica el resultado en el ranking y en /v1/sites/:domain. Los análisis anónimos siempre son públicos.
fresh boolean false Ignora la deduplicación de análisis recientes y vuelve a analizar. Consume cuota igualmente.

Niveles de detección

Un análisis escala de nivel sólo cuando el anterior no pudo responder si el sitio registra herramientas WebMCP. El nivel que se alcanzó realmente aparece en el informe como tier_reached; no siempre es el que pediste.

NivelCómoQué ve y qué no
1 Una petición HTTP form[toolname] declarativo, el polyfill, señales de WebMCP en los bundles y las cabeceras que lo desactivan. Concluyente para HTML estático; ciego ante cualquier herramienta registrada en JavaScript.
2 Navegador real + shim Un modelContext falso inyectado antes de los scripts de la página, así que capta las herramientas que una SPA registra al hidratar. No puede verificar la permissions policy ni el aislamiento de origen, y no compila los formularios declarativos a JSON Schema como sí hace Chrome: eso se marca como no verificado.
3 Chrome nativo (contenedor) Chrome con el flag de WebMCP activado, que es lo único que verifica de verdad lo que el nivel 2 sólo puede suponer. Todavía no está habilitado en este despliegue.
Nivel 3, hoy: el plan Agency da derecho al nivel 3, pero la verificación con Chrome nativo aún no está activada aquí. Un análisis de nivel 3 se ejecuta, se cobra como cualquier otro, devuelve el hallazgo tier3_unavailable y marca el resultado como partial: los datos vienen del shim del nivel 2. Ningún plan pierde detección por esto — el nivel 2 es el techo real para todos ahora mismo.

Otros endpoints

MétodoRutaQué hace
GET /v1/me Cuenta, plan y consumo del periodo
GET /v1/scans/:id El informe de un análisis
GET /v1/sites/:domain Último análisis público de un dominio
GET /v1/leaderboard Ranking público
GET /v1/plans Catálogo de planes y límites
POST /mcp Servidor MCP (JSON-RPC)

Qué devuelve un informe que no es tuyo

Un análisis público es legible por cualquiera — de ahí el ranking y /v1/sites/:domain — pero legible no significa divulgado. La nota, la puntuación y el desglose por pilares son públicos. Los hallazgos, los nombres de las herramientas, sus esquemas, las sugerencias y los scripts son del espacio de trabajo que ejecutó el análisis.

Cuando no es tuyo la respuesta sigue siendo 200 con el resumen, y meta.locked viene a true con meta.lockReason en not_owner. Analiza tú mismo ese dominio y el informe completo es tuyo.

{"scan":{"readiness_score":61,"readiness_grade":"C"},
 "suggestions":[],"findings":[],
 "meta":{"locked":true,"lockReason":"not_owner",
         "counts":{"suggestions":3,"blockers":1,"warnings":2}}}

Un análisis que arrancaste sin haber iniciado sesión pertenece al espacio anónimo hasta que creas la cuenta desde el propio informe; ahí pasa a ser tuyo.

Errores

{"error":{"code":"scan_quota_exceeded","message":"…","limit":25,"plan":"free"}}

Los límites de plan devuelven 402 (scan_quota_exceeded, concurrency_exceeded, tier_not_entitled, pages_exceeded), la autenticación 401, los permisos 403 (api_not_entitled, forbidden) y el ritmo 429.