WEIR

Goose MCP Setup: Add a Remote Extension and Sign In

Connect a remote server as a goose MCP extension: the streamable_http config.yaml keys, goose configure, OAuth sign-in, permission modes and real costs.


Published · Updated · 6 min read

Cover image: X research inside goose

Goose MCP setup for a remote server is one streamable_http extension, added with goose configure, the desktop app or config.yaml.

This guide adds Weir, so goose can search X (Twitter) and read posts, threads and profiles. Weir only reads, so it never posts as you. We run Weir.

extensions:
  weir:
    name: Weir
    type: streamable_http
    uri: https://api.weirapp.io/mcp
    enabled: true
    timeout: 300

Goose MCP config: add Weir from the CLI or the app

You need goose and a free Weir account. We read goose 1.56.0, released 23 October 2026: its docs and its source.

Goose now lives at aaif-goose/goose on GitHub, and the old block/goose address redirects there.

  1. Run goose configurePick Add Extension, then Remote Extension (Streamable HTTP).
  2. Answer the promptsName weir, URI https://api.weirapp.io/mcp, timeout 300, a short description, no headers.
  3. Start a sessionGoose connects, gets a 401 and opens your browser.
  4. Approve WeirSign in to Weir and approve. Goose keeps the token in its secret store.
  5. Ask the free question"What's my Weir usage?" calls weir__get_usage, which costs nothing.

In goose Desktop, open the sidebar, click Extensions, then Add custom extension. Pick the Streamable HTTP type and paste the URL as the Endpoint. Weir's coding agent docs also have a one-click install link.

Where is goose's config.yaml? It's ~/.config/goose/config.yaml on macOS and Linux. Windows keeps it in %APPDATA%\Block\goose\config\config.yaml.

Goose MCP config keys for a remote extension

Goose 1.56.0 reads these keys on a streamable_http entry, besides name and enabled:

Key Weir's value What it does
type streamable_http The only remote type; SSE is gone
uri https://api.weirapp.io/mcp The endpoint
headers Authorization with a key Only for the key route below
env_keys [WEIR_API_KEY] Variables the headers may read
timeout 300 Seconds to wait; 300 by default
available_tools [search_x, get_usage] Loads only these tools; empty loads all

Rather use a key? It suits machines where nobody can click through a browser. Create one under API keys in your Weir dashboard, export it as WEIR_API_KEY, and edit the YAML:

extensions:
  weir:
    name: Weir
    type: streamable_http
    uri: https://api.weirapp.io/mcp
    headers:
      Authorization: "Bearer ${WEIR_API_KEY}"
    env_keys: [WEIR_API_KEY]
    enabled: true
    timeout: 300

Goose fills in ${WEIR_API_KEY} from your environment or its secret store, so the key stays out of the file. goose configure saves header values as typed and sets no env_keys, so edit the YAML for this route.

Does goose support OAuth for remote MCP servers?

Yes. Goose connects without a token first, and when the server answers 401, it starts the sign-in.

  • There's no client ID to paste. Goose names itself with a metadata file on goose-docs.ai, which Weir accepts, so the consent screen says goose.
  • The callback is local. Goose listens on 127.0.0.1 and waits 5 minutes for your browser.
  • Tokens stay out of config.yaml. They go in goose's secret store: your keyring, or secrets.yaml when there's none.
  • Leave client_id out. It's for servers that need a pre-registered client, and Weir doesn't.

The link shows as "goose (MCP)" under API keys in your Weir dashboard. Revoke it there to cut goose off.

How goose names and approves MCP tools

Goose puts the extension's key in front of each tool, so Weir's search becomes weir__search_x. Filters like available_tools take the plain name.

Your goose mode decides whether that call needs your OK:

Mode /mode value Weir calls
Completely Autonomous (default) auto Run without asking
Manual Approval approve Ask every time
Smart Approval smart_approve Run without asking
Chat Only chat No tools at all

Why does Smart Approval let Weir through? Weir marks its data tools read-only, and goose 1.56.0 approves read-only tools in that mode by itself.

Trim the list with available_tools. Goose's docs say it works best with fewer than 25 tools in total, and Weir lists 44 on a default sign-in.

Can goose read X (Twitter)? A worked task

Yes. Say you want goose's latest news before you upgrade. Ask:

Use weir: what's the latest @goose_oss post on X? Skip replies and reposts.

Goose should call weir__search_x. We ran that call through Weir's MCP server on 24 October 2026:

→ search_x {"fromUsers": ["goose_oss"], "query": "-filter:nativeretweets",
            "onlyOriginal": true, "since": "2026-10-01T00:00:00Z", "limit": 1}
← 1 post · 2 credits (1 + 1 × 1) · nextCursor set
  Oct 6  19 likes  1,493 views  "What's taking so long in your goose session?"

The post links a community guide to goose's built-in OpenTelemetry tracing. X search returns reposts by default, so -filter:nativeretweets drops them, and onlyOriginal drops replies.

2credits for our 1-post search
11credits for a 10-post search
0credits for get_usage
5,000free Weir credits every month

Weir bills 1 credit per call plus 1 per X post, and failed calls are free. Packs start at $5 for 25,000 credits and never expire, as of October 2026. See every rate on our pricing page.

What we haven't tested

We didn't install goose here. This guide comes from goose's docs and source, plus a real call through Weir's MCP server.

  • Goose's sign-in against Weir. Weir supports the metadata file goose uses, but we haven't clicked through it.
  • The desktop app and the install link. We read their code, not the screens.

If it doesn't work

  • Weir never loads. Check the key is uri. Goose logs "Skipping malformed extension config entry" and moves on.
  • An old SSE entry fails. Goose dropped type: sse, so change it to streamable_http.
  • The browser doesn't open. Goose prints the sign-in link, so open it on the same machine. Over SSH, use a key.
  • "Failed to fetch secret". A name in env_keys isn't set in goose's environment or secret store.
  • A tool returns 402. Your Weir credits ran out, and retrying won't help.

When not to use Weir

  • Goose has to post, reply or DM. Weir is read-only.
  • You want private data. Weir reads public posts, not your bookmarks, DMs or home timeline.
  • Price per post matters most. TwitterAPI.io lists $0.15 per 1,000 tweets as of October 2026, less than our $5 pack.
  • You need a guarantee. Weir isn't licensed by X or affiliated with it, so access can change.

FAQ

Where is the goose MCP config?

In config.yaml, under extensions: ~/.config/goose/config.yaml on macOS and Linux, or %APPDATA%\Block\goose\config\config.yaml on Windows. Tool permissions live next to it, in permission.yaml.

Is goose an MCP client?

Yes. Goose is the client, and each extension is an MCP server. It ships built-in ones, like Developer, and takes any other server as a custom extension.

How do I try a goose MCP server for one session?

Run goose session --with-streamable-http-extension "https://api.weirapp.io/mcp". Goose loads the server for that session, and you can add it to config.yaml later.

Can goose post to X through Weir?

No. Weir only reads public X data, so nothing can post, like or follow through it.

Sources

All checked on 24 October 2026: