> ## 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.

# Detach Phone Number From Agent

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

<span data-api-safety-label="read-only"><Badge color="gray" size="sm" shape="pill">Read only</Badge></span>

Unlinks a phone number from an agent for one direction. Refused while calls are live on the number, while a batch that is not completed or cancelled dials from it (change that batch's number or cancel it first), or while an active workflow uses it.

## Parameters

| Name | Type | Required | Description |
| - | - | - | - |
| `agent_id` | `string` | Yes | The agent ID, e.g. agent\_abc123 |
| `phone_number_id` | `string` | Yes | The phone number ID, e.g. phn\_abc123 |
| `direction` | enum: `inbound` \| `outbound` | Yes | inbound: the number rings this agent. outbound: the agent calls from it. |

## Complete input schema

```json theme={null}
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "The agent ID, e.g. agent_abc123"
    },
    "phone_number_id": {
      "type": "string",
      "description": "The phone number ID, e.g. phn_abc123"
    },
    "direction": {
      "type": "string",
      "enum": [
        "inbound",
        "outbound"
      ],
      "description": "inbound: the number rings this agent. outbound: the agent calls from it."
    }
  },
  "required": [
    "agent_id",
    "phone_number_id",
    "direction"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
```

## Registered output schema

```json theme={null}
{
  "type": "object",
  "properties": {
    "phone_number_id": {
      "description": "The unlinked number, prefixed phn_"
    },
    "agent_id": {
      "description": "The agent, prefixed agent_"
    },
    "direction": {
      "description": "inbound or outbound"
    },
    "unlinked_at": {
      "description": "When the link was closed"
    }
  },
  "additionalProperties": true,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
```

## 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`, `phone_number_id`, `direction`.

## 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": "remove_agent_phone_number",
    "arguments": {
      "agent_id": "agent_abc123",
      "phone_number_id": "phn_abc123",
      "direction": "inbound"
    }
  }
}
```

Successful results include `structuredContent` and a text content block containing the same JSON. Check `isError` first, then read `structuredContent` or parse `content[0].text`. 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`, parse `content[0].text` as JSON, and verify that returned IDs and workspace data match the request.

## Retry safety

This tool does not change workspace data. Retrying after a transient transport failure is safe.

## Related guides

* [Connect to the DialNexa MCP server](/docs/mcp-tools/overview)
* [Phone Numbers MCP tools](/docs/mcp-tools/phone-numbers/overview)
* [MCP responses and errors](/docs/mcp-tools/errors)
