{
  "source": "none",
  "spec": "",
  "active": {},
  "available": [
    {
      "id": "block-agents",
      "layer": "Reachability",
      "label": "Bot manager blocks agent user-agents",
      "detail": "Returns 403 to ClaudeBot / ChatGPT-User / PerplexityBot / GPTBot / Google-Extended. Humans see a perfectly healthy site."
    },
    {
      "id": "no-llms",
      "layer": "Reachability",
      "label": "/llms.txt returns 404",
      "detail": "Discovery manifest disappears after a CDN or router change. Nothing in the human experience regresses."
    },
    {
      "id": "slow-register",
      "layer": "Tool surface",
      "label": "Tool registration delayed (default 6000ms)",
      "detail": "Registration moves behind a lazy chunk or consent gate. Agents that sample early see zero tools.",
      "arg": "ms",
      "default": 6000
    },
    {
      "id": "tool-rename",
      "layer": "Tool surface",
      "label": "search_flights renamed to flightSearch",
      "detail": "A frontend refactor renames a tool. The page renders identically; every agent integration breaks."
    },
    {
      "id": "tool-missing",
      "layer": "Tool surface",
      "label": "book_flight not registered",
      "detail": "The revenue tool silently drops out of the manifest. Search still works, so most monitoring stays green."
    },
    {
      "id": "schema-drift",
      "layer": "Tool surface",
      "label": "inputSchema drift on search_flights",
      "detail": "departureDate becomes date and drops out of required[]. Agents start guessing parameters."
    },
    {
      "id": "no-declarative",
      "layer": "Tool surface",
      "label": "Declarative form annotations stripped",
      "detail": "Simulates edge-injected toolname/tooldescription attributes vanishing after an edge config rollback."
    },
    {
      "id": "slow-exec",
      "layer": "Execution",
      "label": "Tool execute() latency (default 8000ms)",
      "detail": "execute() stalls past a typical agent timeout while the page itself stays fast.",
      "arg": "ms",
      "default": 8000
    },
    {
      "id": "exec-error",
      "layer": "Execution",
      "label": "execute() throws",
      "detail": "The tool handler raises. Human UI paths still work because they use a different code path."
    },
    {
      "id": "bad-shape",
      "layer": "Execution",
      "label": "execute() returns malformed output",
      "detail": "Returns an HTML error blob instead of the documented JSON shape. HTTP 200 everywhere."
    },
    {
      "id": "no-hitl",
      "layer": "Execution",
      "label": "Human-in-the-loop confirmation removed",
      "detail": "book_flight stops calling requestUserInteraction. Nothing errors; the safety gate is just gone."
    },
    {
      "id": "api-500",
      "layer": "Dependency",
      "label": "Backing API returns 500",
      "detail": "The service behind the tools fails. Isolates \"tool broken\" from \"backend broken\" during triage."
    },
    {
      "id": "api-slow",
      "layer": "Dependency",
      "label": "Backing API latency (default 9000ms)",
      "detail": "Backend p95 blows out and drags every tool execution with it.",
      "arg": "ms",
      "default": 9000
    },
    {
      "id": "cls",
      "layer": "Agent experience",
      "label": "Inject a layout shift",
      "detail": "A late banner pushes the results list down. DOM-driving agents click the wrong row."
    },
    {
      "id": "strip-a11y",
      "layer": "Agent experience",
      "label": "Strip accessible names",
      "detail": "Buttons lose their labels and semantics. The fallback path for agents without WebMCP goes dark."
    }
  ]
}