@mindstone/mcp-server-outreach
Outreach sales engagement MCP server โ prospects, sequences, accounts, tasks, and mailings via Outreach API.
One-click install

After clicking the button, your host will prompt you to fill: OUTREACH_CLIENT_ID, OUTREACH_CLIENT_SECRET, OUTREACH_ACCESS_TOKEN, OUTREACH_CONFIG_DIR, OUTREACH_OAUTH_PORT.
Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (Outreach)
{
"mcpServers": {
"Outreach": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-outreach"
],
"env": {
"OUTREACH_CLIENT_ID": "",
"OUTREACH_CLIENT_SECRET": "",
"OUTREACH_ACCESS_TOKEN": "",
"OUTREACH_CONFIG_DIR": "~/.mcp/outreach",
"OUTREACH_OAUTH_PORT": "0"
}
}
}
}
Status
Installation
npx -y @mindstone/mcp-server-outreach
Configuration
OAuth Mode (Recommended)
Set these environment variables to use standalone OAuth authentication:
OUTREACH_CLIENT_ID=your_client_id
OUTREACH_CLIENT_SECRET=your_client_secret
Then call the outreach_connect_account tool to initiate the OAuth flow.
Manual Token Mode
If you have a static access token:
OUTREACH_ACCESS_TOKEN=your_access_token
Optional Settings
OUTREACH_CONFIG_DIR=~/.mcp/outreach
OUTREACH_OAUTH_PORT=0
OUTREACH_OAUTH_SCOPES="prospects.all sequences.all sequenceStates.all sequenceSteps.read sequenceTemplates.read templates.read accounts.all users.read tasks.all mailings.read calls.read mailboxes.read"
The OUTREACH_OAUTH_SCOPES value above is the built-in default, which covers every tool the connector ships. If you connected an account before these scopes were added (or you override the variable), re-run outreach_connect_account so the new token picks them up.
Account Management
- outreach_connect_account โ Connect an Outreach account via OAuth
- outreach_list_connected_accounts โ List connected accounts and auth status
- outreach_disconnect_account โ Disconnect an account and remove credentials
Prospects
- outreach_search_prospects โ Search prospects by name, email, company, tags
- outreach_get_prospect โ Get full prospect details by ID
- outreach_create_prospect โ Create a new prospect (supports
custom_fields mapped to custom1..custom35)
- outreach_update_prospect โ Update an existing prospect (supports
custom_fields)
Sequences
- outreach_list_sequences โ List sequences with filters
- outreach_get_sequence โ Get sequence details by ID
- outreach_list_sequence_steps โ List a sequence's steps (type, interval, order, template links)
- outreach_get_sequence_template โ Read a sequence template's email subject and body
- outreach_add_prospect_to_sequence โ Enroll a prospect in a sequence
- outreach_remove_prospect_from_sequence โ Pause or finish a prospect's enrollment
Accounts (Companies)
- outreach_list_accounts โ List company accounts
- outreach_get_account โ Get company account details by ID
Tasks
- outreach_list_tasks โ List tasks with status and prospect filters
- outreach_create_task โ Create a task (note, due date, prospect, owner)
- outreach_complete_task โ Mark a task as completed
Mailings
- outreach_list_mailings โ List sent emails with delivery status
Calls
- outreach_list_calls โ List calls with outcome, notes, and disposition link
Mailboxes
- outreach_list_mailboxes โ List connected sender mailboxes (feeds
mailbox_id on enrollment)
Users
- outreach_list_users โ List Outreach team members
Auth Modes
The connector supports four authentication modes, detected once at startup:
| Mode | Detection | Description |
|---|
bridge | MCP_HOST_BRIDGE_STATE set | Host app manages OAuth |
standalone_oauth | OUTREACH_CLIENT_ID + OUTREACH_CLIENT_SECRET set | Local OAuth with browser redirect |
manual_token | OUTREACH_ACCESS_TOKEN set | Static access token |
unconfigured | No auth env vars | Tools return setup guidance |
Precedence: bridge > standalone_oauth > manual_token > unconfigured
- Resource IDs must be numeric. Every tool parameter that takes an Outreach resource ID (
id, prospect_id, sequence_id, account_id, mailbox_id, user_id, owner_id) accepts digits only (/^\d+$/). Non-numeric values are rejected with VALIDATION_ERROR before any API request is made โ Outreach IDs are always numeric, so anything else indicates a bad value rather than a real lookup.
outreach_remove_prospect_from_sequence acts on the live enrollment. A prospect that was enrolled, finished, and re-enrolled has several sequence-state records; the tool filters to the non-finished ("live") one instead of acting on the first record returned. If more than one live state exists for the prospect+sequence pair the tool fails closed with AMBIGUOUS_STATE (no record is modified); if every state is finished it returns NOT_FOUND.
Untrusted Content Handling
All user-authored text returned by the Outreach API (names, emails, mailing subjects, template bodies, task notes, tags, custom fields) is wrapped in <untrusted-content source="..."> envelopes so MCP hosts and models treat third-party CRM content as data, not instructions. Vendor-generated structure (IDs, timestamps, lifecycle states) is returned raw. Vendor error text (API error details, non-JSON error bodies, and OAuth token-exchange failures) is truncated to 500 characters and enveloped the same way (source="outreach:api-error") before it appears in error messages.
License
FSL-1.1-MIT