{
  "openapi": "3.1.0",
  "info": {
    "title": "AZBrowser runtime",
    "version": "0.1.0",
    "summary": "Dual surface. Human UI is this Worker /v1. AI / MCP path is FragGate only (slug=azbrowser).",
    "description": "THIS IS: a Phase 1 research-browser shell (browser-chrome UX) with controlled fetch/proxy preview, receipted airlock, and Lamb Lens ethical search. THIS IS NOT: a Chromium/Firefox/Safari replacement, a full OS browser, a VPN, AZ-OS, Lumen, AZInterface, or AZNet. v0.1 cannot ship a Chromium binary. AZNet is a separate product/engine; pairing is order/token only — not a shared Phase-1 UI (https://github.com/AzielEliab/aznet). AZMail is a separate sibling repo (https://github.com/AzielEliab/azmail) — optional deep-link only. No receipt = no action. Advisory only. Author: Aziel Eliab only. Agent door is FragGate only: POST https://aziel-runtime.vibelock.workers.dev/v1/fraggate/call {slug:azbrowser,op,payload}. Catalog MCP: POST https://aziel-runtime.vibelock.workers.dev/mcp. This host /mcp is a pointer, not a second agent brand. Human chrome uses same-origin /v1.",
    "license": {
      "name": "Apache-2.0",
      "identifier": "Apache-2.0"
    },
    "contact": {
      "name": "Aziel Eliab",
      "url": "https://github.com/AzielEliab/azbrowser"
    }
  },
  "servers": [
    {
      "url": "https://azbrowser-download-tracker.vibelock.workers.dev"
    },
    {
      "url": "https://aziel-runtime.vibelock.workers.dev",
      "description": "aziel-runtime FragGate catalog"
    }
  ],
  "paths": {
    "/v1/health": {
      "get": {
        "operationId": "azbrowser_health",
        "summary": "Liveness. Does not increment downloads.",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    },
    "/v1/skill": {
      "get": {
        "operationId": "azbrowser_skill",
        "summary": "Skill markdown.",
        "responses": {
          "200": {
            "description": "markdown"
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "azbrowser_openapi",
        "summary": "OpenAPI 3.1 — first-class backend.",
        "responses": {
          "200": {
            "description": "spec"
          }
        }
      }
    },
    "/mcp": {
      "get": {
        "operationId": "azbrowser_mcp_docs",
        "summary": "MCP docs + FragGate pointer.",
        "responses": {
          "200": {
            "description": "docs"
          }
        }
      },
      "post": {
        "operationId": "azbrowser_mcp",
        "summary": "JSON-RPC MCP-over-HTTP (tools/list, tools/call). Same ops as UI.",
        "responses": {
          "200": {
            "description": "rpc"
          }
        }
      }
    },
    "/v1/navigate": {
      "post": {
        "operationId": "azbrowser_navigate",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/preview": {
      "post": {
        "operationId": "azbrowser_preview",
        "summary": "Alias of navigate. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/reload": {
      "post": {
        "operationId": "azbrowser_reload",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/back": {
      "post": {
        "operationId": "azbrowser_back",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/forward": {
      "post": {
        "operationId": "azbrowser_forward",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/home": {
      "post": {
        "operationId": "azbrowser_home",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/tab_new": {
      "post": {
        "operationId": "azbrowser_tab_new",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/tab_close": {
      "post": {
        "operationId": "azbrowser_tab_close",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/tab_switch": {
      "post": {
        "operationId": "azbrowser_tab_switch",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/tab_list": {
      "post": {
        "operationId": "azbrowser_tab_list",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/ethical_search": {
      "post": {
        "operationId": "azbrowser_ethical_search",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/lamb_lens": {
      "post": {
        "operationId": "azbrowser_lamb_lens",
        "summary": "Alias of ethical_search. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/search": {
      "post": {
        "operationId": "azbrowser_search",
        "summary": "Alias of ethical_search. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/airlock": {
      "post": {
        "operationId": "azbrowser_airlock",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/airlock_status": {
      "post": {
        "operationId": "azbrowser_airlock_status",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/receipt": {
      "post": {
        "operationId": "azbrowser_receipt",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/receipts": {
      "post": {
        "operationId": "azbrowser_receipts",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/receipt_verify": {
      "post": {
        "operationId": "azbrowser_receipt_verify",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/scrub": {
      "post": {
        "operationId": "azbrowser_scrub",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/ethics_gate": {
      "post": {
        "operationId": "azbrowser_ethics_gate",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/fraggate/call": {
      "post": {
        "operationId": "azbrowser_fraggate_call_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/fraggate/call. Not a local op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FragGate ResultEnvelope"
          }
        }
      }
    },
    "/v1/fraggate/list": {
      "get": {
        "operationId": "azbrowser_fraggate_list_proxy",
        "summary": "PROXY to aziel-runtime GET /v1/fraggate/list. Not a local op.",
        "responses": {
          "200": {
            "description": "hashed registry"
          }
        }
      }
    },
    "/v1/runtime/call": {
      "post": {
        "operationId": "azbrowser_runtime_call_proxy",
        "summary": "Alias PROXY → origin /v1/fraggate/call. Not a local op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FragGate ResultEnvelope"
          }
        }
      }
    },
    "/v1/runtime/list": {
      "get": {
        "operationId": "azbrowser_runtime_list_proxy",
        "summary": "Alias PROXY → origin /v1/fraggate/list. Not a local op.",
        "responses": {
          "200": {
            "description": "hashed registry"
          }
        }
      }
    }
  }
}