> ## Documentation Index
> Fetch the complete documentation index at: https://dialnexa.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish Agent

> Use the publish_agent MCP tool on the DialNexa remote MCP server.

<span data-api-safety-label="changes-state"><Badge color="yellow" size="sm" shape="pill">Changes state - verify before retry</Badge></span>

Publishes a DRAFT version of an agent, making it live and immutable. Once published, that version can never be edited again — to make further changes afterward, use duplicate\_agent to start a new draft. Optionally bind a phone number in the same call: inbound\_phone\_number\_id / outbound\_phone\_number\_id are only applied because this call is publishing — passing one without publishing has no effect elsewhere. Binding a number here claims it for that direction, releasing it from any agent currently using it. Use get\_agent first to find the draft version\_number to publish.

## Parameters

| Name                       | Type     | Required | Description                                                                                           |
| -------------------------- | -------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `agent_id`                 | `string` | Yes      | The agent ID, e.g. agent\_abc123                                                                      |
| `version_number`           | `string` | Yes      | The draft version number to publish, e.g. 0 — from get\_agent                                         |
| `inbound_phone_number_id`  | `string` | No       | Phone number ID to bind for inbound calls, e.g. phn\_abc123 — from get\_organization\_phone\_number.  |
| `outbound_phone_number_id` | `string` | No       | Phone number ID to bind for outbound calls, e.g. phn\_abc123 — from get\_organization\_phone\_number. |

## Before you call

* Connect and initialize the MCP client with OAuth or an API key for the intended workspace.
* Provide the required parameters: `agent_id`, `version_number`.

## Example MCP request

Send `tools/call` after your client completes MCP initialization. Replace placeholder values with IDs and inputs from your workspace. For object and array parameters, follow the nested requirements in the parameter description instead of treating an empty value as complete.

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "publish_agent",
    "arguments": {
      "agent_id": "agent_abc123",
      "version_number": "1"
    }
  }
}
```

The server returns one text content block. Parse `content[0].text` as JSON when the tool succeeds. See [MCP responses and errors](/docs/mcp-tools/errors) for the full envelope and failure behavior.

## Verify the result

Confirm the response is not marked `isError`. Call [Get Agent](/docs/mcp-tools/agents/get-agent) to read the affected resource. Verify that the intended state is visible before making another change.

## Retry safety

This tool changes workspace state. After a timeout, read the affected resource before retrying so you do not create duplicate or conflicting changes.

## Related MCP tools

* [Get Agent](/docs/mcp-tools/agents/get-agent): `get_agent`
* [Duplicate Agent](/docs/mcp-tools/agents/duplicate-agent): `duplicate_agent`
* [Get Organization Phone Number](/docs/mcp-tools/phone-numbers/get-organization-phone-number): `get_organization_phone_number`
* [List Agents](/docs/mcp-tools/agents/list-agents): `list_agents`
* [List Agent Versions](/docs/mcp-tools/agents/list-agent-versions): `list_agent_versions`

## Related guides

* [Connect to the DialNexa MCP server](/docs/mcp-tools/overview)
* [Agents MCP tools](/docs/mcp-tools/agents/overview)
* [MCP responses and errors](/docs/mcp-tools/errors)
