{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "GooseExtensions", "$defs": { "AddExtensionRequest": { "type": "object", "properties": { "sessionId": { "type": "string" }, "config": { "description": "Extension configuration (see ExtensionConfig variants: Stdio, StreamableHttp, Builtin, Platform).", "default": null } }, "required": [ "sessionId" ], "description": "Add an extension to an active session.", "x-side": "agent", "x-method": "_goose/extensions/add" }, "EmptyResponse": { "type": "object", "description": "Empty success response for operations that return no data.", "x-side": "agent" }, "RemoveExtensionRequest": { "type": "object", "properties": { "sessionId": { "type": "string" }, "name": { "type": "string" } }, "required": [ "sessionId", "name" ], "description": "Remove an extension from an active session.", "x-side": "agent", "x-method": "_goose/extensions/remove" }, "GetToolsRequest": { "type": "object", "properties": { "sessionId": { "type": "string" } }, "required": [ "sessionId" ], "description": "List all tools available in a session.", "x-side": "agent", "x-method": "_goose/tools" }, "GetToolsResponse": { "type": "object", "properties": { "tools": { "type": "array", "items": {}, "description": "Array of tool info objects with `name`, `description`, `parameters`, and optional `permission`." } }, "required": [ "tools" ], "description": "Tools response.", "x-side": "agent", "x-method": "_goose/tools" }, "ReadResourceRequest": { "type": "object", "properties": { "sessionId": { "type": "string" }, "uri": { "type": "string" }, "extensionName": { "type": "string" } }, "required": [ "sessionId", "uri", "extensionName" ], "description": "Read a resource from an extension.", "x-side": "agent", "x-method": "_goose/resource/read" }, "ReadResourceResponse": { "type": "object", "properties": { "result": { "description": "The resource result from the extension (MCP ReadResourceResult).", "default": null } }, "description": "Resource read response.", "x-side": "agent", "x-method": "_goose/resource/read" }, "UpdateWorkingDirRequest": { "type": "object", "properties": { "sessionId": { "type": "string" }, "workingDir": { "type": "string" } }, "required": [ "sessionId", "workingDir" ], "description": "Update the working directory for a session.", "x-side": "agent", "x-method": "_goose/working_dir/update" }, "DeleteSessionRequest": { "type": "object", "properties": { "sessionId": { "type": "string" } }, "required": [ "sessionId" ], "description": "Delete a session.", "x-side": "agent", "x-method": "session/delete" }, "GetExtensionsRequest": { "type": "object", "description": "List configured extensions and any warnings.", "x-side": "agent", "x-method": "_goose/config/extensions" }, "GetExtensionsResponse": { "type": "object", "properties": { "extensions": { "type": "array", "items": {}, "description": "Array of ExtensionEntry objects with `enabled` flag and config details." }, "warnings": { "type": "array", "items": { "type": "string" } } }, "required": [ "extensions", "warnings" ], "description": "List configured extensions and any warnings.", "x-side": "agent", "x-method": "_goose/config/extensions" }, "UpdateProviderRequest": { "type": "object", "properties": { "sessionId": { "type": "string" }, "provider": { "type": "string" }, "model": { "type": [ "string", "null" ] }, "contextLimit": { "type": [ "integer", "null" ], "format": "uint", "minimum": 0 }, "requestParams": { "type": [ "object", "null" ], "additionalProperties": {} } }, "required": [ "sessionId", "provider" ], "description": "Atomically update the provider for a live session.", "x-side": "agent", "x-method": "_goose/session/provider/update" }, "UpdateProviderResponse": { "type": "object", "properties": { "configOptions": { "type": "array", "items": {}, "description": "Refreshed session config options after the provider/model change." } }, "required": [ "configOptions" ], "description": "Provider update response.", "x-side": "agent", "x-method": "_goose/session/provider/update" }, "ListProvidersRequest": { "type": "object", "description": "List providers available through goose, including the config-default sentinel.", "x-side": "agent", "x-method": "_goose/providers/list" }, "ListProvidersResponse": { "type": "object", "properties": { "providers": { "type": "array", "items": { "$ref": "#/$defs/ProviderListEntry" } } }, "required": [ "providers" ], "description": "Provider list response.", "x-side": "agent", "x-method": "_goose/providers/list" }, "ProviderListEntry": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" } }, "required": [ "id", "label" ] }, "GetProviderDetailsRequest": { "type": "object", "description": "List providers with full metadata (config keys, setup steps, etc.).", "x-side": "agent", "x-method": "_goose/providers/details" }, "GetProviderDetailsResponse": { "type": "object", "properties": { "providers": { "type": "array", "items": { "$ref": "#/$defs/ProviderDetailEntry" } } }, "required": [ "providers" ], "description": "Provider details response.", "x-side": "agent", "x-method": "_goose/providers/details" }, "ProviderDetailEntry": { "type": "object", "properties": { "name": { "type": "string" }, "displayName": { "type": "string" }, "description": { "type": "string" }, "defaultModel": { "type": "string" }, "isConfigured": { "type": "boolean" }, "providerType": { "type": "string" }, "configKeys": { "type": "array", "items": { "$ref": "#/$defs/ProviderConfigKey" } }, "setupSteps": { "type": "array", "items": { "type": "string" }, "default": [] } }, "required": [ "name", "displayName", "description", "defaultModel", "isConfigured", "providerType", "configKeys" ] }, "ProviderConfigKey": { "type": "object", "properties": { "name": { "type": "string" }, "required": { "type": "boolean" }, "secret": { "type": "boolean" }, "default": { "type": [ "string", "null" ], "default": null }, "oauthFlow": { "type": "boolean", "default": false }, "deviceCodeFlow": { "type": "boolean", "default": false }, "primary": { "type": "boolean", "default": false } }, "required": [ "name", "required", "secret" ] }, "ReadConfigRequest": { "type": "object", "properties": { "key": { "type": "string" } }, "required": [ "key" ], "description": "Read a single non-secret config value.", "x-side": "agent", "x-method": "_goose/config/read" }, "ReadConfigResponse": { "type": "object", "properties": { "value": { "default": null } }, "description": "Config read response.", "x-side": "agent", "x-method": "_goose/config/read" }, "UpsertConfigRequest": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ], "description": "Upsert a single non-secret config value.", "x-side": "agent", "x-method": "_goose/config/upsert" }, "RemoveConfigRequest": { "type": "object", "properties": { "key": { "type": "string" } }, "required": [ "key" ], "description": "Remove a single non-secret config value.", "x-side": "agent", "x-method": "_goose/config/remove" }, "CheckSecretRequest": { "type": "object", "properties": { "key": { "type": "string" } }, "required": [ "key" ], "description": "Check whether a secret exists. Never returns the actual value.", "x-side": "agent", "x-method": "_goose/secret/check" }, "CheckSecretResponse": { "type": "object", "properties": { "exists": { "type": "boolean" } }, "required": [ "exists" ], "description": "Secret check response.", "x-side": "agent", "x-method": "_goose/secret/check" }, "UpsertSecretRequest": { "type": "object", "properties": { "key": { "type": "string" }, "value": {} }, "required": [ "key", "value" ], "description": "Set a secret value (write-only).", "x-side": "agent", "x-method": "_goose/secret/upsert" }, "RemoveSecretRequest": { "type": "object", "properties": { "key": { "type": "string" } }, "required": [ "key" ], "description": "Remove a secret.", "x-side": "agent", "x-method": "_goose/secret/remove" }, "ExportSessionRequest": { "type": "object", "properties": { "sessionId": { "type": "string" } }, "required": [ "sessionId" ], "description": "Export a session as a JSON string.", "x-side": "agent", "x-method": "_goose/session/export" }, "ExportSessionResponse": { "type": "object", "properties": { "data": { "type": "string" } }, "required": [ "data" ], "description": "Export session response — raw JSON of the goose session with `conversation`.", "x-side": "agent", "x-method": "_goose/session/export" }, "ImportSessionRequest": { "type": "object", "properties": { "data": { "type": "string" } }, "required": [ "data" ], "description": "Import a session from a JSON string.", "x-side": "agent", "x-method": "_goose/session/import" }, "ImportSessionResponse": { "type": "object", "properties": { "sessionId": { "type": "string" }, "title": { "type": [ "string", "null" ] }, "updatedAt": { "type": [ "string", "null" ] }, "messageCount": { "type": "integer", "minimum": 0 } }, "required": [ "sessionId", "messageCount" ], "description": "Import session response — metadata about the newly created session.", "x-side": "agent", "x-method": "_goose/session/import" }, "ArchiveSessionRequest": { "type": "object", "properties": { "sessionId": { "type": "string" } }, "required": [ "sessionId" ], "description": "Archive a session (soft delete).", "x-side": "agent", "x-method": "_goose/session/archive" }, "UnarchiveSessionRequest": { "type": "object", "properties": { "sessionId": { "type": "string" } }, "required": [ "sessionId" ], "description": "Unarchive a previously archived session.", "x-side": "agent", "x-method": "_goose/session/unarchive" }, "ExtRequest": { "properties": { "id": { "type": "string" }, "method": { "type": "string" }, "params": { "anyOf": [ { "anyOf": [ { "allOf": [ { "$ref": "#/$defs/AddExtensionRequest" } ], "description": "Params for _goose/extensions/add", "title": "AddExtensionRequest" }, { "allOf": [ { "$ref": "#/$defs/RemoveExtensionRequest" } ], "description": "Params for _goose/extensions/remove", "title": "RemoveExtensionRequest" }, { "allOf": [ { "$ref": "#/$defs/GetToolsRequest" } ], "description": "Params for _goose/tools", "title": "GetToolsRequest" }, { "allOf": [ { "$ref": "#/$defs/ReadResourceRequest" } ], "description": "Params for _goose/resource/read", "title": "ReadResourceRequest" }, { "allOf": [ { "$ref": "#/$defs/UpdateWorkingDirRequest" } ], "description": "Params for _goose/working_dir/update", "title": "UpdateWorkingDirRequest" }, { "allOf": [ { "$ref": "#/$defs/DeleteSessionRequest" } ], "description": "Params for session/delete", "title": "DeleteSessionRequest" }, { "allOf": [ { "$ref": "#/$defs/GetExtensionsRequest" } ], "description": "Params for _goose/config/extensions", "title": "GetExtensionsRequest" }, { "allOf": [ { "$ref": "#/$defs/UpdateProviderRequest" } ], "description": "Params for _goose/session/provider/update", "title": "UpdateProviderRequest" }, { "allOf": [ { "$ref": "#/$defs/ListProvidersRequest" } ], "description": "Params for _goose/providers/list", "title": "ListProvidersRequest" }, { "allOf": [ { "$ref": "#/$defs/GetProviderDetailsRequest" } ], "description": "Params for _goose/providers/details", "title": "GetProviderDetailsRequest" }, { "allOf": [ { "$ref": "#/$defs/ReadConfigRequest" } ], "description": "Params for _goose/config/read", "title": "ReadConfigRequest" }, { "allOf": [ { "$ref": "#/$defs/UpsertConfigRequest" } ], "description": "Params for _goose/config/upsert", "title": "UpsertConfigRequest" }, { "allOf": [ { "$ref": "#/$defs/RemoveConfigRequest" } ], "description": "Params for _goose/config/remove", "title": "RemoveConfigRequest" }, { "allOf": [ { "$ref": "#/$defs/CheckSecretRequest" } ], "description": "Params for _goose/secret/check", "title": "CheckSecretRequest" }, { "allOf": [ { "$ref": "#/$defs/UpsertSecretRequest" } ], "description": "Params for _goose/secret/upsert", "title": "UpsertSecretRequest" }, { "allOf": [ { "$ref": "#/$defs/RemoveSecretRequest" } ], "description": "Params for _goose/secret/remove", "title": "RemoveSecretRequest" }, { "allOf": [ { "$ref": "#/$defs/ExportSessionRequest" } ], "description": "Params for _goose/session/export", "title": "ExportSessionRequest" }, { "allOf": [ { "$ref": "#/$defs/ImportSessionRequest" } ], "description": "Params for _goose/session/import", "title": "ImportSessionRequest" }, { "allOf": [ { "$ref": "#/$defs/ArchiveSessionRequest" } ], "description": "Params for _goose/session/archive", "title": "ArchiveSessionRequest" }, { "allOf": [ { "$ref": "#/$defs/UnarchiveSessionRequest" } ], "description": "Params for _goose/session/unarchive", "title": "UnarchiveSessionRequest" } ] }, { "description": "Untyped params", "type": [ "object", "null" ] } ] } }, "required": [ "id", "method" ], "type": "object", "x-docs-ignore": true }, "ExtResponse": { "anyOf": [ { "properties": { "id": { "type": "string" }, "result": { "anyOf": [ { "anyOf": [ { "allOf": [ { "$ref": "#/$defs/EmptyResponse" } ], "title": "EmptyResponse" }, { "allOf": [ { "$ref": "#/$defs/GetToolsResponse" } ], "title": "GetToolsResponse" }, { "allOf": [ { "$ref": "#/$defs/ReadResourceResponse" } ], "title": "ReadResourceResponse" }, { "allOf": [ { "$ref": "#/$defs/GetExtensionsResponse" } ], "title": "GetExtensionsResponse" }, { "allOf": [ { "$ref": "#/$defs/UpdateProviderResponse" } ], "title": "UpdateProviderResponse" }, { "allOf": [ { "$ref": "#/$defs/ListProvidersResponse" } ], "title": "ListProvidersResponse" }, { "allOf": [ { "$ref": "#/$defs/GetProviderDetailsResponse" } ], "title": "GetProviderDetailsResponse" }, { "allOf": [ { "$ref": "#/$defs/ReadConfigResponse" } ], "title": "ReadConfigResponse" }, { "allOf": [ { "$ref": "#/$defs/CheckSecretResponse" } ], "title": "CheckSecretResponse" }, { "allOf": [ { "$ref": "#/$defs/ExportSessionResponse" } ], "title": "ExportSessionResponse" }, { "allOf": [ { "$ref": "#/$defs/ImportSessionResponse" } ], "title": "ImportSessionResponse" } ] }, { "description": "Untyped result" } ] } }, "required": [ "id" ], "title": "Success", "type": "object" }, { "properties": { "error": { "type": "object", "properties": { "code": { "type": "integer" }, "message": { "type": "string" }, "data": {} }, "required": [ "code", "message" ] }, "id": { "type": "string" } }, "required": [ "id", "error" ], "title": "Error", "type": "object" } ], "x-docs-ignore": true } }, "anyOf": [ { "allOf": [ { "$ref": "#/$defs/ExtRequest" } ], "description": "Extension request (client → agent)", "title": "Request" }, { "allOf": [ { "$ref": "#/$defs/ExtResponse" } ], "description": "Extension response (agent → client)", "title": "Response" } ] }