mcp
get_audit
Herramienta MCP que recupera por id una auditoría ejecutada previamente. Devuelve puntuaciones por módulo, puntuación total y cada hallazgo con severidad y recomendación.
Qué hace esta herramienta
get_audit devuelve el resultado completo de una auditoría ejecutada previamente a partir de su audit_id. Es el objetivo de sondeo de run_audit y la forma canónica de leer cada hallazgo para una URL dada.
- Devuelve el mismo sobre
McpAuditResponsequerun_audit, pero con los hallazgos poblados una vez la auditoría completa. - Expone puntuaciones por módulo (0-100) en los 11 módulos de auditoría, más el
total_scoreagregado. - Incluye cada hallazgo con
module,rule_id,passed,severity,title,recommendationopcional y unadocs_url. - Devuelve
statusreflejando el estado aguas arriba:queued,running,completeofailed. - Proporciona un deep-link
report_urlal informe HTML enapp.metricspot.com.
Por qué importa
get_audit es el lado de lectura del servidor MCP. Los agentes la llaman para sondear una ejecución encolada, releer hallazgos de una auditoría anterior o comparar dos auditorías de la misma URL en el tiempo.
Flujos concretos:
- Un bot de comentarios en PR llama a
get_auditpara la auditoría anterior de una URL, compara eltotal_scorecon el nuevo y solo escala cuando la regresión cruza un umbral. - Un agente de “corrige un hallazgo cada vez” recorre
findingsfiltrados porseverity: critical, abre una issue por cada regla que falle y enlaza ladocs_urlcomo contexto.
Cómo usarla
Pasa el audit_id devuelto por run_audit (o por list_audits). El mismo id puede consultarse repetidamente; los resultados se cachean en servidor y leerlos es barato.
Esquema de entrada
{
"type": "object",
"properties": {
"audit_id": { "type": "string", "minLength": 1 }
},
"required": ["audit_id"]
}
Ejemplo de esquema de respuesta
{
"audit_id": "aud_01HZ8X9YP7K3T2N6Q5",
"url": "https://example.com",
"status": "complete",
"total_score": 82,
"module_scores": {
"technical": 95,
"onpage": 76,
"performance": 71,
"ai": 84,
"modern_seo": 80,
"social": 65,
"accessibility": 90,
"privacy": 78,
"readability": 85,
"tech_stack": 100
},
"findings": [
{
"module": "technical",
"rule_id": "technical.https",
"passed": true,
"severity": "critical",
"title": "Site is served over HTTPS",
"docs_url": "https://metricspot.com/docs/technical-https/"
},
{
"module": "ai",
"rule_id": "ai.llms_txt",
"passed": false,
"severity": "minor",
"title": "No llms.txt published",
"recommendation": "Add an llms.txt to /.well-known/ listing canonical docs URLs for LLM crawlers.",
"docs_url": "https://metricspot.com/docs/llms-txt/"
}
],
"report_url": "https://app.metricspot.com/audits/aud_01HZ8X9YP7K3T2N6Q5",
"created_at": "2026-05-13T10:18:04.000Z"
}
Claude Code
claude mcp add --transport http metricspot https://mcp.metricspot.com/mcp \
--header "Authorization: Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx"
Pide:
Recupera la auditoría de MetricSpot
aud_01HZ8X9YP7K3T2N6Q5y lista cada hallazgo fallido agrupado por módulo, ordenado por severidad.
Cursor
.cursor/mcp.json:
{
"mcpServers": {
"metricspot": {
"url": "https://mcp.metricspot.com/mcp",
"headers": {
"Authorization": "Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
Pide:
Trae la última auditoría de esta URL desde MetricSpot y reescribe el título de la página para corregir cualquier regla on-page que falle.
Python (sondear hasta completar)
import httpx, time, json
HEADERS = {
"content-type": "application/json",
"accept": "application/json, text/event-stream",
"authorization": "Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx",
}
def get_audit(audit_id):
r = httpx.post("https://mcp.metricspot.com/mcp", headers=HEADERS, json={
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "get_audit", "arguments": {"audit_id": audit_id}},
}, timeout=60.0)
return json.loads(r.json()["result"]["content"][0]["text"])
while True:
audit = get_audit("aud_01HZ8X9YP7K3T2N6Q5")
if audit["status"] in ("complete", "failed"):
break
time.sleep(3)
print("score:", audit["total_score"])
for f in audit["findings"]:
if not f["passed"] and f["severity"] in ("critical", "major"):
print(f["severity"], f["rule_id"], "-", f["title"])
Node / TypeScript (HTTP crudo)
const res = await fetch("https://mcp.metricspot.com/mcp", {
method: "POST",
headers: {
"content-type": "application/json",
accept: "application/json, text/event-stream",
authorization: "Bearer ms_live_xxxxxxxxxxxxxxxxxxxxxxxx",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "get_audit",
arguments: { audit_id: "aud_01HZ8X9YP7K3T2N6Q5" },
},
}),
});
const audit = JSON.parse((await res.json()).result.content[0].text);
console.log(audit.status, audit.total_score);
Errores comunes
| Código | Cuándo | Acción |
|---|---|---|
UNAUTHORIZED (401) | Token Bearer ausente o inválido | Emite una clave en https://app.metricspot.com/settings/api-keys |
AUDIT_NOT_FOUND (404) | El audit_id no pertenece a esta cuenta | Llama a list_audits para ver ids válidos |
FORBIDDEN (403) | El token carece de scope de lectura | Reemite la clave con el scope por defecto |
UPSTREAM_FAILED (5xx) | Error en el backend de la app | Reintenta; en fallos transitorios se establece retryable: true |
Preguntas frecuentes
¿Con qué frecuencia debo sondear una auditoría encolada?
Cada 3-5 segundos es el punto óptimo. La mayoría de auditorías completan en 10-30 s, así que 6-10 sondeos por auditoría es lo típico. No hay coste por llamada más allá de la red. Reduce el ritmo si status se queda en queued más de 90 s.
¿Puedo recuperar una auditoría que otra persona ejecutó?
No. La búsqueda de auditoría tiene scope al propietario de la clave API. Llamar a get_audit con un audit_id de otro usuario devuelve AUDIT_NOT_FOUND en lugar de filtrar que la auditoría existe. Las auditorías anónimas (id "anonymous") no se pueden recuperar en absoluto.
¿La respuesta incluye hallazgos para reglas que pasaron?
Sí. Cada regla evaluada por el motor está en findings, con passed: true o passed: false. Filtra del lado cliente para exponer solo los fallos, o para calcular tasas de aprobado por módulo.
Fuentes
Última actualización 2026-05-13