Before you connect
You need:- A Reach partner account with a WorkOS organization connected by Reach
- The
adminrole in that WorkOS organization - An MCP client that supports remote HTTP servers and browser-based OAuth
The WorkOS organization you sign in with is the default Reach partner. One connection can also act on
every other partner whose WorkOS organization you administer, such as a QA or staging account; see
Working across partner organizations. Partner routes span the
selected partner, while tenant routes require a Reach tenant ID or your external tenant ID. The MCP
verifies that the tenant belongs to the selected partner on every tenant-scoped call.
Connect your MCP client
Use this remote MCP server URL:Codex
Add the server from a terminal:This command adds the server to your global Codex configuration. To limit the connection to one
trusted repository, add it to
.codex/config.toml in that repository instead:Claude Code
Add the server from a terminal:user scope makes the connection available across your local projects and
worktrees. To keep it private to the current project, use --scope local
instead. Start Claude Code, run /mcp, and authenticate reach-developer in
your browser.
Other MCP clients
- Add a remote or streamable HTTP MCP server.
- Enter
https://mcp.embedreach.com/mcpas the server URL. - Choose OAuth authentication if the client asks for an authentication method.
- Sign in through WorkOS and select the partner organization to use by default.
- Approve the connection.
What your assistant can use
The MCP exposes two action tools, a partner list, a guided onboarding prompt, and portable documentation resources.list_partners
Lists the Reach partners whose WorkOS organizations you administer, and marks
the one you signed in with. Pass a listed partnerId to execute_reach_api or
execute_reach_write to act on that partner. A partner listed with
signedIn: false includes a signInUrl; see
Sign in to each organization.
execute_reach_api
Runs a GET request against a Reach API route. Without partnerId, it acts on
the partner you signed in with. With partnerId, it acts on that partner, but
only if you are an admin of its WorkOS organization and have signed in to
that organization for the MCP. The MCP checks your memberships with WorkOS and
never accepts a partner you do not administer.
For a partner-wide /partner path, provide only path. For a tenant-scoped
/api path, also provide tenantId, using either the Reach tenant ID or the
external tenant ID configured by your platform. The MCP validates the tenant
against the selected partner and supplies the reach-tenant-id header.
Available operations include:
- Approved tenant-scoped GET routes under
/api - Approved partner-wide GET routes for tenant records
- Approved partner-wide GET routes for schemas, mappings, resource counts, channel integrations, and aggregate Voice reporting
This tool rejects write methods, arbitrary URLs, tenant IDs not owned by the selected partner, and
tenant or partner routes outside its reviewed allowlists.
execute_reach_write
Runs an approved POST or PATCH request for data onboarding. Provide the
partnerId from list_partners, the HTTP method, API path, JSON body,
and a concise changeSummary. For a tenant-scoped /api path, also provide
tenantId.
partnerId is required on every write, even if you administer only one
partner. The tool never writes to a default partner, so a write cannot land in
production because the target was left out.
Replacing partner schema mappings also requires ifMatch. First read
GET /partner/schema-mappings with execute_reach_api, then pass the returned
etag value unchanged. If the mappings changed in the meantime, Reach rejects
the replacement so you can read them again and review a fresh diff.
The current write allowlist is:
For tenant operations,
tenantId is required and may be either the Reach
tenant ID or your external tenant ID. The MCP verifies that the tenant belongs
to the selected partner before sending the request. For partner
operations, omit tenantId.
The Developer MCP applies narrower limits than the underlying Reach API:
- The JSON body may be no larger than 100 KiB (102,400 bytes).
- A batch body may contain no more than 100 resources.
changeSummaryis required, may contain up to 500 characters, and should not contain credentials or sensitive record values.- Only the method and path combinations in the table above are accepted. In
particular, schema updates use
POST, while individual and batch resource patches usePATCH.
execute_reach_api to poll /api/batches/{batchId} and inspect validation
errors.
No other write routes are exposed. The tool rejects
GET, DELETE, arbitrary URLs, unreviewed POST
or PATCH routes, and tenant IDs not owned by the selected partner. Schema deactivation, resource
deletion, and configuration writes outside schema definitions and mappings are not available.onboard_reach_data
Clients that support MCP prompts can start this guided workflow with an optional validation tenant, source-system description, and onboarding objective. The prompt directs the assistant through source-model discovery, schema and mapping review, approved writes, small record tests, asynchronous batch diagnostics, and raw resource reconciliation.
The detailed workflow is also published as the portable reach://docs/guides/onboarding-developer-mcp-data-onboarding resource. Clients that do not expose MCP prompts can read that resource directly or use the Developer MCP Data Onboarding guide. Keeping the procedure in a resource makes the same versioned guidance available to agents, developers, and documentation readers; the prompt remains a short entry point.
advise_reach_model
Returns versioned product requirements for selected Reach products and business questions. The response separates schemas, fields, mappings, relationships, consent, external prerequisites, and validation cases. It is read-only and only treats source semantics as confirmed when the caller supplies explicit semantic roles.
Map each business question to the capabilityIds that deliver it; the tool adds their prerequisites automatically, including prerequisites in another product. Drive the conversation from status:
capabilityChoices holds mutually exclusive workflows — a tenant runs one review flow, not all three, and reports in one currency model, not both. The tool returns the options instead of guessing, and withholds any requirement that depends on a choice you have not made. Pick one option per group and pass its capability ID on the next call. Selecting two options from the same group is an error rather than a merged requirement set.
Read reach://onboarding/product-capabilities for the catalog index or reach://onboarding/product-capabilities/{product} for a single product pack.
Your resource API document
Readreach://docs/partner-resource-openapi for an OpenAPI 3.1 document of the /api/resources endpoints typed with your signed-in partner’s active schema definitions, or reach://docs/partner-resource-openapi/{partnerId} for another partner you administer: request bodies, patch bodies, and responses use your schemas’ fields, and references show the form the API accepts and returns. It reflects schema changes on the next read. For partners with many schemas the document is large, so prefer the per-operation reach://docs/openapi/{operationKey} details when you only need one endpoint.
Example prompts
- “Use the Reach Developer MCP to list my tenants.”
- “For tenant
acme-location-42, list its segments and summarize how they are configured.” - “Show the schema definitions configured for this partner.”
- “Summarize resource counts by tenant without listing individual records.”
- “Read the Reach API documentation and explain how schema mappings work.”
- “Show aggregate Voice call activity for the last seven days.”
- “Create these approved schema definitions, install the reviewed mappings, and validate three synthetic records for tenant
acme-test.”
Working across partner organizations
If Reach has provisioned separate partner accounts for your QA, staging, and production environments, one connection reaches all of them. Each account must have its own WorkOS organization, and you must hold theadmin role in each.
Ask the assistant to list them first:
Use reach-developer to list my Reach partners.
Then name the environment in every request, so the assistant passes that
partner’s partnerId:
Using our QA partner, list its tenants and schema definitions.
Sign in to each organization
The organization you chose when connecting is ready immediately. Every other organization needs its own sign-in before the MCP will act on it, so its SSO, multi-factor, and other sign-in requirements apply exactly as they do in the partner dashboard. The first time the assistant reaches for another organization, the call returnsORGANIZATION_SIGN_IN_REQUIRED with a signInUrl. Open the link,
sign in as the same user, and choose that organization. Then ask the assistant
to retry; you do not need to reconnect the MCP.
Access lasts as long as that sign-in session. When the session expires, or you
sign out of it or it is revoked in WorkOS, the MCP stops using the
organization until you sign in again. Signing in to the partner dashboard does
not count; only the MCP’s own link does.
Use a QA partner for onboarding writes
Do onboarding writes and sample records in a QA or sandbox partner account with a dedicated test tenant. A test tenant under your production partner is not isolated: schema definitions and mappings are partner-wide, and validation records can trigger product behavior that the MCP cannot undo. Before making changes:- Ask for
list_partnersand confirm the QA partner’s name and ID. - Start with a read-only request against that partner and confirm the returned tenants belong to QA.
- Approve each write only after confirming the
partnerIdit targets. Every result names the partner it acted on.
partnerId. Nothing is promoted between partner
accounts automatically.
Keeping production out of reach
Access follows your WorkOS account, not the MCP connection: every connection you sign in to reaches every partner whose organization you administer. To make production unreachable from an assistant, sign in with a WorkOS account that is anadmin of the QA organization but not of production.
If you authorized the wrong organization or account, clear authentication and
authorize again. In Codex, run codex mcp logout reach-developer followed by
codex mcp login reach-developer. In Claude Code, run /mcp, select the
connection, and choose Clear authentication before authenticating again.
Troubleshooting
The organization is rejected
Confirm that:- You selected the intended WorkOS organization.
- Your membership role in that organization is
admin. - Reach has connected that WorkOS organization to the expected partner account.
A partner is missing from list_partners
list_partners includes every active WorkOS organization in which you hold the
admin role and that Reach has connected to a partner account. Membership
changes can take up to five minutes to appear. If a QA or staging partner is
still missing, ask your Reach contact to connect its WorkOS organization.