{ "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.30.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/add_extension": { "post": { "tags": [ "super::routes::agent" ], "operationId": "agent_add_extension", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddExtensionRequest" } } }, "required": true }, "responses": { "200": { "description": "Extension added", "content": { "text/plain": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized - invalid secret key" }, "424": { "description": "Agent not initialized" }, "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" }, "404": { "description": "Resource not found" }, "424": { "description": "Agent not initialized" }, "500": { "description": "Internal server error" } } } }, "/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/remove_extension": { "post": { "tags": [ "super::routes::agent" ], "operationId": "agent_remove_extension", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RemoveExtensionRequest" } } }, "required": true }, "responses": { "200": { "description": "Extension removed", "content": { "text/plain": { "schema": { "type": "string" } } } }, "401": { "description": "Unauthorized - invalid secret key" }, "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/backup": { "post": { "tags": [ "super::routes::config_management" ], "operationId": "backup_config", "responses": { "200": { "description": "Config file backed up", "content": { "text/plain": { "schema": { "type": "string" } } } }, "500": { "description": "Internal server error" } } } }, "/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/extensions": { "get": { "tags": [ "super::routes::config_management" ], "operationId": "get_extensions", "responses": { "200": { "description": "All extensions retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtensionResponse" } } } }, "500": { "description": "Internal server error" } } }, "post": { "tags": [ "super::routes::config_management" ], "operationId": "add_extension", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtensionQuery" } } }, "required": true }, "responses": { "200": { "description": "Extension added or updated successfully", "content": { "text/plain": { "schema": { "type": "string" } } } }, "400": { "description": "Invalid request" }, "422": { "description": "Could not serialize config.yaml" }, "500": { "description": "Internal server error" } } } }, "/config/extensions/{name}": { "delete": { "tags": [ "super::routes::config_management" ], "operationId": "remove_extension", "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Extension removed successfully", "content": { "text/plain": { "schema": { "type": "string" } } } }, "404": { "description": "Extension not found" }, "500": { "description": "Internal server error" } } } }, "/config/init": { "post": { "tags": [ "super::routes::config_management" ], "operationId": "init_config", "responses": { "200": { "description": "Config initialization check completed", "content": { "text/plain": { "schema": { "type": "string" } } } }, "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}/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": { "type": "string" } } } } }, "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/recover": { "post": { "tags": [ "super::routes::config_management" ], "operationId": "recover_config", "responses": { "200": { "description": "Config recovery attempted", "content": { "text/plain": { "schema": { "type": "string" } } } }, "500": { "description": "Internal server error" } } } }, "/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/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" } } } }, "/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 deleted 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/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}/extensions": { "get": { "tags": [ "Session Management" ], "operationId": "get_session_extensions", "parameters": [ { "name": "session_id", "in": "path", "description": "Unique identifier for the session", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Session extensions retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionExtensionsResponse" } } } }, "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}/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" } }, "AddExtensionRequest": { "type": "object", "required": [ "session_id", "config" ], "properties": { "config": { "$ref": "#/components/schemas/ExtensionConfig" }, "session_id": { "type": "string" } } }, "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" } } }, "CheckProviderRequest": { "type": "object", "required": [ "provider" ], "properties": { "provider": { "type": "string" } } }, "CommandType": { "type": "string", "enum": [ "Builtin", "Recipe", "Skill" ] }, "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", "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 }, "models": { "type": "array", "items": { "$ref": "#/components/schemas/ModelInfo" } }, "name": { "type": "string" }, "requires_auth": { "type": "boolean" }, "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" }, "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" } } }, "ExtensionQuery": { "type": "object", "required": [ "name", "config", "enabled" ], "properties": { "config": { "$ref": "#/components/schemas/ExtensionConfig" }, "enabled": { "type": "boolean" }, "name": { "type": "string" } } }, "ExtensionResponse": { "type": "object", "required": [ "extensions" ], "properties": { "extensions": { "type": "array", "items": { "$ref": "#/components/schemas/ExtensionEntry" } }, "warnings": { "type": "array", "items": { "type": "string" } } } }, "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" }, "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" } } }, "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" } } }, "ImportSessionRequest": { "type": "object", "required": [ "json" ], "properties": { "json": { "type": "string" } } }, "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", "required": [ "userVisible", "agentVisible" ], "properties": { "agentVisible": { "type": "boolean", "description": "Whether the message should be included in the agent's context window" }, "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 }, "supports_cache_control": { "type": "boolean", "description": "Whether this model supports cache control", "nullable": true } } }, "ModelInfoData": { "type": "object", "required": [ "provider", "model", "context_limit", "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" } } }, "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": { "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 }, "native_tool_calling": { "type": "boolean" }, "presence_penalty": { "type": "number", "format": "float" }, "repeat_last_n": { "type": "integer", "format": "int32" }, "repeat_penalty": { "type": "number", "format": "float" }, "sampling": { "$ref": "#/components/schemas/SamplingConfig" }, "use_jinja": { "type": "boolean" }, "use_mlock": { "type": "boolean" }, "vision_capable": { "type": "boolean", "description": "Whether this model architecture supports vision input.\nDerived from the featured model table, 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" } } }, "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" }, "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" } } }, "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" } } }, "RemoveExtensionRequest": { "type": "object", "required": [ "name", "session_id" ], "properties": { "name": { "type": "string" }, "session_id": { "type": "string" } } }, "RepoVariantsResponse": { "type": "object", "required": [ "variants" ], "properties": { "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 }, "paused": { "type": "boolean" }, "process_start_time": { "type": "string", "format": "date-time", "nullable": true }, "source": { "type": "string" } } }, "Session": { "type": "object", "required": [ "id", "working_dir", "name", "created_at", "updated_at", "extension_data", "message_count" ], "properties": { "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 }, "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 }, "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" }, "thread_id": { "type": "string", "nullable": true }, "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" } } }, "SessionExtensionsResponse": { "type": "object", "required": [ "extensions" ], "properties": { "extensions": { "type": "array", "items": { "$ref": "#/components/schemas/ExtensionConfig" } } } }, "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 }, "recipe_name": { "type": "string", "nullable": true }, "recipe_version": { "type": "string", "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" } } }, "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" } } }, "TokenState": { "type": "object", "required": [ "inputTokens", "outputTokens", "totalTokens", "accumulatedInputTokens", "accumulatedOutputTokens", "accumulatedTotalTokens" ], "properties": { "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" } } }, "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" } }, "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 } } } } } }