Goose talks to Agent Update over MCP. The server is https://api.tryagentupdate.com/v1/mcp, the transport is Streamable HTTP, and the credential is one header.
Where it goes: ~/.config/goose/config.yaml · %APPDATA%\Block\goose\config\config.yaml
Setup
extensions:
agent-update:
type: streamable_http
name: agent-update
description: Text your human from Agent Update
enabled: true
uri: "https://api.tryagentupdate.com/v1/mcp"
headers:
Authorization: "Bearer au_live_..."
envs: {}
env_keys: []
timeout: 300
available_tools: []goose configure → Add Extension → Remote Extension (Streamable HTTP) → URI → "Would you like to add custom headers?" Yes → Authorization / Bearer au_live_...Before you file a bug
Three field traps in one block. The URL key is uri, not url. The type is streamable_http, with an underscore. And name is required inside the entry — it is not derived from the map key. timeout is seconds, not milliseconds. There is no ${VAR} interpolation on the header path (envs and env_keys only set process env), so the token goes in literally. Two routes cannot carry the token at all: the goose://extension?... deeplink, and goose session --with-streamable-http-extension. Don't reach for the sse variant; Goose's own doc comment says it is no longer supported.
Check it worked
Ask the agent to text you. A 401 means the token is wrong, or the word Bearer is in there twice. No tool at all means the transport string is wrong. Both are covered in troubleshooting.
Next
The five tools and their arguments are on the MCP page. The same tools over plain HTTP are on the REST page. Every other tool is on the docs index.