# MCP custom tools

> Build your own agent tools using MCP Tool Actions and existing server and resource actions

---

Site [llms.txt](/llms.txt)

---

Extend the built-in MCP tool set in Cloud Management Platform (CMP) with organization-specific tools.

## Two ways to expose a tool

- **MCP Tool Actions:** purpose-built agent tools authored directly in CMP
- **Existing server and resource actions:** can be promoted to agent tools

Both are permission-aware, so agents only see and run what the authenticated user is entitled to.

<div class="alert alert-info" role="alert">


After creating or modifying a custom tool, reconnect to the MCP server so the agent picks up the updated tool list.
</div>


## MCP Tool Actions

An MCP Tool Action is a CMP action purpose-built as an agent tool. Every enabled MCP Tool Action that the authenticated user is permitted to run is automatically published as a first-class tool, including its name, description, input schema, and any annotations.

MCP Tool Actions are also discoverable and runnable through generic dispatcher tools:

| Tool | Description |
| --- | --- |
| `fetch_mcp_tool_actions` | List the MCP Tool Actions the authenticated user is permitted to run. Returns each action's `mcp_tool_name`, `mcp_tool_description`, and a generated JSON input schema. |
| `run_mcp_tool_action(mcp_tool_name, parameters)` | Run the selected MCP Tool Action in-process. |

## Create an MCP Tool Action

1. Go to **Admin** > **MCP Tool Actions**.
1. Select **Add** and select **Create New** to author the action from scratch.

    <div class="alert alert-info" role="alert"><div class="h4 alert-heading" role="heading">Additional options</div>



    - **Create from Repository:** sync the action from a source code repository
    - **Upload MCP Tool Action:** import a previously exported action
    </div>


1. Complete the creation form. The fields are described in the table below.

   ![Screenshot of the Create MCP Tool Action form.](/img/cmp/developer-resources/mcp/custom-tools/create-mcp-tool-action.png)
1. Select **Save**. The action is created. Additional fields, including **Synchronous Action**, **Roles**, and any parameter default values, are available when you reopen the action to edit it.
1. Enable the action from the MCP Tool Actions list page.

   ![Screenshot of the enable option for an MCP Tool Action.](/img/cmp/developer-resources/mcp/custom-tools/enable-mcp-tool-action.png)

### Field reference

| Field | Description |
| --- | --- |
| **Label** | Display name for the action in CMP. Allows spaces. |
| **MCP tool name** | Identifier the agent calls. Must be unique within its namespace. Restricted to `^[a-zA-Z0-9_-]+$`. |
| **MCP tool description** | Natural-language explanation of what the tool does and when to use it. This is the primary signal the agent uses to select the tool. See [Writing effective tool descriptions](#writing-effective-tool-descriptions). |
| **MCP tool title** | Human-readable display title. When not set, the Label is used. |
| **Read-only hint** | The tool does not modify its environment. An agent may auto-approve a read-only tool. |
| **Destructive hint** | The tool may perform destructive updates. Only meaningful when Read-only hint is not set to Yes. |
| **Idempotent hint** | Repeated calls with the same arguments have no additional effect. Only meaningful when Read-only hint is not set to Yes. |
| **Open-world hint** | The tool interacts with external entities beyond CMP. |
| **Synchronous Action** | Displays when editing a created action. When selected, the tool returns its result inline. When unselected, the tool runs asynchronously and returns a job ID, pollable via `fetch_job`. |
| **Roles** | Displays when editing a created action. The roles that grant permission to run this action. |

<div class="alert alert-info" role="alert">


The hint fields have three states: **Unset** (default) omits the annotation and the agent falls back to the MCP spec default. **Yes** and **No** emit `true` and `false` respectively.
</div>


## Configure resource and server actions for MCP

Existing resource and server actions can be exposed to agents without rebuilding them. On the action's detail page, open the **AI / MCP** tab to view and edit the MCP settings.

![Screenshot of the AI / MCP tab for a resource action.](/img/cmp/developer-resources/mcp/custom-tools/edit-mcp-settings.png)

| Setting | Description |
| --- | --- |
| **Hide from MCP** | **Yes** excludes the action from MCP. **No** makes it available. |
| **First-class tool name** | Promotes the action to a named first-class tool. When not set, the action is available only via the generic dispatcher. |
| **First-class tool description** | The description published to the agent for this tool. See [Writing effective tool descriptions](#writing-effective-tool-descriptions). |

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">"Hide from MCP" means fully absent</div>


An agent cannot run a hidden action. Applies to MCP only: an action hidden from MCP continues to work as normal in the CMP UI.
</div>


## Writing effective tool descriptions

When an agent connects, CMP publishes each tool's name, description, input schema, and annotations. The agent matches the user's request against those descriptions to select the right tool. The description is therefore the most important field for ensuring the correct tool is used.

| Principle | Detail |
| --- | --- |
| State the purpose and outcome | Lead with what the tool does and what it produces. For example: "Restart the application service on one or more servers and wait for it to come back healthy." |
| Say when to use it and when not to | Disambiguation matters most when several tools look similar. For example: "Retrieves current order status; does not create or modify orders." |
| Name key inputs and side effects | Mention key parameters and any side effects so the agent can provide the correct arguments. |
| Be specific | Vague descriptions cause the agent to overlook a purpose-built tool in favor of a generic one. |

### Describing tool inputs

An agent also receives a description for each of a tool's inputs, which it uses to decide what to pass. On an action input, set:

- **Description**: what the field is for and how to choose a value.
- **Placeholder**: a sample of the expected value. Available for string, password, and text parameters.

CMP publishes both alongside the input's label in the tool's input schema, so guidance written for people on the order form also reaches the agent. An input with neither is published with its label alone. This applies to MCP Tool Actions, Server Actions, and Resource Actions alike. See [Action input parameters](/docs/cmp/use/orchestration/actions/action-input-parameters/).

## Version control and portability

MCP Tool Actions are first-class CMP objects and travel through CMP's existing mechanisms:

- **Source-code repository sync:** push tools to and refresh from a Git repository.
- **Blueprint export and import:** move or share a curated toolset without manual reconfiguration.

## Tool name prefixes

Each action family publishes under its own prefix, preventing name collisions between built-in tools and custom tools, and between action families.

| Action family | Prefix | Example | Promotion |
| --- | --- | --- | --- |
| MCP Tool Action | `custom_` | `custom_restart_db` | Automatic |
| Resource Action | `resource_action_` | `resource_action_restart_db` | Opt-in via AI / MCP tab |
| Server Action | `server_action_` | `server_action_restart_db` | Opt-in via AI / MCP tab |

## Related

- [MCP server tools](/docs/cmp/developer-resources/mcp/server/tools/): The built-in tools your own tools sit alongside.
- [MCP server integration](/docs/cmp/developer-resources/mcp/server/): Connecting a client and reconnecting it to pick up a new tool.
- [Action input parameters](/docs/cmp/use/orchestration/actions/action-input-parameters/): The inputs an action collects, and the guidance you can attach to each.
- [Server actions](/docs/cmp/use/orchestration/actions/server-actions/): Creating and managing the actions that can be promoted to tools.
