{
  "openapi": "3.1.0",
  "info": {
    "title": "EmbryoLock runtime",
    "version": "1.2.0",
    "summary": "Local destructive vault. Hosted API never wipes. Vault/Custody.",
    "description": "THIS IS: a local destructive-by-design file vault (Vault/Custody). Failed authentication can permanently destroy the only copy. THIS IS NOT: a hosted vault, a recovery tool, a remote kill switch, or a replacement for audited encryption. Hosted /v1 never stores phrases or vault blobs and never executes wipe/scorch. Unlimited offline cloning is out of scope. Author: Aziel Eliab only. Suite mesh /v1/mesh/* PROXY to aziel-runtime (AZIEL_RUNTIME). Default OFF. GET never enables. QNM-BUILD-1.0 live|locked|isolated. No Node Gate. No auto-heal. Not anonymity. Aziel Eliab only."
  },
  "servers": [
    {
      "url": "https://embryolock-download-tracker.vibelock.workers.dev"
    }
  ],
  "paths": {
    "/v1/health": {
      "get": {
        "operationId": "embryolock_health",
        "summary": "Liveness. Does not increment download KV.",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    },
    "/v1/skill": {
      "get": {
        "operationId": "embryolock_skill",
        "summary": "Return skill markdown. Does not increment downloads.",
        "responses": {
          "200": {
            "description": "markdown"
          }
        }
      }
    },
    "/v1/policy": {
      "get": {
        "operationId": "embryolock_policy",
        "summary": "Public policy. Destructive ops local-only. Vault/Custody framing.",
        "responses": {
          "200": {
            "description": "policy"
          }
        }
      }
    },
    "/v1/doctor": {
      "get": {
        "operationId": "embryolock_doctor",
        "summary": "Worker-local self-check. No writes. No vault.",
        "responses": {
          "200": {
            "description": "doctor"
          }
        }
      }
    },
    "/v1/verify": {
      "get": {
        "operationId": "embryolock_verify_get",
        "summary": "Worker-local verify (alias of doctor).",
        "responses": {
          "200": {
            "description": "verify"
          }
        }
      },
      "post": {
        "operationId": "embryolock_verify",
        "summary": "Worker-local verify. Refuses destructive execute.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "verify"
          }
        }
      }
    },
    "/v1/example": {
      "get": {
        "operationId": "embryolock_example",
        "summary": "Sample calls. Does not increment downloads.",
        "responses": {
          "200": {
            "description": "example"
          }
        }
      }
    },
    "/v1/fraggate/list": {
      "get": {
        "operationId": "embryolock_fraggate_list_proxy",
        "summary": "PROXY to aziel-runtime GET /v1/fraggate/list via AZIEL_RUNTIME. Not a local op.",
        "responses": {
          "200": {
            "description": "hashed registry"
          }
        }
      }
    },
    "/v1/fraggate/describe": {
      "get": {
        "operationId": "embryolock_fraggate_describe_proxy",
        "summary": "PROXY to aziel-runtime GET /v1/fraggate/describe.",
        "responses": {
          "200": {
            "description": "describe"
          }
        }
      }
    },
    "/v1/fraggate/call": {
      "post": {
        "operationId": "embryolock_fraggate_call_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/fraggate/call.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "FragGate ResultEnvelope"
          }
        }
      }
    },
    "/v1/mesh": {
      "get": {
        "operationId": "embryolock_mesh_status_proxy",
        "summary": "PROXY to aziel-runtime GET /v1/mesh. Suite mesh status. Default OFF. QNS-CD-1.0 cross-map. Not a local op. Not a public qnsd proxy.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        }
      },
      "head": {
        "operationId": "embryolock_mesh_status_head_proxy",
        "summary": "PROXY to aziel-runtime GET /v1/mesh. Suite mesh status. Default OFF. QNS-CD-1.0 cross-map. Not a local op. Not a public qnsd proxy.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        }
      }
    },
    "/v1/mesh/status": {
      "get": {
        "operationId": "embryolock_mesh_status_proxy",
        "summary": "PROXY alias of GET /v1/mesh. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        }
      },
      "head": {
        "operationId": "embryolock_mesh_status_head_proxy",
        "summary": "PROXY alias of GET /v1/mesh. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        }
      }
    },
    "/v1/mesh/nodes": {
      "get": {
        "operationId": "embryolock_mesh_nodes_proxy",
        "summary": "PROXY to aziel-runtime GET /v1/mesh/nodes. Live Nodes (5-minute presence). Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        }
      },
      "head": {
        "operationId": "embryolock_mesh_nodes_head_proxy",
        "summary": "PROXY to aziel-runtime GET /v1/mesh/nodes. Live Nodes (5-minute presence). Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        }
      }
    },
    "/v1/mesh/enable": {
      "post": {
        "operationId": "embryolock_mesh_enable_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/mesh/enable. Operator bearer required. Rate-limited. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/v1/mesh/disable": {
      "post": {
        "operationId": "embryolock_mesh_disable_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/mesh/disable. Always allowed. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/v1/mesh/join": {
      "post": {
        "operationId": "embryolock_mesh_join_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/mesh/join. Body {product, node_id?, label?, presence?}. Refused while OFF. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/v1/mesh/heartbeat": {
      "post": {
        "operationId": "embryolock_mesh_heartbeat_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/mesh/heartbeat. Body {node_id}. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/v1/mesh/leave": {
      "post": {
        "operationId": "embryolock_mesh_leave_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/mesh/leave. Body {node_id}. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/v1/mesh/broadcast": {
      "post": {
        "operationId": "embryolock_mesh_broadcast_proxy",
        "summary": "PROXY to aziel-runtime POST /v1/mesh/broadcast. SHA-256 receipt only. Not AnonBroadcast upload. Not a local op.",
        "tags": [
          "mesh"
        ],
        "responses": {
          "200": {
            "description": "aziel-runtime mesh envelope"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/mcp": {
      "get": {
        "operationId": "embryolock_mcp_docs",
        "summary": "Dual-surface MCP docs + FragGate pointer (slug embryolock).",
        "responses": {
          "200": {
            "description": "docs"
          }
        }
      },
      "post": {
        "operationId": "embryolock_mcp",
        "summary": "JSON-RPC MCP-over-HTTP. Thin doubles of health/skill/policy/doctor/verify.",
        "responses": {
          "200": {
            "description": "rpc"
          }
        }
      }
    }
  }
}