> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.runtype.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.runtype.com/_mcp/server.

# Adding capabilities to a Product

Capabilities are Flows and Agents that you attach to a Product. You can also attach an external agent that uses the Agent-to-Agent (A2A) protocol. Each Capability represents a function that you can expose through one or more Surfaces. Add the Capability to the Product, then connect it to the Surfaces where you want to expose it.

## Before you begin

Complete these tasks before you add a Capability:

* Create a Product.
* To reuse a resource, create the Flow or Agent first.
* For an external agent, get its name and A2A endpoint URL. If the agent requires authentication, have its credentials ready. For more information, see [Connecting external agents](/user-guide/products-surfaces/connecting-external-agents).

## Add a Capability

To add a Capability, follow these steps:

1. On the **Products** page, open the Product that you want to update.
2. In **Product capabilities**, click **Add Capability**.
3. Choose **New Agent**, **New Flow**, **External A2A**, or **Use Existing**.
4. Complete the fields for the option that you chose:
   * If you chose **New Agent**, choose an agent type. Enter the **Agent Name** and the **Capability Name**, and then click **Create & Add**.
   * If you chose **New Flow**, click **Continue to Flow Editor** and build the Flow. Runtype adds the Flow as a Capability when you create it.
   * If you chose **External A2A**, enter the **Agent name**, the **A2A endpoint URL**, and the **Capability name**. You can also enter an **Agent card URL** and choose an **Authentication** method. Click **Connect & Add**.
   * If you chose **Use Existing**, choose **Agents** or **Flows**, select the resource, and enter the **Capability Name**. Click **Add Capability**.
5. For **External A2A** or **Use Existing**, click **Save**. A **New Agent** or **New Flow** Capability is saved when you create it.

The Capability name is the name that callers use. It's the tool name on an MCP Surface, and an API Surface builds the Capability's endpoint from it. A name can have up to 100 characters. Use a stable, lowercase name with underscores, for example `search_products`. On an MCP Surface, Runtype replaces each character that isn't a letter, number, hyphen, or underscore with an underscore, and it shortens the tool name to 64 characters. The optional description becomes the tool description that MCP clients see. If you rename a Capability later, existing callers must switch to the new name.

The Capability appears in **Product capabilities** after you add it. It doesn't connect to existing Surfaces automatically.

To confirm that a saved Capability runs, open its **More actions** menu in **List view** and select **Test**.

## Connect a Capability to a Surface

To connect a Capability in **Visual view**, follow these steps:

1. On the Product page, select **Visual view**.
2. Drag a connection from the Capability node to the Surface node.
3. Click **Save** to persist the connection.

Each enabled Capability that you connect to an API Surface gets its own endpoint. On an MCP Surface, it appears as a tool. On an A2A Surface, it appears as a skill on the Agent Card.

On a Chat or A2A Surface, you can choose how requests reach the connected Capabilities. For more information, see [Surface orchestration modes](/user-guide/products-surfaces/surface-orchestration-modes).

## Edit or disable a Capability

To edit a Capability, follow these steps:

1. On the Product page, select **List view**.
2. In **Product capabilities**, open the Capability's **More actions** menu.
3. Select **Edit**.
4. Change the **Name** or the **Description**, or turn the **Enabled** switch on or off.
5. Click **Save**.

When you turn off **Enabled**, the Capability stops being available on every Surface that exposes it. Turn the switch back on to restore it.

## Remove a Capability

To remove a Capability from a Product, follow these steps:

1. On the Product page, select **List view**.
2. In **Product capabilities**, open the Capability's **More actions** menu.
3. Select **Delete**.
4. Confirm the deletion.

Removing a Capability also removes its connections from the Product's Surfaces. It doesn't delete the linked Flow or Agent, so you can attach that resource to another Product.

## Reuse a Flow or Agent

A Flow or Agent can be a Capability in more than one Product. Each Product stores its own Capability name and description. Changes to the Flow or Agent apply to every Product that uses it. When you change a Flow's steps, Runtype updates the input schema of every Capability that uses that Flow.

## Add a Capability with the API

To add a Capability from code, send a request to the Runtype API. The following example adds an existing Agent to a Product:

```bash
curl -X POST "https://api.runtype.com/v1/products/YOUR_PRODUCT_ID/capabilities" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agentId": "YOUR_AGENT_ID",
    "capabilityName": "search_products",
    "capabilityDescription": "Search the product catalog"
  }'
```

Replace the following:

* `YOUR_PRODUCT_ID`: the ID of the Product
* `YOUR_API_KEY`: your Runtype API key
* `YOUR_AGENT_ID`: the ID of the Agent to add

To add a Flow, send `flowId` instead of `agentId`. The response includes the Capability's `id`.

The following example connects that Capability to a Surface:

```bash
curl -X POST "https://api.runtype.com/v1/products/YOUR_PRODUCT_ID/surfaces/YOUR_SURFACE_ID/items" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"capabilityId": "YOUR_CAPABILITY_ID"}'
```

Replace `YOUR_SURFACE_ID` with the ID of the Surface and `YOUR_CAPABILITY_ID` with the `id` from the previous response. To change how the Capability appears on this Surface only, you can also send `exposedName`, `exposedDescription`, and, for an API Surface, `endpointSlug`. These fields don't change the Capability itself.

To remove a Capability, send `DELETE /v1/products/YOUR_PRODUCT_ID/capabilities/YOUR_CAPABILITY_ID`. The Runtype MCP server has matching tools: `add_product_capability`, `add_surface_item`, and `remove_product_capability`. For all fields, see the [Products API reference](/api-reference/runtype-api/products/list-products).

## Troubleshooting

The following errors can occur when you add a Capability:

* **This agent is already added as a capability on this product**: a Product can include each Agent once. To expose one Agent under different names, connect it to Surfaces with different exposed names.
* **This capability is already added to this surface**: the Capability is already connected to that Surface.
* **Flow not found** or **Agent not found**: the Flow or Agent was deleted, or it belongs to another organization.

## Next steps

Use these pages to continue:

* [Surface orchestration modes](/user-guide/products-surfaces/surface-orchestration-modes): route messages between connected Capabilities
* [Connecting external agents](/user-guide/products-surfaces/connecting-external-agents): configure an External A2A Capability
* [Scoping API keys to capabilities](/user-guide/products-surfaces/scoping-api-keys-to-capabilities): limit which Capabilities an API key can call
* [What are Surfaces?](/user-guide/products-surfaces/what-are-surfaces): choose how you expose a Product
* [Product views](/user-guide/products-surfaces/product-views): switch between Visual view and List view