Connect AI agents to Forecastable through the Integration MCP server.
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.
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.
In Claude, open Customize in the sidebar, then go to Connectors.
Open Customize in Claude
Click the + button and choose Add custom connector.
Add a custom connector
2
Add the MCP server
In the Add custom connector dialog, set:
Field
Value
Name
Forecastable (or your preferred label)
URL
https://app.forecastable.com/mcp
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.
Configure the Forecastable connector
3
Authorize the connector
Open the Forecastable connector in Claude and click Connect.
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.
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.
Redirect URI mismatch
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.
Invalid client or unauthorized
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.
Insufficient scope
Disconnect and reconnect the connector so Claude can request the updated permissions and you can
approve them on the Forecastable consent screen.
Missing organization context
Most MCP tools require an active organization. Ask Claude to call listOrganizations, pick an organization, then call setActiveOrganization before organization-scoped tools.
Cursor discovers Forecastable’s OAuth metadata, registers a client automatically, and prompts you to authenticate. Sign in to Forecastable (if needed), review the consent screen, and click Allow.
Use an API key when your MCP client does not support OAuth. Add the server with an Authorization header:
Tools are generated from the Integration OpenAPI specification. Each tool enforces the same scope and organization rules as the corresponding REST endpoint.
Account inbox: email threads, calendar events, and Slack messages
feed:read
yes
getAccountInboxThreadMessages
Messages for an inbox email thread (plain-text by default; includeBodyHtml=true for HTML)
feed:read
yes
getAccountInboxSlackThread
Messages in a Slack thread linked to the account
feed:read
yes
getCommunicationAnalytics
Dashboard communication analytics (timeline + account rows); user-backed token
feed:read
yes
listNeedsAttention
Accounts with unread email/Slack needing attention; user-backed token
feed:read
yes
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.
List/search synced events (start/end required; filters: search, participantEmail, participantDomain, ownerUserId, hasExternalParticipant; order=desc for most recent)
calendar:read
yes
getCalendarEvent
Get one synced calendar event the authenticated user is authorized to view
calendar:read
yes
getCalendarEventSummary
Get the stored meeting summary for a previous calendar event
calendar:read
yes
getCalendarEventActionItems
Get extracted action items for a previous calendar event
calendar:read
yes
getCalendarEventTranscript
Get the normalized transcript for a previous calendar event
calendar:read
yes
updateCalendarEvent
Update a viewer-owned event (title, description, location, times, participants). For recurring events set recurrenceScope to this or all.
calendar:write
yes
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.
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.
Verify your API key is present, not expired, and not revoked. All tools except getMeta require authentication.
403 forbidden or insufficient scope
Check that your API key includes the scope required for the tool. For example, listAccounts
needs accounts:read.
Missing organization context
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.
404 Integration MCP is disabled
The server returned not_found because MCP is disabled in that environment. Contact Forecastable
if you need MCP enabled.
Unknown MCP session
Ensure your client reuses mcp-session-id from the initialize response. Stale or missing session IDs return 400 validation_error.