{"openapi":"3.1.0","info":{"title":"agentcheck","version":"0.2.0","description":"Drift and regression monitoring for AI agents and MCP servers. Errors are JSON with code, cause, fix, retryable. Authenticate with `Authorization: Bearer ak_live_…` (create keys at /dashboard/keys)."},"servers":[{"url":"https://agentwares-agentcheck.vercel.app"}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"ak_live_…"}},"schemas":{"Error":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}},"TargetInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"description":"display name; defaults to the host","type":"string","minLength":1,"maxLength":80},"slug":{"description":"URL slug for /<owner>/<slug>; defaults to a slug of the name","type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$"},"kind":{"type":"string","enum":["http","mcp","a2a"],"description":"http (JSON or chat endpoint), mcp (Streamable HTTP url, or npx/uvx package spec), a2a (agent card)"},"url":{"description":"endpoint URL (http/mcp) or the agent's origin (a2a)","type":"string","format":"uri"},"packageSpec":{"description":"mcp only: `npx @org/server` / `uvx server` — runs on the mcpcheck runner, not the minute checks","type":"string"},"agentCardUrl":{"description":"a2a: explicit agent card URL when it is not at /.well-known/agent-card.json","type":"string","format":"uri"},"format":{"description":"http: openai_chat (POST /chat/completions body), json (raw POST), get (plain fetch)","type":"string","enum":["openai_chat","json","get"]},"headers":{"description":"extra request headers","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"auth":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"bearer"},"token":{"type":"string"}},"required":["type","token"]},{"type":"object","properties":{"type":{"type":"string","const":"header"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"]}]},"modelVar":{"description":"the model your agent runs on (e.g. claude-sonnet-5); enables model-drift re-runs","type":"string"},"modelHeader":{"description":"request header your endpoint accepts to override the model (drift re-runs try the new model)","type":"string"},"corpusUrl":{"description":"RAG targets: public corpus URL for the nightly groundedness scorer (Pro)","type":"string","format":"uri"},"alerts":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"slackWebhookUrl":{"type":"string","format":"uri"},"discordWebhookUrl":{"type":"string","format":"uri"}}},"isPublic":{"default":true,"description":"public status page + badge (default true)","type":"boolean"},"checks":{"description":"checks to create right away (the probe proposes three)","maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"description":"short name shown on the status page"},"kind":{"type":"string","enum":["http","mcp_tools_list","mcp_tool_call","a2a_task","custom"],"description":"what to run: http (GET path or POST prompt), mcp_tools_list, mcp_tool_call (tool + args), a2a_task (message)"},"input":{"default":{},"description":"http: { path?, method?, body?, prompt? } · mcp_tool_call: { tool, args } · a2a_task: { message }","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"golden":{"type":"object","properties":{"kind":{"type":"string","enum":["exact","contains","regex","json_schema","rubric","baseline"],"description":"how the answer is judged; exact/contains/regex/json_schema cost nothing, rubric/baseline use the LLM judge"},"value":{"description":"exact / contains: the expected text","type":"string"},"pattern":{"description":"regex: pattern source without slashes","type":"string"},"caseInsensitive":{"type":"boolean"},"schema":{"description":"json_schema: JSON Schema (draft 2020-12 subset)","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"rubric":{"description":"rubric: what a passing answer must do, in plain language","type":"string"},"expected":{"description":"rubric: a reference answer, when there is one","type":"string"},"tools":{"description":"expected tool-call sequence (replay checks)","type":"array","items":{"type":"string"}}},"required":["kind"]},"intervalSec":{"default":3600,"description":"seconds between runs; the tier's interval is the floor (Free hourly, Starter+ 5 min)","type":"integer","minimum":60,"maximum":604800}},"required":["name","kind","golden"]}}},"required":["kind"]},"CheckInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"description":"short name shown on the status page"},"kind":{"type":"string","enum":["http","mcp_tools_list","mcp_tool_call","a2a_task","custom"],"description":"what to run: http (GET path or POST prompt), mcp_tools_list, mcp_tool_call (tool + args), a2a_task (message)"},"input":{"default":{},"description":"http: { path?, method?, body?, prompt? } · mcp_tool_call: { tool, args } · a2a_task: { message }","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"golden":{"type":"object","properties":{"kind":{"type":"string","enum":["exact","contains","regex","json_schema","rubric","baseline"],"description":"how the answer is judged; exact/contains/regex/json_schema cost nothing, rubric/baseline use the LLM judge"},"value":{"description":"exact / contains: the expected text","type":"string"},"pattern":{"description":"regex: pattern source without slashes","type":"string"},"caseInsensitive":{"type":"boolean"},"schema":{"description":"json_schema: JSON Schema (draft 2020-12 subset)","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"rubric":{"description":"rubric: what a passing answer must do, in plain language","type":"string"},"expected":{"description":"rubric: a reference answer, when there is one","type":"string"},"tools":{"description":"expected tool-call sequence (replay checks)","type":"array","items":{"type":"string"}}},"required":["kind"]},"intervalSec":{"default":3600,"description":"seconds between runs; the tier's interval is the floor (Free hourly, Starter+ 5 min)","type":"integer","minimum":60,"maximum":604800}},"required":["name","kind","golden"]},"ProbeInput":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","enum":["http","mcp","a2a"],"description":"http (JSON or chat endpoint), mcp (Streamable HTTP url, or npx/uvx package spec), a2a (agent card)"},"url":{"description":"endpoint URL (http/mcp) or the agent's origin (a2a)","type":"string","format":"uri"},"packageSpec":{"description":"mcp only: `npx @org/server` / `uvx server` — runs on the mcpcheck runner, not the minute checks","type":"string"},"agentCardUrl":{"description":"a2a: explicit agent card URL when it is not at /.well-known/agent-card.json","type":"string","format":"uri"},"format":{"description":"http: openai_chat (POST /chat/completions body), json (raw POST), get (plain fetch)","type":"string","enum":["openai_chat","json","get"]},"headers":{"description":"extra request headers","type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"auth":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","const":"bearer"},"token":{"type":"string"}},"required":["type","token"]},{"type":"object","properties":{"type":{"type":"string","const":"header"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type","name","value"]}]},"modelVar":{"description":"the model your agent runs on (e.g. claude-sonnet-5); enables model-drift re-runs","type":"string"}},"required":["kind"]}}},"security":[{"apiKey":[]}],"paths":{"/api/health":{"get":{"summary":"Service health","security":[],"responses":{"200":{"description":"ok"}}}},"/pricing.json":{"get":{"summary":"Machine-readable pricing","security":[],"responses":{"200":{"description":"pricing"}}}},"/drift.json":{"get":{"summary":"Public model-drift index: daily pass rate and changed answers per model","security":[],"responses":{"200":{"description":"drift index"}}}},"/{owner}/{slug}/trust.json":{"get":{"summary":"Trust summary for a public target (uptime, last nightly, models seen)","security":[],"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"trust.json"},"404":{"description":"unknown or private target"}}}},"/badge/{owner}/{slug}.svg":{"get":{"summary":"Status badge (SVG, cached 5 minutes)","security":[],"parameters":[{"name":"owner","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"image/svg+xml"}}}},"/api/v1/probe":{"post":{"summary":"Probe a would-be target and propose three checks","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProbeInput"}}}},"responses":{"200":{"description":"probe report + proposed checks"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/targets":{"get":{"summary":"List your targets","responses":{"200":{"description":"targets"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}},"post":{"summary":"Enroll a target (mirror of agentcheck_create_target)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetInput"}}}},"responses":{"201":{"description":"target with status/badge URLs and README snippet"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/targets/{id}":{"get":{"summary":"Target detail: checks with recent results, incidents, traces, runs","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"target"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}},"patch":{"summary":"Update name, status, visibility, model/alert settings","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"target"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}},"delete":{"summary":"Delete a target and its history","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"deleted"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/targets/{id}/checks":{"get":{"summary":"List checks","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"checks"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}},"post":{"summary":"Add a check (mirror of agentcheck_add_check)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckInput"}}}},"responses":{"201":{"description":"check"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/targets/{id}/checks/{checkId}":{"delete":{"summary":"Remove a check","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"checkId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"deleted"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/targets/{id}/run":{"post":{"summary":"Run every check now (mirror of agentcheck_run_now)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"per-check outcomes"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/targets/{id}/traces":{"get":{"summary":"List imported traces","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"traces"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}},"post":{"summary":"Import traces: paste { input, output, toolCalls }, Langfuse/LangSmith export, Promptfoo/Braintrust results","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["paste","langfuse","langsmith","agentcheck_record","promptfoo","braintrust"]},"traces":{}}}}}},"responses":{"201":{"description":"imported traces"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/traces/{traceId}/promote":{"post":{"summary":"Promote a trace to a replayable check (mirror of agentcheck_promote_trace)","parameters":[{"name":"traceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"check"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/incidents":{"get":{"summary":"Open and recent incidents (mirror of agentcheck_list_incidents)","parameters":[{"name":"target","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"incidents"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/v1/keys":{"get":{"summary":"List API keys (session only)","responses":{"200":{"description":"keys"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}},"post":{"summary":"Create an API key; the value is returned once (session only)","responses":{"201":{"description":"key"},"400":{"description":"invalid input","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"401":{"description":"missing or invalid API key","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"402":{"description":"tier limit (TARGET_LIMIT)","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}},"404":{"description":"not found","content":{"application/json":{"schema":{"type":"object","required":["code","cause","fix","retryable"],"properties":{"code":{"type":"string"},"cause":{"type":"string"},"fix":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}}}},"/api/mcp":{"post":{"summary":"MCP server (Streamable HTTP). Tools: agentcheck_get_status, agentcheck_get_pricing, agentcheck_create_target, agentcheck_add_check, agentcheck_run_now, agentcheck_record, agentcheck_promote_trace, agentcheck_list_incidents.","security":[],"responses":{"200":{"description":"JSON-RPC response"}}}}}}