@mindstone/mcp-server-outreach
v0.2.1
Published
Outreach sales engagement MCP server — prospects, sequences, accounts, tasks, and mailings via Outreach API
Readme
@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.
{
"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
- Version: 0.2.1 · npm
- Auth: OAuth (local 127.0.0.1 callback) (
OUTREACH_CLIENT_SECRET) - Tools: 22 (prospects, sequences, accounts, tasks, calls, mailboxes)
- Surface: cloud-api
- Machine-readable:
STATUS.json
Installation
npx -y @mindstone/mcp-server-outreachConfiguration
OAuth Mode (Recommended)
Set these environment variables to use standalone OAuth authentication:
OUTREACH_CLIENT_ID=your_client_id
OUTREACH_CLIENT_SECRET=your_client_secretThen 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_tokenOptional Settings
OUTREACH_CONFIG_DIR=~/.mcp/outreach # Custom config directory (default: ~/.mcp/outreach)
OUTREACH_OAUTH_PORT=0 # OAuth callback port (default: OS-assigned)
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.
Available Tools (22)
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_fieldsmapped tocustom1..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_idon 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
Input & State Semantics
- 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 withVALIDATION_ERRORbefore 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_sequenceacts 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 withAMBIGUOUS_STATE(no record is modified); if every state is finished it returnsNOT_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
