# Run Bird from Codex

The plugin brings the skills, one line of TOML brings the tools, and you sign in from the shell. After that Codex knows which sender to use, and why a send that runs twice needs an idempotency key.

## A plugin, a line of TOML, a sign-in

Codex's plugin carries the skills but not the server, so the tools are a line of their own in your config. Claude Code is the only client where a plugin does both.

**terminal**

```bash
$ codex plugin marketplace add messagebird/bird-ai
$ codex plugin add bird@bird-ai
```

**~/.codex/config.toml**

```toml
# ~/.codex/config.toml

[mcp_servers.bird]
url = "https://mcp.bird.com"
```

**terminal**

```bash
$ codex mcp login bird
  # opens the browser: approve the consent screen

# skip it and the tools are listed but every call fails:
  Error: 401 unauthorized
```

## What Codex already knows. Three operations, and the traps that would otherwise cost it a few rounds of --help.

- Send a message. Send it, then read it back, because accepted is not the same as arrived.
- Set up a sender. Create the domain, add the DNS records it hands you, then verify. Not immediately: DNS takes its time.
- Get notified of events. Tell Bird where to send them, then test that they land. Keep the signing secret from the create call, because it is never shown again.

### What to ask for

- Make this send safe to run twice, with an idempotency key.
- What bounced in the last hour, and what was the reason for each?
- Show me what this send would do before anything goes out.
- Give me a request body for an email send that actually validates.
- Branch on the failure category instead of retrying everything.