{
  "openapi": "3.0.3",
  "info": {
    "title": "goose-server",
    "description": "An AI agent",
    "contact": {
      "name": "AAIF",
      "email": "ai-oss-tools@block.xyz"
    },
    "license": {
      "name": "Apache-2.0"
    },
    "version": "1.36.0"
  },
  "paths": {
    "/action-required/tool-confirmation": {
      "post": {
        "tags": [
          "super::routes::action_required"
        ],
        "operationId": "confirm_tool_action",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmToolActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tool confirmation action is confirmed",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/agent/call_tool": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "call_tool",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CallToolRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Resource read successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CallToolResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "403": {
            "description": "Forbidden - tool is not app-visible",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "424": {
            "description": "Frontend tool execution requires the frontend host",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/agent/export_app/{name}": {
      "get": {
        "tags": [
          "Agent"
        ],
        "operationId": "export_app",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Name of the app to export",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "App HTML exported successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "App not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/agent/import_app": {
      "post": {
        "tags": [
          "Agent"
        ],
        "operationId": "import_app",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportAppRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "App imported successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportAppResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid HTML",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/agent/list_apps": {
      "get": {
        "tags": [
          "Agent"
        ],
        "operationId": "list_apps",
        "parameters": [
          {
            "name": "session_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of apps retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAppsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/agent/read_resource": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "read_resource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReadResourceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Resource read successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadResourceResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "404": {
            "description": "Resource not found"
          },
          "424": {
            "description": "Agent not initialized"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/agent/restart": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "restart_agent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RestartAgentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Agent restarted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestartAgentResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/agent/resume": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "resume_agent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResumeAgentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Agent started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResumeAgentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid working directory"
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/agent/start": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "start_agent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartAgentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Agent started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Session"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/agent/stop": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "stop_agent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StopAgentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Agent stopped successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/agent/tools": {
      "get": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "get_tools",
        "parameters": [
          {
            "name": "extension_name",
            "in": "query",
            "description": "Optional extension name to filter tools",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "session_id",
            "in": "query",
            "description": "Required session ID to scope tools to a specific session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tools retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ToolInfo"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "424": {
            "description": "Agent not initialized"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/agent/update_from_session": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "update_from_session",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFromSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Update agent from session data successfully"
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "424": {
            "description": "Agent not initialized"
          }
        }
      }
    },
    "/agent/update_provider": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "update_agent_provider",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProviderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Provider updated successfully"
          },
          "400": {
            "description": "Bad request - missing or invalid parameters"
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "424": {
            "description": "Agent not initialized"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/agent/update_session": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "update_session",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Session updated"
          },
          "400": {
            "description": "Invalid request"
          },
          "500": {
            "description": "Internal error"
          }
        }
      }
    },
    "/agent/update_working_dir": {
      "post": {
        "tags": [
          "super::routes::agent"
        ],
        "operationId": "update_working_dir",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWorkingDirRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Working directory updated and agent restarted successfully"
          },
          "400": {
            "description": "Bad request - invalid directory path"
          },
          "401": {
            "description": "Unauthorized - invalid secret key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "read_all_config",
        "responses": {
          "200": {
            "description": "All configuration values retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigResponse"
                }
              }
            }
          }
        }
      }
    },
    "/config/canonical-model-info": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "get_canonical_model_info",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelInfoQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Model information retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/config/check_provider": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "check_provider",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckProviderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {}
      }
    },
    "/config/custom-providers": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "create_custom_provider",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomProviderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Custom provider created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCustomProviderResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config/custom-providers/{id}": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "get_custom_provider",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom provider retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoadedProvider"
                }
              }
            }
          },
          "404": {
            "description": "Provider not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "put": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "update_custom_provider",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomProviderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Custom provider updated successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Provider not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "delete": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "remove_custom_provider",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Custom provider removed successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Provider not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config/permissions": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "upsert_permissions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertPermissionsQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Permission update completed",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/config/prompts": {
      "get": {
        "tags": [
          "super::routes::prompts"
        ],
        "operationId": "get_prompts",
        "responses": {
          "200": {
            "description": "List of all available prompts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptsListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/config/prompts/{name}": {
      "get": {
        "tags": [
          "super::routes::prompts"
        ],
        "operationId": "get_prompt",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Prompt template name (e.g., system.md)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Prompt content retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptContentResponse"
                }
              }
            }
          },
          "404": {
            "description": "Prompt not found"
          }
        }
      },
      "put": {
        "tags": [
          "super::routes::prompts"
        ],
        "operationId": "save_prompt",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Prompt template name (e.g., system.md)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavePromptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Prompt saved successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Prompt not found"
          },
          "500": {
            "description": "Failed to save prompt"
          }
        }
      },
      "delete": {
        "tags": [
          "super::routes::prompts"
        ],
        "operationId": "reset_prompt",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Prompt template name (e.g., system.md)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Prompt reset to default successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Prompt not found"
          },
          "500": {
            "description": "Failed to reset prompt"
          }
        }
      }
    },
    "/config/provider-catalog": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "get_provider_catalog",
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Filter by provider format (openai, anthropic, ollama)",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Provider catalog retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProviderCatalogEntry"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid format parameter"
          }
        }
      }
    },
    "/config/provider-catalog/{id}": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "get_provider_catalog_template",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Provider ID from models.dev",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Provider template retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderTemplate"
                }
              }
            }
          },
          "404": {
            "description": "Provider not found in catalog"
          }
        }
      }
    },
    "/config/providers": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "providers",
        "responses": {
          "200": {
            "description": "All configuration values retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProviderDetails"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/config/providers/{name}/cleanup": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "cleanup_provider_cache",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Provider name (e.g., githubcopilot)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Provider cache cleaned up successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config/providers/{name}/model-info": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "get_provider_model_info",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Provider name (e.g., openai)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProviderModelInfoQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Model metadata fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelInfo"
                }
              }
            }
          },
          "400": {
            "description": "Unknown provider, provider not configured, or authentication error"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config/providers/{name}/models": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "get_provider_models",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Provider name (e.g., openai)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Models fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModelInfo"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown provider, provider not configured, or authentication error"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config/providers/{name}/oauth": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "configure_provider_oauth",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "description": "Provider name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OAuth configuration completed"
          },
          "400": {
            "description": "OAuth configuration failed"
          }
        }
      }
    },
    "/config/read": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "read_config",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfigKeyQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Configuration value retrieved successfully",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "500": {
            "description": "Unable to get the configuration value"
          }
        }
      }
    },
    "/config/remove": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "remove_config",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfigKeyQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Configuration value removed successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Configuration key not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config/set_provider": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "set_config_provider",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetProviderRequest"
              }
            }
          },
          "required": true
        },
        "responses": {}
      }
    },
    "/config/slash_commands": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "get_slash_commands",
        "parameters": [
          {
            "name": "working_dir",
            "in": "query",
            "description": "Optional working directory to discover local skills from",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Slash commands retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SlashCommandsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/config/upsert": {
      "post": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "upsert_config",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertConfigQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Configuration value upserted successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/config/validate": {
      "get": {
        "tags": [
          "super::routes::config_management"
        ],
        "operationId": "validate_config",
        "responses": {
          "200": {
            "description": "Config validation result",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Config file is corrupted"
          }
        }
      }
    },
    "/diagnostics/{session_id}": {
      "get": {
        "tags": [
          "super::routes::status"
        ],
        "operationId": "diagnostics",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Diagnostics zip file",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "500": {
            "description": "Failed to generate diagnostics"
          }
        }
      }
    },
    "/dictation/config": {
      "get": {
        "tags": [
          "super::routes::dictation"
        ],
        "operationId": "get_dictation_config",
        "responses": {
          "200": {
            "description": "Audio transcription provider configurations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/DictationProviderStatus"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dictation/models": {
      "get": {
        "tags": [
          "super::routes::dictation"
        ],
        "operationId": "list_models",
        "responses": {
          "200": {
            "description": "List of available Whisper models",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WhisperModelResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dictation/models/{model_id}": {
      "delete": {
        "tags": [
          "super::routes::dictation"
        ],
        "operationId": "delete_model",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Model deleted"
          },
          "404": {
            "description": "Model not found or not downloaded"
          },
          "500": {
            "description": "Failed to delete model"
          }
        }
      }
    },
    "/dictation/models/{model_id}/download": {
      "get": {
        "tags": [
          "super::routes::dictation"
        ],
        "operationId": "get_download_progress",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download progress",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadProgress"
                }
              }
            }
          },
          "404": {
            "description": "Download not found"
          }
        }
      },
      "post": {
        "tags": [
          "super::routes::dictation"
        ],
        "operationId": "download_model",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Download started"
          },
          "400": {
            "description": "Download already in progress"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      },
      "delete": {
        "tags": [
          "super::routes::dictation"
        ],
        "operationId": "cancel_download",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download cancelled"
          },
          "404": {
            "description": "Download not found"
          }
        }
      }
    },
    "/dictation/transcribe": {
      "post": {
        "tags": [
          "super::routes::dictation"
        ],
        "operationId": "transcribe_dictation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranscribeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Audio transcribed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranscribeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request (bad base64 or unsupported format)"
          },
          "401": {
            "description": "Invalid API key"
          },
          "412": {
            "description": "Provider not configured"
          },
          "413": {
            "description": "Audio file too large (max 50MB)"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "500": {
            "description": "Internal server error"
          },
          "502": {
            "description": "Provider API error"
          },
          "503": {
            "description": "Service unavailable"
          },
          "504": {
            "description": "Request timeout"
          }
        }
      }
    },
    "/features": {
      "get": {
        "tags": [
          "super::routes::features"
        ],
        "operationId": "get_features",
        "responses": {
          "200": {
            "description": "Compile-time feature flags",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeaturesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/handle_nanogpt": {
      "post": {
        "tags": [
          "super::routes::setup"
        ],
        "operationId": "start_nanogpt_setup",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupResponse"
                }
              }
            }
          }
        }
      }
    },
    "/handle_openrouter": {
      "post": {
        "tags": [
          "super::routes::setup"
        ],
        "operationId": "start_openrouter_setup",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupResponse"
                }
              }
            }
          }
        }
      }
    },
    "/handle_tetrate": {
      "post": {
        "tags": [
          "super::routes::setup"
        ],
        "operationId": "start_tetrate_setup",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetupResponse"
                }
              }
            }
          }
        }
      }
    },
    "/local-inference/chat-templates/builtin": {
      "get": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "list_builtin_chat_templates",
        "responses": {
          "200": {
            "description": "llama.cpp built-in chat template names",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/local-inference/download": {
      "post": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "download_hf_model",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadModelRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Download started",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/local-inference/models": {
      "get": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "list_local_models",
        "responses": {
          "200": {
            "description": "List of available local LLM models",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LocalModelResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/local-inference/models/{model_id}": {
      "delete": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "delete_local_model",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Model deleted"
          },
          "404": {
            "description": "Model not found"
          }
        }
      }
    },
    "/local-inference/models/{model_id}/download": {
      "get": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "get_local_model_download_progress",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download progress",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadProgress"
                }
              }
            }
          },
          "404": {
            "description": "No active download"
          }
        }
      },
      "delete": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "cancel_local_model_download",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download cancelled"
          },
          "404": {
            "description": "No active download"
          }
        }
      }
    },
    "/local-inference/models/{model_id}/settings": {
      "get": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "get_model_settings",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Model settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelSettings"
                }
              }
            }
          },
          "404": {
            "description": "Model not found"
          }
        }
      },
      "put": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "update_model_settings",
        "parameters": [
          {
            "name": "model_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModelSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Settings updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelSettings"
                }
              }
            }
          },
          "404": {
            "description": "Model not found"
          },
          "500": {
            "description": "Failed to save settings"
          }
        }
      }
    },
    "/local-inference/repo/{author}/{repo}/files": {
      "get": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "get_repo_files",
        "parameters": [
          {
            "name": "author",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "GGUF files in the repo",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RepoVariantsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/local-inference/search": {
      "get": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "search_hf_models",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "description": "Search query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results",
            "required": false,
            "schema": {
              "type": "integer",
              "nullable": true,
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Search results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HfModelInfo"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Search failed"
          }
        }
      }
    },
    "/local-inference/sync-featured": {
      "post": {
        "tags": [
          "super::routes::local_inference"
        ],
        "operationId": "sync_featured_models",
        "responses": {
          "200": {
            "description": "Featured models synced to registry"
          }
        }
      }
    },
    "/mcp-ui-proxy": {
      "get": {
        "tags": [
          "super::routes::mcp_ui_proxy"
        ],
        "operationId": "mcp_ui_proxy",
        "parameters": [
          {
            "name": "secret",
            "in": "query",
            "description": "Secret key for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "MCP UI proxy HTML page"
          },
          "401": {
            "description": "Unauthorized - invalid or missing secret"
          }
        }
      }
    },
    "/recipes/create": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "create_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Recipe created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateRecipeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "412": {
            "description": "Precondition failed - Agent not available"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/recipes/decode": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "decode_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DecodeRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Recipe decoded successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecodeRecipeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          }
        }
      }
    },
    "/recipes/delete": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "delete_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Recipe deleted successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Recipe not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/recipes/encode": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "encode_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EncodeRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Recipe encoded successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EncodeRecipeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          }
        }
      }
    },
    "/recipes/list": {
      "get": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "list_recipes",
        "responses": {
          "200": {
            "description": "Get recipe list successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListRecipeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/recipes/parse": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "parse_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ParseRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Recipe parsed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParseRecipeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid recipe format",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/recipes/save": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "save_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SaveRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Recipe saved to file successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SaveRecipeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/recipes/scan": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "scan_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScanRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Recipe scanned successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScanRecipeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/recipes/schedule": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "schedule_recipe",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRecipeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Recipe scheduled successfully"
          },
          "404": {
            "description": "Recipe not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/recipes/slash-command": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "set_recipe_slash_command",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetSlashCommandRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Slash command set successfully"
          },
          "404": {
            "description": "Recipe not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/recipes/to-yaml": {
      "post": {
        "tags": [
          "Recipe Management"
        ],
        "operationId": "recipe_to_yaml",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecipeToYamlRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Recipe converted to YAML successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecipeToYamlResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Failed to convert recipe to YAML",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/reply": {
      "post": {
        "tags": [
          "super::routes::reply"
        ],
        "operationId": "reply",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Streaming response initiated",
            "content": {
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/MessageEvent"
                }
              }
            }
          },
          "424": {
            "description": "Agent not initialized"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/create": {
      "post": {
        "tags": [
          "schedule"
        ],
        "operationId": "create_schedule",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Scheduled job created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledJob"
                }
              }
            }
          },
          "400": {
            "description": "Invalid cron expression or recipe file"
          },
          "409": {
            "description": "Job ID already exists"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/delete/{id}": {
      "delete": {
        "tags": [
          "schedule"
        ],
        "operationId": "delete_schedule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Scheduled job removed successfully"
          },
          "404": {
            "description": "Scheduled job not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/list": {
      "get": {
        "tags": [
          "schedule"
        ],
        "operationId": "list_schedules",
        "responses": {
          "200": {
            "description": "A list of scheduled jobs",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListSchedulesResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/{id}": {
      "put": {
        "tags": [
          "schedule"
        ],
        "operationId": "update_schedule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateScheduleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Scheduled job updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledJob"
                }
              }
            }
          },
          "400": {
            "description": "Cannot update a currently running job or invalid request"
          },
          "404": {
            "description": "Scheduled job not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/{id}/inspect": {
      "get": {
        "tags": [
          "schedule"
        ],
        "operationId": "inspect_running_job",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule to inspect",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Running job information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InspectJobResponse"
                }
              }
            }
          },
          "404": {
            "description": "Scheduled job not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/{id}/kill": {
      "post": {
        "tags": [
          "schedule"
        ],
        "operationId": "kill_running_job",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Running job killed successfully"
          }
        }
      }
    },
    "/schedule/{id}/pause": {
      "post": {
        "tags": [
          "schedule"
        ],
        "operationId": "pause_schedule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule to pause",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Scheduled job paused successfully"
          },
          "400": {
            "description": "Cannot pause a currently running job"
          },
          "404": {
            "description": "Scheduled job not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/{id}/run_now": {
      "post": {
        "tags": [
          "schedule"
        ],
        "operationId": "run_now_handler",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule to run",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Scheduled job triggered successfully, returns new session ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RunNowResponse"
                }
              }
            }
          },
          "404": {
            "description": "Scheduled job not found"
          },
          "500": {
            "description": "Internal server error when trying to run the job"
          }
        }
      }
    },
    "/schedule/{id}/sessions": {
      "get": {
        "tags": [
          "schedule"
        ],
        "operationId": "sessions_handler",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of session display info",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SessionDisplayInfo"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/schedule/{id}/unpause": {
      "post": {
        "tags": [
          "schedule"
        ],
        "operationId": "unpause_schedule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the schedule to unpause",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Scheduled job unpaused successfully"
          },
          "404": {
            "description": "Scheduled job not found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/sessions": {
      "get": {
        "tags": [
          "Session Management"
        ],
        "operationId": "list_sessions",
        "responses": {
          "200": {
            "description": "List of available sessions retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/import": {
      "post": {
        "tags": [
          "Session Management"
        ],
        "operationId": "import_session",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Session imported successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Session"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid JSON"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/import/nostr": {
      "post": {
        "tags": [
          "Session Management"
        ],
        "operationId": "import_session_nostr",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportSessionNostrRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Nostr shared session imported successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Session"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid Nostr share link"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/insights": {
      "get": {
        "tags": [
          "Session Management"
        ],
        "operationId": "get_session_insights",
        "responses": {
          "200": {
            "description": "Session insights retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionInsights"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/search": {
      "get": {
        "tags": [
          "Session Management"
        ],
        "operationId": "search_sessions",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Search query string",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum results (default: 10, max: 50)",
            "required": false,
            "schema": {
              "type": "integer",
              "nullable": true,
              "minimum": 0
            }
          },
          {
            "name": "after_date",
            "in": "query",
            "description": "Filter after date (ISO 8601)",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "before_date",
            "in": "query",
            "description": "Filter before date (ISO 8601)",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Matching sessions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Session"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - Invalid query"
          },
          "401": {
            "description": "Unauthorized"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/{id}/cancel": {
      "post": {
        "tags": [
          "super::routes::session_events"
        ],
        "operationId": "session_cancel",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Session ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Cancellation accepted"
          }
        }
      }
    },
    "/sessions/{id}/events": {
      "get": {
        "tags": [
          "super::routes::session_events"
        ],
        "operationId": "session_events",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Session ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "SSE event stream",
            "content": {
              "text/event-stream": {
                "schema": {
                  "$ref": "#/components/schemas/MessageEvent"
                }
              }
            }
          },
          "404": {
            "description": "Session not found"
          }
        }
      }
    },
    "/sessions/{id}/reply": {
      "post": {
        "tags": [
          "super::routes::session_events"
        ],
        "operationId": "session_reply",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Session ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionReplyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Request accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionReplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "404": {
            "description": "Session not found"
          },
          "424": {
            "description": "Agent not initialized"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/sessions/{session_id}": {
      "get": {
        "tags": [
          "Session Management"
        ],
        "operationId": "get_session",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "description": "Unique identifier for the session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session history retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Session"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Session Management"
        ],
        "operationId": "delete_session",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "description": "Unique identifier for the session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session deleted successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/{session_id}/export": {
      "get": {
        "tags": [
          "Session Management"
        ],
        "operationId": "export_session",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "description": "Unique identifier for the session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Session exported successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/{session_id}/fork": {
      "post": {
        "tags": [
          "Session Management"
        ],
        "operationId": "fork_session",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "description": "Unique identifier for the session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Session forked successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForkResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - truncate=true requires timestamp"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/{session_id}/name": {
      "put": {
        "tags": [
          "Session Management"
        ],
        "operationId": "update_session_name",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "description": "Unique identifier for the session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSessionNameRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Session name updated successfully"
          },
          "400": {
            "description": "Bad request - Name too long (max 200 characters)"
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/{session_id}/share/nostr": {
      "post": {
        "tags": [
          "Session Management"
        ],
        "operationId": "share_session_nostr",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "description": "Unique identifier for the session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShareSessionNostrRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Session shared to Nostr successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShareSessionNostrResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Session not found"
          },
          "500": {
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/sessions/{session_id}/user_recipe_values": {
      "put": {
        "tags": [
          "Session Management"
        ],
        "operationId": "update_session_user_recipe_values",
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "description": "Unique identifier for the session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSessionUserRecipeValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Session user recipe values updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateSessionUserRecipeValuesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - Invalid or missing API key"
          },
          "404": {
            "description": "Session not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/status": {
      "get": {
        "tags": [
          "super::routes::status"
        ],
        "operationId": "status",
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/system_info": {
      "get": {
        "tags": [
          "super::routes::status"
        ],
        "operationId": "system_info",
        "responses": {
          "200": {
            "description": "System information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemInfo"
                }
              }
            }
          }
        }
      }
    },
    "/telemetry/event": {
      "post": {
        "tags": [
          "super::routes::telemetry"
        ],
        "operationId": "send_telemetry_event",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TelemetryEventRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Event accepted for processing"
          }
        }
      }
    },
    "/tunnel/start": {
      "post": {
        "tags": [
          "super::routes::tunnel"
        ],
        "summary": "Start the tunnel",
        "operationId": "start_tunnel",
        "responses": {
          "200": {
            "description": "Tunnel started successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TunnelInfo"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tunnel/status": {
      "get": {
        "tags": [
          "super::routes::tunnel"
        ],
        "summary": "Get tunnel info",
        "operationId": "get_tunnel_status",
        "responses": {
          "200": {
            "description": "Tunnel info",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TunnelInfo"
                }
              }
            }
          }
        }
      }
    },
    "/tunnel/stop": {
      "post": {
        "tags": [
          "super::routes::tunnel"
        ],
        "summary": "Stop the tunnel",
        "operationId": "stop_tunnel",
        "responses": {
          "200": {
            "description": "Tunnel stopped successfully"
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ActionRequired": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ActionRequiredData"
          }
        }
      },
      "ActionRequiredData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "id",
              "toolName",
              "arguments",
              "actionType"
            ],
            "properties": {
              "actionType": {
                "type": "string",
                "enum": [
                  "toolConfirmation"
                ]
              },
              "arguments": {
                "$ref": "#/components/schemas/JsonObject"
              },
              "id": {
                "type": "string"
              },
              "prompt": {
                "type": "string",
                "nullable": true
              },
              "toolName": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "message",
              "requested_schema",
              "actionType"
            ],
            "properties": {
              "actionType": {
                "type": "string",
                "enum": [
                  "elicitation"
                ]
              },
              "id": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "requested_schema": {}
            }
          },
          {
            "type": "object",
            "required": [
              "id",
              "user_data",
              "actionType"
            ],
            "properties": {
              "actionType": {
                "type": "string",
                "enum": [
                  "elicitationResponse"
                ]
              },
              "id": {
                "type": "string"
              },
              "user_data": {}
            }
          }
        ],
        "discriminator": {
          "propertyName": "actionType"
        }
      },
      "Annotations": {
        "type": "object",
        "properties": {
          "audience": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Role"
            }
          },
          "lastModified": {
            "type": "string",
            "format": "date-time"
          },
          "priority": {
            "type": "number"
          }
        }
      },
      "Author": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AuthorRequest": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CallToolRequest": {
        "type": "object",
        "required": [
          "session_id",
          "name",
          "arguments"
        ],
        "properties": {
          "arguments": {},
          "name": {
            "type": "string"
          },
          "session_id": {
            "type": "string"
          }
        }
      },
      "CallToolResponse": {
        "type": "object",
        "required": [
          "content",
          "isError"
        ],
        "properties": {
          "_meta": {
            "nullable": true
          },
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentBlock"
            }
          },
          "isError": {
            "type": "boolean"
          },
          "structuredContent": {
            "nullable": true
          }
        }
      },
      "CancelRequest": {
        "type": "object",
        "required": [
          "request_id"
        ],
        "properties": {
          "request_id": {
            "type": "string"
          }
        }
      },
      "ChatRequest": {
        "type": "object",
        "required": [
          "user_message",
          "session_id"
        ],
        "properties": {
          "override_conversation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Message"
            },
            "description": "Override the server's conversation history. Only use this when you need absolute control\nover the conversation state (e.g., administrative tools). For normal operations, the server\nis the source of truth - use truncate/fork endpoints to modify conversation history instead.",
            "nullable": true
          },
          "recipe_name": {
            "type": "string",
            "nullable": true
          },
          "recipe_version": {
            "type": "string",
            "nullable": true
          },
          "session_id": {
            "type": "string"
          },
          "user_message": {
            "$ref": "#/components/schemas/Message"
          }
        }
      },
      "ChatTemplate": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "embedded"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "name",
              "type"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "builtin"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "template",
              "type"
            ],
            "properties": {
              "template": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "custom_inline"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "CheckProviderRequest": {
        "type": "object",
        "required": [
          "provider"
        ],
        "properties": {
          "provider": {
            "type": "string"
          }
        }
      },
      "CommandType": {
        "type": "string",
        "enum": [
          "Builtin",
          "Recipe",
          "Skill",
          "Agent"
        ]
      },
      "ConfigKey": {
        "type": "object",
        "description": "Configuration key metadata for provider setup",
        "required": [
          "name",
          "required",
          "secret",
          "oauth_flow"
        ],
        "properties": {
          "default": {
            "type": "string",
            "description": "Optional default value for the key",
            "nullable": true
          },
          "device_code_flow": {
            "type": "boolean",
            "description": "Whether this OAuth flow uses the device code grant (RFC 8628)\nWhen true, the user must enter a verification code in the browser"
          },
          "name": {
            "type": "string",
            "description": "The name of the configuration key (e.g., \"API_KEY\")"
          },
          "oauth_flow": {
            "type": "boolean",
            "description": "Whether this key should be configured using an OAuth flow\nWhen true, the provider's configure_oauth() method will be called instead of prompting for manual input"
          },
          "primary": {
            "type": "boolean",
            "description": "Whether this key should be shown prominently during provider setup\n(onboarding, settings modal, CLI configure)"
          },
          "required": {
            "type": "boolean",
            "description": "Whether this key is required for the provider to function"
          },
          "secret": {
            "type": "boolean",
            "description": "Whether this key should be stored securely (e.g., in keychain)"
          }
        }
      },
      "ConfigKeyQuery": {
        "type": "object",
        "required": [
          "key",
          "is_secret"
        ],
        "properties": {
          "is_secret": {
            "type": "boolean"
          },
          "key": {
            "type": "string"
          }
        }
      },
      "ConfigResponse": {
        "type": "object",
        "required": [
          "config"
        ],
        "properties": {
          "config": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "ConfirmToolActionRequest": {
        "type": "object",
        "required": [
          "id",
          "action",
          "sessionId"
        ],
        "properties": {
          "action": {
            "$ref": "#/components/schemas/Permission"
          },
          "id": {
            "type": "string"
          },
          "principalType": {
            "$ref": "#/components/schemas/PrincipalType"
          },
          "sessionId": {
            "type": "string"
          }
        }
      },
      "Content": {
        "oneOf": [
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawTextContent"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "image"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawImageContent"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "resource"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawEmbeddedResource"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "audio"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawAudioContent"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "resource_link"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawResource"
              }
            ]
          }
        ]
      },
      "ContentBlock": {
        "oneOf": [
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawTextContent"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "image"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawImageContent"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "resource"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawEmbeddedResource"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "audio"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawAudioContent"
              }
            ]
          },
          {
            "allOf": [
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "resource_link"
                    ]
                  }
                }
              },
              {
                "$ref": "#/components/schemas/RawResource"
              }
            ]
          }
        ]
      },
      "Conversation": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Message"
        }
      },
      "CreateCustomProviderResponse": {
        "type": "object",
        "required": [
          "provider_name"
        ],
        "properties": {
          "provider_name": {
            "type": "string"
          }
        }
      },
      "CreateRecipeRequest": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "author": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthorRequest"
              }
            ],
            "nullable": true
          },
          "session_id": {
            "type": "string"
          }
        }
      },
      "CreateRecipeResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "nullable": true
          },
          "recipe": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Recipe"
              }
            ],
            "nullable": true
          }
        }
      },
      "CreateScheduleRequest": {
        "type": "object",
        "required": [
          "id",
          "recipe",
          "cron"
        ],
        "properties": {
          "cron": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "CspMetadata": {
        "type": "object",
        "description": "Content Security Policy metadata for MCP Apps\nSpecifies allowed domains for network connections and resource loading",
        "properties": {
          "baseUriDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Domains allowed for base-uri",
            "nullable": true
          },
          "connectDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Domains allowed for connect-src (fetch, XHR, WebSocket)",
            "nullable": true
          },
          "frameDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Domains allowed for frame-src (nested iframes)",
            "nullable": true
          },
          "resourceDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Domains allowed for resource loading (scripts, styles, images, fonts, media)",
            "nullable": true
          }
        }
      },
      "DeclarativeProviderConfig": {
        "type": "object",
        "required": [
          "name",
          "engine",
          "display_name",
          "base_url",
          "models"
        ],
        "properties": {
          "api_key_env": {
            "type": "string"
          },
          "base_path": {
            "type": "string",
            "nullable": true
          },
          "base_url": {
            "type": "string"
          },
          "catalog_provider_id": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "display_name": {
            "type": "string"
          },
          "dynamic_models": {
            "type": "boolean",
            "description": "Controls whether `fetch_supported_models` calls the provider's `/v1/models`\nendpoint or returns the static `models` list directly.\n\n- `Some(false)` + non-empty `models`: return the static list; no API call.\nConstruction fails if `models` is empty.\n- `Some(true)` or `None`: try the API; fall back to `models` on 404.",
            "nullable": true
          },
          "engine": {
            "$ref": "#/components/schemas/ProviderEngine"
          },
          "env_vars": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvVarConfig"
            },
            "nullable": true
          },
          "fast_model": {
            "type": "string",
            "nullable": true
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "model_doc_link": {
            "type": "string",
            "nullable": true
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelInfo"
            }
          },
          "name": {
            "type": "string"
          },
          "preserves_thinking": {
            "type": "boolean"
          },
          "requires_auth": {
            "type": "boolean"
          },
          "setup_steps": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "skip_canonical_filtering": {
            "type": "boolean"
          },
          "supports_streaming": {
            "type": "boolean",
            "nullable": true
          },
          "timeout_seconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "minimum": 0
          }
        }
      },
      "DecodeRecipeRequest": {
        "type": "object",
        "required": [
          "deeplink"
        ],
        "properties": {
          "deeplink": {
            "type": "string"
          }
        }
      },
      "DecodeRecipeResponse": {
        "type": "object",
        "required": [
          "recipe"
        ],
        "properties": {
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "DeleteRecipeRequest": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          }
        }
      },
      "DictationProvider": {
        "type": "string",
        "enum": [
          "openai",
          "elevenlabs",
          "groq",
          "local"
        ]
      },
      "DictationProviderStatus": {
        "type": "object",
        "required": [
          "configured",
          "description",
          "uses_provider_config"
        ],
        "properties": {
          "config_key": {
            "type": "string",
            "description": "Config key name if uses_provider_config is false",
            "nullable": true
          },
          "configured": {
            "type": "boolean",
            "description": "Whether the provider is fully configured and ready to use"
          },
          "description": {
            "type": "string",
            "description": "Description of what this provider does"
          },
          "host": {
            "type": "string",
            "description": "Custom host URL if configured (only for providers that support it)",
            "nullable": true
          },
          "settings_path": {
            "type": "string",
            "description": "Path to settings if uses_provider_config is true",
            "nullable": true
          },
          "uses_provider_config": {
            "type": "boolean",
            "description": "Whether this provider uses the main provider config (true) or has its own key (false)"
          }
        }
      },
      "DownloadModelRequest": {
        "type": "object",
        "required": [
          "spec"
        ],
        "properties": {
          "spec": {
            "type": "string",
            "description": "Model spec like \"bartowski/Llama-3.2-3B-Instruct-GGUF:Q4_K_M\""
          }
        }
      },
      "DownloadProgress": {
        "type": "object",
        "required": [
          "model_id",
          "status",
          "bytes_downloaded",
          "total_bytes",
          "progress_percent"
        ],
        "properties": {
          "bytes_downloaded": {
            "type": "integer",
            "format": "int64",
            "description": "Bytes downloaded so far",
            "minimum": 0
          },
          "error": {
            "type": "string",
            "description": "Error message if failed",
            "nullable": true
          },
          "eta_seconds": {
            "type": "integer",
            "format": "int64",
            "description": "Estimated time remaining in seconds",
            "nullable": true,
            "minimum": 0
          },
          "model_id": {
            "type": "string",
            "description": "Model ID being downloaded"
          },
          "progress_percent": {
            "type": "number",
            "format": "float",
            "description": "Download progress percentage (0-100)"
          },
          "speed_bps": {
            "type": "integer",
            "format": "int64",
            "description": "Download speed in bytes per second",
            "nullable": true,
            "minimum": 0
          },
          "status": {
            "$ref": "#/components/schemas/DownloadStatus"
          },
          "total_bytes": {
            "type": "integer",
            "format": "int64",
            "description": "Total bytes to download",
            "minimum": 0
          }
        }
      },
      "DownloadStatus": {
        "type": "string",
        "enum": [
          "downloading",
          "completed",
          "failed",
          "cancelled"
        ]
      },
      "EmbeddedResource": {
        "type": "object",
        "required": [
          "resource"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "annotations": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Annotations"
              },
              {
                "type": "object"
              }
            ]
          },
          "resource": {
            "$ref": "#/components/schemas/ResourceContents"
          }
        }
      },
      "EncodeRecipeRequest": {
        "type": "object",
        "required": [
          "recipe"
        ],
        "properties": {
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "EncodeRecipeResponse": {
        "type": "object",
        "required": [
          "deeplink"
        ],
        "properties": {
          "deeplink": {
            "type": "string"
          }
        }
      },
      "EnvVarConfig": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "default": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "primary": {
            "type": "boolean",
            "description": "When true, the field is shown prominently in the UI (not collapsed).\nDefaults to the value of `required` if not specified.",
            "nullable": true
          },
          "required": {
            "type": "boolean"
          },
          "secret": {
            "type": "boolean"
          }
        }
      },
      "Envs": {
        "type": "object",
        "additionalProperties": {
          "type": "string",
          "description": "A map of environment variables to set, e.g. API_KEY -> some_secret, HOST -> host"
        }
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          }
        }
      },
      "ExtensionConfig": {
        "oneOf": [
          {
            "type": "object",
            "description": "SSE transport is no longer supported - kept only for config file compatibility",
            "required": [
              "name",
              "description",
              "type"
            ],
            "properties": {
              "description": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "sse"
                ]
              },
              "uri": {
                "type": "string",
                "nullable": true
              }
            }
          },
          {
            "type": "object",
            "description": "Standard I/O client with command and arguments",
            "required": [
              "name",
              "description",
              "cmd",
              "args",
              "type"
            ],
            "properties": {
              "args": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "available_tools": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "bundled": {
                "type": "boolean",
                "nullable": true
              },
              "cmd": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "env_keys": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "envs": {
                "$ref": "#/components/schemas/Envs"
              },
              "name": {
                "type": "string",
                "description": "The name used to identify this extension"
              },
              "timeout": {
                "type": "integer",
                "format": "int64",
                "nullable": true,
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "stdio"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Built-in extension that is part of the bundled goose MCP server",
            "required": [
              "name",
              "description",
              "type"
            ],
            "properties": {
              "available_tools": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "bundled": {
                "type": "boolean",
                "nullable": true
              },
              "description": {
                "type": "string"
              },
              "display_name": {
                "type": "string",
                "nullable": true
              },
              "name": {
                "type": "string",
                "description": "The name used to identify this extension"
              },
              "timeout": {
                "type": "integer",
                "format": "int64",
                "nullable": true,
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "builtin"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Platform extensions that have direct access to the agent etc and run in the agent process",
            "required": [
              "name",
              "description",
              "type"
            ],
            "properties": {
              "available_tools": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "bundled": {
                "type": "boolean",
                "nullable": true
              },
              "description": {
                "type": "string"
              },
              "display_name": {
                "type": "string",
                "nullable": true
              },
              "name": {
                "type": "string",
                "description": "The name used to identify this extension"
              },
              "type": {
                "type": "string",
                "enum": [
                  "platform"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Streamable HTTP client with a URI endpoint using MCP Streamable HTTP specification",
            "required": [
              "name",
              "description",
              "uri",
              "type"
            ],
            "properties": {
              "available_tools": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "bundled": {
                "type": "boolean",
                "nullable": true
              },
              "description": {
                "type": "string"
              },
              "env_keys": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "envs": {
                "$ref": "#/components/schemas/Envs"
              },
              "headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "name": {
                "type": "string",
                "description": "The name used to identify this extension"
              },
              "socket": {
                "type": "string",
                "description": "Optional Unix domain socket path for HTTP-over-UDS transport.\nWhen set, the HTTP connection is routed through this socket while\n`uri` is used for the Host header and path.\nUse `@name` for Linux abstract sockets.",
                "nullable": true
              },
              "timeout": {
                "type": "integer",
                "format": "int64",
                "nullable": true,
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "streamable_http"
                ]
              },
              "uri": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "description": "Frontend-provided tools that will be called through the frontend",
            "required": [
              "name",
              "description",
              "tools",
              "type"
            ],
            "properties": {
              "available_tools": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "bundled": {
                "type": "boolean",
                "nullable": true
              },
              "description": {
                "type": "string"
              },
              "instructions": {
                "type": "string",
                "description": "Instructions for how to use these tools",
                "nullable": true
              },
              "name": {
                "type": "string",
                "description": "The name used to identify this extension"
              },
              "tools": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Tool"
                },
                "description": "The tools provided by the frontend"
              },
              "type": {
                "type": "string",
                "enum": [
                  "frontend"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Inline Python code that will be executed using uvx",
            "required": [
              "name",
              "description",
              "code",
              "type"
            ],
            "properties": {
              "available_tools": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "code": {
                "type": "string",
                "description": "The Python code to execute"
              },
              "dependencies": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Python package dependencies required by this extension",
                "nullable": true
              },
              "description": {
                "type": "string"
              },
              "name": {
                "type": "string",
                "description": "The name used to identify this extension"
              },
              "timeout": {
                "type": "integer",
                "format": "int64",
                "description": "Timeout in seconds",
                "nullable": true,
                "minimum": 0
              },
              "type": {
                "type": "string",
                "enum": [
                  "inline_python"
                ]
              }
            }
          }
        ],
        "description": "Represents the different types of MCP extensions that can be added to the manager",
        "discriminator": {
          "propertyName": "type"
        }
      },
      "ExtensionData": {
        "type": "object",
        "description": "Extension data containing all extension states\nKeys are in format \"extension_name.version\" (e.g., \"todo.v0\")",
        "additionalProperties": {}
      },
      "ExtensionEntry": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ExtensionConfig"
          },
          {
            "type": "object",
            "required": [
              "enabled"
            ],
            "properties": {
              "enabled": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "ExtensionLoadResult": {
        "type": "object",
        "required": [
          "name",
          "success"
        ],
        "properties": {
          "error": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "FeaturesResponse": {
        "type": "object",
        "required": [
          "features"
        ],
        "properties": {
          "features": {
            "type": "object",
            "description": "Map of feature name to enabled status",
            "additionalProperties": {
              "type": "boolean"
            }
          }
        }
      },
      "ForkRequest": {
        "type": "object",
        "required": [
          "truncate",
          "copy"
        ],
        "properties": {
          "copy": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "truncate": {
            "type": "boolean"
          }
        }
      },
      "ForkResponse": {
        "type": "object",
        "required": [
          "sessionId"
        ],
        "properties": {
          "sessionId": {
            "type": "string"
          }
        }
      },
      "FrontendToolRequest": {
        "type": "object",
        "required": [
          "id",
          "toolCall"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "toolCall": {
            "type": "object"
          }
        }
      },
      "GetToolsQuery": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "extension_name": {
            "type": "string",
            "nullable": true
          },
          "session_id": {
            "type": "string"
          }
        }
      },
      "GooseApp": {
        "allOf": [
          {
            "$ref": "#/components/schemas/McpAppResource"
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/WindowProps"
              }
            ],
            "nullable": true
          },
          {
            "type": "object",
            "properties": {
              "mcpServers": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "prd": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "GooseMode": {
        "type": "string",
        "enum": [
          "auto",
          "approve",
          "smart_approve",
          "chat"
        ]
      },
      "HfGgufFile": {
        "type": "object",
        "description": "A single downloadable GGUF file (used internally and for downloads).",
        "required": [
          "filename",
          "size_bytes",
          "quantization",
          "download_url"
        ],
        "properties": {
          "download_url": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "quantization": {
            "type": "string"
          },
          "size_bytes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "HfModelInfo": {
        "type": "object",
        "required": [
          "repo_id",
          "author",
          "model_name",
          "downloads",
          "gguf_files"
        ],
        "properties": {
          "author": {
            "type": "string"
          },
          "downloads": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "gguf_files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HfGgufFile"
            }
          },
          "model_name": {
            "type": "string"
          },
          "repo_id": {
            "type": "string"
          }
        }
      },
      "HfQuantVariant": {
        "type": "object",
        "description": "A quantization variant — groups sharded files into one logical entry.",
        "required": [
          "quantization",
          "size_bytes",
          "filename",
          "download_url",
          "description",
          "quality_rank"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "download_url": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "quality_rank": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "quantization": {
            "type": "string"
          },
          "sharded": {
            "type": "boolean"
          },
          "size_bytes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        }
      },
      "Icon": {
        "type": "object",
        "required": [
          "src"
        ],
        "properties": {
          "mimeType": {
            "type": "string"
          },
          "sizes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "src": {
            "type": "string"
          },
          "theme": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IconTheme"
              },
              {
                "type": "object"
              }
            ]
          }
        }
      },
      "IconTheme": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "light"
            ]
          },
          {
            "type": "string",
            "enum": [
              "dark"
            ]
          }
        ]
      },
      "ImageContent": {
        "type": "object",
        "required": [
          "data",
          "mimeType"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "annotations": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Annotations"
              },
              {
                "type": "object"
              }
            ]
          },
          "data": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          }
        }
      },
      "ImportAppRequest": {
        "type": "object",
        "required": [
          "html"
        ],
        "properties": {
          "html": {
            "type": "string"
          }
        }
      },
      "ImportAppResponse": {
        "type": "object",
        "required": [
          "name",
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "ImportSessionNostrRequest": {
        "type": "object",
        "required": [
          "deeplink"
        ],
        "properties": {
          "deeplink": {
            "type": "string"
          }
        }
      },
      "ImportSessionRequest": {
        "type": "object",
        "required": [
          "json"
        ],
        "properties": {
          "json": {
            "type": "string"
          }
        }
      },
      "InferenceMetadata": {
        "type": "object",
        "required": [
          "provider",
          "requestedModel"
        ],
        "properties": {
          "provider": {
            "type": "string"
          },
          "requestedModel": {
            "type": "string"
          },
          "resolvedModel": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InspectJobResponse": {
        "type": "object",
        "properties": {
          "processStartTime": {
            "type": "string",
            "nullable": true
          },
          "runningDurationSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "sessionId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "JsonObject": {
        "type": "object",
        "additionalProperties": true
      },
      "KillJobResponse": {
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          }
        }
      },
      "ListAppsRequest": {
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ListAppsResponse": {
        "type": "object",
        "required": [
          "apps"
        ],
        "properties": {
          "apps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GooseApp"
            }
          }
        }
      },
      "ListRecipeResponse": {
        "type": "object",
        "required": [
          "manifests"
        ],
        "properties": {
          "manifests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecipeManifest"
            }
          }
        }
      },
      "ListSchedulesResponse": {
        "type": "object",
        "required": [
          "jobs"
        ],
        "properties": {
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScheduledJob"
            }
          }
        }
      },
      "LoadedProvider": {
        "type": "object",
        "required": [
          "config",
          "is_editable"
        ],
        "properties": {
          "config": {
            "$ref": "#/components/schemas/DeclarativeProviderConfig"
          },
          "is_editable": {
            "type": "boolean"
          }
        }
      },
      "LocalModelResponse": {
        "type": "object",
        "required": [
          "id",
          "repo_id",
          "filename",
          "quantization",
          "size_bytes",
          "status",
          "recommended",
          "settings",
          "vision_capable"
        ],
        "properties": {
          "filename": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "mmproj_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelDownloadStatus"
              }
            ],
            "nullable": true
          },
          "quantization": {
            "type": "string"
          },
          "recommended": {
            "type": "boolean"
          },
          "repo_id": {
            "type": "string"
          },
          "settings": {
            "$ref": "#/components/schemas/ModelSettings"
          },
          "size_bytes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "status": {
            "$ref": "#/components/schemas/ModelDownloadStatus"
          },
          "vision_capable": {
            "type": "boolean"
          }
        }
      },
      "McpAppResource": {
        "type": "object",
        "description": "MCP App Resource\nRepresents a UI resource that can be rendered in an MCP App",
        "required": [
          "uri",
          "name",
          "mimeType"
        ],
        "properties": {
          "_meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceMetadata"
              }
            ],
            "nullable": true
          },
          "blob": {
            "type": "string",
            "description": "Base64-encoded binary content (alternative to text)",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Optional description of what this resource does",
            "nullable": true
          },
          "mimeType": {
            "type": "string",
            "description": "MIME type (should be \"text/html;profile=mcp-app\" for MCP Apps)"
          },
          "name": {
            "type": "string",
            "description": "Human-readable name of the resource"
          },
          "text": {
            "type": "string",
            "description": "Text content of the resource (HTML for MCP Apps)",
            "nullable": true
          },
          "uri": {
            "type": "string",
            "description": "URI of the resource (must use ui:// scheme)"
          }
        }
      },
      "Message": {
        "type": "object",
        "description": "A message to or from an LLM",
        "required": [
          "role",
          "created",
          "content",
          "metadata"
        ],
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MessageContent"
            }
          },
          "created": {
            "type": "integer",
            "format": "int64"
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "$ref": "#/components/schemas/MessageMetadata"
          },
          "role": {
            "$ref": "#/components/schemas/Role"
          }
        }
      },
      "MessageContent": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/TextContent"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageContent"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "image"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToolRequest"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "toolRequest"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToolResponse"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "toolResponse"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToolConfirmationRequest"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "toolConfirmationRequest"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ActionRequired"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "actionRequired"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/FrontendToolRequest"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "frontendToolRequest"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ThinkingContent"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "thinking"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/RedactedThinkingContent"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "redactedThinking"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/SystemNotificationContent"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "systemNotification"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "description": "Content passed inside a message, which can be both simple content and tool content",
        "discriminator": {
          "propertyName": "type"
        }
      },
      "MessageEvent": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "message",
              "token_state",
              "type"
            ],
            "properties": {
              "message": {
                "$ref": "#/components/schemas/Message"
              },
              "token_state": {
                "$ref": "#/components/schemas/TokenState"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Message"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "error",
              "type"
            ],
            "properties": {
              "error": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Error"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "reason",
              "token_state",
              "type"
            ],
            "properties": {
              "reason": {
                "type": "string"
              },
              "token_state": {
                "$ref": "#/components/schemas/TokenState"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Finish"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "request_id",
              "message",
              "type"
            ],
            "properties": {
              "message": {
                "type": "object"
              },
              "request_id": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Notification"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "conversation",
              "type"
            ],
            "properties": {
              "conversation": {
                "$ref": "#/components/schemas/Conversation"
              },
              "type": {
                "type": "string",
                "enum": [
                  "UpdateConversation"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Sent at the start of an SSE stream to inform the client about\nin-flight requests it can reattach to.",
            "required": [
              "request_ids",
              "type"
            ],
            "properties": {
              "request_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "ActiveRequests"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Ping"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "MessageMetadata": {
        "type": "object",
        "description": "Metadata for message visibility and model inference details",
        "required": [
          "userVisible",
          "agentVisible"
        ],
        "properties": {
          "agentVisible": {
            "type": "boolean",
            "description": "Whether the message should be included in the agent's context window"
          },
          "inference": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InferenceMetadata"
              }
            ],
            "nullable": true
          },
          "userVisible": {
            "type": "boolean",
            "description": "Whether the message should be visible to the user in the UI"
          }
        }
      },
      "ModelCapabilities": {
        "type": "object",
        "required": [
          "tool_call",
          "reasoning",
          "attachment",
          "temperature"
        ],
        "properties": {
          "attachment": {
            "type": "boolean"
          },
          "reasoning": {
            "type": "boolean"
          },
          "temperature": {
            "type": "boolean"
          },
          "tool_call": {
            "type": "boolean"
          }
        }
      },
      "ModelConfig": {
        "type": "object",
        "required": [
          "model_name",
          "toolshim"
        ],
        "properties": {
          "context_limit": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "max_tokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "model_name": {
            "type": "string"
          },
          "reasoning": {
            "type": "boolean",
            "nullable": true
          },
          "request_params": {
            "type": "object",
            "description": "Provider-specific request parameters (e.g., anthropic_beta headers)",
            "additionalProperties": {},
            "nullable": true
          },
          "temperature": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "toolshim": {
            "type": "boolean"
          },
          "toolshim_model": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ModelDownloadStatus": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "state"
            ],
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "NotDownloaded"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "progress_percent",
              "bytes_downloaded",
              "total_bytes",
              "state"
            ],
            "properties": {
              "bytes_downloaded": {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              "progress_percent": {
                "type": "number",
                "format": "float"
              },
              "speed_bps": {
                "type": "integer",
                "format": "int64",
                "nullable": true,
                "minimum": 0
              },
              "state": {
                "type": "string",
                "enum": [
                  "Downloading"
                ]
              },
              "total_bytes": {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              }
            }
          },
          {
            "type": "object",
            "required": [
              "state"
            ],
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "Downloaded"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "state"
        }
      },
      "ModelInfo": {
        "type": "object",
        "description": "Information about a model's capabilities",
        "required": [
          "name",
          "context_limit"
        ],
        "properties": {
          "context_limit": {
            "type": "integer",
            "description": "The maximum context length this model supports",
            "minimum": 0
          },
          "currency": {
            "type": "string",
            "description": "Currency for the costs (default: \"$\")",
            "nullable": true
          },
          "input_token_cost": {
            "type": "number",
            "format": "double",
            "description": "Cost per token for input in USD (optional)",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the model"
          },
          "output_token_cost": {
            "type": "number",
            "format": "double",
            "description": "Cost per token for output in USD (optional)",
            "nullable": true
          },
          "reasoning": {
            "type": "boolean",
            "description": "Whether this model supports reasoning/thinking controls"
          },
          "resolved_model": {
            "type": "string",
            "description": "The underlying model resolved from provider metadata, when the configured model is an alias or endpoint.",
            "nullable": true
          },
          "supports_cache_control": {
            "type": "boolean",
            "description": "Whether this model supports cache control",
            "nullable": true
          }
        }
      },
      "ModelInfoData": {
        "type": "object",
        "required": [
          "provider",
          "model",
          "context_limit",
          "reasoning",
          "currency"
        ],
        "properties": {
          "cache_read_token_cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "cache_write_token_cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "context_limit": {
            "type": "integer",
            "minimum": 0
          },
          "currency": {
            "type": "string"
          },
          "input_token_cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "max_output_tokens": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "model": {
            "type": "string"
          },
          "output_token_cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "provider": {
            "type": "string"
          },
          "reasoning": {
            "type": "boolean"
          }
        }
      },
      "ModelInfoQuery": {
        "type": "object",
        "required": [
          "provider",
          "model"
        ],
        "properties": {
          "model": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          }
        }
      },
      "ModelInfoResponse": {
        "type": "object",
        "required": [
          "source"
        ],
        "properties": {
          "model_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelInfoData"
              }
            ],
            "nullable": true
          },
          "source": {
            "type": "string"
          }
        }
      },
      "ModelSettings": {
        "type": "object",
        "properties": {
          "chat_template": {
            "$ref": "#/components/schemas/ChatTemplate"
          },
          "context_size": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "minimum": 0
          },
          "enable_thinking": {
            "type": "boolean"
          },
          "flash_attention": {
            "type": "boolean",
            "nullable": true
          },
          "frequency_penalty": {
            "type": "number",
            "format": "float"
          },
          "image_token_estimate": {
            "type": "integer",
            "description": "Estimated tokens per image for budget planning before mtmd tokenization.\nThe actual count is determined after tokenization via `chunks.total_tokens()`.",
            "minimum": 0
          },
          "max_output_tokens": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "mmproj_size_bytes": {
            "type": "integer",
            "format": "int64",
            "description": "Size of the mmproj file in bytes, used for memory accounting.",
            "minimum": 0
          },
          "n_batch": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "minimum": 0
          },
          "n_gpu_layers": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "minimum": 0
          },
          "n_threads": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "presence_penalty": {
            "type": "number",
            "format": "float"
          },
          "repeat_last_n": {
            "type": "integer",
            "format": "int32"
          },
          "repeat_penalty": {
            "type": "number",
            "format": "float"
          },
          "sampling": {
            "$ref": "#/components/schemas/SamplingConfig"
          },
          "tool_calling": {
            "$ref": "#/components/schemas/ToolCallingMode"
          },
          "use_mlock": {
            "type": "boolean"
          },
          "vision_capable": {
            "type": "boolean",
            "description": "Whether this model architecture supports vision input.\nDerived from associated mmproj metadata, not user-configurable."
          }
        }
      },
      "ModelTemplate": {
        "type": "object",
        "required": [
          "id",
          "name",
          "context_limit",
          "capabilities",
          "deprecated"
        ],
        "properties": {
          "capabilities": {
            "$ref": "#/components/schemas/ModelCapabilities"
          },
          "context_limit": {
            "type": "integer",
            "minimum": 0
          },
          "deprecated": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "ParseRecipeRequest": {
        "type": "object",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "type": "string"
          }
        }
      },
      "ParseRecipeResponse": {
        "type": "object",
        "required": [
          "recipe"
        ],
        "properties": {
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "Permission": {
        "type": "string",
        "enum": [
          "always_allow",
          "allow_once",
          "cancel",
          "deny_once",
          "always_deny"
        ]
      },
      "PermissionLevel": {
        "type": "string",
        "description": "Enum representing the possible permission levels for a tool.",
        "enum": [
          "always_allow",
          "ask_before",
          "never_allow"
        ]
      },
      "PermissionsMetadata": {
        "type": "object",
        "description": "Sandbox permissions for MCP Apps\nSpecifies which browser capabilities the UI needs access to.\nMaps to the iframe Permission Policy `allow` attribute.",
        "properties": {
          "camera": {
            "type": "boolean",
            "description": "Request camera access (maps to Permission Policy `camera` feature)"
          },
          "clipboardWrite": {
            "type": "boolean",
            "description": "Request clipboard write access (maps to Permission Policy `clipboard-write` feature)"
          },
          "geolocation": {
            "type": "boolean",
            "description": "Request geolocation access (maps to Permission Policy `geolocation` feature)"
          },
          "microphone": {
            "type": "boolean",
            "description": "Request microphone access (maps to Permission Policy `microphone` feature)"
          }
        }
      },
      "PrincipalType": {
        "type": "string",
        "enum": [
          "Extension",
          "Tool"
        ]
      },
      "PromptContentResponse": {
        "type": "object",
        "required": [
          "name",
          "content",
          "default_content",
          "is_customized"
        ],
        "properties": {
          "content": {
            "type": "string"
          },
          "default_content": {
            "type": "string"
          },
          "is_customized": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PromptsListResponse": {
        "type": "object",
        "required": [
          "prompts"
        ],
        "properties": {
          "prompts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Template"
            }
          }
        }
      },
      "ProviderCatalogEntry": {
        "type": "object",
        "required": [
          "id",
          "name",
          "format",
          "api_url",
          "model_count",
          "doc_url",
          "env_var"
        ],
        "properties": {
          "api_url": {
            "type": "string"
          },
          "doc_url": {
            "type": "string"
          },
          "env_var": {
            "type": "string"
          },
          "format": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "model_count": {
            "type": "integer",
            "minimum": 0
          },
          "name": {
            "type": "string"
          }
        }
      },
      "ProviderDetails": {
        "type": "object",
        "required": [
          "name",
          "metadata",
          "is_configured",
          "provider_type"
        ],
        "properties": {
          "is_configured": {
            "type": "boolean"
          },
          "metadata": {
            "$ref": "#/components/schemas/ProviderMetadata"
          },
          "name": {
            "type": "string"
          },
          "provider_type": {
            "$ref": "#/components/schemas/ProviderType"
          },
          "saved_model": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProviderEngine": {
        "type": "string",
        "enum": [
          "openai",
          "ollama",
          "anthropic"
        ]
      },
      "ProviderMetadata": {
        "type": "object",
        "description": "Metadata about a provider's configuration requirements and capabilities",
        "required": [
          "name",
          "display_name",
          "description",
          "default_model",
          "known_models",
          "model_doc_link",
          "config_keys"
        ],
        "properties": {
          "config_keys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigKey"
            },
            "description": "Required configuration keys"
          },
          "default_model": {
            "type": "string",
            "description": "The default/recommended model for this provider"
          },
          "description": {
            "type": "string",
            "description": "Description of the provider's capabilities"
          },
          "display_name": {
            "type": "string",
            "description": "Display name for the provider in UIs"
          },
          "known_models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelInfo"
            },
            "description": "A list of currently known models with their capabilities"
          },
          "model_doc_link": {
            "type": "string",
            "description": "Link to the docs where models can be found"
          },
          "model_selection_hint": {
            "type": "string",
            "description": "Hint shown in the model picker when this provider manages its own model selection.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The unique identifier for this provider"
          },
          "setup_steps": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "step-by-step instructions for set up providers eg: api key"
          }
        }
      },
      "ProviderModelInfoQuery": {
        "type": "object",
        "required": [
          "model"
        ],
        "properties": {
          "model": {
            "type": "string"
          }
        }
      },
      "ProviderTemplate": {
        "type": "object",
        "required": [
          "id",
          "name",
          "format",
          "api_url",
          "models",
          "supports_streaming",
          "env_var",
          "doc_url"
        ],
        "properties": {
          "api_url": {
            "type": "string"
          },
          "doc_url": {
            "type": "string"
          },
          "env_var": {
            "type": "string"
          },
          "format": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ModelTemplate"
            }
          },
          "name": {
            "type": "string"
          },
          "supports_streaming": {
            "type": "boolean"
          }
        }
      },
      "ProviderType": {
        "type": "string",
        "enum": [
          "Preferred",
          "Builtin",
          "Declarative",
          "Custom"
        ]
      },
      "ProvidersResponse": {
        "type": "object",
        "required": [
          "providers"
        ],
        "properties": {
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProviderDetails"
            }
          }
        }
      },
      "RawAudioContent": {
        "type": "object",
        "required": [
          "data",
          "mimeType"
        ],
        "properties": {
          "data": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          }
        }
      },
      "RawEmbeddedResource": {
        "type": "object",
        "required": [
          "resource"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "resource": {
            "$ref": "#/components/schemas/ResourceContents"
          }
        }
      },
      "RawImageContent": {
        "type": "object",
        "required": [
          "data",
          "mimeType"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "data": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          }
        }
      },
      "RawResource": {
        "type": "object",
        "required": [
          "uri",
          "name"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "description": {
            "type": "string"
          },
          "icons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Icon"
            }
          },
          "mimeType": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "minimum": 0
          },
          "title": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          }
        }
      },
      "RawTextContent": {
        "type": "object",
        "required": [
          "text"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "text": {
            "type": "string"
          }
        }
      },
      "ReadResourceRequest": {
        "type": "object",
        "required": [
          "session_id",
          "extension_name",
          "uri"
        ],
        "properties": {
          "extension_name": {
            "type": "string"
          },
          "session_id": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          }
        }
      },
      "ReadResourceResponse": {
        "type": "object",
        "required": [
          "uri",
          "text"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true
          },
          "mimeType": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          }
        }
      },
      "Recipe": {
        "type": "object",
        "required": [
          "title",
          "description"
        ],
        "properties": {
          "activities": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "author": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Author"
              }
            ],
            "nullable": true
          },
          "description": {
            "type": "string"
          },
          "extensions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtensionConfig"
            },
            "nullable": true
          },
          "instructions": {
            "type": "string",
            "nullable": true
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecipeParameter"
            },
            "nullable": true
          },
          "prompt": {
            "type": "string",
            "nullable": true
          },
          "response": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Response"
              }
            ],
            "nullable": true
          },
          "retry": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RetryConfig"
              }
            ],
            "nullable": true
          },
          "settings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Settings"
              }
            ],
            "nullable": true
          },
          "sub_recipes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubRecipe"
            },
            "nullable": true
          },
          "title": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        }
      },
      "RecipeManifest": {
        "type": "object",
        "required": [
          "id",
          "recipe",
          "file_path",
          "last_modified"
        ],
        "properties": {
          "file_path": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "last_modified": {
            "type": "string"
          },
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          },
          "schedule_cron": {
            "type": "string",
            "nullable": true
          },
          "slash_command": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RecipeParameter": {
        "type": "object",
        "required": [
          "key",
          "input_type",
          "requirement",
          "description"
        ],
        "properties": {
          "default": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string"
          },
          "input_type": {
            "$ref": "#/components/schemas/RecipeParameterInputType"
          },
          "key": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "requirement": {
            "$ref": "#/components/schemas/RecipeParameterRequirement"
          }
        }
      },
      "RecipeParameterInputType": {
        "type": "string",
        "enum": [
          "string",
          "number",
          "boolean",
          "date",
          "file",
          "select"
        ]
      },
      "RecipeParameterRequirement": {
        "type": "string",
        "enum": [
          "required",
          "optional",
          "user_prompt"
        ]
      },
      "RecipeToYamlRequest": {
        "type": "object",
        "required": [
          "recipe"
        ],
        "properties": {
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "RecipeToYamlResponse": {
        "type": "object",
        "required": [
          "yaml"
        ],
        "properties": {
          "yaml": {
            "type": "string"
          }
        }
      },
      "RedactedThinkingContent": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "string"
          }
        }
      },
      "RepoVariantsResponse": {
        "type": "object",
        "required": [
          "variants",
          "available_memory_bytes",
          "downloaded_quants"
        ],
        "properties": {
          "available_memory_bytes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "downloaded_quants": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "recommended_index": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HfQuantVariant"
            }
          }
        }
      },
      "ResourceContents": {
        "anyOf": [
          {
            "type": "object",
            "required": [
              "uri",
              "text"
            ],
            "properties": {
              "_meta": {
                "type": "object",
                "additionalProperties": true
              },
              "mimeType": {
                "type": "string"
              },
              "text": {
                "type": "string"
              },
              "uri": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "uri",
              "blob"
            ],
            "properties": {
              "_meta": {
                "type": "object",
                "additionalProperties": true
              },
              "blob": {
                "type": "string"
              },
              "mimeType": {
                "type": "string"
              },
              "uri": {
                "type": "string"
              }
            }
          }
        ]
      },
      "ResourceMetadata": {
        "type": "object",
        "description": "Resource metadata containing UI configuration",
        "properties": {
          "ui": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UiMetadata"
              }
            ],
            "nullable": true
          }
        }
      },
      "Response": {
        "type": "object",
        "properties": {
          "json_schema": {
            "nullable": true
          }
        }
      },
      "RestartAgentRequest": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "session_id": {
            "type": "string"
          }
        }
      },
      "RestartAgentResponse": {
        "type": "object",
        "required": [
          "extension_results"
        ],
        "properties": {
          "extension_results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtensionLoadResult"
            }
          }
        }
      },
      "ResumeAgentRequest": {
        "type": "object",
        "required": [
          "session_id",
          "load_model_and_extensions"
        ],
        "properties": {
          "load_model_and_extensions": {
            "type": "boolean"
          },
          "session_id": {
            "type": "string"
          }
        }
      },
      "ResumeAgentResponse": {
        "type": "object",
        "required": [
          "session"
        ],
        "properties": {
          "extension_results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtensionLoadResult"
            },
            "nullable": true
          },
          "session": {
            "$ref": "#/components/schemas/Session"
          }
        }
      },
      "RetryConfig": {
        "type": "object",
        "description": "Configuration for retry logic in recipe execution",
        "required": [
          "max_retries",
          "checks"
        ],
        "properties": {
          "checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SuccessCheck"
            },
            "description": "List of success checks to validate recipe completion"
          },
          "max_retries": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum number of retry attempts before giving up",
            "minimum": 0
          },
          "on_failure": {
            "type": "string",
            "description": "Optional shell command to run on failure for cleanup",
            "nullable": true
          },
          "on_failure_timeout_seconds": {
            "type": "integer",
            "format": "int64",
            "description": "Timeout in seconds for on_failure commands (default: 600 seconds)",
            "nullable": true,
            "minimum": 0
          },
          "timeout_seconds": {
            "type": "integer",
            "format": "int64",
            "description": "Timeout in seconds for individual shell commands (default: 300 seconds)",
            "nullable": true,
            "minimum": 0
          }
        }
      },
      "Role": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "user"
            ]
          },
          {
            "type": "string",
            "enum": [
              "assistant"
            ]
          }
        ]
      },
      "RunNowResponse": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "session_id": {
            "type": "string"
          }
        }
      },
      "SamplingConfig": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "Greedy"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "temperature",
              "top_k",
              "top_p",
              "min_p",
              "type"
            ],
            "properties": {
              "min_p": {
                "type": "number",
                "format": "float"
              },
              "seed": {
                "type": "integer",
                "format": "int32",
                "nullable": true,
                "minimum": 0
              },
              "temperature": {
                "type": "number",
                "format": "float"
              },
              "top_k": {
                "type": "integer",
                "format": "int32"
              },
              "top_p": {
                "type": "number",
                "format": "float"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Temperature"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "tau",
              "eta",
              "type"
            ],
            "properties": {
              "eta": {
                "type": "number",
                "format": "float"
              },
              "seed": {
                "type": "integer",
                "format": "int32",
                "nullable": true,
                "minimum": 0
              },
              "tau": {
                "type": "number",
                "format": "float"
              },
              "type": {
                "type": "string",
                "enum": [
                  "MirostatV2"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "SavePromptRequest": {
        "type": "object",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "type": "string"
          }
        }
      },
      "SaveRecipeRequest": {
        "type": "object",
        "required": [
          "recipe"
        ],
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "SaveRecipeResponse": {
        "type": "object",
        "required": [
          "id",
          "file_name",
          "file_path"
        ],
        "properties": {
          "file_name": {
            "type": "string"
          },
          "file_path": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        }
      },
      "ScanRecipeRequest": {
        "type": "object",
        "required": [
          "recipe"
        ],
        "properties": {
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "ScanRecipeResponse": {
        "type": "object",
        "required": [
          "has_security_warnings"
        ],
        "properties": {
          "has_security_warnings": {
            "type": "boolean"
          }
        }
      },
      "ScheduleRecipeRequest": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "cron_schedule": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string"
          }
        }
      },
      "ScheduledJob": {
        "type": "object",
        "required": [
          "id",
          "source",
          "cron"
        ],
        "properties": {
          "cron": {
            "type": "string"
          },
          "current_session_id": {
            "type": "string",
            "nullable": true
          },
          "currently_running": {
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "last_run": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "parameters": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "allOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          },
          "paused": {
            "type": "boolean"
          },
          "process_start_time": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "recipe_base_dir": {
            "type": "string",
            "description": "Original directory of the recipe file before it was copied to scheduled_recipes/.\nPreserved so that relative paths (sub-recipes, template includes) resolve correctly\nagainst the source tree rather than the scheduler's internal storage directory.",
            "nullable": true
          },
          "source": {
            "type": "string"
          }
        }
      },
      "Session": {
        "type": "object",
        "required": [
          "id",
          "working_dir",
          "name",
          "created_at",
          "updated_at",
          "extension_data",
          "message_count"
        ],
        "properties": {
          "accumulated_cost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "accumulated_input_tokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accumulated_output_tokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accumulated_total_tokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "archived_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "conversation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Conversation"
              }
            ],
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "extension_data": {
            "$ref": "#/components/schemas/ExtensionData"
          },
          "goose_mode": {
            "$ref": "#/components/schemas/GooseMode"
          },
          "id": {
            "type": "string"
          },
          "input_tokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "message_count": {
            "type": "integer",
            "minimum": 0
          },
          "model_config": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelConfig"
              }
            ],
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "output_tokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "project_id": {
            "type": "string",
            "nullable": true
          },
          "provider_name": {
            "type": "string",
            "nullable": true
          },
          "recipe": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Recipe"
              }
            ],
            "nullable": true
          },
          "schedule_id": {
            "type": "string",
            "nullable": true
          },
          "session_type": {
            "$ref": "#/components/schemas/SessionType"
          },
          "total_tokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "user_recipe_values": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "user_set_name": {
            "type": "boolean"
          },
          "working_dir": {
            "type": "string"
          }
        }
      },
      "SessionDisplayInfo": {
        "type": "object",
        "required": [
          "id",
          "name",
          "createdAt",
          "workingDir",
          "messageCount"
        ],
        "properties": {
          "accumulatedInputTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accumulatedOutputTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "accumulatedTotalTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdAt": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "inputTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "messageCount": {
            "type": "integer",
            "minimum": 0
          },
          "name": {
            "type": "string"
          },
          "outputTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "scheduleId": {
            "type": "string",
            "nullable": true
          },
          "totalTokens": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workingDir": {
            "type": "string"
          }
        }
      },
      "SessionInsights": {
        "type": "object",
        "required": [
          "totalSessions",
          "totalTokens"
        ],
        "properties": {
          "totalSessions": {
            "type": "integer",
            "minimum": 0
          },
          "totalTokens": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "SessionListResponse": {
        "type": "object",
        "required": [
          "sessions"
        ],
        "properties": {
          "sessions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Session"
            },
            "description": "List of available session information objects"
          }
        }
      },
      "SessionReplyRequest": {
        "type": "object",
        "required": [
          "request_id",
          "user_message"
        ],
        "properties": {
          "override_conversation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Message"
            },
            "nullable": true
          },
          "request_id": {
            "type": "string",
            "description": "Client-generated UUIDv7 identifying this request."
          },
          "user_message": {
            "$ref": "#/components/schemas/Message"
          }
        }
      },
      "SessionReplyResponse": {
        "type": "object",
        "required": [
          "request_id"
        ],
        "properties": {
          "request_id": {
            "type": "string"
          }
        }
      },
      "SessionType": {
        "type": "string",
        "enum": [
          "user",
          "scheduled",
          "sub_agent",
          "hidden",
          "terminal",
          "gateway",
          "acp"
        ]
      },
      "SessionsQuery": {
        "type": "object",
        "required": [
          "limit"
        ],
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "SetProviderRequest": {
        "type": "object",
        "required": [
          "provider",
          "model"
        ],
        "properties": {
          "model": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          }
        }
      },
      "SetSlashCommandRequest": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "slash_command": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Settings": {
        "type": "object",
        "properties": {
          "goose_model": {
            "type": "string",
            "nullable": true
          },
          "goose_provider": {
            "type": "string",
            "nullable": true
          },
          "max_turns": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "temperature": {
            "type": "number",
            "format": "float",
            "nullable": true
          }
        }
      },
      "SetupResponse": {
        "type": "object",
        "required": [
          "success",
          "message"
        ],
        "properties": {
          "message": {
            "type": "string"
          },
          "success": {
            "type": "boolean"
          }
        }
      },
      "ShareSessionNostrRequest": {
        "type": "object",
        "properties": {
          "relays": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ShareSessionNostrResponse": {
        "type": "object",
        "required": [
          "deeplink",
          "nevent",
          "eventId",
          "relays"
        ],
        "properties": {
          "deeplink": {
            "type": "string"
          },
          "eventId": {
            "type": "string"
          },
          "nevent": {
            "type": "string"
          },
          "relays": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "SlashCommand": {
        "type": "object",
        "required": [
          "command",
          "help",
          "command_type"
        ],
        "properties": {
          "command": {
            "type": "string"
          },
          "command_type": {
            "$ref": "#/components/schemas/CommandType"
          },
          "help": {
            "type": "string"
          }
        }
      },
      "SlashCommandsResponse": {
        "type": "object",
        "required": [
          "commands"
        ],
        "properties": {
          "commands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlashCommand"
            }
          }
        }
      },
      "StartAgentRequest": {
        "type": "object",
        "required": [
          "working_dir"
        ],
        "properties": {
          "extension_overrides": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtensionConfig"
            },
            "nullable": true
          },
          "recipe": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Recipe"
              }
            ],
            "nullable": true
          },
          "recipe_deeplink": {
            "type": "string",
            "nullable": true
          },
          "recipe_id": {
            "type": "string",
            "nullable": true
          },
          "working_dir": {
            "type": "string"
          }
        }
      },
      "StopAgentRequest": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "session_id": {
            "type": "string"
          }
        }
      },
      "SubRecipe": {
        "type": "object",
        "required": [
          "name",
          "path"
        ],
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "sequential_when_repeated": {
            "type": "boolean"
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        }
      },
      "SuccessCheck": {
        "oneOf": [
          {
            "type": "object",
            "description": "Execute a shell command and check its exit status",
            "required": [
              "command",
              "type"
            ],
            "properties": {
              "command": {
                "type": "string",
                "description": "The shell command to execute"
              },
              "type": {
                "type": "string",
                "enum": [
                  "Shell"
                ]
              }
            }
          }
        ],
        "description": "A single success check to validate recipe completion",
        "discriminator": {
          "propertyName": "type"
        }
      },
      "SystemInfo": {
        "type": "object",
        "required": [
          "app_version",
          "os",
          "os_version",
          "architecture",
          "enabled_extensions"
        ],
        "properties": {
          "app_version": {
            "type": "string"
          },
          "architecture": {
            "type": "string"
          },
          "enabled_extensions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "os": {
            "type": "string"
          },
          "os_version": {
            "type": "string"
          },
          "provider": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SystemNotificationContent": {
        "type": "object",
        "required": [
          "notificationType",
          "msg"
        ],
        "properties": {
          "data": {
            "nullable": true
          },
          "msg": {
            "type": "string"
          },
          "notificationType": {
            "$ref": "#/components/schemas/SystemNotificationType"
          }
        }
      },
      "SystemNotificationType": {
        "type": "string",
        "enum": [
          "thinkingMessage",
          "inlineMessage",
          "creditsExhausted"
        ]
      },
      "TaskSupport": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "forbidden"
            ]
          },
          {
            "type": "string",
            "enum": [
              "optional"
            ]
          },
          {
            "type": "string",
            "enum": [
              "required"
            ]
          }
        ]
      },
      "TelemetryEventRequest": {
        "type": "object",
        "required": [
          "event_name"
        ],
        "properties": {
          "event_name": {
            "type": "string"
          },
          "properties": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "Template": {
        "type": "object",
        "description": "Information about a template including its content and customization status",
        "required": [
          "name",
          "description",
          "default_content",
          "is_customized"
        ],
        "properties": {
          "default_content": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "is_customized": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "user_content": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TextContent": {
        "type": "object",
        "required": [
          "text"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "annotations": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Annotations"
              },
              {
                "type": "object"
              }
            ]
          },
          "text": {
            "type": "string"
          }
        }
      },
      "ThinkingContent": {
        "type": "object",
        "required": [
          "thinking",
          "signature"
        ],
        "properties": {
          "signature": {
            "type": "string"
          },
          "thinking": {
            "type": "string"
          }
        }
      },
      "ThinkingEffort": {
        "type": "string",
        "enum": [
          "off",
          "low",
          "medium",
          "high",
          "max"
        ]
      },
      "TokenState": {
        "type": "object",
        "required": [
          "inputTokens",
          "outputTokens",
          "totalTokens",
          "accumulatedInputTokens",
          "accumulatedOutputTokens",
          "accumulatedTotalTokens"
        ],
        "properties": {
          "accumulatedCost": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "accumulatedInputTokens": {
            "type": "integer",
            "format": "int32"
          },
          "accumulatedOutputTokens": {
            "type": "integer",
            "format": "int32"
          },
          "accumulatedTotalTokens": {
            "type": "integer",
            "format": "int32"
          },
          "inputTokens": {
            "type": "integer",
            "format": "int32"
          },
          "outputTokens": {
            "type": "integer",
            "format": "int32"
          },
          "totalTokens": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "Tool": {
        "type": "object",
        "required": [
          "name",
          "inputSchema"
        ],
        "properties": {
          "_meta": {
            "type": "object",
            "additionalProperties": true
          },
          "annotations": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ToolAnnotations"
              },
              {
                "type": "object"
              }
            ]
          },
          "description": {
            "type": "string"
          },
          "execution": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ToolExecution"
              },
              {
                "type": "object"
              }
            ]
          },
          "icons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Icon"
            }
          },
          "inputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "name": {
            "type": "string"
          },
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "title": {
            "type": "string"
          }
        }
      },
      "ToolAnnotations": {
        "type": "object",
        "properties": {
          "destructiveHint": {
            "type": "boolean"
          },
          "idempotentHint": {
            "type": "boolean"
          },
          "openWorldHint": {
            "type": "boolean"
          },
          "readOnlyHint": {
            "type": "boolean"
          },
          "title": {
            "type": "string"
          }
        }
      },
      "ToolCallingMode": {
        "type": "string",
        "enum": [
          "auto",
          "force_native",
          "force_emulated"
        ]
      },
      "ToolConfirmationRequest": {
        "type": "object",
        "required": [
          "id",
          "toolName",
          "arguments"
        ],
        "properties": {
          "arguments": {
            "$ref": "#/components/schemas/JsonObject"
          },
          "id": {
            "type": "string"
          },
          "prompt": {
            "type": "string",
            "nullable": true
          },
          "toolName": {
            "type": "string"
          }
        }
      },
      "ToolExecution": {
        "type": "object",
        "properties": {
          "taskSupport": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TaskSupport"
              },
              {
                "type": "object"
              }
            ]
          }
        }
      },
      "ToolInfo": {
        "type": "object",
        "description": "Information about the tool used for building prompts",
        "required": [
          "name",
          "description",
          "parameters"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "input_schema": {
            "type": "object"
          },
          "name": {
            "type": "string"
          },
          "parameters": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "permission": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PermissionLevel"
              }
            ],
            "nullable": true
          }
        }
      },
      "ToolPermission": {
        "type": "object",
        "required": [
          "tool_name",
          "permission"
        ],
        "properties": {
          "permission": {
            "$ref": "#/components/schemas/PermissionLevel"
          },
          "tool_name": {
            "type": "string"
          }
        }
      },
      "ToolRequest": {
        "type": "object",
        "required": [
          "id",
          "toolCall"
        ],
        "properties": {
          "_meta": {
            "type": "object"
          },
          "id": {
            "type": "string"
          },
          "metadata": {
            "type": "object"
          },
          "toolCall": {
            "type": "object"
          }
        }
      },
      "ToolResponse": {
        "type": "object",
        "required": [
          "id",
          "toolResult"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "metadata": {
            "type": "object"
          },
          "toolResult": {
            "type": "object"
          }
        }
      },
      "TranscribeRequest": {
        "type": "object",
        "required": [
          "audio",
          "mime_type",
          "provider"
        ],
        "properties": {
          "audio": {
            "type": "string",
            "description": "Base64 encoded audio data"
          },
          "mime_type": {
            "type": "string",
            "description": "MIME type of the audio (e.g., \"audio/webm\", \"audio/wav\")"
          },
          "provider": {
            "$ref": "#/components/schemas/DictationProvider"
          }
        }
      },
      "TranscribeResponse": {
        "type": "object",
        "required": [
          "text"
        ],
        "properties": {
          "text": {
            "type": "string",
            "description": "Transcribed text from the audio"
          }
        }
      },
      "TunnelInfo": {
        "type": "object",
        "required": [
          "state",
          "url",
          "hostname",
          "secret"
        ],
        "properties": {
          "hostname": {
            "type": "string"
          },
          "secret": {
            "type": "string"
          },
          "state": {
            "$ref": "#/components/schemas/TunnelState"
          },
          "url": {
            "type": "string"
          }
        }
      },
      "TunnelState": {
        "type": "string",
        "enum": [
          "idle",
          "starting",
          "running",
          "error",
          "disabled"
        ]
      },
      "UiMetadata": {
        "type": "object",
        "description": "UI-specific metadata for MCP resources",
        "properties": {
          "csp": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CspMetadata"
              }
            ],
            "nullable": true
          },
          "domain": {
            "type": "string",
            "description": "Preferred domain for the app (used for CORS)",
            "nullable": true
          },
          "permissions": {
            "$ref": "#/components/schemas/PermissionsMetadata"
          },
          "prefersBorder": {
            "type": "boolean",
            "description": "Whether the app prefers to have a border around it",
            "nullable": true
          }
        }
      },
      "UpdateCustomProviderRequest": {
        "type": "object",
        "required": [
          "engine",
          "display_name",
          "api_url",
          "api_key",
          "models"
        ],
        "properties": {
          "api_key": {
            "type": "string"
          },
          "api_url": {
            "type": "string"
          },
          "base_path": {
            "type": "string",
            "nullable": true
          },
          "catalog_provider_id": {
            "type": "string",
            "nullable": true
          },
          "display_name": {
            "type": "string"
          },
          "engine": {
            "type": "string"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "models": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "preserves_thinking": {
            "type": "boolean",
            "nullable": true
          },
          "requires_auth": {
            "type": "boolean"
          },
          "supports_streaming": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "UpdateFromSessionRequest": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "session_id": {
            "type": "string"
          }
        }
      },
      "UpdateProviderRequest": {
        "type": "object",
        "required": [
          "provider",
          "session_id"
        ],
        "properties": {
          "context_limit": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "type": "string"
          },
          "request_params": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true
          },
          "session_id": {
            "type": "string"
          }
        }
      },
      "UpdateScheduleRequest": {
        "type": "object",
        "required": [
          "cron"
        ],
        "properties": {
          "cron": {
            "type": "string"
          }
        }
      },
      "UpdateSessionNameRequest": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Updated name for the session (max 200 characters)"
          }
        }
      },
      "UpdateSessionRequest": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "goose_mode": {
            "type": "string",
            "nullable": true
          },
          "session_id": {
            "type": "string"
          }
        }
      },
      "UpdateSessionUserRecipeValuesRequest": {
        "type": "object",
        "required": [
          "userRecipeValues"
        ],
        "properties": {
          "userRecipeValues": {
            "type": "object",
            "description": "Recipe parameter values entered by the user",
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "UpdateSessionUserRecipeValuesResponse": {
        "type": "object",
        "required": [
          "recipe"
        ],
        "properties": {
          "recipe": {
            "$ref": "#/components/schemas/Recipe"
          }
        }
      },
      "UpdateWorkingDirRequest": {
        "type": "object",
        "required": [
          "session_id",
          "working_dir"
        ],
        "properties": {
          "session_id": {
            "type": "string"
          },
          "working_dir": {
            "type": "string"
          }
        }
      },
      "UpsertConfigQuery": {
        "type": "object",
        "required": [
          "key",
          "value",
          "is_secret"
        ],
        "properties": {
          "is_secret": {
            "type": "boolean"
          },
          "key": {
            "type": "string"
          },
          "value": {}
        }
      },
      "UpsertPermissionsQuery": {
        "type": "object",
        "required": [
          "tool_permissions"
        ],
        "properties": {
          "tool_permissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolPermission"
            }
          }
        }
      },
      "WhisperModelResponse": {
        "allOf": [
          {
            "type": "object",
            "required": [
              "id",
              "size_mb",
              "url",
              "description"
            ],
            "properties": {
              "description": {
                "type": "string",
                "description": "Description"
              },
              "id": {
                "type": "string",
                "description": "Model identifier (e.g., \"tiny\", \"base\", \"small\")"
              },
              "size_mb": {
                "type": "integer",
                "format": "int32",
                "description": "Model file size in MB",
                "minimum": 0
              },
              "url": {
                "type": "string",
                "description": "Download URL from HuggingFace"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "downloaded",
              "recommended"
            ],
            "properties": {
              "downloaded": {
                "type": "boolean"
              },
              "recommended": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "WindowProps": {
        "type": "object",
        "required": [
          "width",
          "height",
          "resizable"
        ],
        "properties": {
          "height": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "resizable": {
            "type": "boolean"
          },
          "width": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      }
    }
  }
}
