Expose Integrations

Choose the integration surface based on the caller and the direction of the workflow.

NeedUse
External system executes commands or reads projectionsREST
Custom UI needs flexible reads and command mutationsGraphQL or REST
Runtime agent operates the appRuntime MCP
External system pushes events into CessyWebhooks
External consumer needs Cessy eventsSubscriptions
Policy needs to call an external serviceAdapter
Frontend needs orchestration or third-party APIsBFF

REST first for system contracts

REST is the default public system contract because each published app exposes generated OpenAPI. Use the generated contract to discover exact endpoint names, schemas, and response envelopes.

Runtime MCP first for agents

Agents should use Runtime MCP for published app operation. Runtime MCP names tools after the app’s commands and projections, and also exposes channel and user collaboration tools.

Do not give runtime agents Design MCP access unless they are explicitly meant to change the app model.

Webhooks and subscriptions

Use webhooks for inbound external events. Use subscriptions for outbound Cessy events. Keep both tied to modeled commands and events so behavior remains inspectable.

Adapters

Adapters are infrastructure dependencies used by policies and controlled app logic. They are not the normal public API for external consumers. If an external client needs a contract, expose a command, projection, webhook, subscription, or BFF endpoint instead.

BFF

Use a Backend-for-Frontend when a custom page needs orchestration that does not belong in the event model, such as combining Cessy projections with third-party data for display.

See BFF Pattern.