# How to give goose its own email address

goose can have its own email address with Botmail. goose claims an address
like `ada@botmail.pro` itself, you approve it, and then you add
`https://botmail.pro/mcp` as a remote extension using Streamable HTTP. goose
handles the OAuth sign-in on its own: Botmail supports both ways goose
registers a client, so there's no client ID or API key to copy.

## Why goose should have its own address

goose runs multi-step work with little supervision, which is exactly when you
don't want it inside your personal inbox. With its own address it can:

- **Collect information by email.** Ask four suppliers for lead times, then
  pull the answers into a table once replies arrive.
- **Wait for something to arrive.** `wait_for_mail` blocks for up to 30
  seconds and returns new mail as it lands, so goose can wait for a
  confirmation email without polling in a loop.
- **Register for services you approve.** It can sign up with its own address
  and [read the verification code](https://botmail.pro/guides/ai-agent-verification-emails).
- **Keep a clean record.** Everything goose sent and received is in one
  mailbox you can read, search or revoke.

## Step 1: Let goose claim a mailbox

With the Developer extension on (it is by default), goose can run the shell
commands the claim needs. Start a session and paste:

```text
Read https://botmail.pro/skill.md and claim a mailbox for yourself. Send the invite to my email, then wait for me to approve it.
```

goose reads Botmail's instructions, solves a small proof-of-work challenge and
claims a name. Botmail emails you an approval link; sign in with GitHub or
Google and accept. Unapproved mailboxes are deleted after 24 hours.

## Step 2: Add Botmail as an extension

### goose CLI

```sh
goose configure
```

1. Choose **Add Extension**.
2. Choose **Remote Extension (Streamable HTTP)**.
3. Name it `botmail` and enter the URI `https://botmail.pro/mcp`.
4. Skip headers. goose signs in with OAuth the first time it connects.

### Config file

Or add it to `~/.config/goose/config.yaml` yourself:

```yaml
extensions:
  botmail:
    name: Botmail
    type: streamable_http
    uri: https://botmail.pro/mcp
    enabled: true
    timeout: 300
```

### goose Desktop

goose Desktop can install extensions from a deep link. Open this link on a
computer with goose Desktop installed:

```text
goose://extension?url=https%3A%2F%2Fbotmail.pro%2Fmcp&type=streamable_http&id=botmail&name=Botmail&description=Email%20for%20goose&timeout=300
```

You can also add it by hand: open the sidebar, click **Extensions**, then
**Add custom extension**, and enter the same URL.

## Step 3: Approve access

The first time goose connects, your browser opens a Botmail page. goose
listens for the result on `127.0.0.1`, which Botmail accepts on any port, so
there's no callback port to configure. Sign in with GitHub or Google, then
choose:

- **Permissions.** Read mail, Send mail, and Manage. goose only gets tools for
  what you grant. With Read alone there are no send tools.
- **Mailboxes.** All, or only goose's.

Press **Allow**.

## Things to ask goose

```text
Use Botmail to email quotes@coastalfreight.com, quotes@bluelinecargo.com and sales@harbor-logistics.com asking for a rate on one pallet from Oakland to Denver next week. Create drafts only and give me the review links.
```

```text
Check my Botmail inbox for replies about the pallet rate and put the prices and transit times in a table.
```

```text
Wait for the confirmation email from Northwind, then tell me the order number.
```

A draft's review link opens a page with the email and Send and Discard
buttons, so you can approve first emails to new people one by one.

## Things to know

- **goose acts on its own by default.** Its docs note that goose runs
  autonomously unless you change its permission mode or tool permissions. Set
  `send_email`, `reply` and `forward` to need your approval, or grant only
  Read on the consent page so goose has no send tools at all.
- **The extension isn't in a running session.** Default extensions apply to
  new sessions. Start a new session, or enable Botmail for the current one.
- **Sign-in loops or fails.** Check that `uri` is exactly
  `https://botmail.pro/mcp`. If the consent page lists no mailboxes, approve
  the claim from Step 1 first.
- **Restricted networks.** On a corporate network, make sure goose can reach
  `botmail.pro` over HTTPS.

Using another agent too? The same mailbox works everywhere through the [Botmail
MCP server](https://botmail.pro/guides/email-mcp-server). New to Botmail? Read [Email for AI
agents](https://botmail.pro/ai-agent-email).

## Questions

### How do I add a remote MCP server to goose?

Run goose configure, choose Add Extension, then Remote Extension (Streamable HTTP), and enter a name and the server URL. Or add an extension with type streamable_http and a uri to ~/.config/goose/config.yaml.

### Does goose support OAuth for remote extensions?

Yes. goose gets a client ID automatically with Client ID Metadata Documents or dynamic client registration, then opens your browser to sign in. Botmail supports both.

### Can goose send email without asking me?

goose runs autonomously by default. Set the send tools to require approval in goose's tool permissions, or grant Botmail only the Read permission so goose has no send tools.

---

Source: https://botmail.pro/guides/goose-email
Agent instructions: https://botmail.pro/skill.md
All guides: https://botmail.pro/llms.txt
