The four tools
Shape-stable today, customer-deployed in Phase 2
Pills: Wired in prototype tool wired in the prototype today (against the mocked Experience APIs); the Mule Process API name shown is the production target, design-stage.
Wired in prototype
get_patient_timeline
Production target: pause-patient-bundle-process-api
Returns a FHIR R5 Bundle (Patient + raw wearable Observations + DBDP-computed feature Observation with derivedFrom provenance). Wired today against the mocked Experience API at /api/mulesoft/patient/[id]/timeline.
Wired in prototype
get_patient_intake
Production target: pause-intake-process-api
Returns the structured intake record produced by the Salesforce Agentforce Service Agent — chief complaint, symptom cluster, red-flag screen, triage recommendation. Wired today against /api/mulesoft/patient/[id]/intake.
Wired in prototype
find_menopause_providers
Production target: pause-provider-directory-experience-api
Searches Pause's provider directory by ZIP and menopause-certified flag. Returns providers ranked by Pause's internal graph score. Wired today against /api/mulesoft/providers (deterministic fixture).
Wired in prototype
experience_api_health
Production target: pause-patient-bundle-process-api (root)
Liveness check for the Experience API plane. Use before larger tool calls. Wired today against /api/mulesoft/health.
Why MCP
Four reasons the agent-side contract is MCP
Pills: Wired in prototype wired in the prototype today · Today · partial partly wired, partly roadmap · Designed design decision, activates with the first design partner.
Designed
One server, every modern agent
Claude Desktop, Cursor, OpenAI Responses API, and the Salesforce Agentforce Service Agent all speak MCP. Exposing Pause's MuleSoft Experience APIs as MCP tools makes them callable from every relevant AI runtime — no per-client adapter, no custom plugin format. Today the Pause MCP server is in-repo; once it's npm-published (Phase 1), the multi-runtime distribution lands.
Today · partial
Shape-stable contract today, swap the base URL tomorrow
The tool surface is identical between the mocked Experience APIs (today) and a customer's MuleSoft Anypoint deployment (Phase 2). Switching is a single environment variable: PAUSE_MCP_BASE_URL. Every agent integration built against the mock works against production with no client changes. The shapes are wired today; the distribution (npm + Anypoint gateway) is roadmap.
Designed
Layers cleanly on top of MuleSoft
MCP is the agent-side contract. MuleSoft is the integration-side contract. They compose: Mule Experience APIs become MCP tools 1:1, and Mule's API policies (rate limit, OAuth, observability) apply transparently to every MCP call. This composition is design-stage — see /proposal/mulesoft for what's currently mocked vs deployed.
Wired in prototype
Auditable provenance
Each tool call returns a meta block including which Process / Experience API would serve it in production, plus FHIR derivedFrom references for computed features. The same audit trail that will satisfy HIPAA-compliant logging is visible to the agent at call time. Today the meta block references Mule API names symbolically; real correlation IDs land in Phase 2.
Touch the architecture
Four live surfaces you can hit right now
The MCP server lives at mcp/ in this repo. It speaks stdio (the standard transport for local AI clients) and fronts the mocked Experience APIs under /api/mulesoft/*. The descriptor is published at /.well-known/mcp.json so any MCP-aware registry or gateway can discover the tool surface.
Install today · clone the repo
The five-minute path that works right now
Wired in prototypeWorks against the live mocked Experience APIs at https://pause-health.ai/api/mulesoft/*. No credentials needed.
1. Clone, build, smoke-test:
# 1. Clone Pause-Health.ai
git clone https://github.com/hucmaggie/pause-health.ai.git
cd pause-health.ai/mcp
# 2. Install + build
npm install
npm run build
# 3. Run a smoke test against the live mocked APIs
PAUSE_MCP_BASE_URL=https://pause-health.ai \
node dist/server.js < <(echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}')
2. Register with Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pause-health": {
"command": "node",
"args": ["/absolute/path/to/pause-health.ai/mcp/dist/server.js"],
"env": {
"PAUSE_MCP_BASE_URL": "https://pause-health.ai"
}
}
}
}
Cursor uses the same shape in ~/.cursor/mcp.json. Both clients spawn node dist/server.js as a child process and talk MCP over stdio.
After Phase 1 ships · npm one-liner
The two-minute path, once @pause-health/mcp is published
DesignedPhase 1 (2 weeks): flip private: true off in mcp/package.json, npm publish --access public, submit to the MCP registry. Then the snippet below works.
Claude Desktop / Cursor — once published:
{
"mcpServers": {
"pause-health": {
"command": "npx",
"args": ["-y", "@pause-health/mcp"],
"env": {
"PAUSE_MCP_BASE_URL": "https://pause-health.ai"
}
}
}
}
Production deployment · Agentforce
How a customer Salesforce org will consume Pause as an MCP tool source
DesignedPhase 2 (4–6 weeks with first design partner): the gateway, connector, and Anypoint policies land together — see /proposal/agentforce.
// Salesforce Agentforce 3.0 — register the Pause MCP server with the
// Agentforce Registry (the June 2025 release introduced a native MCP
// client; the legacy "External Services connector" pattern is obsolete
// for MCP intake).
//
// 1. Setup -> Agentforce Registry -> New MCP server.
// Paste the Streamable HTTP URL:
// https://pause-health.ai/api/mcp
// Salesforce calls tools/list against it and auto-populates the
// four Pause tools.
// 2. Allowlist the tools you want. Each one is persisted to the
// Agentforce Asset Library as a callable action; the tool's
// description becomes the agent's reasoning instructions.
// 3. Agentforce Builder -> your agent -> Topic ->
// This Topic's Actions -> Add from Asset Library. Validate in
// Plan Canvas.
// 4. Tool calls flow:
// Agentforce agent -> Agentforce Registry / Gateway ->
// https://pause-health.ai/api/mcp ->
// MuleSoft Experience API -> JupyterHealth / DBDP.
//
// For a customer-managed Anypoint deployment, set PAUSE_MCP_BASE_URL
// on the Vercel deployment to the customer's Experience-tier base URL
// and the same four tools transparently call the customer's APIs.
// The registration URL doesn't change.
Pause as an MCP host · the other direction
Pause's Care Router agent now CALLS external MCP servers, not just exposes its own
Wired in prototypeShipped 2026-06-24. The Care Router task endpoint at /api/agents/care-router/tasks runs an MCP client per request, registers a loopback to /api/mcp (always-on) and any external slots configured via PAUSE_MCP_HOST_REMOTES, and resolves provider recommendations through find_menopause_providers tool calls instead of direct HTTP. End-to-end identical to the legacy direct-call path; a routing decision against zip=92614 returns the same provider order + distance rankings either way.
Why ship both directions:
- Server-side (above) — any AI agent can use Pause as a tool source via
https://pause-health.ai/api/mcp. - Host-side (this section) — Pause's own agents can use any partner's MCP server (Salesforce Agentforce, Heroku Managed MCP, custom Apex tools) as a tool source without bespoke per-vendor adapters.
Configuration + flow:
// Vercel env (or .env.local) on the prototype:
PAUSE_MCP_HOST_ENABLED=on
// Optional — add external MCP servers the Care Router can also call:
PAUSE_MCP_HOST_REMOTES=[
{ "id": "salesforce", "url": "https://customer-mcp.example/mcp",
"headers": { "Authorization": "Bearer …" } }
]
// Inside frontend/app/api/agents/care-router/tasks/route.ts:
// const host = createMCPHostFromRequest(req);
// const decision = await route(intake, grounding, {
// providerLookup: providerLookupViaMcpHost({ host })
// });
// await host.close();
// Behavior:
// 1. Care Router task arrives at /api/agents/care-router/tasks
// 2. Host spins up an MCP Streamable HTTP client per registered remote
// 3. Tool calls iterate: loopback (https://pause-health.ai/api/mcp)
// first, then each external slot in order. First ok() wins.
// 4. If every remote errors, host returns the last error and the
// adapter falls back to the legacy direct-call ProviderLookup so
// the routing decision NEVER regresses on host failure.
// 5. Trace span carries mcpHostEnabled, mcpHostRemoteCount, and a
// per-attempt array { remoteId, ok, error? } so /demo/agent-fabric
// shows which MCP server served the provider list.
The host opens a fresh MCP client per request (no module-level state, no cold-start staleness) and tears it down in a finally block when the routing decision finishes. 17 tests cover the host + adapter — config parsing, fallback chains, JSON payload parsing, an in-process integration test using InMemoryTransport that pins the wire contract — and the existing Care Router route tests still pass unchanged. See frontend/lib/mcp/host.ts and frontend/lib/mcp/provider-lookup.ts.
Prototype vs production
What changes between the two install paths
| Aspect | Prototype today | Customer deployment |
|---|
| MCP server transport | Both transports run today off a single tool registration: stdio (npx @pause-health/mcp; private:true today, npm-published in Phase 1) for Claude Desktop / Cursor, AND Streamable HTTP at https://pause-health.ai/api/mcp for Agentforce 3.0 Registry / any HTTP-based MCP client. | Same two transports. Streamable HTTP fronted by the customer's Anypoint API gateway and tied to their identity provider; stdio still works locally for developer tooling. |
| Backing Experience APIs | Mocked endpoints under /api/mulesoft/* served by the Next.js frontend (deterministic fixtures). | Real MuleSoft Anypoint Experience APIs on the customer's Runtime Fabric or CloudHub 2.0. Same JSON shapes. |
| Authentication | None. Public read of synthetic demo data. | Bearer token via PAUSE_MCP_API_KEY, validated by Mule API policies and tied to the customer's OAuth provider. |
| Tool surface | Four tools: timeline, intake, providers, health. | Same four tools; additional tools added as new Experience APIs ship (e.g. orders, referrals). |
| Provenance | Mocked meta blocks reference the production Mule API names symbolically. | Real Mule correlation IDs, HIPAA audit IDs, and API instance identifiers returned in the meta block. |
| Distribution | git clone + local build (today). | Published npm package + Anypoint Exchange listing (Phase 1). |
Phased plan
From reference implementation to multi-tenant plane
Wired in prototype
Phase 0 — Reference implementation + Streamable HTTP endpoint
Today
Pause MCP server committed under mcp/ with two transports running off a single tool registration: stdio (Claude Desktop, Cursor, local clients) via `npx @pause-health/mcp`, and Streamable HTTP at https://pause-health.ai/api/mcp (Agentforce 3.0 Registry, server-to-server) via a Next.js route handler. Four tools backed by mocked Experience APIs. A parity test pins the two transport copies of the tool definitions byte-identical so a description tweak can't ship to one path and not the other.
Designed
Phase 1 — Publish to the registry
2 weeks
Publish @pause-health/mcp to npm (today: package is `private: true`). Submit to the public MCP server registry alongside the existing https://pause-health.ai/api/mcp HTTP endpoint.
Designed
Phase 2 — Customer-managed gateway
4–6 weeks with first design partner
Deploy the MCP server behind the customer's MuleSoft Anypoint API gateway. Wire OAuth via PingFederate / Azure AD. The Agentforce Service Agent registers it as a tool source.
Future
Phase 3 — Multi-tenant MCP plane
Ongoing
One Pause MCP package, N customer deployments. Tools auto-expand as new MuleSoft Experience APIs ship. Telemetry rolled up across deployments for product analytics.
Why investors should care
The four compounding advantages
- Distribution leverageEvery new MCP client (Claude, Cursor, Agentforce, GPT, others) becomes a Pause distribution channel without engineering work. The protocol does the marketing — once Phase 1 ships.
- Same APIs, two contractsMuleSoft is the contract enterprise IT signs. MCP is the contract an AI agent signs. Pause owns both ends of the same shape — buyers don't have to choose between 'integratable' and 'agent-native.'
- Defensible architecture storyOpen standards everywhere: MCP (Anthropic / Model Context Protocol), MuleSoft (Salesforce), FHIR R5 (HL7), Open mHealth (DHCH), DBDP (Duke). No proprietary lock-in at any tier.
- Demo today, polish in Phase 1Investors and partners can clone the repo and call Pause's clinical APIs from inside Claude Desktop or Cursor in under five minutes. The mocked Experience APIs make this real today; the npm one-liner lands in Phase 1.
Read deeper
Where the MCP server sits in the bigger picture
- Headless 360 — where MCP fitsToday · partialMCP is one of the three Headless 360 patterns (alongside REST and A2A). The audit page is the single-place mapping that makes the prototype's full Headless 360 conformance — and its remaining PKCE gap — legible.
- MuleSoft integrationDesignedThe connectivity tier that will back every MCP tool call in production. Today: mocked Experience APIs under /api/mulesoft/*.
- Agentforce intakeDesignedIn a customer deployment, the Salesforce Agentforce Service Agent will consume this MCP server as its tool source. Today the Agentforce path is gated by env vars (see the Agentforce env-table brief).
- JupyterHealth integrationDesignedThe FHIR R5 substrate the MCP tools will read from on the back end once design-partner deployments wire it through.
- Agent Fabric control planeToday · partialHow MCP tool calls and A2A handoffs are jointly governed, traced, and secured across every Pause agent. Trace plane wired in prototype; full multi-agent governance is design-stage.
- Model Context Protocol specificationThe open standard this server implements.