Skip to Content

MCP

Ecosystem exposes three MCP-related surfaces. They share the path /mcp but are not interchangeable.

SurfaceWhereTransportUse for
Workbench MCPecosystem-workbench2 :8001Streamable HTTP POST /mcpDeployments, entities, enrichment, public catalog, operator chat
Runtime builtin MCPJava Runtime :8091POST /mcp JSON-RPCinvoke / response, campaign admin, runtime ontology
Runtime MCP sidecarecosystemai/ecosystem-runtime-mcpFastAPI /mcpMLFlow refresh, custom FastAPI

Protocol: MCP specification 2026-07-28 . Runtime detail: MCP Support.

Pointing Cursor at Runtime :8091/mcp will not list Workbench list_api_catalog. Pointing it at Workbench :8001/mcp will not list Runtime invoke. Score campaigns on Runtime MCP or REST /invocations. Operate Workbench on Workbench MCP.

Workbench MCP modes

ModeWhoAuth
In-processEcosystem Agent /assistant (tool_profile: operator)Session JWT inside Workbench. No public API key
HTTP POST /mcpCursor, Claude Code, Agent SDKDual: Authorization: Bearer and X-API-Key: ewb_public_…
stdio ecosystem_workbench_mcpHermes / desktopHarness mints JWT; EWB_PUBLIC_API_KEY in env or ~/.herm/mcp/ecosystem-public.env

Vite :5270 does not proxy /mcp. Clients must hit the backend port (or nginx). MCP_PUBLIC_BASE_URL default http://localhost:8001.

REST info (JWT): GET /api/v1/mcp/ — tool list and connection hints. Legacy SSE GET /mcp/sse/ is deprecated.

Cursor (Streamable HTTP)

{ "mcpServers": { "ecosystem-workbench": { "url": "http://localhost:8001/mcp", "headers": { "Authorization": "Bearer <user-jwt>", "X-API-Key": "ewb_public_..." } } } }

Mint the key under Administration → API Keys → Public API Access. For Claude Code, set ANTHROPIC_BASE_URL to the Workbench host root so POST /v1/messages uses the Workbench default LLM.

HTTP MCP tools

Same implementations as in-process MCP. Mutating tools require confirm=true.

ToolPurpose
list_api_catalogPublic API catalog, scopes, accessible flags
call_endpointAny Workbench /api/v1 or /public/v1 path
entityCRUD /api/v1/entities/{collection}
explain_entityRead-only explain of entity / current form
update_current_formPatch open editor (operator Saves)
list_campaign_channel_catalogDelivery channels (email, WhatsApp, …)
get_campaign_channelsOptions, selection, send_track
set_campaign_channel_selectionAssign published options
list_custom_channel_modulesCustom channel modules
explain_workbenchProduct-guide orientation
recommend_algorithmDynamic Engagement / product approaches
explain_algorithmsAlgorithm catalog
explain_convergenceScore convergence and priors
list_deploymentsDeployments
get_deployment_infoOne deployment
get_deployment_schemaInput/output schema
score_customerScore via a Workbench deployment
send_feedbackFeedback for that scoring result (/response semantics)
date_enrich / mcc_enrichQueue enrichment jobs
personality_driftQueue personality drift
get_enrichment_jobPoll enrich / drift jobs
Ontology familylist_ontologies, describe_ontology, create/update/delete (confirm), mappings, resolve_ontology_term, generate_ontology_query, query_data_via_ontology

Resources: ecosystem://deployments, ecosystem://deployment/{name}. Per-deployment snippets: GET /api/v1/deployments/{name}/mcp.

call_endpoint accepts /api/v1/…, /public/v1/…, or relative /campaigns. Prefixes are stripped; the internal client calls private /api/v1. Remaps:

  • /money-personality/process/algorithms/money-personality/process
  • /sentimental-equilibrium/process/algorithms/sentimental-equilibrium/process

score_customer still needs params as a JSON string when it forwards an invocation. Feedback uses the returned uuid and offer_name.

stdio harness

Package sdk/python/ecosystem_workbench_mcp adds typed wrappers on top of the public gateway: catalogs_*, jobs_get, campaigns_*, networks_job*, spend_personality_*, two_tower_*, analytics_*, plus admin bootstrap_credential / rotate_credential / reveal_credential / revoke_credential.

cd sdk/python/ecosystem_workbench_mcp backend/venv/bin/python -m ecosystem_workbench_mcp verify backend/venv/bin/python -m ecosystem_workbench_mcp catalog

Networks job tools are documented with the Networks API.

Runtime builtin MCP (do not confuse)

POST http://localhost:8091/mcp Content-Type: application/json Accept: application/json, text/event-stream

Scoring tools: listCampaigns, invoke, response, ontology validators, askAboutAlgorithms, campaign admin. Mutating campaign tools may need Runtime MASTER_KEY (X-API-KEY or Bearer). That key is not ewb_public_….

Closed loop:

  1. invoke (or REST POST /invocations) — save uuid and offer_name from final_result
  2. response (or REST POST /response) — same uuid

params is a JSON string, never a nested object.

Sidecar

The Python ecosystem-runtime-mcp image is for custom FastAPI and MLFlow model download. It is not the Java JSON-RPC server and not Workbench MCP.

Related: Agents, Public APIs, Runtime MCP, Ontology for agents.

Last updated on