# AI agents (MCP)

Connect Claude — or any MCP client — to FounderDB so it can triage your inbox, reply and follow up from your mailboxes, set up your sequences, and keep your to-dos. Everything it does is recorded as the agent's, not yours.

## Connect

### claude.ai (and Claude Desktop / mobile)

1. In Claude, open *Settings → Connectors → Add custom connector*.
2. URL: `https://founderdb.co/api/mcp`. Leave the OAuth client on *Use Claude's published identity* (recommended) — nothing else to fill in.
3. Click *Connect*. You'll sign in to FounderDB, choose how the agent's actions are labelled ("Claude"), and allow access.

FounderDB supports OAuth 2.1 for MCP: Client ID Metadata Documents, dynamic client registration, PKCE (S256), and refresh tokens that rotate. Connections show in *Outreach → Settings → AI agents*, where you can disconnect them.

### Claude Code

```bash
claude mcp add --transport http founderdb https://founderdb.co/api/mcp
```

Claude Code opens the FounderDB sign-in. Or skip OAuth with an access token from *Outreach → Settings → AI agents (MCP)* — it's shown once:

```bash
claude mcp add --transport http founderdb https://founderdb.co/api/mcp \
  --header "Authorization: Bearer fdb_…"
```

### Other MCP clients

```json
{
  "mcpServers": {
    "founderdb": {
      "type": "http",
      "url": "https://founderdb.co/api/mcp",
      "headers": { "Authorization": "Bearer fdb_…" }
    }
  }
}
```

The server speaks MCP over Streamable HTTP (stateless JSON responses) and supports protocol versions `2025-06-18`, `2025-03-26` and `2024-11-05`. A client that only supports stdio can use a bridge such as `npx mcp-remote https://founderdb.co/api/mcp`.

### Getting new tools

New tools appear in your next new chat (claude.ai) or session (Claude Code, or `/mcp` → reconnect). There's no need to reconnect the connector.

## What the agent can do

| Tools | Does |
| --- | --- |
| `list_inbox`, `get_contact`, `search_contacts` | Conversations that need you; one contact with stage, variables, product, sequences, to-dos and the email thread |
| `get_contact_launches` | A contact's product (description, website, tags, socials, emails), every launch with votes, rank and links, the maker's profile and their other products |
| `send_email` | Send now or schedule (`send_at`) from one of your mailboxes; continues an existing thread |
| `list_scheduled_emails`, `cancel_scheduled_email` | Emails queued to go out, and cancelling one |
| `add_note`, `set_stage`, `triage_contact` | Private notes, pipeline stage, mark done / snooze / reopen |
| `set_contact_variables`, `list_variable_definitions` | [Contact variables](https://founderdb.co/docs/contact-variables.md) |
| `list_todos`, `create_todo`, `update_todo` | Your to-do list |
| `list_quick_actions`, `create_quick_action`, `update_quick_action`, `delete_quick_action`, `reorder_quick_actions`, `run_quick_action` | Inbox buttons: reply (AI or fixed), tags, stage, stop sequence |
| `list_templates`, `get_template`, `create_template`, `update_template`, `delete_template` | Email templates, with deliverability warnings and a per-contact preview |
| `list_sequences`, `get_sequence`, `create_sequence`, `duplicate_sequence`, `update_sequence_settings`, `delete_sequence`, `simulate_sequence` | Sequences and their settings; see [how sequences work](https://founderdb.co/docs/sequences.md) |
| `add_sequence_step`, `update_sequence_step`, `remove_sequence_step`, `connect_sequence_steps`, `disconnect_sequence_steps`, `replace_sequence_flow` | Edit a flow step by step |
| `enroll_contact`, `stop_sequence_for_contact`, `resume_sequence_for_contact` | Start, stop or resume a sequence for a contact |
| `get_system_status` | Whether the background worker that sends email, runs sequence steps and picks up replies is running, plus overdue emails, recent failures and mailbox problems |
| `get_setup_overview` | How everything is configured and how it's doing |
| `get_account_report`, `get_daily_report`, `get_sequence_report` | Deliverability per mailbox (bounce, reply, open, complaint rates), per-day activity, sequence funnels |
| `inspect_send_queue` | What's due, scheduled per day and mailbox, failed and why; queue health |
| `list_activity_log`, `list_send_log`, `list_sequence_runs`, `list_integration_calls`, `list_agent_actions` | What happened, and what agents did |
| `list_sending_accounts`, `list_receiving_addresses` | Your mailboxes and receiving domains |
| `create_receiving_domain`, `get_receiving_setup` | Set up Cloudflare receiving: the Email Worker to deploy with `wrangler`, and its status — see [automatic setup](https://founderdb.co/docs/receiving-cloudflare.md#automatic-setup) |

Try asking: "Go through my FounderDB to-do inbox, draft replies, and send the ones I approve." Or plan a sequence together — see [the recommended sequence](https://founderdb.co/docs/recommended-sequence.md).

## Editing sequences safely

- Every change is validated before it's saved; an invalid flow is never stored.
- A change that removes the step contacts are currently on is refused, with how many contacts it affects, unless the agent passes `force`.
- Removing or rewiring a step never silently deletes the steps after it — the agent has to ask for that with `remove_cut_off`.
- New sequences start disabled; deleting one needs its exact name. Steps are laid out automatically, so the builder shows the agent's changes neatly.

## Sending email

- `send_email` really sends from your mailbox. If you've emailed the contact before, it continues that thread from the same mailbox; otherwise it needs a subject and starts a new one.
- Pass `send_at` (ISO 8601) to schedule a follow-up. Queued emails show in the conversation, marked as the agent's, until they go out, and can be cancelled.
- Contacts marked do not contact can't be emailed.

## When something looks stuck

Emails, sequence steps and reply pickup are run by a background worker. Agents are told to call `get_system_status` when emails look late or a step didn't happen, instead of guessing. `get_setup_overview` and `inspect_send_queue` also include a short `system` status, and `send_email`, `enroll_contact`, `resume_sequence_for_contact` and `run_quick_action` add a note when the worker is down.

If the worker is offline, nothing is lost: what the agent sends or schedules is saved and goes out when it's back. The agent tells you that instead of retrying or re-sending.

## Everything is on the record

- Every tool call — reads too — is logged in *Outreach → Agent activity*: which agent, what, when, which contact, what it sent, and whether it worked.
- Emails the agent sends are labelled *"Claude · AI agent"* in the conversation instead of "You". Its notes, stage moves, snoozes and variable changes are labelled too.
- To-dos it adds say "Added by Claude".

> **Note:** An agent connection has the same reach as you in outreach. Give each agent its own connection, and disconnect it in Settings when you stop using it — it loses access immediately, and its history stays.
