What are Surfaces?

Surfaces are interfaces that expose your Product Capabilities to people, applications, and AI systems. Add a Surface to expose the same Flow, Agent, or external Agent through a chat widget or REST API. You can also use a Model Context Protocol (MCP) server or messaging channel. If you are new to the platform, start with What is Runtype? for an overview.

How Surfaces work

Connect each Surface to a Product. When a request or message arrives through a Surface, the Surface routes it to an attached Capability.

Add multiple Surfaces to one Product. A Capability can connect to multiple Surfaces, so you can reuse the same logic across different interfaces.

Each Surface uses one of three statuses: Draft, Active, or Paused. Draft Surfaces do not accept requests. Active Surfaces accept requests. Paused Surfaces keep their configuration but do not accept requests. For more information, see Product versioning and status.

Configure authentication according to the Surface type. Chat widgets use Client Tokens. API and A2A Surfaces use API keys. MCP Surfaces support OAuth, API keys, or public access. Messaging Surfaces use channel-specific provider settings.

Surface types

Choose a Surface based on how you want people or systems to interact with your Product. The following sections describe common types and link to setup guides where they exist.

Chat widget

Embed a conversational interface in your website or web app. Customize the theme, welcome message, and branding. Use a Chat Widget for customer support, sales assistance, onboarding, or interactive demos. To create one, see Setting up a chat Surface.

REST API

Expose HTTP endpoints that developers can call from applications and backend services. Runtype generates an OpenAPI specification for each API Surface. Configure rate limits and API keys to control access. To create one, see Setting up an API Surface.

MCP server

Expose your Capabilities as tools that MCP-compatible clients can discover and call. Connect your MCP Surface to clients such as Claude Desktop, Cursor, and VS Code. To create one, see Setting up an MCP Surface.

A2A agent

Expose your Capabilities to external agents through the Agent-to-Agent (A2A) protocol. External agents discover your Product through an Agent Card and invoke Capabilities through a JSON-RPC endpoint. Use an A2A Agent for multi-agent workflows and agent orchestration. To create one, see Setting up an A2A Surface.

Slack

Connect your Product to a Slack workspace. People interact with your Capabilities through direct messages, mentions, channels, and threaded replies. Use Slack for internal tools, team assistants, and support workflows. To create one, see Setting up a Slack Surface.

SMS

Connect your Product to a Twilio phone number. People interact with your Capabilities through text messages. When an attached Agent uses Tool approval, Runtype reads the decision from the person’s reply text. To create one, see Setting up an SMS surface.

iMessage

Connect your Product to a Sendblue phone number. People interact with your Capabilities through iMessage, with SMS fallback when a recipient cannot receive iMessage. iMessage Surfaces are development previews. To create one, see Setting up an iMessage surface.

Telegram

Connect your Product to a Telegram bot. People interact with your Capabilities through messages in Telegram. Use Telegram for customer support, notifications, and group management.

Email channel

Connect your Product to email. People interact with your Capabilities by sending and receiving messages. Use an Email Channel for customer communication, support workflows, and automated email responses.

Webhook

Receive HTTP events from external systems and route them to your Capabilities. A Webhook Surface can learn a payload schema from sample events, verify provider signatures, route event types, and map payload fields to Flow inputs. To create one, see Setting up a webhook Surface.

Chrome extension

Build a downloadable Manifest V3 browser extension with chat in a side panel. Configure packaged browser tools for reading pages, filling forms, navigating tabs, using the clipboard, and showing notifications. Actions that change a page require confirmation. Build the extension ZIP from the Surface’s Ship tab, then load it in Chrome or publish it to the Chrome Web Store. Chrome Extension availability uses an account-level rollout. If Chrome Extension does not appear in the Surface type list, it is unavailable for your account. To create one, see Setting up a Chrome extension Surface.

Example

For example, Dana runs a customer-support Product with an order lookup Agent and an FAQ Flow. Dana connects both Capabilities to a Chat Widget and a REST API. Website visitors send chat messages, while the mobile app calls a REST endpoint. Dana reuses the same Capabilities and configures routing for each interface.

Surfaces and Capabilities

Connect the Capabilities that each Surface exposes. A Capability can connect to multiple Surfaces, and you can enable or disable it separately for each Surface. For setup details, see Adding capabilities to a Product.

Chat Surfaces support these orchestration modes:

  • Single Orchestrator: send every request to one selected Capability.
  • Multi-Capability Router: use a lightweight model to classify each request and route it to the relevant Capability.

API Surfaces expose each enabled connected Capability through an endpoint. MCP Surfaces expose each enabled connected Capability as a tool. A2A Surfaces support two additional modes. In Delegate mode, each Capability appears as a separate skill in the Agent Card, and the calling Agent selects the skill. In Managed mode, Runtype routes incoming requests through an orchestrator. For more information, see Surface orchestration modes.

Next steps

Follow these guides to create and configure a Surface: