Skip to main content
The Forecastable Integration MCP server exposes the same partner Integration API as MCP tools. Use it from Cursor, Claude Desktop, or any client that supports the Model Context Protocol over Streamable HTTP. Each tool maps to an Integration REST endpoint. Tool inputs mirror the REST request shape: path parameters, query params, request data, and optional headers for organization context.

Prerequisites

Before connecting an MCP client, choose how the client authenticates:
  • OAuth (recommended for Cursor and Claude) — the client prompts you to sign in and approve scopes
  • API keys — static bearer tokens for clients that do not support MCP OAuth, scripts, and server-to-server tools
Both credential types use scopes to limit what the client can access. You can optionally set a default organization with X-Organization-Id on the MCP connection.

Connect manually

Remote MCP URL
1

Open connectors in Claude

In Claude, open Customize in the sidebar, then go to Connectors.
Open Customize in Claude

Open Customize in Claude

Click the + button and choose Add custom connector.
Add custom connector in Claude

Add a custom connector

2

Add the MCP server

In the Add custom connector dialog, set:Leave Advanced settings empty. Forecastable supports OAuth Dynamic Client Registration, so Claude registers an OAuth client automatically and receives a client ID and secret without showing them to you.
Add Forecastable MCP server in Claude

Configure the Forecastable connector

3

Authorize the connector

Open the Forecastable connector in Claude and click Connect.
Connect to Forecastable in Claude

Start the OAuth connection

Forecastable prompts you to sign in (if needed) and review the requested scopes on a consent screen. Click Allow to grant access. Claude exchanges the authorization code for an access token and uses it on later MCP requests.
4

Verify the connection

After authorization succeeds, test the connector in Claude. A good first check is to list organizations, choose one, and call a read-only tool such as listAccounts.If organization-scoped tools fail with a missing-organization error, have Claude call listOrganizations and setActiveOrganization before account or contact tools.

Troubleshooting

Confirm you are using https://app.forecastable.com/mcp and that the Forecastable OAuth discovery endpoint is reachable at https://app.forecastable.com/.well-known/oauth-authorization-server. Claude should only require manual credentials if it cannot discover or call the dynamic registration endpoint.
Claude dynamically registers https://claude.ai/api/mcp/auth_callback as its redirect URL. If you created an OAuth app manually, confirm that callback URL is listed exactly in Redirect URLs.
Disconnect and reconnect the connector so Claude can register fresh OAuth credentials. If you configured a client manually in Advanced settings, verify the client ID and client secret match the Credentials section for the same OAuth app.
Disconnect and reconnect the connector so Claude can request the updated permissions and you can approve them on the Forecastable consent screen.
Most MCP tools require an active organization. Ask Claude to call listOrganizations, pick an organization, then call setActiveOrganization before organization-scoped tools.

Available tools

Tools are generated from the Integration OpenAPI specification. Each tool enforces the same scope and organization rules as the corresponding REST endpoint.

Meta

Organizations

Accounts

Contacts

Opportunities

Relationship maps

Engage templates

Engage drafts

Engage lists

Engage campaigns

Engage queue (read-only)

Feed

Account inbox tools accept account UUIDs (not Relay global IDs). Thread ids may be a plain Nylas thread id or nylas:<grantId>:<threadId>. Clients should merge threads / events / slackMessages by timestamp when a single chronological list is needed. Dashboard tools (getCommunicationAnalytics, listNeedsAttention) require a user-backed token.

Calendar

Calendar tools require a user-backed token. Standard users see only their own events; admin and consulting users may also see authorized teammate events. Nested meeting tools return 404 when the event has no linked call recording. Updates apply only to viewer-owned events and push through the connected calendar provider. For “most recent meeting with X”, prefer listCalendarEvents with order=desc, a recent window, and search / participantDomain / participantEmail — do not page a wide ascending range and pick the first title match.
Tools marked as destructive (deleteAccount, deleteContact, deleteOpportunity, deleteRelationshipMapContact, deleteEngageTemplate, deleteEngageList, deleteEngageCampaign, removeEngageListMember) perform soft-delete or archive operations. Confirm with your agent workflow before calling them.
Sending is REST-only. POST /engage/messages/send and POST /engage/campaigns/{campaignId}/start are deliberately not exposed as MCP tools, so an agent can prepare templates, drafts, lists, and campaigns but can never send messages or enroll recipients through MCP. Outbound operations require the REST API with the engage:send scope and an Idempotency-Key header.

Authentication

Send your API key as a Bearer token on every authenticated MCP request:
Accepted credential types match the Integration REST API:
  • integration API keys issued from developer settings
  • OAuth2 authorization-code access tokens issued after user consent
  • OAuth2 client-credentials access tokens for server-to-server clients, where enabled
Revoked or expired API keys return 401 unauthorized.

Organization context

Most tools require an active organization. Provide it in one of these ways:
  1. Request header (recommended): X-Organization-Id: <uuid>
  2. Tool input headers: { "headers": { "xOrganizationId": "<uuid>" } }
  3. Query params in tool input: { "params": { "organizationId": "<uuid>" } }
  4. Session selection: call listOrganizations, ask the user which organization to use, then call setActiveOrganization with the selected ID. Later tools in the same MCP session use that organization automatically.
If your API key is restricted to a single organization, Forecastable can infer the organization automatically. If you configure X-Organization-Id on the MCP connection, it acts as an optional default. Explicit tool headers or params override the session selection. If multiple explicit identifiers are supplied and they conflict, the server returns ambiguous_subscriber_context. Legacy header X-Subscriber-Id and query param subscriberId are still accepted. Optional header X-Request-Id is forwarded for tracing.

Sessions

The server uses MCP Streamable HTTP transport: After the first POST, reuse the session by sending mcp-session-id on subsequent requests.

Example tool call

After your MCP client connects, first let the model discover the available organizations:
Call listOrganizations, ask the user which organization to use, then call setActiveOrganization:
After that, call organization-scoped tools without repeating the organization ID:
You can still pass xOrganizationId in a tool call or configure X-Organization-Id on the MCP server connection when you want an explicit default.

Scopes

MCP tools enforce the same scopes as the Integration REST API. Configure scopes on your API key or OAuth app before connecting.

Rate limits

MCP tool calls share the Integration API rate limits. When exceeded, the server returns 429 rate_limit_exceeded with a retryAfterSeconds hint.

Troubleshooting

Verify your API key is present, not expired, and not revoked. All tools except getMeta require authentication.
Check that your API key includes the scope required for the tool. For example, listAccounts needs accounts:read.
Call listOrganizations, ask the user which organization to use, then call setActiveOrganization. You can also provide X-Organization-Id on the MCP connection or pass xOrganizationId in the tool headers.
The server returned not_found because MCP is disabled in that environment. Contact Forecastable if you need MCP enabled.
Ensure your client reuses mcp-session-id from the initialize response. Stale or missing session IDs return 400 validation_error.
  • API reference — full Integration REST API documentation
  • GET /meta — live metadata for auth, scopes, and limits