{
  "components": {
    "schemas": {
      "AuthorizeRequest": {
        "additionalProperties": false,
        "properties": {
          "browser_session_id": {
            "maxLength": 256,
            "minLength": 1,
            "title": "Browser Session Id",
            "type": "string"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional caller-requested scope subset. Must be a subset of the provider's administrator-configured scopes; anything wider is rejected, never silently narrowed to the ceiling.",
            "title": "Scopes"
          }
        },
        "required": [
          "browser_session_id"
        ],
        "title": "AuthorizeRequest",
        "type": "object"
      },
      "AuthorizeResponse": {
        "properties": {
          "authorization_url": {
            "title": "Authorization Url",
            "type": "string"
          }
        },
        "required": [
          "authorization_url"
        ],
        "title": "AuthorizeResponse",
        "type": "object"
      },
      "Body_transcribe_voice_chunk_api_enhanced_voice_transcribe_post": {
        "properties": {
          "file": {
            "contentMediaType": "application/octet-stream",
            "title": "File",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "title": "Body_transcribe_voice_chunk_api_enhanced_voice_transcribe_post",
        "type": "object"
      },
      "Body_upload_file_api_enhanced_upload_post": {
        "properties": {
          "file": {
            "contentMediaType": "application/octet-stream",
            "title": "File",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "title": "Body_upload_file_api_enhanced_upload_post",
        "type": "object"
      },
      "DashboardLayout-Input": {
        "description": "Full dashboard configuration \u2014 groups, settings, theme.\n\nPersisted to YAML at the XDG config path.",
        "properties": {
          "auto_refresh": {
            "default": true,
            "title": "Auto Refresh",
            "type": "boolean"
          },
          "card_size": {
            "default": "medium",
            "description": "Card size: small, medium, large",
            "title": "Card Size",
            "type": "string"
          },
          "columns": {
            "default": 4,
            "description": "Number of grid columns",
            "maximum": 12.0,
            "minimum": 1.0,
            "title": "Columns",
            "type": "integer"
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/ServiceGroup-Input"
            },
            "maxItems": 128,
            "title": "Groups",
            "type": "array"
          },
          "refresh_interval": {
            "default": 30,
            "description": "Global default refresh interval in seconds",
            "maximum": 86400.0,
            "minimum": 1.0,
            "title": "Refresh Interval",
            "type": "integer"
          },
          "show_search": {
            "default": true,
            "title": "Show Search",
            "type": "boolean"
          },
          "show_status_indicators": {
            "default": true,
            "title": "Show Status Indicators",
            "type": "boolean"
          },
          "theme": {
            "default": "system",
            "description": "Theme: system, dark, light, glass",
            "title": "Theme",
            "type": "string"
          }
        },
        "title": "DashboardLayout",
        "type": "object"
      },
      "DashboardLayout-Output": {
        "description": "Full dashboard configuration \u2014 groups, settings, theme.\n\nPersisted to YAML at the XDG config path.",
        "properties": {
          "auto_refresh": {
            "default": true,
            "title": "Auto Refresh",
            "type": "boolean"
          },
          "card_size": {
            "default": "medium",
            "description": "Card size: small, medium, large",
            "title": "Card Size",
            "type": "string"
          },
          "columns": {
            "default": 4,
            "description": "Number of grid columns",
            "maximum": 12.0,
            "minimum": 1.0,
            "title": "Columns",
            "type": "integer"
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/ServiceGroup-Output"
            },
            "maxItems": 128,
            "title": "Groups",
            "type": "array"
          },
          "refresh_interval": {
            "default": 30,
            "description": "Global default refresh interval in seconds",
            "maximum": 86400.0,
            "minimum": 1.0,
            "title": "Refresh Interval",
            "type": "integer"
          },
          "show_search": {
            "default": true,
            "title": "Show Search",
            "type": "boolean"
          },
          "show_status_indicators": {
            "default": true,
            "title": "Show Status Indicators",
            "type": "boolean"
          },
          "theme": {
            "default": "system",
            "description": "Theme: system, dark, light, glass",
            "title": "Theme",
            "type": "string"
          }
        },
        "title": "DashboardLayout",
        "type": "object"
      },
      "DashboardResponse": {
        "properties": {
          "data": {
            "additionalProperties": {
              "$ref": "#/components/schemas/WidgetData"
            },
            "title": "Data",
            "type": "object"
          },
          "layout": {
            "$ref": "#/components/schemas/DashboardLayout-Output"
          }
        },
        "required": [
          "layout",
          "data"
        ],
        "title": "DashboardResponse",
        "type": "object"
      },
      "EditorContextPayload": {
        "description": "Published by the `agent-webui-bridge` openvscode-server extension (R4):\nthe workbench's active file, selection, cursor, dirty state, and\ndiagnostics, so the shell -- and the chat agent -- always has context for\nwhat the operator is looking at in the embedded Workspace IDE.",
        "properties": {
          "capturedAt": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Capturedat"
          },
          "cursor": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EditorCursorContext"
              },
              {
                "type": "null"
              }
            ]
          },
          "diagnostics": {
            "items": {
              "$ref": "#/components/schemas/EditorDiagnosticContext"
            },
            "maxItems": 25,
            "title": "Diagnostics",
            "type": "array"
          },
          "dirty": {
            "default": false,
            "title": "Dirty",
            "type": "boolean"
          },
          "filePath": {
            "anyOf": [
              {
                "maxLength": 4096,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filepath"
          },
          "languageId": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Languageid"
          },
          "selection": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EditorSelectionContext"
              },
              {
                "type": "null"
              }
            ]
          },
          "workspaceRoot": {
            "anyOf": [
              {
                "maxLength": 4096,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Workspaceroot"
          }
        },
        "title": "EditorContextPayload",
        "type": "object"
      },
      "EditorCursorContext": {
        "properties": {
          "character": {
            "minimum": 0.0,
            "title": "Character",
            "type": "integer"
          },
          "line": {
            "minimum": 0.0,
            "title": "Line",
            "type": "integer"
          }
        },
        "required": [
          "line",
          "character"
        ],
        "title": "EditorCursorContext",
        "type": "object"
      },
      "EditorDiagnosticContext": {
        "properties": {
          "character": {
            "minimum": 0.0,
            "title": "Character",
            "type": "integer"
          },
          "line": {
            "minimum": 0.0,
            "title": "Line",
            "type": "integer"
          },
          "message": {
            "maxLength": 1024,
            "title": "Message",
            "type": "string"
          },
          "severity": {
            "maxLength": 32,
            "title": "Severity",
            "type": "string"
          },
          "source": {
            "anyOf": [
              {
                "maxLength": 128,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          }
        },
        "required": [
          "severity",
          "message",
          "line",
          "character"
        ],
        "title": "EditorDiagnosticContext",
        "type": "object"
      },
      "EditorSelectionContext": {
        "description": "Selection range published by the `agent-webui-bridge` extension (R4).",
        "properties": {
          "endCharacter": {
            "minimum": 0.0,
            "title": "Endcharacter",
            "type": "integer"
          },
          "endLine": {
            "minimum": 0.0,
            "title": "Endline",
            "type": "integer"
          },
          "isEmpty": {
            "default": true,
            "title": "Isempty",
            "type": "boolean"
          },
          "startCharacter": {
            "minimum": 0.0,
            "title": "Startcharacter",
            "type": "integer"
          },
          "startLine": {
            "minimum": 0.0,
            "title": "Startline",
            "type": "integer"
          },
          "text": {
            "default": "",
            "maxLength": 4096,
            "title": "Text",
            "type": "string"
          }
        },
        "required": [
          "startLine",
          "startCharacter",
          "endLine",
          "endCharacter"
        ],
        "title": "EditorSelectionContext",
        "type": "object"
      },
      "GraphToolResponse": {
        "additionalProperties": false,
        "description": "The uniform success envelope every route in this module returns.\n\nBuilt by ``kg_server.py`` as\n``JSONResponse({\"status\": \"success\", \"result\": safe_json_load(res)})``\nimmediately after each route's ``_execute_tool(...)`` call succeeds. A\nfailed call never reaches this shape \u2014 it returns a differently-shaped\nerror JSON body (built by ``_external_error_response``/\n``public_error_payload``) with a non-2xx status code instead, so this\nmodel documents the success case only.\n\n``result`` is genuinely free-form and deliberately typed ``Any`` rather\nthan given an invented structure: most of the underlying ``graph_write``/\n``graph_ingest`` tool actions return a plain human-readable string (e.g.\n``\"Node n1 added.\"``, ``\"Edge a -> b deleted.\"``), while others return a\nJSON-encoded object whose keys vary by internal branch (e.g.\n``bulk_ingest``'s ``noop``/``change_envelope``/``batch_update`` modes each\ncarry a different key set; ``job_status`` returns a status line followed\nby a pretty-printed JSON metrics block, which ``safe_json_load`` leaves as\na plain string since the whole thing is not valid JSON). Treat ``result``\nas route- and action-specific free text/JSON to inspect at read time, not\nas a typed contract.",
        "examples": [
          {
            "result": "Node n1 added.",
            "status": "success"
          },
          {
            "result": {
              "action": "bulk_ingest",
              "applied_ops": 4,
              "chunk_sizes": [
                4
              ],
              "chunks": 1,
              "edges_ingested": 1,
              "mode": "batch_update",
              "nodes_ingested": 3,
              "upsert": true
            },
            "status": "success"
          }
        ],
        "properties": {
          "result": {
            "description": "The underlying graph-os tool's return value, JSON-decoded when it was a JSON-parseable string and passed through unchanged otherwise (``safe_json_load``). Shape varies by route and, for the action-routed base endpoints, by the caller's own ``action`` \u2014 see this route's tool implementation in ``agent_utilities/mcp/tools/write_ingest_tools.py`` for the exact shape a given action produces.",
            "title": "Result"
          },
          "status": {
            "const": "success",
            "description": "Always 'success' on this envelope. A failed tool call or malformed request produces a separate error-shaped JSON body with a non-2xx HTTP status instead of this model.",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "result"
        ],
        "title": "GraphToolResponse",
        "type": "object"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "OntologyEnvelope": {
        "description": "Uniform response envelope for the granular ontology reads.",
        "properties": {
          "result": {
            "description": "Tool result payload.",
            "title": "Result"
          },
          "status": {
            "default": "success",
            "title": "Status",
            "type": "string"
          }
        },
        "title": "OntologyEnvelope",
        "type": "object"
      },
      "OntologyGenerateRequest": {
        "description": "Request body for ``POST /ontology/generate``.",
        "properties": {
          "object_type": {
            "default": "",
            "description": "Optional domain hint, e.g. 'clinical_trial'.",
            "title": "Object Type",
            "type": "string"
          },
          "sample_text": {
            "default": "",
            "description": "Representative document/business-scenario text to model.",
            "title": "Sample Text",
            "type": "string"
          }
        },
        "title": "OntologyGenerateRequest",
        "type": "object"
      },
      "OntologyLoadRequest": {
        "description": "Request body for ``POST /ontology/load``.",
        "properties": {
          "category": {
            "default": "",
            "description": "Optional catalogue category label, e.g. 'finance'.",
            "title": "Category",
            "type": "string"
          },
          "iri": {
            "default": "",
            "description": "Optional IRI override (defaults to the ontology's own declared IRI).",
            "title": "Iri",
            "type": "string"
          },
          "source": {
            "default": "",
            "description": "A .ttl/OWL file path, HTTP(S) URL, or raw turtle/RDF text.",
            "title": "Source",
            "type": "string"
          },
          "source_type": {
            "default": "auto",
            "description": "How to read `source`: 'file' | 'url' | 'text' | 'auto' (sniff).",
            "title": "Source Type",
            "type": "string"
          },
          "tags": {
            "description": "Optional catalogue tags.",
            "items": {
              "type": "string"
            },
            "title": "Tags",
            "type": "array"
          },
          "version": {
            "default": "",
            "description": "Optional version (defaults to '1.0.0').",
            "title": "Version",
            "type": "string"
          }
        },
        "title": "OntologyLoadRequest",
        "type": "object"
      },
      "OntologyValidateRequest": {
        "description": "Request body for ``POST /ontology/validate``.",
        "properties": {
          "source": {
            "default": "",
            "description": "A .ttl/OWL file path, HTTP(S) URL, or raw turtle/RDF text.",
            "title": "Source",
            "type": "string"
          },
          "source_type": {
            "default": "auto",
            "description": "How to read `source`: 'file' | 'url' | 'text' | 'auto'.",
            "title": "Source Type",
            "type": "string"
          }
        },
        "title": "OntologyValidateRequest",
        "type": "object"
      },
      "RegistryDiscovery": {
        "additionalProperties": false,
        "description": "Privacy-safe observed discovery state for one server.",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string"
          },
          "last_error": {
            "default": "",
            "title": "Last Error",
            "type": "string"
          },
          "observed_at": {
            "default": "",
            "title": "Observed At",
            "type": "string"
          },
          "prompt_count": {
            "default": 0,
            "title": "Prompt Count",
            "type": "integer"
          },
          "reachable": {
            "default": false,
            "title": "Reachable",
            "type": "boolean"
          },
          "resource_count": {
            "default": 0,
            "title": "Resource Count",
            "type": "integer"
          },
          "server_id": {
            "title": "Server Id",
            "type": "string"
          },
          "server_name": {
            "title": "Server Name",
            "type": "string"
          },
          "skill_count": {
            "default": 0,
            "title": "Skill Count",
            "type": "integer"
          },
          "tool_count": {
            "default": 0,
            "title": "Tool Count",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "server_id",
          "server_name"
        ],
        "title": "RegistryDiscovery",
        "type": "object"
      },
      "RegistryItemEnvelope_RegistryDiscovery_": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/RegistryDiscovery"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "item"
        ],
        "title": "RegistryItemEnvelope[RegistryDiscovery]",
        "type": "object"
      },
      "RegistryItemEnvelope_RegistryPrompt_": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/RegistryPrompt"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "item"
        ],
        "title": "RegistryItemEnvelope[RegistryPrompt]",
        "type": "object"
      },
      "RegistryItemEnvelope_RegistryResource_": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/RegistryResource"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "item"
        ],
        "title": "RegistryItemEnvelope[RegistryResource]",
        "type": "object"
      },
      "RegistryItemEnvelope_RegistryServer_": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/RegistryServer"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "item"
        ],
        "title": "RegistryItemEnvelope[RegistryServer]",
        "type": "object"
      },
      "RegistryItemEnvelope_RegistrySkill_": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/RegistrySkill"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "item"
        ],
        "title": "RegistryItemEnvelope[RegistrySkill]",
        "type": "object"
      },
      "RegistryItemEnvelope_RegistryTool_": {
        "properties": {
          "item": {
            "$ref": "#/components/schemas/RegistryTool"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "item"
        ],
        "title": "RegistryItemEnvelope[RegistryTool]",
        "type": "object"
      },
      "RegistryPage_RegistryDiscovery_": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RegistryDiscovery"
            },
            "title": "Items",
            "type": "array"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "items",
          "count"
        ],
        "title": "RegistryPage[RegistryDiscovery]",
        "type": "object"
      },
      "RegistryPage_RegistryPrompt_": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RegistryPrompt"
            },
            "title": "Items",
            "type": "array"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "items",
          "count"
        ],
        "title": "RegistryPage[RegistryPrompt]",
        "type": "object"
      },
      "RegistryPage_RegistryResource_": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RegistryResource"
            },
            "title": "Items",
            "type": "array"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "items",
          "count"
        ],
        "title": "RegistryPage[RegistryResource]",
        "type": "object"
      },
      "RegistryPage_RegistryServer_": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RegistryServer"
            },
            "title": "Items",
            "type": "array"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "items",
          "count"
        ],
        "title": "RegistryPage[RegistryServer]",
        "type": "object"
      },
      "RegistryPage_RegistrySkill_": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RegistrySkill"
            },
            "title": "Items",
            "type": "array"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "items",
          "count"
        ],
        "title": "RegistryPage[RegistrySkill]",
        "type": "object"
      },
      "RegistryPage_RegistryTool_": {
        "additionalProperties": false,
        "properties": {
          "count": {
            "minimum": 0.0,
            "title": "Count",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/RegistryTool"
            },
            "title": "Items",
            "type": "array"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Cursor"
          },
          "status": {
            "const": "ok",
            "default": "ok",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "items",
          "count"
        ],
        "title": "RegistryPage[RegistryTool]",
        "type": "object"
      },
      "RegistryPrompt": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "server_id": {
            "title": "Server Id",
            "type": "string"
          },
          "server_name": {
            "title": "Server Name",
            "type": "string"
          },
          "uri": {
            "default": "",
            "title": "Uri",
            "type": "string"
          }
        },
        "required": [
          "id",
          "server_id",
          "server_name",
          "name"
        ],
        "title": "RegistryPrompt",
        "type": "object"
      },
      "RegistryResource": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "mime_type": {
            "default": "",
            "title": "Mime Type",
            "type": "string"
          },
          "name": {
            "default": "",
            "title": "Name",
            "type": "string"
          },
          "resource_kind": {
            "default": "",
            "title": "Resource Kind",
            "type": "string"
          },
          "server_id": {
            "title": "Server Id",
            "type": "string"
          },
          "server_name": {
            "title": "Server Name",
            "type": "string"
          },
          "uri": {
            "default": "",
            "title": "Uri",
            "type": "string"
          }
        },
        "required": [
          "id",
          "server_id",
          "server_name"
        ],
        "title": "RegistryResource",
        "type": "object"
      },
      "RegistryServer": {
        "additionalProperties": false,
        "description": "Public desired registration metadata (never credentials).",
        "properties": {
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "transport": {
            "default": "",
            "title": "Transport",
            "type": "string"
          },
          "url": {
            "default": "",
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "RegistryServer",
        "type": "object"
      },
      "RegistrySkill": {
        "additionalProperties": false,
        "properties": {
          "classification": {
            "default": "",
            "title": "Classification",
            "type": "string"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "mcp_server": {
            "default": "",
            "title": "Mcp Server",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "provider": {
            "default": "",
            "title": "Provider",
            "type": "string"
          },
          "skill_type": {
            "default": "",
            "title": "Skill Type",
            "type": "string"
          },
          "uri": {
            "default": "",
            "title": "Uri",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "RegistrySkill",
        "type": "object"
      },
      "RegistryTool": {
        "additionalProperties": false,
        "description": "Public tool contract metadata; raw schema is intentionally omitted.",
        "properties": {
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "schema_digest": {
            "default": "",
            "title": "Schema Digest",
            "type": "string"
          },
          "server_id": {
            "title": "Server Id",
            "type": "string"
          },
          "server_name": {
            "title": "Server Name",
            "type": "string"
          },
          "tool_mode": {
            "default": "",
            "title": "Tool Mode",
            "type": "string"
          }
        },
        "required": [
          "id",
          "server_id",
          "server_name",
          "name"
        ],
        "title": "RegistryTool",
        "type": "object"
      },
      "ResearchEnvelope": {
        "description": "Uniform response envelope for the research surface.",
        "properties": {
          "result": {
            "description": "ARA action result payload.",
            "title": "Result"
          },
          "status": {
            "default": "success",
            "title": "Status",
            "type": "string"
          }
        },
        "title": "ResearchEnvelope",
        "type": "object"
      },
      "ServiceCategory": {
        "description": "Categories for grouping services on the dashboard.",
        "enum": [
          "Infrastructure",
          "DevOps",
          "Media",
          "Productivity",
          "Lifestyle",
          "Security",
          "Communication",
          "Observability",
          "Business",
          "Data & Research",
          "Custom"
        ],
        "title": "ServiceCategory",
        "type": "string"
      },
      "ServiceConfig-Input": {
        "description": "Configuration for a single service instance.\n\nLoaded from ``services.yaml`` or auto-discovered from ``mcp_config.json``.\nMirrors Homepage's per-service YAML structure.",
        "properties": {
          "api_key": {
            "default": "",
            "maxLength": 65536,
            "title": "Api Key",
            "type": "string"
          },
          "category": {
            "$ref": "#/components/schemas/ServiceCategory",
            "default": "Custom"
          },
          "column_span": {
            "default": 1,
            "description": "Grid column span",
            "maximum": 4.0,
            "minimum": 1.0,
            "title": "Column Span",
            "type": "integer"
          },
          "credential_refs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Runtime secret references keyed by credential field name",
            "maxProperties": 32,
            "title": "Credential Refs",
            "type": "object"
          },
          "description": {
            "default": "",
            "description": "Short description",
            "maxLength": 2048,
            "title": "Description",
            "type": "string"
          },
          "env_prefix": {
            "default": "",
            "description": "Env var prefix for auto-resolving credentials, e.g. 'PORTAINER'",
            "maxLength": 64,
            "title": "Env Prefix",
            "type": "string"
          },
          "fields": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 128,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Specific fields to show (None = all available)",
            "title": "Fields"
          },
          "href": {
            "default": "",
            "description": "URL to open when clicking the service card header",
            "maxLength": 8192,
            "title": "Href",
            "type": "string"
          },
          "icon": {
            "default": "",
            "description": "Icon identifier (Lucide name, URL, or emoji)",
            "maxLength": 512,
            "title": "Icon",
            "type": "string"
          },
          "id": {
            "description": "Unique service ID",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "Display name",
            "maxLength": 256,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "order": {
            "default": 0,
            "description": "Sort order within group",
            "title": "Order",
            "type": "integer"
          },
          "password": {
            "default": "",
            "maxLength": 65536,
            "title": "Password",
            "type": "string"
          },
          "refresh_interval": {
            "default": 30,
            "description": "Polling interval in seconds",
            "maximum": 86400.0,
            "minimum": 1.0,
            "title": "Refresh Interval",
            "type": "integer"
          },
          "row_span": {
            "default": 1,
            "description": "Grid row span",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Row Span",
            "type": "integer"
          },
          "target": {
            "default": "_blank",
            "description": "Link target",
            "pattern": "^_(?:blank|self)$",
            "title": "Target",
            "type": "string"
          },
          "url": {
            "default": "",
            "description": "Service base URL",
            "maxLength": 8192,
            "title": "Url",
            "type": "string"
          },
          "username": {
            "default": "",
            "maxLength": 65536,
            "title": "Username",
            "type": "string"
          },
          "visible": {
            "default": true,
            "description": "Whether the widget is shown",
            "title": "Visible",
            "type": "boolean"
          },
          "websocket": {
            "default": false,
            "description": "Use WebSocket for real-time updates if available",
            "title": "Websocket",
            "type": "boolean"
          },
          "widget_type": {
            "description": "Widget type key from registry, e.g. 'portainer'",
            "maxLength": 128,
            "minLength": 1,
            "title": "Widget Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "widget_type"
        ],
        "title": "ServiceConfig",
        "type": "object"
      },
      "ServiceConfig-Output": {
        "description": "Configuration for a single service instance.\n\nLoaded from ``services.yaml`` or auto-discovered from ``mcp_config.json``.\nMirrors Homepage's per-service YAML structure.",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/ServiceCategory",
            "default": "Custom"
          },
          "column_span": {
            "default": 1,
            "description": "Grid column span",
            "maximum": 4.0,
            "minimum": 1.0,
            "title": "Column Span",
            "type": "integer"
          },
          "credential_refs": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Runtime secret references keyed by credential field name",
            "maxProperties": 32,
            "title": "Credential Refs",
            "type": "object"
          },
          "description": {
            "default": "",
            "description": "Short description",
            "maxLength": 2048,
            "title": "Description",
            "type": "string"
          },
          "env_prefix": {
            "default": "",
            "description": "Env var prefix for auto-resolving credentials, e.g. 'PORTAINER'",
            "maxLength": 64,
            "title": "Env Prefix",
            "type": "string"
          },
          "fields": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 128,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Specific fields to show (None = all available)",
            "title": "Fields"
          },
          "href": {
            "default": "",
            "description": "URL to open when clicking the service card header",
            "maxLength": 8192,
            "title": "Href",
            "type": "string"
          },
          "icon": {
            "default": "",
            "description": "Icon identifier (Lucide name, URL, or emoji)",
            "maxLength": 512,
            "title": "Icon",
            "type": "string"
          },
          "id": {
            "description": "Unique service ID",
            "maxLength": 128,
            "minLength": 1,
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "Display name",
            "maxLength": 256,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "order": {
            "default": 0,
            "description": "Sort order within group",
            "title": "Order",
            "type": "integer"
          },
          "refresh_interval": {
            "default": 30,
            "description": "Polling interval in seconds",
            "maximum": 86400.0,
            "minimum": 1.0,
            "title": "Refresh Interval",
            "type": "integer"
          },
          "row_span": {
            "default": 1,
            "description": "Grid row span",
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Row Span",
            "type": "integer"
          },
          "target": {
            "default": "_blank",
            "description": "Link target",
            "pattern": "^_(?:blank|self)$",
            "title": "Target",
            "type": "string"
          },
          "url": {
            "default": "",
            "description": "Service base URL",
            "maxLength": 8192,
            "title": "Url",
            "type": "string"
          },
          "visible": {
            "default": true,
            "description": "Whether the widget is shown",
            "title": "Visible",
            "type": "boolean"
          },
          "websocket": {
            "default": false,
            "description": "Use WebSocket for real-time updates if available",
            "title": "Websocket",
            "type": "boolean"
          },
          "widget_type": {
            "description": "Widget type key from registry, e.g. 'portainer'",
            "maxLength": 128,
            "minLength": 1,
            "title": "Widget Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "widget_type"
        ],
        "title": "ServiceConfig",
        "type": "object"
      },
      "ServiceGroup-Input": {
        "description": "A named group of services displayed as a section.\n\nMirrors Homepage's YAML group structure.",
        "properties": {
          "collapsed": {
            "default": false,
            "title": "Collapsed",
            "type": "boolean"
          },
          "icon": {
            "default": "",
            "maxLength": 512,
            "title": "Icon",
            "type": "string"
          },
          "name": {
            "description": "Group name",
            "maxLength": 256,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "order": {
            "default": 0,
            "title": "Order",
            "type": "integer"
          },
          "services": {
            "items": {
              "$ref": "#/components/schemas/ServiceConfig-Input"
            },
            "maxItems": 512,
            "title": "Services",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "ServiceGroup",
        "type": "object"
      },
      "ServiceGroup-Output": {
        "description": "A named group of services displayed as a section.\n\nMirrors Homepage's YAML group structure.",
        "properties": {
          "collapsed": {
            "default": false,
            "title": "Collapsed",
            "type": "boolean"
          },
          "icon": {
            "default": "",
            "maxLength": 512,
            "title": "Icon",
            "type": "string"
          },
          "name": {
            "description": "Group name",
            "maxLength": 256,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "order": {
            "default": 0,
            "title": "Order",
            "type": "integer"
          },
          "services": {
            "items": {
              "$ref": "#/components/schemas/ServiceConfig-Output"
            },
            "maxItems": 512,
            "title": "Services",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "ServiceGroup",
        "type": "object"
      },
      "StartGoalPayload": {
        "properties": {
          "constraints": {
            "items": {
              "type": "string"
            },
            "title": "Constraints",
            "type": "array"
          },
          "max_iterations": {
            "default": 20,
            "maximum": 100.0,
            "minimum": 1.0,
            "title": "Max Iterations",
            "type": "integer"
          },
          "objective": {
            "maxLength": 8192,
            "minLength": 1,
            "title": "Objective",
            "type": "string"
          },
          "validation_action": {
            "default": "none",
            "maxLength": 64,
            "title": "Validation Action",
            "type": "string"
          },
          "validation_cmd": {
            "default": "",
            "maxLength": 1024,
            "title": "Validation Cmd",
            "type": "string"
          }
        },
        "required": [
          "objective"
        ],
        "title": "StartGoalPayload",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "WidgetData": {
        "description": "Data returned from a widget's fetch_data() method.\n\nMirrors Homepage's useWidgetAPI response shape.",
        "properties": {
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Error message if status is not ok",
            "title": "Error"
          },
          "fields": {
            "additionalProperties": true,
            "description": "Key-value pairs of metric data, keyed by WidgetField.key",
            "title": "Fields",
            "type": "object"
          },
          "raw": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional raw response data for advanced views",
            "title": "Raw"
          },
          "status": {
            "default": "ok",
            "description": "Service status: ok, error, unreachable, unknown",
            "title": "Status",
            "type": "string"
          },
          "timestamp": {
            "format": "date-time",
            "title": "Timestamp",
            "type": "string"
          }
        },
        "title": "WidgetData",
        "type": "object"
      },
      "WidgetListItem": {
        "properties": {
          "category": {
            "title": "Category",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "icon": {
            "title": "Icon",
            "type": "string"
          },
          "supports_websocket": {
            "title": "Supports Websocket",
            "type": "boolean"
          },
          "widget_type": {
            "title": "Widget Type",
            "type": "string"
          }
        },
        "required": [
          "widget_type",
          "display_name",
          "icon",
          "category",
          "description",
          "supports_websocket"
        ],
        "title": "WidgetListItem",
        "type": "object"
      }
    }
  },
  "info": {
    "title": "Agent Web Dashboard",
    "version": "0.1.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/dashboard/daemon/shards": {
      "get": {
        "description": "Engine shard topology + per-shard reachability (CONCEPT:AU-OS.scaling.shard-topology-visibility-per).\n\nReports the configured ``GRAPH_SERVICE_ENDPOINTS`` topology (single vs\nsharded), a transport-level reachability probe per shard, and each shard's\ncircuit-breaker state. Refreshes the\n``agent_utilities_engine_shard_up{endpoint}`` gauge as a side effect.",
        "operationId": "daemon_shards_api_dashboard_daemon_shards_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Daemon Shards Api Dashboard Daemon Shards Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Daemon Shards",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/daemon/start": {
      "post": {
        "description": "Ensure the single consolidated KG daemon is running in this gateway.",
        "operationId": "daemon_start_api_dashboard_daemon_start_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Daemon Start Api Dashboard Daemon Start Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Daemon Start",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/daemon/status": {
      "get": {
        "description": "Status of the single consolidated KG background daemon (CONCEPT:EG-KG.storage.nonblocking-checkpoint).\n\nThe gateway is the daemon host; this surfaces the one daemon's role, live\nthreads, registered maintenance jobs, and queue depth.",
        "operationId": "daemon_status_api_dashboard_daemon_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Daemon Status Api Dashboard Daemon Status Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Daemon Status",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/data": {
      "get": {
        "description": "Fetch data from all active widgets.",
        "operationId": "get_all_data_api_dashboard_data_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/WidgetData"
                  },
                  "title": "Response Get All Data Api Dashboard Data Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get All Data",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/data-subset": {
      "get": {
        "description": "REST twin of ``fetch_dashboard_subset`` (Two-Surfaces-by-default) --\nfetch exactly the named widgets in one call, e.g.\n``?widget_id=jellyfin&widget_id=pihole``.",
        "operationId": "get_dashboard_subset_api_dashboard_data_subset_get",
        "parameters": [
          {
            "in": "query",
            "name": "widget_id",
            "required": false,
            "schema": {
              "default": [],
              "items": {
                "type": "string"
              },
              "title": "Widget Id",
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/WidgetData"
                  },
                  "title": "Response Get Dashboard Subset Api Dashboard Data Subset Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Dashboard Subset",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/data/{service_id}": {
      "get": {
        "description": "Fetch data for a single service.",
        "operationId": "get_service_data_api_dashboard_data__service_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "service_id",
            "required": true,
            "schema": {
              "title": "Service Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetData"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Service Data",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/discover": {
      "get": {
        "description": "Auto-discover services from mcp_config.json and return a layout.",
        "operationId": "discover_services_api_dashboard_discover_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardLayout-Output"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Discover Services",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/full": {
      "get": {
        "description": "Get layout + data in a single request (initial page load).",
        "operationId": "get_full_dashboard_api_dashboard_full_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Full Dashboard",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/health": {
      "get": {
        "description": "LIVENESS: always 200, with the shared truthful health report as body.\n\nDispatches into the SAME\n:func:`~agent_utilities.observability.runtime_health.collect_health` core\nused by the graph-os MCP server and the top-level gateway ``/health`` \u2014\nnever a second implementation. See ``GET /health/ready`` on the top-level\napp for the readiness twin that reflects status in the HTTP code\n(CONCEPT:AU-OS.deployment.liveness-vs-readiness-split).",
        "operationId": "health_check_api_dashboard_health_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Health Check",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/hydrate": {
      "post": {
        "description": "Manually trigger hydration for all configured/active sources sequentially.",
        "operationId": "trigger_all_hydration_api_dashboard_hydrate_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Trigger All Hydration Api Dashboard Hydrate Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Trigger All Hydration",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/hydrate/{source}": {
      "post": {
        "description": "Manually trigger hydration for a specific external source.",
        "operationId": "trigger_hydration_api_dashboard_hydrate__source__post",
        "parameters": [
          {
            "in": "path",
            "name": "source",
            "required": true,
            "schema": {
              "title": "Source",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Trigger Hydration Api Dashboard Hydrate  Source  Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Trigger Hydration",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/hydration-status": {
      "get": {
        "description": "Retrieve configuration status of all hydration sources.",
        "operationId": "get_hydration_status_api_dashboard_hydration_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Hydration Status Api Dashboard Hydration Status Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Hydration Status",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/layout": {
      "get": {
        "description": "Get the current dashboard layout configuration.",
        "operationId": "get_layout_api_dashboard_layout_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DashboardLayout-Output"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Layout",
        "tags": [
          "dashboard"
        ]
      },
      "put": {
        "description": "Save a new dashboard layout configuration.",
        "operationId": "save_layout_api_dashboard_layout_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DashboardLayout-Input"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Save Layout Api Dashboard Layout Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Save Layout",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/dashboard/widgets": {
      "get": {
        "description": "List all widget types available for configuration.",
        "operationId": "list_available_widgets_api_dashboard_widgets_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/WidgetListItem"
                  },
                  "title": "Response List Available Widgets Api Dashboard Widgets Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Available Widgets",
        "tags": [
          "dashboard"
        ]
      }
    },
    "/api/enhanced/agent-icon": {
      "get": {
        "description": "Retrieve the agent's avatar icon, falling back to repository defaults.\n\nReturns:\n    A response containing bounded image data.",
        "operationId": "get_agent_icon_api_enhanced_agent_icon_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Agent Icon"
      }
    },
    "/api/enhanced/agent-library/a2a": {
      "post": {
        "description": "Register an external A2A agent alongside local ones.\n\nPaste an agent-card JSON directly (no outbound fetch needed), or give\njust a URL to fetch its published card through the engine's governed A2A\ningestion. Writes through the same ``CallableResource(resource_type=\nA2A_AGENT)`` primitive ``run_agent`` resolves for delegation \u2014 the exact\nmechanism an offline A2A config sync uses, so an agent registered here is\nindistinguishable from one wired at deploy time.",
        "operationId": "register_a2a_agent_api_enhanced_agent_library_a2a_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Register A2A Agent Api Enhanced Agent Library A2A Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Register A2A Agent"
      }
    },
    "/api/enhanced/agent-library/agents": {
      "get": {
        "description": "List every agent composed or registered through the Agent Library.\n\nLocal agents are ``CallableResource(resource_type=AGENT_SKILL)`` nodes\nwritten by this feature (marked by ``provider_ref``); external agents are\nevery ``CallableResource(resource_type=A2A_AGENT)`` node regardless of\nwhich pipeline registered it, since the KG \u2014 not this endpoint \u2014 is the\none source of truth for what is externally callable.",
        "operationId": "list_library_agents_api_enhanced_agent_library_agents_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Library Agents Api Enhanced Agent Library Agents Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Library Agents"
      },
      "post": {
        "description": "Compose a new locally-delegatable agent from a name, instructions, and tools.\n\nWrites the exact ``CallableResource(resource_type=AGENT_SKILL)`` field\ncontract atomic-skill ingestion produces, so the saved agent is\ndelegatable by name immediately \u2014 never a second, UI-only representation.\nOptionally expands ``bind_server`` into ``USES_TOOL`` edges for every\ncurrently-ingested tool of that MCP server, in addition to any explicitly\npicked ``tool_ids``.",
        "operationId": "create_library_agent_api_enhanced_agent_library_agents_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Create Library Agent Api Enhanced Agent Library Agents Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Library Agent"
      }
    },
    "/api/enhanced/agent-library/agents/{agent_id}": {
      "delete": {
        "description": "Archive an Agent Library entry (soft delete, matching the fleet's\n``deregister_function`` convention: it stops being listed, but the node\nand its provenance stay in the graph).",
        "operationId": "archive_library_agent_api_enhanced_agent_library_agents__agent_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "agent_id",
            "required": true,
            "schema": {
              "title": "Agent Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Archive Library Agent Api Enhanced Agent Library Agents  Agent Id  Delete",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Archive Library Agent"
      },
      "get": {
        "description": "Return one Agent Library entry with its instructions and bound tools.",
        "operationId": "get_library_agent_api_enhanced_agent_library_agents__agent_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "agent_id",
            "required": true,
            "schema": {
              "title": "Agent Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Library Agent Api Enhanced Agent Library Agents  Agent Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Library Agent"
      }
    },
    "/api/enhanced/agent-library/config-summary": {
      "get": {
        "description": "Curated, secret-free projection of the active AgentConfig model registry.\n\n``agent_utilities.core.config.AgentConfig`` has thousands of fields; this\nsurfaces only what matters for choosing a model when composing an agent \u2014\nnever API keys, secret references, or provider credentials.",
        "operationId": "agent_config_summary_api_enhanced_agent_library_config_summary_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Agent Config Summary Api Enhanced Agent Library Config Summary Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Agent Config Summary"
      }
    },
    "/api/enhanced/agent-library/suggestions": {
      "get": {
        "description": "Suggest agents to build, derived from the installed tool inventory.\n\nGroups ``:Tool`` nodes by their owning ``mcp_server`` (an installed\n``agent-packages/agents/*`` package's MCP server, once ingested) and\nproposes one for every server that has no Agent Library entry bound to it\nyet. Nothing here is hardcoded: an uningested package, or one that\nalready has a composed agent, produces no suggestion.",
        "operationId": "suggest_library_agents_api_enhanced_agent_library_suggestions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Suggest Library Agents Api Enhanced Agent Library Suggestions Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Suggest Library Agents"
      }
    },
    "/api/enhanced/agent-library/tools": {
      "get": {
        "description": "List ``:Tool`` nodes from the KG for the agent composer's tool picker.\n\nOptionally filtered to one owning ``mcp_server`` so a composer can offer\n\"everything this package's server exposes\" as a starting point.",
        "operationId": "list_library_tools_api_enhanced_agent_library_tools_get",
        "parameters": [
          {
            "in": "query",
            "name": "mcp_server",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Mcp Server"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Library Tools Api Enhanced Agent Library Tools Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Library Tools"
      }
    },
    "/api/enhanced/agents": {
      "get": {
        "description": "List all agents registered in the Knowledge Graph.",
        "operationId": "list_agents_api_enhanced_agents_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Agents Api Enhanced Agents Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Agents"
      }
    },
    "/api/enhanced/chats": {
      "get": {
        "description": "List historical chat sessions stored on the server.\n\nReturns:\n    List of chat metadata summaries.",
        "operationId": "list_chats_api_enhanced_chats_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Chats Api Enhanced Chats Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Chats"
      },
      "post": {
        "description": "Persist a new or updated chat session.\n\nArgs:\n    data: The complete chat history payload.\n\nReturns:\n    Acknowledgment or error summary.",
        "operationId": "save_chat_api_enhanced_chats_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Save Chat Api Enhanced Chats Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Save Chat"
      }
    },
    "/api/enhanced/chats/{chat_id}": {
      "delete": {
        "description": "Permanently delete a chat session record.\n\nUses the canonical REST verb DELETE against ``/chats/{chat_id}``. The\nold ``GET /chats/{chat_id}/title`` alias was non-idiomatic (GET is\nexpected to be safe/idempotent-read) and collided conceptually with\nthe sibling ``PUT /chats/{chat_id}/title`` rename endpoint.\n\nArgs:\n    chat_id: The identifier of the chat to remove.\n\nReturns:\n    Acknowledgment or error summary.",
        "operationId": "delete_chat_api_enhanced_chats__chat_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "chat_id",
            "required": true,
            "schema": {
              "title": "Chat Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Delete Chat Api Enhanced Chats  Chat Id  Delete",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Chat"
      },
      "get": {
        "description": "Retrieve a specific chat session's message history.\n\nArgs:\n    chat_id: The unique identifier of the chat session.\n\nReturns:\n    The full chat session object.",
        "operationId": "get_chat_api_enhanced_chats__chat_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "chat_id",
            "required": true,
            "schema": {
              "title": "Chat Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Chat Api Enhanced Chats  Chat Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Chat"
      }
    },
    "/api/enhanced/chats/{chat_id}/title": {
      "put": {
        "description": "Update the display title of a specific chat session.\n\nArgs:\n    chat_id: The identifier of the chat session.\n    data: Dictionary containing the new 'title'.\n\nReturns:\n    Acknowledgment or error summary.",
        "operationId": "update_chat_title_api_enhanced_chats__chat_id__title_put",
        "parameters": [
          {
            "in": "path",
            "name": "chat_id",
            "required": true,
            "schema": {
              "title": "Chat Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Chat Title Api Enhanced Chats  Chat Id  Title Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Chat Title"
      }
    },
    "/api/enhanced/code/instances": {
      "get": {
        "description": "List source_systems that have code in the graph (the indexed GitLab tenants).",
        "operationId": "code_instances_api_enhanced_code_instances_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Code Instances Api Enhanced Code Instances Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Code Instances"
      }
    },
    "/api/enhanced/code/nav": {
      "post": {
        "description": "Navigate the resolved code graph.\n\nBody: ``{action, symbol|node_id, source_system?, depth?, limit?}`` where\n``action`` is find_definition | find_references | trace_call_graph |\nimpact_of_change.",
        "operationId": "code_nav_api_enhanced_code_nav_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Code Nav Api Enhanced Code Nav Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Code Nav"
      }
    },
    "/api/enhanced/commands/autocomplete": {
      "get": {
        "description": "Provide autocomplete dynamic options for client interfaces.",
        "operationId": "autocomplete_slash_command_api_enhanced_commands_autocomplete_get",
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "required": false,
            "schema": {
              "default": "",
              "title": "Query",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Autocomplete Slash Command"
      }
    },
    "/api/enhanced/commands/execute": {
      "post": {
        "description": "Execute a slash command centrally inside the backend.",
        "operationId": "execute_slash_command_api_enhanced_commands_execute_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Payload",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Execute Slash Command"
      }
    },
    "/api/enhanced/config": {
      "get": {
        "description": "Read the central AgentConfig document from its XDG config directory.",
        "operationId": "get_config_file_api_enhanced_config_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Config File Api Enhanced Config Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Config File"
      },
      "put": {
        "description": "Validate and atomically write the central AgentConfig document.",
        "operationId": "update_config_file_api_enhanced_config_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Config File Api Enhanced Config Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Config File"
      }
    },
    "/api/enhanced/config-files": {
      "get": {
        "description": "List configuration files.",
        "operationId": "list_config_files_api_enhanced_config_files_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "type": "string"
                  },
                  "title": "Response List Config Files Api Enhanced Config Files Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Config Files"
      }
    },
    "/api/enhanced/config/backend": {
      "get": {
        "description": "Get current backend configuration.\n\nReturns:\n    Backend type and connection settings.",
        "operationId": "get_backend_config_api_enhanced_config_backend_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Backend Config Api Enhanced Config Backend Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Backend Config"
      },
      "put": {
        "description": "Update backend configuration (requires restart).\n\nArgs:\n    data: New backend configuration.\n\nReturns:\n    Success status (restart required).",
        "operationId": "update_backend_config_api_enhanced_config_backend_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Backend Config Api Enhanced Config Backend Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Backend Config"
      }
    },
    "/api/enhanced/config/groups": {
      "get": {
        "description": "Return the derived `{field_name: section_title}` grouping (D-AOBS-3).\n\nRead-only structural metadata for `ConfigurationView.tsx` to bucket the\nfields it already reads from `/config` into the SAME sections\n`agent_utilities/core/config.py` itself organizes them under, instead of\none flat \"everything else\" list.",
        "operationId": "get_config_field_groups_api_enhanced_config_groups_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Config Field Groups Api Enhanced Config Groups Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Config Field Groups"
      }
    },
    "/api/enhanced/container-manager/containers": {
      "get": {
        "description": "Return bounded container inventory through a governed host adapter.\n\nThe WebUI intentionally has no direct access to a Docker/Podman socket.\nThe host adapter owns daemon authorization, transport, credential, and\naudit policy; only opaque references and a short state cross this boundary.",
        "operationId": "list_docker_containers_api_enhanced_container_manager_containers_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Docker Containers Api Enhanced Container Manager Containers Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Docker Containers"
      }
    },
    "/api/enhanced/cron/calendar": {
      "get": {
        "description": "Retrieve the scheduled cron task calendar from Knowledge Graph.",
        "operationId": "get_cron_calendar_api_enhanced_cron_calendar_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Get Cron Calendar Api Enhanced Cron Calendar Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Cron Calendar"
      }
    },
    "/api/enhanced/cron/logs": {
      "get": {
        "description": "Retrieve the execution history logs for cron tasks.",
        "operationId": "get_cron_logs_api_enhanced_cron_logs_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Get Cron Logs Api Enhanced Cron Logs Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Cron Logs"
      }
    },
    "/api/enhanced/download/{filename}": {
      "get": {
        "description": "Download a specific file from the agent's workspace.\n\nArgs:\n    filename: The relative path of the file to download.\n\nReturns:\n    A bounded response with safe attachment headers.",
        "operationId": "download_file_api_enhanced_download__filename__get",
        "parameters": [
          {
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "title": "Filename",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Download File"
      }
    },
    "/api/enhanced/ecosystem/atlassian/kanban": {
      "get": {
        "description": "Retrieve Jira issues grouped by status (Kanban format) via ``atlassian-mcp``.\n\nDispatches ``atlassian_jira_issue``/``search_for_issues_using_jql`` against\nthe configured Jira Cloud instance and buckets the returned issues into\nKanban columns by their status name. ``jql`` selects the slice of work\n(defaults to most-recently-updated). Surfaces an honest error if the\nserver or Jira is unreachable.",
        "operationId": "get_atlassian_kanban_api_enhanced_ecosystem_atlassian_kanban_get",
        "parameters": [
          {
            "in": "query",
            "name": "jql",
            "required": false,
            "schema": {
              "default": "ORDER BY updated DESC",
              "title": "Jql",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Atlassian Kanban"
      }
    },
    "/api/enhanced/ecosystem/datascience/training": {
      "get": {
        "description": "Retrieve real trained-model metrics via the ``data-science-mcp`` server.\n\nDispatches ``rank_models``, which returns every fitted/trained model in the\nlive model registry ranked by test score. Returns an empty ``models`` list\n(not a fabricated run) when nothing has been trained yet, and surfaces an\nhonest error if the server is unreachable.",
        "operationId": "get_datascience_training_api_enhanced_ecosystem_datascience_training_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Datascience Training"
      }
    },
    "/api/enhanced/ecosystem/github/prs": {
      "get": {
        "description": "Retrieve open PRs and recent Actions runs via the ``github-mcp`` server.\n\n``repo`` is a required ``owner/name`` slug (falling back to the\n``GITHUB_REPO`` env if set) \u2014 a PR list is inherently per-repository.\nDispatches ``github_pulls``/``list`` and ``github_actions``/``list_runs``\nagainst the GitHub API with the token configured on that MCP server.\nSurfaces an honest error if the server or GitHub is unreachable.",
        "operationId": "get_github_prs_api_enhanced_ecosystem_github_prs_get",
        "parameters": [
          {
            "in": "query",
            "name": "repo",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Repo"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Github Prs"
      }
    },
    "/api/enhanced/ecosystem/gitlab/mrs": {
      "get": {
        "description": "Retrieve open GitLab merge requests via the ``gitlab-mcp`` fleet server.\n\nDispatches ``api_request`` GET ``/merge_requests?scope=all&state=opened``\n(the token-scoped, project-agnostic MR list) against the configured GitLab\ninstance, plus the latest pipeline per affected project. Surfaces an honest\nerror if the server or GitLab is unreachable.",
        "operationId": "get_gitlab_mrs_api_enhanced_ecosystem_gitlab_mrs_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Gitlab Mrs"
      }
    },
    "/api/enhanced/ecosystem/homeassistant/devices": {
      "get": {
        "description": "Retrieve real entity states via the ``home-assistant-mcp`` fleet server.\n\nDispatches ``home_assistant_states``/``list_states`` against the configured\nHome Assistant instance. Surfaces an honest error if the server or HA is\nunreachable.",
        "operationId": "get_homeassistant_devices_api_enhanced_ecosystem_homeassistant_devices_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Homeassistant Devices"
      }
    },
    "/api/enhanced/ecosystem/mediadownloader/downloads": {
      "get": {
        "description": "Report that no live media-downloader queue backend exists.\n\nThe fleet's ``media-downloader-mcp`` exposes only a fire-and-forget\n``download_media(video_url, ...)`` action \u2014 it keeps no server-side queue\nor history that can be read back. There is therefore no real data source to\nwire for a \"current downloads\" view; we report that honestly instead of\nfabricating a queue. Building a real view requires the media-downloader to\npersist and expose a job/queue read API first.",
        "operationId": "get_mediadownloader_downloads_api_enhanced_ecosystem_mediadownloader_downloads_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Mediadownloader Downloads"
      }
    },
    "/api/enhanced/ecosystem/microsoft/emails": {
      "get": {
        "description": "Retrieve recent inbox messages via the ``microsoft-mcp`` fleet server.\n\nDispatches ``microsoft_mail``/``list_mail_messages`` against Microsoft Graph\nusing the credentials configured on that MCP server. Surfaces an honest\nerror if the server or Graph is unreachable / unauthorized.",
        "operationId": "get_microsoft_emails_api_enhanced_ecosystem_microsoft_emails_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Microsoft Emails"
      }
    },
    "/api/enhanced/ecosystem/nextcloud/events": {
      "get": {
        "description": "Retrieve real Nextcloud calendars and their events via ``nextcloud-mcp``.\n\nDispatches ``nextcloud_calendar``/``list_calendars`` against the configured\nNextcloud instance, then enumerates each calendar's events via\n``list_calendar_events``. Surfaces an honest error if the server or\nNextcloud is unreachable.",
        "operationId": "get_nextcloud_events_api_enhanced_ecosystem_nextcloud_events_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Nextcloud Events"
      }
    },
    "/api/enhanced/ecosystem/portainer/stacks": {
      "get": {
        "description": "Retrieve real Portainer stacks via the ``portainer-mcp`` fleet server.\n\nDispatches the ``portainer_stack``/``get_stacks`` tool, which talks to the\nlive Portainer instance with the credentials configured on that MCP server.\nSurfaces an honest error if the server or Portainer is unreachable.",
        "operationId": "get_portainer_stacks_api_enhanced_ecosystem_portainer_stacks_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Portainer Stacks"
      }
    },
    "/api/enhanced/ecosystem/qbittorrent/torrents": {
      "get": {
        "description": "Retrieve real torrent state via the ``qbittorrent-mcp`` fleet server.\n\nDispatches ``qbittorrent_torrents``/``get_torrent_list`` against the\nconfigured qBittorrent WebUI. Surfaces an honest error if the server or\nqBittorrent is unreachable.",
        "operationId": "get_qbittorrent_torrents_api_enhanced_ecosystem_qbittorrent_torrents_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Qbittorrent Torrents"
      }
    },
    "/api/enhanced/ecosystem/scholarx/papers": {
      "get": {
        "description": "List downloaded publications via the ``scholarx-mcp`` fleet server.\n\nDispatches ``sx_storage``/``stored`` which returns the real offline PDF\nlibrary ScholarX has downloaded (id/title/authors/local_path/...). Surfaces\nan honest error if the server is unreachable.",
        "operationId": "get_scholarx_papers_api_enhanced_ecosystem_scholarx_papers_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Scholarx Papers"
      }
    },
    "/api/enhanced/ecosystem/searxng/search": {
      "get": {
        "description": "Run a real query via the ``searxng-mcp`` fleet server.\n\nDispatches ``web_search`` against the configured privacy-respecting\nSearXNG metasearch instance. Surfaces an honest error if the server or the\nSearXNG instance is unreachable.",
        "operationId": "get_searxng_search_api_enhanced_ecosystem_searxng_search_get",
        "parameters": [
          {
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "default": "agent-utilities",
              "title": "Q",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Searxng Search"
      }
    },
    "/api/enhanced/ecosystem/services": {
      "get": {
        "description": "Dynamically scan installed MCP servers and backend packages.",
        "operationId": "list_ecosystem_services_api_enhanced_ecosystem_services_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "type": "string"
                  },
                  "title": "Response List Ecosystem Services Api Enhanced Ecosystem Services Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Ecosystem Services"
      }
    },
    "/api/enhanced/ecosystem/stirlingpdf/jobs": {
      "get": {
        "description": "Report that Stirling-PDF maintains no readable job history.\n\nThe fleet's ``stirlingpdf-mcp`` exposes only ``pdf_action`` (synchronous,\none-shot PDF transforms). Stirling-PDF itself keeps no persistent job\nlist \u2014 async jobs are transient and addressable only by an id the caller\nalready holds. There is no real backend to enumerate, so we report that\nhonestly instead of fabricating completed jobs.",
        "operationId": "get_stirlingpdf_jobs_api_enhanced_ecosystem_stirlingpdf_jobs_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Stirlingpdf Jobs"
      }
    },
    "/api/enhanced/ecosystem/uptime/status": {
      "get": {
        "description": "Retrieve real monitor states via the ``uptime-kuma-mcp`` fleet server.\n\nDispatches ``uptime_kuma_monitors``/``get_monitors`` against the configured\nUptime Kuma instance. Surfaces an honest error if the server or Kuma is\nunreachable.",
        "operationId": "get_uptime_status_api_enhanced_ecosystem_uptime_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Uptime Status"
      }
    },
    "/api/enhanced/editor-context": {
      "get": {
        "description": "Return the most recently published editor context for the Workspace\nIDE view to feed into `usePageContextPublisher`, or an empty shape if the\nbridge extension has not published one yet (no active editor, or the\nembedded workbench has not loaded).",
        "operationId": "get_editor_context_api_enhanced_editor_context_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Editor Context Api Enhanced Editor Context Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Editor Context"
      },
      "post": {
        "description": "Receive editor context from the `agent-webui-bridge` openvscode-server\nextension. Requires `kg:write` like every other `/api/enhanced/*` mutation\n(`WebUIAuthorizationMiddleware`) -- the extension authenticates with a\nclient_credentials bearer token, see the code-server repo's\n`k8s/manifests.yaml` (`envFrom: agent-webui-oidc`).",
        "operationId": "publish_editor_context_api_enhanced_editor_context_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditorContextPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Publish Editor Context Api Enhanced Editor Context Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Publish Editor Context"
      }
    },
    "/api/enhanced/files": {
      "get": {
        "description": "List workspace files with metadata recursively for all repositories loaded in agent-utilities.\n\nExcludes .git, node_modules, .venv, venv, and other build/binary directories.",
        "operationId": "list_files_api_enhanced_files_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Files Api Enhanced Files Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Files"
      }
    },
    "/api/enhanced/files/{filename}": {
      "delete": {
        "description": "Delete a workspace file.",
        "operationId": "delete_workspace_file_api_enhanced_files__filename__delete",
        "parameters": [
          {
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "title": "Filename",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Delete Workspace File Api Enhanced Files  Filename  Delete",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Workspace File"
      },
      "get": {
        "description": "Retrieve the content of a specific workspace file.",
        "operationId": "get_file_api_enhanced_files__filename__get",
        "parameters": [
          {
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "title": "Filename",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Get File Api Enhanced Files  Filename  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get File"
      },
      "put": {
        "description": "Create or update a file in the workspace.",
        "operationId": "update_file_api_enhanced_files__filename__put",
        "parameters": [
          {
            "in": "path",
            "name": "filename",
            "required": true,
            "schema": {
              "title": "Filename",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": {
                  "type": "string"
                },
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Update File Api Enhanced Files  Filename  Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update File"
      }
    },
    "/api/enhanced/goals": {
      "get": {
        "description": "Retrieve lists of active and completed autonomous goals.",
        "operationId": "list_goals_api_enhanced_goals_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Goals Api Enhanced Goals Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Goals"
      },
      "post": {
        "description": "Launch a new backgrounded autonomous goal execution loop (ORCH-5.0).",
        "operationId": "create_goal_api_enhanced_goals_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartGoalPayload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Create Goal Api Enhanced Goals Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Goal"
      }
    },
    "/api/enhanced/goals/{goal_id}/cancel": {
      "post": {
        "description": "Cancel an active autonomous goal loop (ORCH-5.0).",
        "operationId": "cancel_goal_api_enhanced_goals__goal_id__cancel_post",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Cancel Goal Api Enhanced Goals  Goal Id  Cancel Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Cancel Goal"
      }
    },
    "/api/enhanced/goals/{goal_id}/iterations": {
      "get": {
        "description": "Retrieve live-updating iteration steps for a specific goal run.",
        "operationId": "get_goal_iterations_api_enhanced_goals__goal_id__iterations_get",
        "parameters": [
          {
            "in": "path",
            "name": "goal_id",
            "required": true,
            "schema": {
              "title": "Goal Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Goal Iterations Api Enhanced Goals  Goal Id  Iterations Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Goal Iterations"
      }
    },
    "/api/enhanced/graph/impact/{symbol}": {
      "get": {
        "description": "Calculate the topological impact set for a code entity.\n\nArgs:\n    symbol: The symbol or file identifier to analyze.\n\nReturns:\n    List of affected nodes and impact severity.",
        "operationId": "get_impact_api_enhanced_graph_impact__symbol__get",
        "parameters": [
          {
            "in": "path",
            "name": "symbol",
            "required": true,
            "schema": {
              "title": "Symbol",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Get Impact Api Enhanced Graph Impact  Symbol  Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Impact"
      }
    },
    "/api/enhanced/graph/link": {
      "post": {
        "description": "Create a relationship between two nodes in the Knowledge Graph.\n\nArgs:\n    data: Dictionary containing source, target, relationship_type, and properties.\n\nReturns:\n    Success status.",
        "operationId": "link_nodes_api_enhanced_graph_link_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Link Nodes Api Enhanced Graph Link Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Link Nodes"
      }
    },
    "/api/enhanced/graph/magma": {
      "post": {
        "description": "Retrieve context using MAGMA orthogonal views.\n\nArgs:\n    data: Dictionary containing query, view_type, and policy options.\n\nReturns:\n    Retrieved context from specified orthogonal view.",
        "operationId": "magma_retrieve_api_enhanced_graph_magma_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Magma Retrieve Api Enhanced Graph Magma Post",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Magma Retrieve"
      }
    },
    "/api/enhanced/graph/memory": {
      "post": {
        "description": "Add a new memory node to the Knowledge Graph.\n\nArgs:\n    data: Dictionary containing memory data (id, content, importance, tags, etc.)\n\nReturns:\n    Success status and created memory ID.",
        "operationId": "add_memory_api_enhanced_graph_memory_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Add Memory Api Enhanced Graph Memory Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add Memory"
      }
    },
    "/api/enhanced/graph/memory/{memory_id}": {
      "delete": {
        "description": "Delete a memory node from the Knowledge Graph.\n\nArgs:\n    memory_id: The unique identifier of the memory node.\n\nReturns:\n    Success status.",
        "operationId": "delete_memory_api_enhanced_graph_memory__memory_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "memory_id",
            "required": true,
            "schema": {
              "title": "Memory Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Delete Memory Api Enhanced Graph Memory  Memory Id  Delete",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Memory"
      },
      "get": {
        "description": "Retrieve a specific memory node from the Knowledge Graph.\n\nArgs:\n    memory_id: The unique identifier of the memory node.\n\nReturns:\n    Memory node data or 404 if not found.",
        "operationId": "get_memory_api_enhanced_graph_memory__memory_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "memory_id",
            "required": true,
            "schema": {
              "title": "Memory Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Memory Api Enhanced Graph Memory  Memory Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Memory"
      },
      "put": {
        "description": "Update an existing memory node in the Knowledge Graph.\n\nArgs:\n    memory_id: The unique identifier of the memory node.\n    data: Dictionary containing updated memory data.\n\nReturns:\n    Success status.",
        "operationId": "update_memory_api_enhanced_graph_memory__memory_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "memory_id",
            "required": true,
            "schema": {
              "title": "Memory Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Memory Api Enhanced Graph Memory  Memory Id  Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Memory"
      }
    },
    "/api/enhanced/graph/nodes": {
      "get": {
        "description": "Query Knowledge Graph for nodes of a specific type or all nodes.\n\nArgs:\n    node_type: Optional filter for node type (e.g., 'Job', 'Log',\n               'Memory', 'KnowledgeBase')\n\nReturns:\n    List of node dictionaries with properties.",
        "operationId": "get_graph_nodes_api_enhanced_graph_nodes_get",
        "parameters": [
          {
            "in": "query",
            "name": "node_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Node Type"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Get Graph Nodes Api Enhanced Graph Nodes Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Graph Nodes"
      }
    },
    "/api/enhanced/graph/query": {
      "post": {
        "description": "Execute a custom Cypher query against the Knowledge Graph.\n\nArgs:\n    data: Dictionary containing 'query' and optional 'params'.\n\nReturns:\n    Query results.",
        "operationId": "execute_cypher_api_enhanced_graph_query_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Execute Cypher Api Enhanced Graph Query Post",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Execute Cypher"
      }
    },
    "/api/enhanced/graph/relationships": {
      "get": {
        "description": "Query Knowledge Graph for relationships between nodes.\n\nReturns:\n    List of relationship dictionaries with source, target, and type.",
        "operationId": "get_graph_relationships_api_enhanced_graph_relationships_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Get Graph Relationships Api Enhanced Graph Relationships Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Graph Relationships"
      }
    },
    "/api/enhanced/graph/search": {
      "get": {
        "description": "Perform hybrid search across the Knowledge Graph.\n\nArgs:\n    query: Search query string.\n    top_k: Maximum number of results to return.\n\nReturns:\n    List of matching nodes with relevance scores.",
        "operationId": "hybrid_search_api_enhanced_graph_search_get",
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "required": true,
            "schema": {
              "title": "Query",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "top_k",
            "required": false,
            "schema": {
              "default": 10,
              "title": "Top K",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Hybrid Search Api Enhanced Graph Search Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Hybrid Search"
      }
    },
    "/api/enhanced/graph/stats": {
      "get": {
        "description": "Get statistics about the Knowledge Graph.\n\nReturns:\n    Dictionary with node counts by type and total counts.",
        "operationId": "get_graph_stats_api_enhanced_graph_stats_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Graph Stats Api Enhanced Graph Stats Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Graph Stats"
      }
    },
    "/api/enhanced/graph/viz/capabilities": {
      "get": {
        "description": "Return the eg-viz mark/surface capability matrix (what's renderable today).",
        "operationId": "get_viz_capabilities_api_enhanced_graph_viz_capabilities_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Viz Capabilities Api Enhanced Graph Viz Capabilities Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Viz Capabilities"
      }
    },
    "/api/enhanced/graph/viz/render": {
      "post": {
        "description": "Render a chart or graph through the eg-viz LOD pipeline.\n\nBody: ``{\"spec\": <ViewSpec JSON>, \"dataset\": <VizDatasetSource JSON>,\n\"width_px\", \"height_px\", \"format\" (\"png\"|\"svg\"|\"pdf\"), \"max_primitives\",\n\"max_bytes\"}``. ``dataset`` may be an ``InlineColumns`` payload (small,\ncaller-supplied data) or a ``SyntheticScatterClusters``/``SyntheticGraph``\ngenerator spec -- the latter are generated ENGINE-SIDE (never shipped over\nthe wire), which is how a high-density demo (millions of rows / tens of\nthousands of graph nodes) stays a small request.\n\nReturns ``{\"view_result\", \"format\", \"content_type\", \"data_url\"}`` -- the\n``data_url`` is a ready-to-render ``data:<content_type>;base64,...`` string.",
        "operationId": "render_viz_api_enhanced_graph_viz_render_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Render Viz Api Enhanced Graph Viz Render Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Render Viz"
      }
    },
    "/api/enhanced/info": {
      "get": {
        "description": "Retrieve agent identity and user personalization metadata.\n\nCONCEPT:WU-KG.compute.identity-management \u2014 Identity Management\n\nReturns:\n    A dictionary containing agent name, description, and emojis.",
        "operationId": "get_info_api_enhanced_info_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Get Info Api Enhanced Info Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Info"
      }
    },
    "/api/enhanced/kb/article/{article_id}": {
      "get": {
        "description": "Retrieve a specific KB article.\n\nArgs:\n    article_id: The unique identifier of the article.\n\nReturns:\n    Article data or 404 if not found.",
        "operationId": "get_kb_article_api_enhanced_kb_article__article_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "article_id",
            "required": true,
            "schema": {
              "title": "Article Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Kb Article Api Enhanced Kb Article  Article Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Kb Article"
      }
    },
    "/api/enhanced/kb/health": {
      "post": {
        "description": "Perform health check on a Knowledge Base.\n\nArgs:\n    data: Dictionary containing kb_id.\n\nReturns:\n    Health status and any issues found.",
        "operationId": "kb_health_check_api_enhanced_kb_health_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Kb Health Check Api Enhanced Kb Health Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Kb Health Check"
      }
    },
    "/api/enhanced/kb/ingest": {
      "post": {
        "description": "Ingest documents into a Knowledge Base.\n\nArgs:\n    data: Dictionary containing kb_id, source, name, and ingestion options.\n\nReturns:\n    Success status and ingestion job ID.",
        "operationId": "ingest_kb_api_enhanced_kb_ingest_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ingest Kb Api Enhanced Kb Ingest Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ingest Kb"
      }
    },
    "/api/enhanced/kb/list": {
      "get": {
        "description": "List all Knowledge Bases.\n\nReturns:\n    List of Knowledge Base metadata.",
        "operationId": "list_kbs_api_enhanced_kb_list_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Kbs Api Enhanced Kb List Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Kbs"
      }
    },
    "/api/enhanced/kb/search": {
      "get": {
        "description": "Search within Knowledge Bases.\n\nArgs:\n    query: Search query string.\n    kb_id: Optional KB ID to restrict search.\n\nReturns:\n    List of matching articles and concepts.",
        "operationId": "search_kb_api_enhanced_kb_search_get",
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "required": true,
            "schema": {
              "title": "Query",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "kb_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Kb Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Search Kb Api Enhanced Kb Search Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Search Kb"
      }
    },
    "/api/enhanced/kb/update": {
      "post": {
        "description": "Update a Knowledge Base with changed files.\n\nArgs:\n    data: Dictionary containing kb_id and update options.\n\nReturns:\n    Success status.",
        "operationId": "update_kb_api_enhanced_kb_update_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Kb Api Enhanced Kb Update Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Kb"
      }
    },
    "/api/enhanced/llm/models": {
      "get": {
        "description": "List the configured chat models for the LLM template composer (D-AOBS-4).\n\nReads the live `AgentConfig.chat_models` registry (`core/config.py`'s\n`ChatModelConfig`) \u2014 the same registry `create_model` resolves against \u2014\nrather than re-deriving a second model list. Only capability/identity\nfields are returned; `api_key_ref`/`oauth2`/`headers_ref` are runtime\nsecret REFERENCES (never literal secrets \u2014 enforced by ChatModelConfig's\nown validator) but are still excluded here because they are wiring\ndetail, not something a template author needs to pick a model.",
        "operationId": "list_llm_models_api_enhanced_llm_models_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Llm Models Api Enhanced Llm Models Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Llm Models"
      }
    },
    "/api/enhanced/maintenance/status": {
      "get": {
        "description": "Get status of all maintenance operations.\n\nReturns:\n    Maintenance operation status and history.",
        "operationId": "get_maintenance_status_api_enhanced_maintenance_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Maintenance Status Api Enhanced Maintenance Status Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Maintenance Status"
      }
    },
    "/api/enhanced/maintenance/trigger": {
      "post": {
        "description": "Trigger a specific maintenance operation.\n\nArgs:\n    data: Dictionary containing operation.\n\nReturns:\n    Operation status and results.",
        "operationId": "trigger_maintenance_api_enhanced_maintenance_trigger_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Trigger Maintenance Api Enhanced Maintenance Trigger Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Trigger Maintenance"
      }
    },
    "/api/enhanced/mcp/apps/resource": {
      "post": {
        "description": "Read one ``ui://`` MCP App resource through the governed seam.\n\nCONCEPT:AU-ECO.mcp.webui-governed-mcp-delegation\n\nThe returned ``html`` is UNTRUSTED tool output. The only supported way to\nrender it is ``McpAppFrame``, which sandboxes it (``allow-scripts`` with no\n``allow-same-origin``) and applies the host-resolved CSP; this route\ndeliberately returns it as JSON rather than as an HTML response so it can\nnever be navigated to directly and inherit this origin.",
        "operationId": "read_mcp_app_resource_route_api_enhanced_mcp_apps_resource_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Read Mcp App Resource Route Api Enhanced Mcp Apps Resource Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read Mcp App Resource Route"
      }
    },
    "/api/enhanced/mcp/servers/{server_name}/tools": {
      "get": {
        "description": "Query tools through a host-injected, governed GraphOS delegation seam.",
        "operationId": "list_mcp_server_tools_api_enhanced_mcp_servers__server_name__tools_get",
        "parameters": [
          {
            "in": "path",
            "name": "server_name",
            "required": true,
            "schema": {
              "title": "Server Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Mcp Server Tools Api Enhanced Mcp Servers  Server Name  Tools Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Mcp Server Tools"
      }
    },
    "/api/enhanced/mcp/tools/call": {
      "post": {
        "description": "Invoke one MCP tool through the host's governed delegation seam.\n\nCONCEPT:AU-ECO.mcp.webui-governed-mcp-delegation\n\nThis is the browser's only path to an MCP tool (``src/lib/mcp-client.ts``),\nand in particular the executor behind an MCP App's ``tools/call`` bridge\n(``src/lib/mcp-apps/bridge.ts``). The browser cannot reach a graph-os\nlistener itself \u2014 that listener enforces ``MCP_ALLOWED_HOSTS`` on the\n``Host`` authority and authenticates with a service bearer no page may\nhold \u2014 so the call is made here, same-origin, under the session identity\nevery ``/api/*`` route already requires.\n\nThe WebUI adds NO authority of its own: it validates the shape of the\nrequest and hands it to the host-injected ``call_mcp_tool`` helper, which\nowns the allowlist, actor policy, credential references, and audit\nenvelope. With no host injection the route reports 501 rather than\ninventing a delegation path.",
        "operationId": "call_mcp_tool_route_api_enhanced_mcp_tools_call_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Call Mcp Tool Route Api Enhanced Mcp Tools Call Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Call Mcp Tool Route"
      }
    },
    "/api/enhanced/models": {
      "get": {
        "description": "Return the configured LLM model registry.\n\nMirrors the core server's ``GET /models`` endpoint so the web UI can\npower its model picker and cost display from the same declarative\nconfiguration as the terminal UI and graph orchestrator. When no\nregistry is attached to ``app.state.model_registry`` (e.g. the server\nwas started without ``MODELS_CONFIG`` and without explicit kwargs) the\nresponse still validates as an empty registry.\n\nReturns:\n    ``{\"models\": [...ModelDefinition...], \"default_id\": \"...\"}``.",
        "operationId": "list_configured_models_api_enhanced_models_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response List Configured Models Api Enhanced Models Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Configured Models"
      }
    },
    "/api/enhanced/ontology/actions": {
      "get": {
        "description": "List the REAL registered ontology actions, optionally scoped to a type.\n\nBacks the Object Explorer's bulk-action menu so every offered action is a\ngenuinely registered :class:`OntologyAction` routed through the governed\nexecutor \u2014 no hardcoded/fake verbs. When ``object_type`` is supplied the\nlist is narrowed via :meth:`ActionRegistry.actions_for_type` (the actions\nwhose ``acts_on`` covers that type); otherwise the full registry is returned\nvia :meth:`ActionRegistry.list_actions`. Each entry carries ``name``,\n``verb``, ``description``, ``produces_effect`` and ``required_capability``\nso the client can filter to mutation/external-effect actions.",
        "operationId": "ontology_actions_api_enhanced_ontology_actions_get",
        "parameters": [
          {
            "in": "query",
            "name": "object_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Object Type"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Ontology Actions Api Enhanced Ontology Actions Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ontology Actions"
      }
    },
    "/api/enhanced/ontology/derive": {
      "post": {
        "description": "Compute a single derived property for an object.\n\nBody: ``{object_id, derived_name, object_type}``. Resolves the object's\nlive property map from the store (a UI convenience \u2014 the canonical tool\ntakes the object dict), then dispatches through the canonical\n``ontology_derive`` tool \u2014 the same implementation behind the gateway's\n``POST /ontology/derive`` \u2014 so derive semantics cannot drift.",
        "operationId": "derive_ontology_property_api_enhanced_ontology_derive_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Derive Ontology Property Api Enhanced Ontology Derive Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Derive Ontology Property"
      }
    },
    "/api/enhanced/ontology/document/process": {
      "post": {
        "description": "Process a document into Document + Chunk objects (KG-2.48).\n\nBody: ``{text|path, chunk_size, overlap, title, doc_type, source}``.",
        "operationId": "process_ontology_document_api_enhanced_ontology_document_process_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Process Ontology Document Api Enhanced Ontology Document Process Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Process Ontology Document"
      }
    },
    "/api/enhanced/ontology/function/invoke": {
      "post": {
        "description": "Invoke a typed, versioned ontology function via the audited runtime.\n\nBody: ``{name, version, params}``. Dispatches through the canonical\n``ontology_function`` tool \u2014 the same implementation behind the gateway's\n``POST /ontology/function`` \u2014 so invocation semantics cannot drift.",
        "operationId": "invoke_ontology_function_api_enhanced_ontology_function_invoke_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Invoke Ontology Function Api Enhanced Ontology Function Invoke Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Invoke Ontology Function"
      }
    },
    "/api/enhanced/ontology/interfaces": {
      "get": {
        "description": "List ontology interfaces with their implementers (KG-2.38).",
        "operationId": "list_ontology_interfaces_api_enhanced_ontology_interfaces_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Ontology Interfaces Api Enhanced Ontology Interfaces Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Ontology Interfaces"
      }
    },
    "/api/enhanced/ontology/interfaces/{name}/implementers": {
      "get": {
        "description": "Resolve the concrete object types that implement interface ``name``.",
        "operationId": "get_interface_implementers_api_enhanced_ontology_interfaces__name__implementers_get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Interface Implementers Api Enhanced Ontology Interfaces  Name  Implementers Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Interface Implementers"
      }
    },
    "/api/enhanced/ontology/object-set/action": {
      "post": {
        "description": "Apply a bulk OntologyAction over selected objects via the governed executor.\n\nBody: ``{ids, action_name, params, actor?}`` \u2014 Palantir 'bulk Actions with\nwriteback'. Each target is run through the governed\n:class:`ActionExecutor` (authorize \u2192 escalate \u2192 validate \u2192 run \u2192 audit \u2192\npersist), with side-effects journaled in the live-store-bound Edit Ledger so\nevery writeback is durable + revertible. Permissioning is enforced: an actor\nlacking the action's ``required_capability`` is DENIED per target. Returns\n``{applied, results:[{id, status, edit_ids}], errors}``.",
        "operationId": "ontology_object_set_action_api_enhanced_ontology_object_set_action_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ontology Object Set Action Api Enhanced Ontology Object Set Action Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ontology Object Set Action"
      }
    },
    "/api/enhanced/ontology/object-set/aggregate": {
      "post": {
        "description": "Aggregate an object set (count/sum/avg/min/max), optionally grouped.\n\nBody: ``{ids, group_by, metric, field}``.",
        "operationId": "ontology_object_set_aggregate_api_enhanced_ontology_object_set_aggregate_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ontology Object Set Aggregate Api Enhanced Ontology Object Set Aggregate Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ontology Object Set Aggregate"
      }
    },
    "/api/enhanced/ontology/object-set/list": {
      "get": {
        "description": "List saved ObjectSets for the Explorer 'saved sets' panel.\n\nMerges the durable ``object_set`` KG nodes with the JSON mirror so a set\nsaved by any worker is visible. A non-shared set is only listed for its\nowning actor (or for an admin/system actor); shared sets are visible to all.",
        "operationId": "ontology_object_set_list_api_enhanced_ontology_object_set_list_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ontology Object Set List Api Enhanced Ontology Object Set List Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Ontology Object Set List"
      }
    },
    "/api/enhanced/ontology/object-set/pivot": {
      "post": {
        "description": "Pivot an object set across a link type, grouping the linked set.\n\nBody: ``{ids, link_type, group_by, direction}``.",
        "operationId": "ontology_object_set_pivot_api_enhanced_ontology_object_set_pivot_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ontology Object Set Pivot Api Enhanced Ontology Object Set Pivot Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ontology Object Set Pivot"
      }
    },
    "/api/enhanced/ontology/object-set/save": {
      "post": {
        "description": "Persist a named ObjectSet so it can be revisited / shared.\n\nBody: ``{name, ids|filter|query, kind, shared?}`` \u2014 the Palantir\n'save / share object set' primitive. The set is materialised to concrete\nmember ids and persisted **durably** as an ``object_set`` KG node on the live\nstore (with a JSON mirror so it survives offline backends). Returns\n``{id, name, count, kind}``.",
        "operationId": "ontology_object_set_save_api_enhanced_ontology_object_set_save_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ontology Object Set Save Api Enhanced Ontology Object Set Save Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ontology Object Set Save"
      }
    },
    "/api/enhanced/ontology/object-set/search": {
      "post": {
        "description": "Search an object set and return permission-enforced summary rows.\n\nBody: ``{query, filters, kind}`` \u2014 ``kind`` is an object type / interface to\nscope to (omit for a graph-wide search); ``filters`` is an optional list of\n``{property, op, value}`` typed predicates; ``query`` is the search string.",
        "operationId": "ontology_object_set_search_api_enhanced_ontology_object_set_search_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ontology Object Set Search Api Enhanced Ontology Object Set Search Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ontology Object Set Search"
      }
    },
    "/api/enhanced/ontology/object-set/search-around": {
      "post": {
        "description": "Traverse a typed link from a seed id set to the related object set.\n\nBody: ``{ids, link_type, hops, cap, direction}``.",
        "operationId": "ontology_object_set_search_around_api_enhanced_ontology_object_set_search_around_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Ontology Object Set Search Around Api Enhanced Ontology Object Set Search Around Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Ontology Object Set Search Around"
      }
    },
    "/api/enhanced/ontology/object-types": {
      "get": {
        "description": "List ontology object/node types (registry types + interface implementers).\n\nReturns the distinct object-type values known to the ontology: every concrete\ntype that implements a registered interface, unioned with the live node\nlabels present in the store. Each entry carries the interfaces it implements.",
        "operationId": "list_object_types_api_enhanced_ontology_object_types_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Object Types Api Enhanced Ontology Object Types Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Object Types"
      }
    },
    "/api/enhanced/ontology/object-view/{object_type}": {
      "get": {
        "description": "Get the ObjectView for a type: stored (configured) else standard (schema).",
        "operationId": "get_ontology_object_view_api_enhanced_ontology_object_view__object_type__get",
        "parameters": [
          {
            "in": "path",
            "name": "object_type",
            "required": true,
            "schema": {
              "title": "Object Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Ontology Object View Api Enhanced Ontology Object View  Object Type  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Ontology Object View"
      },
      "post": {
        "description": "Save a configured ObjectView definition (widget composition) for a type.",
        "operationId": "save_ontology_object_view_api_enhanced_ontology_object_view__object_type__post",
        "parameters": [
          {
            "in": "path",
            "name": "object_type",
            "required": true,
            "schema": {
              "title": "Object Type",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Save Ontology Object View Api Enhanced Ontology Object View  Object Type  Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Save Ontology Object View"
      }
    },
    "/api/enhanced/ontology/object/{object_id}": {
      "get": {
        "description": "Full object view: properties, in/out links, derived props, markings, history.\n\nThe properties are passed through the fine-grained permissioning gate\n(``enforce``) for the requesting actor; a fully-redacted/denied object yields\na 404.\n\n``layout`` selects the widget composition returned under ``view``:\n``standard`` (default) derives the layout from the object type's interface\nschema; ``configured`` returns the stored :func:`ObjectView` widget\ncomposition for that type when one has been saved (falling back to standard\nwhen none exists). The selection is a real change in the returned payload \u2014\nthe same affordance the Explorer's layout toggle reaches.",
        "operationId": "get_ontology_object_api_enhanced_ontology_object__object_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "object_id",
            "required": true,
            "schema": {
              "title": "Object Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "layout",
            "required": false,
            "schema": {
              "default": "standard",
              "title": "Layout",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Ontology Object Api Enhanced Ontology Object  Object Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Ontology Object"
      }
    },
    "/api/enhanced/ontology/object/{object_id}/edit": {
      "post": {
        "description": "Record a durable edit on an object and return the edit + updated object.\n\nBody: ``{edit_type, property|properties, value, link_type, target, actor}``.\n``edit_type`` is one of ``property_set`` / ``link_add`` / ``link_remove``.",
        "operationId": "edit_ontology_object_api_enhanced_ontology_object__object_id__edit_post",
        "parameters": [
          {
            "in": "path",
            "name": "object_id",
            "required": true,
            "schema": {
              "title": "Object Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Edit Ontology Object Api Enhanced Ontology Object  Object Id  Edit Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Edit Ontology Object"
      }
    },
    "/api/enhanced/ontology/object/{object_id}/revert": {
      "post": {
        "description": "Revert a recorded edit, recording a durable compensating edit.\n\nBody: ``{edit_id, actor}``.",
        "operationId": "revert_ontology_edit_api_enhanced_ontology_object__object_id__revert_post",
        "parameters": [
          {
            "in": "path",
            "name": "object_id",
            "required": true,
            "schema": {
              "title": "Object Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Revert Ontology Edit Api Enhanced Ontology Object  Object Id  Revert Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Revert Ontology Edit"
      }
    },
    "/api/enhanced/ontology/property-types": {
      "get": {
        "description": "Return the ontology property-type registry (KG-2.47).",
        "operationId": "list_ontology_property_types_api_enhanced_ontology_property_types_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Ontology Property Types Api Enhanced Ontology Property Types Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Ontology Property Types"
      }
    },
    "/api/enhanced/pipeline/status": {
      "get": {
        "description": "Get status of the 12-phase intelligence pipeline.\n\nReturns:\n    Pipeline status and phase information.",
        "operationId": "get_pipeline_status_api_enhanced_pipeline_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Pipeline Status Api Enhanced Pipeline Status Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Pipeline Status"
      }
    },
    "/api/enhanced/pipeline/trigger": {
      "post": {
        "description": "Trigger pipeline execution or specific phase.\n\nArgs:\n    data: Dictionary containing phase.\n\nReturns:\n    Pipeline execution status.",
        "operationId": "trigger_pipeline_api_enhanced_pipeline_trigger_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Trigger Pipeline Api Enhanced Pipeline Trigger Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Trigger Pipeline"
      }
    },
    "/api/enhanced/prompts": {
      "get": {
        "description": "List all prompting JSON configs from agent_utilities/prompts/.",
        "operationId": "list_prompts_api_enhanced_prompts_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Prompts Api Enhanced Prompts Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Prompts"
      }
    },
    "/api/enhanced/prompts/graph": {
      "get": {
        "description": "List all prompts from the Knowledge Graph.\n\nCONCEPT:WU-KG.compute.prompt-management-ahe-rollback \u2014 Prompt Management\n\nReturns:\n    A list of prompt dicts with id, name, content, and metadata.",
        "operationId": "list_graph_prompts_api_enhanced_prompts_graph_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Graph Prompts Api Enhanced Prompts Graph Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Graph Prompts"
      },
      "post": {
        "description": "Create a new prompt in the Knowledge Graph.\n\nCONCEPT:WU-KG.compute.prompt-management-ahe-rollback \u2014 Prompt Management\n\nArgs:\n    data: Dict with 'name', 'content', and optional 'description', 'author'.\n\nReturns:\n    The created prompt dict.",
        "operationId": "create_graph_prompt_api_enhanced_prompts_graph_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Create Graph Prompt Api Enhanced Prompts Graph Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Graph Prompt"
      }
    },
    "/api/enhanced/prompts/graph/{prompt_id}": {
      "get": {
        "description": "Retrieve a single prompt by ID.\n\nCONCEPT:WU-KG.compute.prompt-management-ahe-rollback \u2014 Prompt Management\n\nArgs:\n    prompt_id: The unique identifier of the prompt.\n\nReturns:\n    The prompt dict with full content.",
        "operationId": "get_graph_prompt_api_enhanced_prompts_graph__prompt_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "prompt_id",
            "required": true,
            "schema": {
              "title": "Prompt Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Graph Prompt Api Enhanced Prompts Graph  Prompt Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Graph Prompt"
      },
      "put": {
        "description": "Update a prompt, creating a new version via SUPERSEDES.\n\nCONCEPT:WU-KG.compute.prompt-management-ahe-rollback \u2014 Prompt Management\n\nArgs:\n    prompt_id: The identifier of the prompt to update.\n    data: Dict with 'content' and optional 'author'.\n\nReturns:\n    The new version dict with version number and parent_id.",
        "operationId": "update_graph_prompt_api_enhanced_prompts_graph__prompt_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "prompt_id",
            "required": true,
            "schema": {
              "title": "Prompt Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Graph Prompt Api Enhanced Prompts Graph  Prompt Id  Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Graph Prompt"
      }
    },
    "/api/enhanced/prompts/graph/{prompt_id}/diff/{version_a}/{version_b}": {
      "get": {
        "description": "Get a unified diff between two prompt versions.\n\nCONCEPT:WU-KG.compute.prompt-management-ahe-rollback \u2014 Prompt Management\n\nArgs:\n    prompt_id: The prompt family identifier (unused, for URL structure).\n    version_a: ID of the first version.\n    version_b: ID of the second version.\n\nReturns:\n    Dict with 'diff' (unified diff string) and version metadata.",
        "operationId": "diff_graph_prompt_versions_api_enhanced_prompts_graph__prompt_id__diff__version_a___version_b__get",
        "parameters": [
          {
            "in": "path",
            "name": "prompt_id",
            "required": true,
            "schema": {
              "title": "Prompt Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "version_a",
            "required": true,
            "schema": {
              "title": "Version A",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "version_b",
            "required": true,
            "schema": {
              "title": "Version B",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Diff Graph Prompt Versions Api Enhanced Prompts Graph  Prompt Id  Diff  Version A   Version B  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Diff Graph Prompt Versions"
      }
    },
    "/api/enhanced/prompts/graph/{prompt_id}/rollback/{version_id}": {
      "post": {
        "description": "Rollback a prompt to a previous version.\n\nCONCEPT:WU-KG.compute.prompt-management-ahe-rollback \u2014 Prompt Management (AHE Rollback)\n\nCreates a new version that copies the target's content.\nAlways forward, never destructive.\n\nArgs:\n    prompt_id: The current prompt identifier.\n    version_id: The target version to rollback to.\n\nReturns:\n    The new version dict (a copy of the target).",
        "operationId": "rollback_graph_prompt_api_enhanced_prompts_graph__prompt_id__rollback__version_id__post",
        "parameters": [
          {
            "in": "path",
            "name": "prompt_id",
            "required": true,
            "schema": {
              "title": "Prompt Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "version_id",
            "required": true,
            "schema": {
              "title": "Version Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Rollback Graph Prompt Api Enhanced Prompts Graph  Prompt Id  Rollback  Version Id  Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Rollback Graph Prompt"
      }
    },
    "/api/enhanced/prompts/graph/{prompt_id}/versions": {
      "get": {
        "description": "Get version history for a prompt.\n\nCONCEPT:WU-KG.compute.prompt-management-ahe-rollback \u2014 Prompt Management\n\nArgs:\n    prompt_id: The identifier of the prompt.\n\nReturns:\n    List of version dicts ordered newest-first.",
        "operationId": "get_graph_prompt_versions_api_enhanced_prompts_graph__prompt_id__versions_get",
        "parameters": [
          {
            "in": "path",
            "name": "prompt_id",
            "required": true,
            "schema": {
              "title": "Prompt Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Get Graph Prompt Versions Api Enhanced Prompts Graph  Prompt Id  Versions Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Graph Prompt Versions"
      }
    },
    "/api/enhanced/prompts/{name}": {
      "get": {
        "description": "Retrieve details for a single prompt file.",
        "operationId": "get_prompt_by_name_api_enhanced_prompts__name__get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Prompt By Name Api Enhanced Prompts  Name  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Prompt By Name"
      },
      "put": {
        "description": "Update details for a single prompt file.",
        "operationId": "update_prompt_by_name_api_enhanced_prompts__name__put",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Prompt By Name Api Enhanced Prompts  Name  Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Prompt By Name"
      }
    },
    "/api/enhanced/reload": {
      "post": {
        "description": "Trigger a KG-first reload of the agent's configuration.\n\nCONCEPT:WU-KG.compute.workspace-reload \u2014 Workspace Reload\n\nArgs:\n    request: The current FastAPI Request object.\n\nReturns:\n    Structured change summary with counts of updated resources.",
        "operationId": "reload_agent_api_enhanced_reload_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Reload Agent Api Enhanced Reload Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Reload Agent"
      }
    },
    "/api/enhanced/repository-manager/bulk": {
      "post": {
        "description": "Run a bounded read-only status action across referenced workspace repos.\n\nRepository paths, names, commands, and command output never cross the API\nboundary. Mutating repository operations must use the governed repository\nmanager delegation surface instead.",
        "operationId": "trigger_workspace_bulk_actions_api_enhanced_repository_manager_bulk_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Payload",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Trigger Workspace Bulk Actions Api Enhanced Repository Manager Bulk Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Trigger Workspace Bulk Actions"
      }
    },
    "/api/enhanced/repository-manager/repos": {
      "get": {
        "description": "Retrieve privacy-safe repository references and tracked-drift states.",
        "operationId": "list_workspace_repos_api_enhanced_repository_manager_repos_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Workspace Repos Api Enhanced Repository Manager Repos Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Workspace Repos"
      }
    },
    "/api/enhanced/resources": {
      "get": {
        "description": "List all callable resources (MCP tools, A2A agents, skills).\n\nReturns:\n    List of resource metadata.",
        "operationId": "list_resources_api_enhanced_resources_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Resources Api Enhanced Resources Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Resources"
      }
    },
    "/api/enhanced/resources/spawn": {
      "post": {
        "description": "Spawn a specialized sub-agent with curated toolset.\n\nArgs:\n    data: Dictionary containing agent configuration and toolset.\n\nReturns:\n    Spawned agent metadata.",
        "operationId": "spawn_agent_api_enhanced_resources_spawn_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Spawn Agent Api Enhanced Resources Spawn Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Spawn Agent"
      }
    },
    "/api/enhanced/sdd/constitution": {
      "get": {
        "description": "Retrieve the project constitution.\n\nReturns:\n    Constitution data or null if not exists.",
        "operationId": "get_constitution_api_enhanced_sdd_constitution_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Constitution Api Enhanced Sdd Constitution Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Constitution"
      },
      "post": {
        "description": "Save the project constitution.\n\nArgs:\n    data: Constitution data.\n\nReturns:\n    Success status.",
        "operationId": "save_constitution_api_enhanced_sdd_constitution_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Save Constitution Api Enhanced Sdd Constitution Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Save Constitution"
      }
    },
    "/api/enhanced/sdd/plans": {
      "get": {
        "description": "List all implementation plans.\n\nReturns:\n    List of plan metadata.",
        "operationId": "list_plans_api_enhanced_sdd_plans_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Plans Api Enhanced Sdd Plans Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Plans"
      }
    },
    "/api/enhanced/sdd/spec": {
      "post": {
        "description": "Create a new specification.\n\nArgs:\n    data: Specification data.\n\nReturns:\n    Created specification with ID.",
        "operationId": "create_spec_api_enhanced_sdd_spec_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Create Spec Api Enhanced Sdd Spec Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Spec"
      }
    },
    "/api/enhanced/sdd/specs": {
      "get": {
        "description": "List all specifications.\n\nReturns:\n    List of specification metadata.",
        "operationId": "list_specs_api_enhanced_sdd_specs_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Specs Api Enhanced Sdd Specs Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Specs"
      }
    },
    "/api/enhanced/sdd/sync": {
      "post": {
        "description": "Sync SDD lifecycle data to Knowledge Graph memory.\n\nArgs:\n    data: Dictionary containing plan_id or spec_id.\n\nReturns:\n    Success status.",
        "operationId": "sync_sdd_to_memory_api_enhanced_sdd_sync_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Sync Sdd To Memory Api Enhanced Sdd Sync Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Sync Sdd To Memory"
      }
    },
    "/api/enhanced/sdd/tasks": {
      "get": {
        "description": "Retrieve tasks for a plan or all tasks.\n\nArgs:\n    plan_id: Optional plan ID to filter tasks.\n\nReturns:\n    Tasks data.",
        "operationId": "get_tasks_api_enhanced_sdd_tasks_get",
        "parameters": [
          {
            "in": "query",
            "name": "plan_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Plan Id"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "items": {},
                      "type": "array"
                    },
                    {
                      "additionalProperties": true,
                      "type": "object"
                    }
                  ],
                  "title": "Response Get Tasks Api Enhanced Sdd Tasks Get"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Tasks"
      }
    },
    "/api/enhanced/security/doctor": {
      "get": {
        "description": "Return the active, non-secret startup and sync-capacity contract.",
        "operationId": "_security_doctor_api_enhanced_security_doctor_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response  Security Doctor Api Enhanced Security Doctor Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": " Security Doctor"
      }
    },
    "/api/enhanced/sessions": {
      "get": {
        "description": "Retrieve durable sqlite-backed agent sessions (TUI-20).\n\nCross-user visibility boundary (R9 / D-WUI-33): an `admin`-role caller sees\nevery session; anyone else sees only sessions they own. This is a\nserver-side data-layer scope, not a UI filter \u2014 `WebUIAuthorizationMiddleware`\nonly decides whether the route may be reached at all (any authenticated\n`user`-tier caller, per `nav-registry.ts`'s `control-plane.sessions`\n`minRole`); which ROWS come back is decided here, every time, regardless of\nwhat the caller asks for.",
        "operationId": "get_all_sessions_api_enhanced_sessions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response Get All Sessions Api Enhanced Sessions Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get All Sessions"
      }
    },
    "/api/enhanced/sessions/{session_id}": {
      "delete": {
        "description": "Permanently remove a session and its turns from durable persistence.\n\nSame cross-user boundary as `get_session_details`: only the owning user\n(or an admin) may delete a session.",
        "operationId": "delete_session_api_enhanced_sessions__session_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "title": "Session Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Delete Session Api Enhanced Sessions  Session Id  Delete",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Session"
      },
      "get": {
        "description": "Retrieve details and turn records for a specific session.\n\nSame cross-user boundary as `get_all_sessions`: a non-admin caller who\nguesses/reuses another user's session id gets 404, not their data \u2014\n\"not found\" rather than \"forbidden\" so existence of another user's\nsession is never disclosed either.",
        "operationId": "get_session_details_api_enhanced_sessions__session_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "title": "Session Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Session Details Api Enhanced Sessions  Session Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Session Details"
      }
    },
    "/api/enhanced/sessions/{session_id}/cancel": {
      "post": {
        "description": "Cancel any active background or goal execution on this session.",
        "operationId": "cancel_session_run_api_enhanced_sessions__session_id__cancel_post",
        "parameters": [
          {
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "title": "Session Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Cancel Session Run Api Enhanced Sessions  Session Id  Cancel Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Cancel Session Run"
      }
    },
    "/api/enhanced/sessions/{session_id}/reply": {
      "post": {
        "description": "Submit an interactive user reply turn to a waiting agent session.",
        "operationId": "submit_session_reply_api_enhanced_sessions__session_id__reply_post",
        "parameters": [
          {
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "title": "Session Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Payload",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Submit Session Reply Api Enhanced Sessions  Session Id  Reply Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Submit Session Reply"
      }
    },
    "/api/enhanced/skills": {
      "get": {
        "description": "Retrieve the catalog of dynamic agent skills.\n\nCONCEPT:WU-KG.compute.granular-resource-queries \u2014 Granular Resource Queries\n\nReturns:\n    A list of skill definitions sorted alphabetically.",
        "operationId": "list_skills_api_enhanced_skills_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Skills Api Enhanced Skills Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Skills"
      }
    },
    "/api/enhanced/skills/{skill_id}/toggle": {
      "post": {
        "description": "Enable or disable a specific agent skill.\n\nCONCEPT:WU-KG.compute.granular-resource-queries \u2014 Granular Resource Queries\n\nArgs:\n    skill_id: The identifier of the skill to toggle.\n\nReturns:\n    The resulting state of the toggled skill.",
        "operationId": "toggle_skill_api_enhanced_skills__skill_id__toggle_post",
        "parameters": [
          {
            "in": "path",
            "name": "skill_id",
            "required": true,
            "schema": {
              "title": "Skill Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Toggle Skill Api Enhanced Skills  Skill Id  Toggle Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle Skill"
      }
    },
    "/api/enhanced/system": {
      "get": {
        "description": "Retrieve the current active agent's system prompt.",
        "operationId": "get_system_prompt_api_enhanced_system_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Get System Prompt Api Enhanced System Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get System Prompt"
      }
    },
    "/api/enhanced/systems-manager/processes": {
      "get": {
        "description": "Return bounded, opaque process utilization without identities or PIDs.",
        "operationId": "list_system_processes_api_enhanced_systems_manager_processes_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List System Processes Api Enhanced Systems Manager Processes Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List System Processes"
      }
    },
    "/api/enhanced/systems-manager/resources": {
      "get": {
        "description": "Retrieve host machine load details (CPU, RAM, Disks).",
        "operationId": "get_system_resources_api_enhanced_systems_manager_resources_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get System Resources Api Enhanced Systems Manager Resources Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get System Resources"
      }
    },
    "/api/enhanced/tools": {
      "get": {
        "description": "Retrieve all MCP tools, built-in tools, skills, skill graphs, and workflows categorized.",
        "operationId": "list_all_tools_api_enhanced_tools_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response List All Tools Api Enhanced Tools Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List All Tools"
      }
    },
    "/api/enhanced/tools/graph": {
      "get": {
        "description": "List MCP tools from the Knowledge Graph.\n\nCONCEPT:WU-KG.compute.granular-resource-queries \u2014 Granular Resource Queries\n\nReturns:\n    A list of MCP tool dicts sorted alphabetically.",
        "operationId": "list_graph_tools_api_enhanced_tools_graph_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Graph Tools Api Enhanced Tools Graph Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Graph Tools"
      }
    },
    "/api/enhanced/tools/graph/{tool_id}/toggle": {
      "post": {
        "description": "Toggle the enabled/disabled KG flag on an MCP tool.\n\nCONCEPT:WU-KG.compute.granular-resource-queries \u2014 Granular Resource Queries\n\nArgs:\n    tool_id: The identifier of the tool to toggle.\n\nReturns:\n    The resulting state of the toggled tool.",
        "operationId": "toggle_graph_tool_api_enhanced_tools_graph__tool_id__toggle_post",
        "parameters": [
          {
            "in": "path",
            "name": "tool_id",
            "required": true,
            "schema": {
              "title": "Tool Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Toggle Graph Tool Api Enhanced Tools Graph  Tool Id  Toggle Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle Graph Tool"
      }
    },
    "/api/enhanced/tools/toggle": {
      "post": {
        "description": "Toggle the enabled status of an item (mcp_server, mcp_tool, builtin_tool, skill, etc.) in the graph.",
        "operationId": "toggle_tool_status_api_enhanced_tools_toggle_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Data",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Toggle Tool Status Api Enhanced Tools Toggle Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle Tool Status"
      }
    },
    "/api/enhanced/tunnel-manager/hosts": {
      "get": {
        "description": "Retrieve opaque SSH inventory through a governed host adapter.",
        "operationId": "get_tunnel_hosts_api_enhanced_tunnel_manager_hosts_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Tunnel Hosts Api Enhanced Tunnel Manager Hosts Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Tunnel Hosts"
      },
      "post": {
        "description": "Delegate a bounded host registration containing no inline secrets.",
        "operationId": "add_tunnel_host_api_enhanced_tunnel_manager_hosts_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "title": "Payload",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Add Tunnel Host Api Enhanced Tunnel Manager Hosts Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add Tunnel Host"
      }
    },
    "/api/enhanced/upload": {
      "post": {
        "description": "Store one bounded upload atomically inside the configured workspace.\n\nArgs:\n    file: The UploadFile object from the request.\n\nReturns:\n    Confirmation containing the saved filename.",
        "operationId": "upload_file_api_enhanced_upload_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_file_api_enhanced_upload_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Upload File Api Enhanced Upload Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload File"
      }
    },
    "/api/enhanced/voice/transcribe": {
      "post": {
        "description": "Delegate one bounded audio upload to a governed transcription sandbox.",
        "operationId": "transcribe_voice_chunk_api_enhanced_voice_transcribe_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_transcribe_voice_chunk_api_enhanced_voice_transcribe_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Transcribe Voice Chunk Api Enhanced Voice Transcribe Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Transcribe Voice Chunk"
      }
    },
    "/api/enhanced/workflows": {
      "get": {
        "description": "List saved workflows from the Knowledge Graph.\n\nReturns a list of ``{id, name, steps, orchestrates, canvas}`` dicts. The\ncanvas (editor node/edge/layout JSON) is loaded from the sibling\n``:WorkflowCanvas`` node when present so the editor round-trips exactly.\nDegrades to ``[]`` on any error.",
        "operationId": "list_workflows_api_enhanced_workflows_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "title": "Response List Workflows Api Enhanced Workflows Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Workflows"
      },
      "post": {
        "description": "Persist a workflow as a canonical ``WorkflowSpec`` + canvas sidecar.\n\nBody: ``{name, steps:[str], orchestrates:[str], nodes?, edges?, layout?,\ncanvas?}``. Builds a ``WorkflowSpec`` and persists it via the canonical\n``workflow_to_batch`` path, then stores the editor's node/edge/layout JSON\non a sibling ``:WorkflowCanvas`` node keyed by the workflow id so the\ncanvas round-trips exactly. Returns ``{id, saved}``.",
        "operationId": "save_workflow_api_enhanced_workflows_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Save Workflow Api Enhanced Workflows Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Save Workflow"
      }
    },
    "/api/enhanced/workflows/capabilities": {
      "get": {
        "description": "Return the palette catalog (agents/tools/skills) in a single call.\n\nSources agents and tools/skills from the same queries used by ``/agents``\nand ``/tools`` so the editor palette stays consistent with the rest of the\nUI. Degrades gracefully (empty lists) on error.",
        "operationId": "workflow_capabilities_api_enhanced_workflows_capabilities_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "items": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "title": "Response Workflow Capabilities Api Enhanced Workflows Capabilities Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Workflow Capabilities"
      }
    },
    "/api/enhanced/workflows/{wid}/run": {
      "post": {
        "description": "Run a saved workflow by dispatching it through the orchestration engine.\n\nLoads the workflow, builds a ``WorkflowSpec`` and dispatches it via\n``AgentOrchestrationEngine(...).dispatch(task=spec, mode=\"workflow\")``.\nWraps failures so an error returns ``{status: \"error\", error}`` instead of\na 500. Returns ``{run_id, status, result/summary}``.",
        "operationId": "run_workflow_api_enhanced_workflows__wid__run_post",
        "parameters": [
          {
            "in": "path",
            "name": "wid",
            "required": true,
            "schema": {
              "title": "Wid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Run Workflow Api Enhanced Workflows  Wid  Run Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Run Workflow"
      }
    },
    "/api/graph/write": {
      "delete": {
        "description": "Deletes one edge identified by source_id/target_id/rel_type. Equivalent to POST /graph/write with action='delete_edge'; kept as a dedicated DELETE verb on the same collapsed path so a REST-verb-first caller does not lose the capability the removed DELETE /graph/write/edge granular route had.",
        "operationId": "graph_write_delete_edge_endpoint_api_graph_write_delete",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request body for ``DELETE /graph/write/edge``\n(``graph_write_delete_edge_endpoint``, action='delete_edge').\n\nSame path as ``POST /graph/write/edge`` (``GraphWriteEdgeRequest``) but a\ndifferent body: no 'properties' field, since the handler never reads one\nfor a delete.",
                "properties": {
                  "rel_type": {
                    "description": "The edge's relationship type.",
                    "minLength": 1,
                    "title": "Rel Type",
                    "type": "string"
                  },
                  "source_id": {
                    "description": "The edge's source node id.",
                    "minLength": 1,
                    "title": "Source Id",
                    "type": "string"
                  },
                  "target_id": {
                    "description": "The edge's target node id.",
                    "minLength": 1,
                    "title": "Target Id",
                    "type": "string"
                  }
                },
                "required": [
                  "source_id",
                  "target_id",
                  "rel_type"
                ],
                "title": "GraphWriteEdgeDeleteRequest",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GraphToolResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Delete an edge (graph_write action=delete_edge)"
      },
      "post": {
        "description": "Collapsed, action-routed graph_write endpoint. Validates the body against a discriminated union on 'action' covering add_node, add_edge, delete_edge, bulk_ingest, log_chat, register_execution (formerly separate granular routes under /graph/write/{node,edge,bulk,chat,execution}, now removed), plus every other graph_write action (delete_node, register_external_graph, compare_and_set, store_memory, recall_memory, recall_media, submit_sdd, check_loop). See the GraphWriteAction union's member models for the exact per-action request shape.",
        "operationId": "graph_write_endpoint_api_graph_write_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$defs": {
                  "_AddEdgeAction": {
                    "description": "``POST /graph/write``, ``action='add_edge'`` \u2014 replaces\n``POST /graph/write/edge``.",
                    "properties": {
                      "action": {
                        "const": "add_edge",
                        "description": "Fixed discriminator for this variant: 'add_edge'.",
                        "title": "Action",
                        "type": "string"
                      },
                      "connection": {
                        "default": "",
                        "description": "Named backend connection to write to (default = primary). Use a registered connection name, or 'all'/a comma-separated list to mirror the same write to several backends. Applies to every action (resolved generically before the action-specific dispatch) \u2014 not just bulk_ingest, which is all the granular routes ever exposed this on.",
                        "title": "Connection",
                        "type": "string"
                      },
                      "graph": {
                        "default": "",
                        "description": "Explicit physical engine graph to write to, independent of 'connection'. Empty = the caller's own bound graph. Requires exactly one resolved 'connection' \u2014 never combinable with connection='all'/a list. Applies to every action, not just bulk_ingest.",
                        "title": "Graph",
                        "type": "string"
                      },
                      "properties": {
                        "anyOf": [
                          {
                            "additionalProperties": true,
                            "type": "object"
                          },
                          {
                            "type": "string"
                          }
                        ],
                        "description": "JSON object of edge properties, OR an already-JSON-encoded string (both accepted).",
                        "title": "Properties"
                      },
                      "rel_type": {
                        "description": "The edge's relationship type.",
                        "minLength": 1,
                        "title": "Rel Type",
                        "type": "string"
                      },
                      "source_id": {
                        "description": "The edge's source node id.",
                        "minLength": 1,
                        "title": "Source Id",
                        "type": "string"
                      },
                      "target_id": {
                        "description": "The edge's target node id.",
                        "minLength": 1,
                        "title": "Target Id",
                        "type": "string"
                      }
                    },
                    "required": [
                      "source_id",
                      "target_id",
                      "rel_type",
                      "action"
                    ],
                    "title": "_AddEdgeAction",
                    "type": "object"
                  },
                  "_AddNodeAction": {
                    "description": "``POST /graph/write``, ``action='add_node'`` \u2014 replaces\n``POST /graph/write/node``.",
                    "properties": {
                      "action": {
                        "const": "add_node",
                        "description": "Fixed discriminator for this variant: 'add_node'.",
                        "title": "Action",
                        "type": "string"
                      },
                      "connection": {
                        "default": "",
                        "description": "Named backend connection to write to (default = primary). Use a registered connection name, or 'all'/a comma-separated list to mirror the same write to several backends. Applies to every action (resolved generically before the action-specific dispatch) \u2014 not just bulk_ingest, which is all the granular routes ever exposed this on.",
                        "title": "Connection",
                        "type": "string"
                      },
                      "graph": {
                        "default": "",
                        "description": "Explicit physical engine graph to write to, independent of 'connection'. Empty = the caller's own bound graph. Requires exactly one resolved 'connection' \u2014 never combinable with connection='all'/a list. Applies to every action, not just bulk_ingest.",
                        "title": "Graph",
                        "type": "string"
                      },
                      "node_id": {
                        "description": "The unique identifier for the node. Forwarded to the tool as 'node_id', not 'id'.",
                        "examples": [
                          "n1"
                        ],
                        "minLength": 1,
                        "title": "Node Id",
                        "type": "string"
                      },
                      "node_type": {
                        "description": "The type/label of the node.",
                        "examples": [
                          "Concept"
                        ],
                        "minLength": 1,
                        "title": "Node Type",
                        "type": "string"
                      },
                      "properties": {
                        "anyOf": [
                          {
                            "additionalProperties": true,
                            "type": "object"
                          },
                          {
                            "type": "string"
                          }
                        ],
                        "description": "JSON object of node properties, OR an already-JSON-encoded string (both accepted; forwarded to the graph_write tool as a JSON-encoded string either way \u2014 the base /graph/write route has historically taken a raw pre-encoded string here, so both forms are supported for compatibility).",
                        "examples": [
                          {
                            "label": "example"
                          }
                        ],
                        "title": "Properties"
                      }
                    },
                    "required": [
                      "node_id",
                      "node_type",
                      "action"
                    ],
                    "title": "_AddNodeAction",
                    "type": "object"
                  },
                  "_BulkIngestAction": {
                    "description": "``POST /graph/write``, ``action='bulk_ingest'`` \u2014 replaces\n``POST /graph/write/bulk``.\n\nREGRESSION FIX: the deleted granular route forwarded ONLY ``nodes``,\nsilently discarding ``idempotency_key``/``evidence``/``upsert``/\n``connection``/``graph`` and always taking the non-idempotent\n``BatchUpdate(upsert=True)`` path. This variant forwards all of them.",
                    "properties": {
                      "action": {
                        "const": "bulk_ingest",
                        "description": "Fixed discriminator for this variant: 'bulk_ingest'.",
                        "title": "Action",
                        "type": "string"
                      },
                      "connection": {
                        "default": "",
                        "description": "Named backend connection to write to (default = primary). Use a registered connection name, or 'all'/a comma-separated list to mirror the same write to several backends. Applies to every action (resolved generically before the action-specific dispatch) \u2014 not just bulk_ingest, which is all the granular routes ever exposed this on.",
                        "title": "Connection",
                        "type": "string"
                      },
                      "evidence": {
                        "description": "Evidence records ({'object_id','modality','locus','content_digest'}) attached to the first node in 'nodes'. Non-empty routes the batch onto ApplyChangeEnvelopes instead of the lighter BatchUpdate path.",
                        "items": {
                          "additionalProperties": true,
                          "type": "object"
                        },
                        "title": "Evidence",
                        "type": "array"
                      },
                      "graph": {
                        "default": "",
                        "description": "Explicit physical engine graph to write to, independent of 'connection'. Empty = the caller's own bound graph. Requires exactly one resolved 'connection' \u2014 never combinable with connection='all'/a list. Applies to every action, not just bulk_ingest.",
                        "title": "Graph",
                        "type": "string"
                      },
                      "idempotency_key": {
                        "default": "",
                        "description": "Caller-owned idempotency key for this exact batch. Non-empty (or a non-empty 'evidence') routes the batch onto the engine's durably-idempotent ApplyChangeEnvelopes path, scoped by (tenant, graph, idempotency_key) \u2014 a replay reports 'status':'skipped', never silently re-reported as fresh success. Empty uses the lighter BatchUpdate path, which has no per-call idempotency key.",
                        "title": "Idempotency Key",
                        "type": "string"
                      },
                      "nodes": {
                        "description": "List of node and/or edge objects to commit atomically in one engine transaction. A node element is {'id','type','properties'} (or {'kind':'node',...} explicitly); an edge element is {'kind':'edge','source_id','target_id','rel_type','properties'} \u2014 'source_id'+'target_id' alone also infers kind='edge'. An empty list is a valid no-op (the response reports mode='noop').",
                        "examples": [
                          [
                            {
                              "id": "n1",
                              "properties": {
                                "label": "a"
                              },
                              "type": "Concept"
                            },
                            {
                              "kind": "edge",
                              "rel_type": "RELATES_TO",
                              "source_id": "n1",
                              "target_id": "n2"
                            }
                          ]
                        ],
                        "items": {
                          "additionalProperties": true,
                          "type": "object"
                        },
                        "title": "Nodes",
                        "type": "array"
                      },
                      "upsert": {
                        "default": true,
                        "description": "On the BatchUpdate (light) path only: True (default) MERGEs onto an existing id (idempotent); False INSERTs (a repeated edge becomes an additional parallel edge rather than replacing the prior one).",
                        "title": "Upsert",
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "action"
                    ],
                    "title": "_BulkIngestAction",
                    "type": "object"
                  },
                  "_DeleteEdgeAction": {
                    "description": "``action='delete_edge'`` \u2014 reachable via ``POST /graph/write`` (this\nvariant) AND via ``DELETE /graph/write``\n(``graph_write_delete_edge_endpoint`` below, which validates the same\n``GraphWriteEdgeDeleteRequest`` shape and hard-codes this action) \u2014\nreplaces ``DELETE /graph/write/edge``. Both are kept so neither an\naction-field-first caller nor a REST-verb-first caller loses the\ncapability.",
                    "properties": {
                      "action": {
                        "const": "delete_edge",
                        "description": "Fixed discriminator for this variant: 'delete_edge'.",
                        "title": "Action",
                        "type": "string"
                      },
                      "connection": {
                        "default": "",
                        "description": "Named backend connection to write to (default = primary). Use a registered connection name, or 'all'/a comma-separated list to mirror the same write to several backends. Applies to every action (resolved generically before the action-specific dispatch) \u2014 not just bulk_ingest, which is all the granular routes ever exposed this on.",
                        "title": "Connection",
                        "type": "string"
                      },
                      "graph": {
                        "default": "",
                        "description": "Explicit physical engine graph to write to, independent of 'connection'. Empty = the caller's own bound graph. Requires exactly one resolved 'connection' \u2014 never combinable with connection='all'/a list. Applies to every action, not just bulk_ingest.",
                        "title": "Graph",
                        "type": "string"
                      },
                      "rel_type": {
                        "description": "The edge's relationship type.",
                        "minLength": 1,
                        "title": "Rel Type",
                        "type": "string"
                      },
                      "source_id": {
                        "description": "The edge's source node id.",
                        "minLength": 1,
                        "title": "Source Id",
                        "type": "string"
                      },
                      "target_id": {
                        "description": "The edge's target node id.",
                        "minLength": 1,
                        "title": "Target Id",
                        "type": "string"
                      }
                    },
                    "required": [
                      "source_id",
                      "target_id",
                      "rel_type",
                      "action"
                    ],
                    "title": "_DeleteEdgeAction",
                    "type": "object"
                  },
                  "_LogChatAction": {
                    "description": "``POST /graph/write``, ``action='log_chat'`` \u2014 replaces\n``POST /graph/write/chat``.",
                    "properties": {
                      "action": {
                        "const": "log_chat",
                        "description": "Fixed discriminator for this variant: 'log_chat'.",
                        "title": "Action",
                        "type": "string"
                      },
                      "agent_id": {
                        "default": "",
                        "description": "ID of the agent logging the chat.",
                        "title": "Agent Id",
                        "type": "string"
                      },
                      "connection": {
                        "default": "",
                        "description": "Named backend connection to write to (default = primary). Use a registered connection name, or 'all'/a comma-separated list to mirror the same write to several backends. Applies to every action (resolved generically before the action-specific dispatch) \u2014 not just bulk_ingest, which is all the granular routes ever exposed this on.",
                        "title": "Connection",
                        "type": "string"
                      },
                      "content": {
                        "default": "",
                        "description": "The chat content to log. Forwarded to the graph_write tool as its 'properties' parameter \u2014 this route renames it on the wire for readability.",
                        "title": "Content",
                        "type": "string"
                      },
                      "graph": {
                        "default": "",
                        "description": "Explicit physical engine graph to write to, independent of 'connection'. Empty = the caller's own bound graph. Requires exactly one resolved 'connection' \u2014 never combinable with connection='all'/a list. Applies to every action, not just bulk_ingest.",
                        "title": "Graph",
                        "type": "string"
                      }
                    },
                    "required": [
                      "action"
                    ],
                    "title": "_LogChatAction",
                    "type": "object"
                  },
                  "_OtherGraphWriteAction": {
                    "additionalProperties": true,
                    "description": "``POST /graph/write`` for every action never given its own granular\nroute: ``delete_node``, ``register_external_graph``,\n``compare_and_set``, ``store_memory``, ``recall_memory``,\n``recall_media``, ``submit_sdd``, ``check_loop``. ``GraphWriteRequest``\nitself (imported, not redefined) already declares every field these\nactions read, with ``extra='allow'`` full passthrough \u2014 this subclass\nonly narrows ``action`` to a Literal of those eight values so the\ndiscriminated union can tag-match it.",
                    "examples": [
                      {
                        "action": "add_node",
                        "node_id": "n1",
                        "node_type": "Concept",
                        "properties": "{\"label\": \"example\"}"
                      },
                      {
                        "action": "compare_and_set",
                        "conditions": {
                          "status": "pending"
                        },
                        "node_id": "n1",
                        "updates": {
                          "owner": "agent-7",
                          "status": "claimed"
                        }
                      }
                    ],
                    "properties": {
                      "action": {
                        "description": "One of: delete_node, register_external_graph, compare_and_set, store_memory, recall_memory, recall_media, submit_sdd, check_loop. See GraphWriteRequest's own field docs for which fields each of these reads.",
                        "enum": [
                          "delete_node",
                          "register_external_graph",
                          "compare_and_set",
                          "store_memory",
                          "recall_memory",
                          "recall_media",
                          "submit_sdd",
                          "check_loop"
                        ],
                        "title": "Action",
                        "type": "string"
                      },
                      "agent_id": {
                        "default": "",
                        "description": "ID of the agent performing the action.",
                        "title": "Agent Id",
                        "type": "string"
                      },
                      "conditions": {
                        "additionalProperties": true,
                        "description": "For action='compare_and_set': field to expected-value the node must currently match for 'updates' to apply (a missing field reads as null), e.g. {'status': 'pending'}.",
                        "title": "Conditions",
                        "type": "object"
                      },
                      "connection": {
                        "default": "",
                        "description": "Named backend connection to write to (default = primary). Use a registered connection name, or 'all'/a comma-separated list to mirror the same write to several backends. Selects WHICH BACKEND, never which physical graph \u2014 see 'graph'.",
                        "title": "Connection",
                        "type": "string"
                      },
                      "endpoint_url": {
                        "default": "",
                        "description": "External graph endpoint URL. Required for register_external_graph.",
                        "title": "Endpoint Url",
                        "type": "string"
                      },
                      "evidence": {
                        "default": "[]",
                        "description": "For action='bulk_ingest': JSON-encoded STRING list of evidence records ({'object_id','modality','locus','content_digest'}) attached to the first node in 'nodes'. Non-empty routes the batch onto ApplyChangeEnvelopes instead of the lighter BatchUpdate path.",
                        "title": "Evidence",
                        "type": "string"
                      },
                      "graph": {
                        "default": "",
                        "description": "Explicit physical engine graph to write to, independent of 'connection'. Empty = the caller's own bound graph. Requires exactly one resolved 'connection' \u2014 never combinable with connection='all'/a list. An unknown graph is a typed error, never a silent fallback.",
                        "title": "Graph",
                        "type": "string"
                      },
                      "graph_type": {
                        "default": "",
                        "description": "External graph kind for register_external_graph, e.g. 'sparql' or 'graphql'.",
                        "title": "Graph Type",
                        "type": "string"
                      },
                      "idempotency_key": {
                        "default": "",
                        "description": "For action='bulk_ingest': a caller-owned idempotency key for this exact batch. Non-empty (or a non-empty 'evidence') routes the batch onto the engine's durably-idempotent ApplyChangeEnvelopes path, scoped by (tenant, graph, idempotency_key) \u2014 a replay reports 'status':'skipped', never silently re-reported as fresh success. Empty uses the lighter BatchUpdate path, which has no per-call idempotency key.",
                        "title": "Idempotency Key",
                        "type": "string"
                      },
                      "node_id": {
                        "default": "",
                        "description": "The node's unique identifier. Required (non-empty) for add_node, delete_node, and compare_and_set.",
                        "title": "Node Id",
                        "type": "string"
                      },
                      "node_type": {
                        "default": "",
                        "description": "The node's type/label. Required (non-empty) for add_node; for delete_node, either node_id or node_type must be set (a node_type with no node_id performs a predicate delete of every node of that type).",
                        "title": "Node Type",
                        "type": "string"
                      },
                      "nodes": {
                        "default": "[]",
                        "description": "JSON-ENCODED STRING (not a nested list) list of node/edge objects for action='bulk_ingest'. Each element is either {'id','type','properties'} (or {'kind':'node',...} explicitly), or {'kind':'edge','source_id','target_id','rel_type','properties'} \u2014 'source_id'+'target_id' alone also infers kind='edge'. Committed atomically in one engine transaction (chunked at documented engine bounds; never silently dropped \u2014 the response reports 'chunks').",
                        "title": "Nodes",
                        "type": "string"
                      },
                      "properties": {
                        "default": "{}",
                        "description": "JSON-ENCODED STRING (not a nested object) of node/edge properties for add_node/add_edge. For store_memory/recall_memory/log_chat/submit_sdd this instead carries RAW content/query text, not JSON.",
                        "title": "Properties",
                        "type": "string"
                      },
                      "rel_type": {
                        "default": "",
                        "description": "Edge relationship type. Required for add_edge/delete_edge.",
                        "title": "Rel Type",
                        "type": "string"
                      },
                      "source_id": {
                        "default": "",
                        "description": "Edge source node id. Required for add_edge/delete_edge.",
                        "title": "Source Id",
                        "type": "string"
                      },
                      "target_id": {
                        "default": "",
                        "description": "Edge target node id. Required for add_edge/delete_edge.",
                        "title": "Target Id",
                        "type": "string"
                      },
                      "updates": {
                        "additionalProperties": true,
                        "description": "For action='compare_and_set': field to new-value to merge into the node ONLY when every condition in 'conditions' matches, e.g. {'status': 'claimed', 'owner': 'agent-7'}.",
                        "title": "Updates",
                        "type": "object"
                      },
                      "upsert": {
                        "default": true,
                        "description": "For action='bulk_ingest' on the BatchUpdate (light) path: True (default) MERGEs onto an existing id (idempotent); False INSERTs (a repeated edge becomes an additional parallel edge rather than replacing the prior one).",
                        "title": "Upsert",
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "action"
                    ],
                    "title": "_OtherGraphWriteAction",
                    "type": "object"
                  },
                  "_RegisterExecutionAction": {
                    "description": "``POST /graph/write``, ``action='register_execution'`` \u2014 replaces\n``POST /graph/write/execution``.",
                    "properties": {
                      "action": {
                        "const": "register_execution",
                        "description": "Fixed discriminator for this variant: 'register_execution'.",
                        "title": "Action",
                        "type": "string"
                      },
                      "agent_id": {
                        "default": "",
                        "description": "ID of the agent whose execution is being registered.",
                        "title": "Agent Id",
                        "type": "string"
                      },
                      "connection": {
                        "default": "",
                        "description": "Named backend connection to write to (default = primary). Use a registered connection name, or 'all'/a comma-separated list to mirror the same write to several backends. Applies to every action (resolved generically before the action-specific dispatch) \u2014 not just bulk_ingest, which is all the granular routes ever exposed this on.",
                        "title": "Connection",
                        "type": "string"
                      },
                      "graph": {
                        "default": "",
                        "description": "Explicit physical engine graph to write to, independent of 'connection'. Empty = the caller's own bound graph. Requires exactly one resolved 'connection' \u2014 never combinable with connection='all'/a list. Applies to every action, not just bulk_ingest.",
                        "title": "Graph",
                        "type": "string"
                      }
                    },
                    "required": [
                      "action"
                    ],
                    "title": "_RegisterExecutionAction",
                    "type": "object"
                  }
                },
                "discriminator": {
                  "mapping": {
                    "add_edge": "#/$defs/_AddEdgeAction",
                    "add_node": "#/$defs/_AddNodeAction",
                    "bulk_ingest": "#/$defs/_BulkIngestAction",
                    "check_loop": "#/$defs/_OtherGraphWriteAction",
                    "compare_and_set": "#/$defs/_OtherGraphWriteAction",
                    "delete_edge": "#/$defs/_DeleteEdgeAction",
                    "delete_node": "#/$defs/_OtherGraphWriteAction",
                    "log_chat": "#/$defs/_LogChatAction",
                    "recall_media": "#/$defs/_OtherGraphWriteAction",
                    "recall_memory": "#/$defs/_OtherGraphWriteAction",
                    "register_execution": "#/$defs/_RegisterExecutionAction",
                    "register_external_graph": "#/$defs/_OtherGraphWriteAction",
                    "store_memory": "#/$defs/_OtherGraphWriteAction",
                    "submit_sdd": "#/$defs/_OtherGraphWriteAction"
                  },
                  "propertyName": "action"
                },
                "oneOf": [
                  {
                    "$ref": "#/$defs/_AddNodeAction"
                  },
                  {
                    "$ref": "#/$defs/_AddEdgeAction"
                  },
                  {
                    "$ref": "#/$defs/_DeleteEdgeAction"
                  },
                  {
                    "$ref": "#/$defs/_BulkIngestAction"
                  },
                  {
                    "$ref": "#/$defs/_LogChatAction"
                  },
                  {
                    "$ref": "#/$defs/_RegisterExecutionAction"
                  },
                  {
                    "$ref": "#/$defs/_OtherGraphWriteAction"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GraphToolResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Write a node/edge or run another graph_write action"
      }
    },
    "/api/oauth/callback": {
      "get": {
        "description": "Complete a remote-OAuth flow and redirect to the allowlisted success URL.\n\n``code``/``state`` arrive as query parameters (an unavoidable property of\nthe OAuth 2 redirect-based authorization-code flow \u2014 the identity provider\nitself puts them there) but this handler never logs, echoes, or forwards\neither value anywhere beyond the one ``broker.callback()`` call that\nconsumes them.",
        "operationId": "oauth_callback_api_oauth_callback_get",
        "parameters": [
          {
            "in": "query",
            "name": "code",
            "required": true,
            "schema": {
              "title": "Code",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": true,
            "schema": {
              "title": "State",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "browser_session_id",
            "required": true,
            "schema": {
              "title": "Browser Session Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "title": "Response Oauth Callback Api Oauth Callback Get"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Oauth Callback",
        "tags": [
          "remote-oauth"
        ]
      }
    },
    "/api/objects/{object_id}": {
      "get": {
        "description": "Read a single object by id (via the object-set service).",
        "operationId": "get_object_api_objects__object_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "object_id",
            "required": true,
            "schema": {
              "title": "Object Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Object",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/objects/{object_id}/as-of": {
      "get": {
        "description": "Bitemporal as-of snapshot of an object (CONCEPT:AU-KG.ontology.edit-ledger-writeback).",
        "operationId": "get_object_as_of_api_objects__object_id__as_of_get",
        "parameters": [
          {
            "in": "path",
            "name": "object_id",
            "required": true,
            "schema": {
              "title": "Object Id",
              "type": "string"
            }
          },
          {
            "description": "Unix timestamp for the point-in-time view.",
            "in": "query",
            "name": "ts",
            "required": true,
            "schema": {
              "description": "Unix timestamp for the point-in-time view.",
              "title": "Ts",
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Object As Of",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/objects/{object_id}/history": {
      "get": {
        "description": "Per-object edit history / changelog (CONCEPT:AU-KG.ontology.edit-ledger-writeback).",
        "operationId": "get_object_history_api_objects__object_id__history_get",
        "parameters": [
          {
            "in": "path",
            "name": "object_id",
            "required": true,
            "schema": {
              "title": "Object Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Object History",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/objects/{source_id}/path/{target_id}": {
      "get": {
        "description": "Shortest path + hop-by-hop relationship chain between two objects (CONCEPT:AU-KG.ontology.object-path-finder).",
        "operationId": "get_object_path_api_objects__source_id__path__target_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "source_id",
            "required": true,
            "schema": {
              "title": "Source Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "target_id",
            "required": true,
            "schema": {
              "title": "Target Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Object Path",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/catalogue": {
      "get": {
        "description": "Browsable gallery over the hosted-ontology registry.\n\nGranular typed twin of ``graph_ontology(action='list')`` with search/facet\nfiltering. The storage/lifecycle half already existed (``graph_ontology``\nhosts arbitrary named/versioned OWL/RDF ontologies); this is the curated-\nlibrary browse surface Ontology-Playground's catalogue offers, scoped to\nwhat this platform actually hosts \u2014 see the coverage report's row #4\nrationale (one continuously-extended ontology library, not many\ninterchangeable demo ontologies). Each entry already carries its\n#classes/#properties/#axioms counts (``OntologyLifecycle._public``).",
        "operationId": "get_ontology_catalogue_api_ontology_catalogue_get",
        "parameters": [
          {
            "description": "Case-insensitive substring filter over iri/version/source.",
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "default": "",
              "description": "Case-insensitive substring filter over iri/version/source.",
              "title": "Search",
              "type": "string"
            }
          },
          {
            "description": "Filter to ontologies loaded with this catalogue category.",
            "in": "query",
            "name": "category",
            "required": false,
            "schema": {
              "default": "",
              "description": "Filter to ontologies loaded with this catalogue category.",
              "title": "Category",
              "type": "string"
            }
          },
          {
            "description": "Filter by how the ontology was loaded: 'file' | 'url' | 'text'.",
            "in": "query",
            "name": "source",
            "required": false,
            "schema": {
              "default": "",
              "description": "Filter by how the ontology was loaded: 'file' | 'url' | 'text'.",
              "title": "Source",
              "type": "string"
            }
          },
          {
            "description": "Filter to ontologies carrying this catalogue tag.",
            "in": "query",
            "name": "tag",
            "required": false,
            "schema": {
              "default": "",
              "description": "Filter to ontologies carrying this catalogue tag.",
              "title": "Tag",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Ontology Catalogue",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/export": {
      "get": {
        "description": "Re-serialize a hosted ontology to turtle (the Import/Export modal's Export button).\n\nGranular typed twin of ``graph_ontology(action='get', serialize=true)``.\nThe response is the standard :class:`OntologyEnvelope` (turtle text lives at\n``result.ontology.turtle``) \u2014 consistent with every other route in this\nmodule \u2014 the caller builds the downloadable file client-side from that string.",
        "operationId": "export_ontology_api_ontology_export_get",
        "parameters": [
          {
            "description": "Ontology IRI to export.",
            "in": "query",
            "name": "iri",
            "required": true,
            "schema": {
              "description": "Ontology IRI to export.",
              "title": "Iri",
              "type": "string"
            }
          },
          {
            "description": "Version to export (omit for the newest loaded).",
            "in": "query",
            "name": "version",
            "required": false,
            "schema": {
              "default": "",
              "description": "Version to export (omit for the newest loaded).",
              "title": "Version",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Export Ontology",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/functions": {
      "get": {
        "description": "List registered ontology functions with their typed signatures.",
        "operationId": "list_functions_api_ontology_functions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Functions",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/functions/{name}": {
      "get": {
        "description": "Get one function's signature by name (404 if unknown).",
        "operationId": "get_function_api_ontology_functions__name__get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Function",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/generate": {
      "get": {
        "description": "From-scratch standalone Interface/LinkType proposal (GET, short samples).\n\nSame schema-discovery LLM path as ``discover_extensions``, run against an\nEMPTY base instead of a live-ontology diff. Always a human-reviewed\nproposal \u2014 never auto-applied/merged.",
        "operationId": "generate_ontology_get_api_ontology_generate_get",
        "parameters": [
          {
            "description": "Representative document/business-scenario text to model.",
            "in": "query",
            "name": "sample_text",
            "required": false,
            "schema": {
              "default": "",
              "description": "Representative document/business-scenario text to model.",
              "title": "Sample Text",
              "type": "string"
            }
          },
          {
            "description": "Optional domain hint, e.g. 'clinical_trial'.",
            "in": "query",
            "name": "object_type",
            "required": false,
            "schema": {
              "default": "",
              "description": "Optional domain hint, e.g. 'clinical_trial'.",
              "title": "Object Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Generate Ontology Get",
        "tags": [
          "ontology"
        ]
      },
      "post": {
        "description": "From-scratch standalone Interface/LinkType proposal (POST, full document body).\n\nSame core as :func:`generate_ontology_get` \u2014 POST for a longer\n``sample_text`` than comfortably fits a query string.",
        "operationId": "generate_ontology_post_api_ontology_generate_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OntologyGenerateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Generate Ontology Post",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/interfaces": {
      "get": {
        "description": "List interface names in the chosen registry.",
        "operationId": "list_interfaces_api_ontology_interfaces_get",
        "parameters": [
          {
            "description": "'structural' or 'enterprise'.",
            "in": "query",
            "name": "registry",
            "required": false,
            "schema": {
              "default": "structural",
              "description": "'structural' or 'enterprise'.",
              "title": "Registry",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Interfaces",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/interfaces/{name}": {
      "get": {
        "description": "Resolve one interface/type to its concrete implementer types.",
        "operationId": "get_interface_implementers_api_ontology_interfaces__name__get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          },
          {
            "description": "'structural' or 'enterprise'.",
            "in": "query",
            "name": "registry",
            "required": false,
            "schema": {
              "default": "structural",
              "description": "'structural' or 'enterprise'.",
              "title": "Registry",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Interface Implementers",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/leanix/sync": {
      "post": {
        "description": "Discover the live LeanIX metamodel and mirror it natively as OWL/RDF.",
        "operationId": "sync_leanix_ontology_route_api_ontology_leanix_sync_post",
        "parameters": [
          {
            "description": "Preview the generated ontology without writing (default). Set false to apply.",
            "in": "query",
            "name": "dry_run",
            "required": false,
            "schema": {
              "default": true,
              "description": "Preview the generated ontology without writing (default). Set false to apply.",
              "title": "Dry Run",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Sync Leanix Ontology Route",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/lint": {
      "get": {
        "description": "Naming-convention + typo findings for the interface registry.",
        "operationId": "get_ontology_lint_api_ontology_lint_get",
        "parameters": [
          {
            "description": "'structural' or 'enterprise'.",
            "in": "query",
            "name": "registry",
            "required": false,
            "schema": {
              "default": "structural",
              "description": "'structural' or 'enterprise'.",
              "title": "Registry",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Ontology Lint",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/load": {
      "post": {
        "description": "Parse + SHACL-validate + register + activate a hosted ontology.\n\nGranular typed twin of ``graph_ontology(action='load')`` \u2014 the route the\nagent-webui Import/Export modal POSTs a dropped/pasted ``.ttl``/RDF file\n(or a file path / URL) to. Same core as the collapsed MCP surface; no new\nbusiness logic here.",
        "operationId": "load_ontology_api_ontology_load_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OntologyLoadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Load Ontology",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/model-profiles": {
      "get": {
        "description": "List the active registry's models as profile previews (no KG write).",
        "operationId": "list_model_profiles_api_ontology_model_profiles_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Model Profiles",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/model-profiles/sync": {
      "post": {
        "description": "Upsert a ``ModelProfileVersionNode`` per configured model into the KG.",
        "operationId": "sync_model_profiles_api_ontology_model_profiles_sync_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Sync Model Profiles",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/model-profiles/{model_id}": {
      "get": {
        "description": "Get one model's profile \u2014 persisted if already synced, else the live projection.",
        "operationId": "get_model_profile_api_ontology_model_profiles__model_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "model_id",
            "required": true,
            "schema": {
              "title": "Model Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Model Profile",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/property-types": {
      "get": {
        "description": "List all property-type names.",
        "operationId": "list_property_types_api_ontology_property_types_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Property Types",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/property-types/{type_ref}": {
      "get": {
        "description": "Describe a property type ref, e.g. ``array<string>`` (404 if unknown).",
        "operationId": "describe_property_type_api_ontology_property_types__type_ref__get",
        "parameters": [
          {
            "in": "path",
            "name": "type_ref",
            "required": true,
            "schema": {
              "title": "Type Ref",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Describe Property Type",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/sampling-profiles": {
      "get": {
        "description": "List the effective per-task-class sampling profiles.",
        "operationId": "list_sampling_profiles_api_ontology_sampling_profiles_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Sampling Profiles",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/sampling-profiles/{task_class}": {
      "get": {
        "description": "Describe the sampling profile served for a task class.",
        "operationId": "describe_sampling_profile_api_ontology_sampling_profiles__task_class__get",
        "parameters": [
          {
            "in": "path",
            "name": "task_class",
            "required": true,
            "schema": {
              "title": "Task Class",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Describe Sampling Profile",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/schema-graph": {
      "get": {
        "description": "The interface + link-type registries as a Cytoscape-style node/edge graph.",
        "operationId": "get_ontology_schema_graph_api_ontology_schema_graph_get",
        "parameters": [
          {
            "description": "'structural' or 'enterprise'.",
            "in": "query",
            "name": "registry",
            "required": false,
            "schema": {
              "default": "structural",
              "description": "'structural' or 'enterprise'.",
              "title": "Registry",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Ontology Schema Graph",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/schema-summary": {
      "get": {
        "description": "The same schema rendered as a Markdown document.",
        "operationId": "get_ontology_schema_summary_api_ontology_schema_summary_get",
        "parameters": [
          {
            "description": "'structural' or 'enterprise'.",
            "in": "query",
            "name": "registry",
            "required": false,
            "schema": {
              "default": "structural",
              "description": "'structural' or 'enterprise'.",
              "title": "Registry",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Ontology Schema Summary",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/validate": {
      "post": {
        "description": "Run the valid/connected/SHACL gate on a candidate WITHOUT committing it.\n\nGranular typed twin of ``graph_ontology(action='validate')`` \u2014 dispatches\nthrough the same tool/core (the ``lifecycle.py`` docstring already named\nthis route; it was documented but never wired until now). The result\nincludes a ``shacl_report`` (``conforms``/``text``/``turtle``) whenever\npyshacl is installed and bundled shapes exist, so a caller gets the literal\nSHACL validation report, not just the derived valid/errors/warnings summary.",
        "operationId": "validate_ontology_candidate_api_ontology_validate_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OntologyValidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Validate Ontology Candidate",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/value-types": {
      "get": {
        "description": "List all constrained value-type names.",
        "operationId": "list_value_types_api_ontology_value_types_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Value Types",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/ontology/value-types/{name}": {
      "get": {
        "description": "Describe one value type (404 if unknown).",
        "operationId": "get_value_type_api_ontology_value_types__name__get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OntologyEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Value Type",
        "tags": [
          "ontology"
        ]
      }
    },
    "/api/providers/{provider_id}/authorize": {
      "post": {
        "description": "Begin a remote-OAuth flow for the verified caller and return the\nauthorization URL to send their browser to.",
        "operationId": "authorize_api_providers__provider_id__authorize_post",
        "parameters": [
          {
            "in": "path",
            "name": "provider_id",
            "required": true,
            "schema": {
              "title": "Provider Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthorizeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthorizeResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Authorize",
        "tags": [
          "remote-oauth"
        ]
      }
    },
    "/api/providers/{provider_id}/revoke": {
      "post": {
        "description": "Revoke the verified caller's grant for one enabled provider.",
        "operationId": "_revoke_api_providers__provider_id__revoke_post",
        "parameters": [
          {
            "in": "path",
            "name": "provider_id",
            "required": true,
            "schema": {
              "title": "Provider Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "title": "Response  Revoke Api Providers  Provider Id  Revoke Post"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": " Revoke",
        "tags": [
          "remote-oauth"
        ]
      }
    },
    "/api/registry/discoveries": {
      "get": {
        "operationId": "list_registry_discoveries_api_registry_discoveries_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryPage_RegistryDiscovery_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Registry Discoveries",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/discoveries/{item_id}": {
      "get": {
        "operationId": "get_registry_discoveries_api_registry_discoveries__item_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryItemEnvelope_RegistryDiscovery_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Registry Discoveries",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/prompts": {
      "get": {
        "operationId": "list_registry_prompts_api_registry_prompts_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryPage_RegistryPrompt_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Registry Prompts",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/prompts/{item_id}": {
      "get": {
        "operationId": "get_registry_prompts_api_registry_prompts__item_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryItemEnvelope_RegistryPrompt_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Registry Prompts",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/resources": {
      "get": {
        "operationId": "list_registry_resources_api_registry_resources_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryPage_RegistryResource_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Registry Resources",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/resources/{item_id}": {
      "get": {
        "operationId": "get_registry_resources_api_registry_resources__item_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryItemEnvelope_RegistryResource_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Registry Resources",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/servers": {
      "get": {
        "operationId": "list_registry_servers_api_registry_servers_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryPage_RegistryServer_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Registry Servers",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/servers/{item_id}": {
      "get": {
        "operationId": "get_registry_servers_api_registry_servers__item_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryItemEnvelope_RegistryServer_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Registry Servers",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/skills": {
      "get": {
        "operationId": "list_registry_skills_api_registry_skills_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryPage_RegistrySkill_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Registry Skills",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/skills/{item_id}": {
      "get": {
        "operationId": "get_registry_skills_api_registry_skills__item_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryItemEnvelope_RegistrySkill_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Registry Skills",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/tools": {
      "get": {
        "operationId": "list_registry_tools_api_registry_tools_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryPage_RegistryTool_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Registry Tools",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/registry/tools/{item_id}": {
      "get": {
        "operationId": "get_registry_tools_api_registry_tools__item_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "item_id",
            "required": true,
            "schema": {
              "title": "Item Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistryItemEnvelope_RegistryTool_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Registry Tools",
        "tags": [
          "registry"
        ]
      }
    },
    "/api/research/artifact/{article_id}": {
      "get": {
        "description": "Fetch one compiled artifact and its claims (404 if absent).",
        "operationId": "get_artifact_api_research_artifact__article_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "article_id",
            "required": true,
            "schema": {
              "title": "Article Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Artifact",
        "tags": [
          "research"
        ]
      }
    },
    "/api/research/artifacts": {
      "get": {
        "description": "List compiled research artifacts.",
        "operationId": "list_artifacts_api_research_artifacts_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Artifacts",
        "tags": [
          "research"
        ]
      }
    },
    "/api/research/capture": {
      "post": {
        "description": "Capture a live research event (with provenance) and promote it to the graph.",
        "operationId": "capture_event_api_research_capture_post",
        "parameters": [
          {
            "in": "query",
            "name": "article_id",
            "required": true,
            "schema": {
              "title": "Article Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "text",
            "required": true,
            "schema": {
              "title": "Text",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "provenance",
            "required": false,
            "schema": {
              "default": "ai_executed",
              "title": "Provenance",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "actor",
            "required": false,
            "schema": {
              "default": "",
              "title": "Actor",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Capture Event",
        "tags": [
          "research"
        ]
      }
    },
    "/api/research/compile": {
      "post": {
        "description": "Compile a paper into an ecosystem-grounded OWL-native ARA.",
        "operationId": "compile_artifact_api_research_compile_post",
        "parameters": [
          {
            "in": "query",
            "name": "article_id",
            "required": true,
            "schema": {
              "title": "Article Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "target_codebase",
            "required": false,
            "schema": {
              "default": "",
              "title": "Target Codebase",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Compile Artifact",
        "tags": [
          "research"
        ]
      }
    },
    "/api/research/inquire": {
      "post": {
        "description": "Run a native multi-perspective (STORM) inquiry over ``topic`` (CONCEPT:AU-KG.research.perspectival-inquiry).",
        "operationId": "inquire_api_research_inquire_post",
        "parameters": [
          {
            "in": "query",
            "name": "topic",
            "required": true,
            "schema": {
              "title": "Topic",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "materialize",
            "required": false,
            "schema": {
              "default": true,
              "title": "Materialize",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Inquire",
        "tags": [
          "research"
        ]
      }
    },
    "/api/research/reason": {
      "post": {
        "description": "Reason over the whole ecosystem ontology and harvest extrapolated relationships.",
        "operationId": "reason_api_research_reason_post",
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "required": false,
            "schema": {
              "default": "",
              "title": "Query",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Reason",
        "tags": [
          "research"
        ]
      }
    },
    "/api/research/review": {
      "post": {
        "description": "Run the ARA Seal (L1/L2/L3) over an artifact and certify it.",
        "operationId": "review_artifact_api_research_review_post",
        "parameters": [
          {
            "in": "query",
            "name": "article_id",
            "required": true,
            "schema": {
              "title": "Article Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "level",
            "required": false,
            "schema": {
              "default": "L1",
              "title": "Level",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResearchEnvelope"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Review Artifact",
        "tags": [
          "research"
        ]
      }
    }
  }
}
