{
  "openapi": "3.1.0",
  "info": {
    "title": "AZHub runtime",
    "version": "0.1.0",
    "summary": "Dual surface. Human UI is this Worker /v1. AI / MCP path is FragGate only (slug=azhub).",
    "description": "THIS IS: AZHub — a neutral spatial container / Blank Key (AIH-WP-1.0). Place, tether, and isolate modules. Declared tethers only (visible corridors). THIS IS NOT: AZInterface, AZBrowser, AZNet, a recommender, a ranker, a meaning engine, or activation-by-co-presence. Hub does not decide why anything matters. Blank Key geometry has no intent. Modules remain complete if Hub is removed. No helpful auto-wiring. Advisory only. Author: Aziel Eliab only. Agent door is FragGate only: POST https://aziel-runtime.vibelock.workers.dev/v1/fraggate/call {slug:azhub,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/azhub"
    }
  },
  "servers": [
    {
      "url": "https://azhub-download-tracker.vibelock.workers.dev"
    },
    {
      "url": "https://aziel-runtime.vibelock.workers.dev",
      "description": "aziel-runtime FragGate catalog"
    }
  ],
  "paths": {
    "/v1/health": {
      "get": {
        "operationId": "azhub_health",
        "summary": "Liveness. Does not increment downloads.",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    },
    "/v1/skill": {
      "get": {
        "operationId": "azhub_skill",
        "summary": "Skill markdown.",
        "responses": {
          "200": {
            "description": "markdown"
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "azhub_openapi",
        "summary": "OpenAPI 3.1 — first-class backend.",
        "responses": {
          "200": {
            "description": "spec"
          }
        }
      }
    },
    "/mcp": {
      "get": {
        "operationId": "azhub_mcp_docs",
        "summary": "MCP docs + FragGate pointer.",
        "responses": {
          "200": {
            "description": "docs"
          }
        }
      },
      "post": {
        "operationId": "azhub_mcp",
        "summary": "JSON-RPC MCP-over-HTTP pointer. Same ops as UI.",
        "responses": {
          "200": {
            "description": "rpc"
          }
        }
      }
    },
    "/v1/place": {
      "post": {
        "operationId": "azhub_place",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/list_modules": {
      "post": {
        "operationId": "azhub_list_modules",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/tether_declare": {
      "post": {
        "operationId": "azhub_tether_declare",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/tether_list": {
      "post": {
        "operationId": "azhub_tether_list",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/isolate": {
      "post": {
        "operationId": "azhub_isolate",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/blank_key_status": {
      "post": {
        "operationId": "azhub_blank_key_status",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/region_list": {
      "post": {
        "operationId": "azhub_region_list",
        "summary": "Alias of list_modules. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/place_module": {
      "post": {
        "operationId": "azhub_place_module",
        "summary": "Alias of place. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/remove_module": {
      "post": {
        "operationId": "azhub_remove_module",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/tether_cut": {
      "post": {
        "operationId": "azhub_tether_cut",
        "summary": "UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "display + result + receipt"
          }
        }
      }
    },
    "/v1/recommend": {
      "post": {
        "operationId": "azhub_recommend",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/rank": {
      "post": {
        "operationId": "azhub_rank",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/auto_wire": {
      "post": {
        "operationId": "azhub_auto_wire",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/interpret_meaning": {
      "post": {
        "operationId": "azhub_interpret_meaning",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/activate_by_copresence": {
      "post": {
        "operationId": "azhub_activate_by_copresence",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/scorch_remote": {
      "post": {
        "operationId": "azhub_scorch_remote",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/auto_unlock": {
      "post": {
        "operationId": "azhub_auto_unlock",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/ranking": {
      "post": {
        "operationId": "azhub_ranking",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/completeness_detect": {
      "post": {
        "operationId": "azhub_completeness_detect",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/unlock": {
      "post": {
        "operationId": "azhub_unlock",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/complete": {
      "post": {
        "operationId": "azhub_complete",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/completeness": {
      "post": {
        "operationId": "azhub_completeness",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/scorch": {
      "post": {
        "operationId": "azhub_scorch",
        "summary": "STUB — refuses. UI action + MCP/FragGate op.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FG-STUB refuse"
          }
        }
      }
    },
    "/v1/fraggate/call": {
      "post": {
        "operationId": "azhub_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": "azhub_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": "azhub_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": "azhub_runtime_list_proxy",
        "summary": "Alias PROXY → origin /v1/fraggate/list. Not a local op.",
        "responses": {
          "200": {
            "description": "hashed registry"
          }
        }
      }
    }
  }
}