---
title: "3CX MCP server for AI agents - actionlake"
description: "Give Claude 576 3CX actions through one MCP server: users, backups, system status, trunks. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/3cx
updated: 2026-10-23
---

Connectors · MSP & PSA

# 3CX MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to 3CX and the rest of your systems. It gives your agent 576 3CX actions (294 reads, 192 writes and 90 that wait for a confirmation) and holds the 3CX credential itself, so the agent never does. It paces 3CX's limits and records every call.

[Connect 3CX free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "three_cx.users.list",
  intent: "check which 3CX account is connected"
}
# List Users · read · 1 upstream call
```

- 576 actions in one signed file
- 294 read look, never change
- 192 write create and update
- 90 wait for a yes destructive, confirmed first

Set up

## Connect 3CX in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect 3CX.
   OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `client_id` Client ID of the 3CX API service principal (Admin Console > Integrations > API; the DN you gave it)
   - `client_secret` API key shown once when the service principal was created
   - `host` Where your 3CX lives: your host
   ```
   account { op: "connections.requirements", service: "three_cx" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "three_cx.users.list" }
   # list users · read · 1 upstream call
   check { action: "three_cx.users.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

3CX at a glance

**Sign-in**

OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.

**You provide**

`client_id` `client_secret`

**Setup fields**

`host`

**Limits we pace to**

60 calls a minute, per connection

**API covered**

3CX XAPI v1 (OData, PBX 20.0.10.1479) and Call Control API (v20), at your 3CX instance's API base URL, which you enter when connecting

**Built from**

3CX's documentation, read 23 October 2026[OpenAPI spec (GitHub)](https://github.com/3cx/xapi-tutorial/blob/HEAD/swagger.yaml) [3cx.com](https://www.3cx.com/docs/configuration-rest-api/) [3cx.com](https://www.3cx.com/docs/configuration-rest-api-endpoints/)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

276 of 294 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

4, so ask can line 3CX up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in 3CX.

576 actions in 131 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **294** read look, never change
- **192** write create and update
- **90** destructive wait for a confirmation

1. ### Users
   33
   14 read · 14 write · 5 destructive
   List Users · Create a Users record · Get a Users record · Update a Users record
2. ### Backups
   18
   10 read · 5 write · 3 destructive
   Backup (Backups) · Get Failover Scripts (Backups) · Get Sftp Host Key (Backups) · List Backups
3. ### System status
   18
   13 read · 4 write · 1 destructive
   Get System Status · My Phone Request Id Telemetry (System Status) · Network Telemetry (System Status) · Request Help (System Status)
4. ### Trunks
   17
   8 read · 8 write · 1 destructive
   Create a Trunks record · Get Provider Phones (Trunks) · List Trunks · Run Analysis (Trunks)
5. ### AI settings
   15
   7 read · 4 write · 4 destructive
   Add Vector Store Files (AI Settings) · Create Vector Store (AI Settings) · Get AI Settings · Get AI Resources (AI Settings)
6. ### Callcontrol
   15
   6 read · 8 write · 1 destructive
   Make a call from a DN · List a DN's devices · Make a call from a specific device · List monitored DN call states
7. ### Contacts
   13
   4 read · 4 write · 5 destructive
   List Contacts · Create a Contacts record · Get a Contacts record · Update a Contacts record
8. ### Groups
   13
   5 read · 4 write · 4 destructive
   List Groups · Create a Groups record · Get a Groups record · Update a Groups record

**123 more areas · 434 actions**

- PBX **12**
- Conference settings **11**
- Defs **11**
- Microsoft365 integration **11**
- Prompt sets **11**
- Queues **10**
- My group **9**
- Recordings **9**
- Voicemail settings **9**
- Fax **8**
- Outbound rules **8**
- Receptionists **8**
- Ring groups **8**
- Services **8**
- Call flow apps **7**
- CRM integration **7**
- License status **7**
- My user **7**
- Parkings **7**
- Website links **7**
- Black list numbers **6**
- Blocklist **6**
- Firmwares **6**
- FXS **6**
- Inbound rules **6**
- Parameters **6**
- Playlists **6**
- Remote archiving settings **6**
- SBCS **6**
- Service principals **6**
- Sip devices **6**
- DN properties **5**
- FXS templates **5**
- Holidays **5**
- Phone templates **5**
- Scheduled reports **5**
- Tenant properties **5**
- Trunk templates **5**
- Data connector settings **4**
- Device infos **4**
- Email template **4**
- Fax server settings **4**
- Firewall **4**
- Microsoft365 teams integration **4**
- O auth clients **4**
- Peers **4**
- Report call log data **4**
- Activity log **3**
- CRM templates **3**
- Custom prompts **3**
- Google settings **3**
- Mail settings **3**
- MCP servers **3**
- Network settings **3**
- Syslog settings **3**
- Active calls **2**
- Amazon integration settings **2**
- Anti hacking settings **2**
- Call cost settings **2**
- Call parking settings **2**
- Call types settings **2**
- CDR settings **2**
- Chat log settings **2**
- Codecs settings **2**
- Console restrictions **2**
- Country codes **2**
- Dial code settings **2**
- E164 settings **2**
- Emergency geo locations **2**
- Emergency notifications settings **2**
- Event logs **2**
- General settings for apps **2**
- General settings for PBX **2**
- Hotel rooms **2**
- Hotel services **2**
- Logging settings **2**
- Music on hold settings **2**
- My tokens **2**
- Notification settings **2**
- Office hours **2**
- Phone book settings **2**
- Phone logos **2**
- Phones settings **2**
- Secure sip settings **2**
- Security tokens **2**
- Call flow scripts **1**
- Call history view **1**
- Chat history view **1**
- Chat messages history view **1**
- Countries **1**
- Did numbers **1**
- Last CDR and chat message timestamp **1**
- Network interfaces **1**
- Report abandoned chats statistics **1**
- Report abandoned queue calls **1**
- Report agent login history **1**
- Report agents in queue statistics **1**
- Report audit log **1**
- Report average queue waiting time **1**
- Report breaches sla **1**
- Report call cost by extension group **1**
- Report call distribution **1**
- Report chat log **1**
- Report detailed queue statistics **1**
- Report extension statistics **1**
- Report extension statistics by group **1**
- Report extensions statistics by ring groups **1**
- Report inbound calls **1**
- Report inbound rules **1**
- Report outbound calls **1**
- Report queue agents chat statistics **1**
- Report queue agents chat statistics totals **1**
- Report queue an un calls **1**
- Report queue answered calls by wait time **1**
- Report queue callbacks **1**
- Report queue chat performance **1**
- Report queue failed callbacks **1**
- Report queue performance overview **1**
- Report queue performance totals **1**
- Report ring group statistics **1**
- Report statistic sla **1**
- Report team queue general statistics **1**
- Report user activity **1**

Top actions

## The 3CX API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 17 of 3CX's 17 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `three_cx.users.list` List Users | Get entities from Users. | read | `identity.user.list` 474 connectors |
| `three_cx.groups.list` List Groups | Get entities from Groups. | read | `identity.group.list` 262 connectors |
| `three_cx.contacts.list` List Contacts | Get entities from Contacts. | read | `crm.contact.list` 177 connectors |
| `three_cx.users.create` Create a Users record | Add new entity to Users. | write | `identity.user.create` 262 connectors |
| `three_cx.groups.create` Create a Groups record | Add new entity to Groups. | write | `identity.group.create` 205 connectors |
| `three_cx.call_history_view.list` List Call History View | Get entities from CallHistoryView. | read | `comm.call.list` 44 connectors |
| `three_cx.users.delete` Delete a Users record | Delete entity from Users. | destructive | `identity.user.delete` 253 connectors |
| `three_cx.contacts.create` Create a Contacts record | Add new entity to Contacts. | write | `crm.contact.create` 161 connectors |
| `three_cx.callcontrol.makecall` Make a call from a DN | Start a call from a DN to a destination; with a single registered device the call starts from it, otherwise the legacy MakeCall service is used. | write | `comm.call.create` 38 connectors |
| `three_cx.queues.list` List Queues | Get entities from Queues. | read | this connector |
| `three_cx.active_calls.list` List Active Calls | Get entities from ActiveCalls. | read | this connector |
| `three_cx.defs.get` Get Defs | Get Defs. | read | this connector |

Try it

## Prompts to paste into Claude.

Each one names the 3CX actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Find the 3CX contacts with no email address, so we can clean them up.
   calls `three_cx.contacts.list`
2. Write write
   Create a Users record in 3CX. Show me exactly what you will send before you save it.
   calls `three_cx.users.create`
3. Across systems read
   Which contacts are in both 3CX and NetSuite, and how many are in only one of them?
   calls `three_cx.contacts.list` `netsuite.views.contacts`

Across your systems

## 3CX, joined to the rest of your business.

One `ask` fetches from 3CX and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- Which contacts are in both 3CX and NetSuite, and how many are in only one of them?
  `three_cx.contacts.list` + `netsuite.views.contacts`, on `crm.contact` · [NetSuite](https://actionlake.com/connectors/netsuite)
- Which contacts are in both 3CX and HubSpot CRM, and how many are in only one of them?
  `three_cx.contacts.list` + `hubspot_crm.contacts.list`, on `crm.contact` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)

Also mapped by other connectors `identity.user` **517** `identity.group` **239** `crm.contact` **192** `comm.call` **33**

ask

```
ask {
  intent: "which contacts are in both 3CX and NetSuite, and how many are in only one of them",
  steps: [
    { action: "three_cx.contacts.list", as: "people", input: {}, limit: 100, max_pages: 5 },
    { action: "netsuite.views.contacts", as: "people2", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "people",
        right: "people2",
        on: "crm.contact",
        group_by: "people.email",
        select: ["people.email", "count(people2.id) as in_netsuite"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for 3CX

## Destructive actions wait for a yes.

90 3CX actions are destructive. The first 10:

- Delete a Users record `three_cx.users.delete`
- Delete a Groups record `three_cx.groups.delete`
- Delete a Contacts record `three_cx.contacts.delete`
- Delete a Fax record `three_cx.fax.delete`
- Delete a Fxs record `three_cx.fxs.delete`
- Delete a Sbcs record `three_cx.sbcs.delete`
- Delete a Queues record `three_cx.queues.delete`
- Delete a Trunks record `three_cx.trunks.delete`
- Delete a Backups record `three_cx.backups.delete`
- Delete a Holidays record `three_cx.holidays.delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do three_cx.users.delete confirm_policy: **human**

Delete a Users record?

**intent:** the user asked me to delete a Users record

run suspended · waiting for a named person · key _three-cx-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "three-cx-agent",
  allowed_actions: ["three_cx.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "three_cx.users.delete", approver: "lead@example.com" },
    { match: "three_cx.groups.delete", approver: "lead@example.com" },
    { match: "three_cx.contacts.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to 3CX only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What 3CX costs on actionlake.

Every 3CX action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call 3CX refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 576 3CX actions
- 576 actions page each page of a long list is one call
- 276 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every 3CX action.

576 actions by area: the id your agent calls, what it does, and its effect.

**Users 33**

- `three_cx.users.create` Create a Users record write
- `three_cx.users.get` Get a Users record read
- `three_cx.users.list` List Users read
- `three_cx.users.update` Update a Users record write
- `three_cx.users.batch_delete` Batch Delete (Users) destructive
- `three_cx.users.bulk_update` Bulk Update (Users) write
- and 27 more in this area

**Backups 18**

- `three_cx.backups.backup` Backup (Backups) write
- `three_cx.backups.get_failover_scripts` Get Failover Scripts (Backups) read
- `three_cx.backups.get_sftp_host_key` Get Sftp Host Key (Backups) read
- `three_cx.backups.list` List Backups read
- `three_cx.backups.delete` Delete a Backups record destructive
- `three_cx.backups.get_backup_extras` Get Backup Extras (Backups) read
- and 12 more in this area

**System status 18**

- `three_cx.system_status.get` Get System Status read
- `three_cx.system_status.my_phone_request_id_telemetry` My Phone Request Id Telemetry (System Status) read
- `three_cx.system_status.network_telemetry` Network Telemetry (System Status) read
- `three_cx.system_status.request_help` Request Help (System Status) write
- `three_cx.system_status.api_token` API Token (System Status) read
- `three_cx.system_status.get_remote_access_status` Get Remote Access Status (System Status) read
- and 12 more in this area

**Trunks 17**

- `three_cx.trunks.create` Create a Trunks record write
- `three_cx.trunks.get_provider_phones` Get Provider Phones (Trunks) read
- `three_cx.trunks.list` List Trunks read
- `three_cx.trunks.run_analysis` Run Analysis (Trunks) write
- `three_cx.trunks.delete` Delete a Trunks record destructive
- `three_cx.trunks.finalize_trunk_provisioning` Finalize Trunk Provisioning (Trunks) write
- and 11 more in this area

**AI settings 15**

- `three_cx.ai_settings.add_vector_store_files` Add Vector Store Files (AI Settings) write
- `three_cx.ai_settings.create_vector_store` Create Vector Store (AI Settings) write
- `three_cx.ai_settings.get` Get AI Settings read
- `three_cx.ai_settings.get_ai_resources` Get AI Resources (AI Settings) read
- `three_cx.ai_settings.batch_delete_files` Batch Delete Files (AI Settings) destructive
- `three_cx.ai_settings.delete_open_ai_file` Delete Open Ai File (AI Settings) destructive
- and 9 more in this area

**Callcontrol 15**

- `three_cx.callcontrol.devices_list` List a DN's devices read
- `three_cx.callcontrol.devices_makecall` Make a call from a specific device write
- `three_cx.callcontrol.list` List monitored DN call states read
- `three_cx.callcontrol.makecall` Make a call from a DN write
- `three_cx.callcontrol.devices_get` Get a DN device read
- `three_cx.callcontrol.get` Get a DN's call state read
- and 9 more in this area

**Contacts 13**

- `three_cx.contacts.create` Create a Contacts record write
- `three_cx.contacts.get` Get a Contacts record read
- `three_cx.contacts.list` List Contacts read
- `three_cx.contacts.update` Update a Contacts record write
- `three_cx.contacts.create_contact_by_number` Create Contact By Number (Contacts) write
- `three_cx.contacts.delete` Delete a Contacts record destructive
- and 7 more in this area

**Groups 13**

- `three_cx.groups.create` Create a Groups record write
- `three_cx.groups.get` Get a Groups record read
- `three_cx.groups.list` List Groups read
- `three_cx.groups.update` Update a Groups record write
- `three_cx.groups.delete` Delete a Groups record destructive
- `three_cx.groups.delete_company_by_id` Delete Company By Id (Groups) destructive
- and 7 more in this area

**PBX 12**

- `three_cx.pbx.get_directory_info` Get Directory Info read
- `three_cx.pbx.get_prompt_set_updates` Get Prompt Set Updates read
- `three_cx.pbx.get_server_crm_updates` Get Server Crm Updates read
- `three_cx.pbx.get_update_details` Get Update Details read
- `three_cx.pbx.get_update_settings` Get Update Settings read
- `three_cx.pbx.get_updates` Get Updates read
- and 6 more in this area

**Conference settings 11**

- `three_cx.conference_settings.get_mcu_rows` Get MCU Rows (Conference Settings) read
- `three_cx.conference_settings.get_onboard_mcu_data` Get Onboard Mcu Data (Conference Settings) read
- `three_cx.conference_settings.get_onboard_meetings` Get Onboard Meetings (Conference Settings) read
- `three_cx.conference_settings.get_web_meeting_zones` Get Web Meeting Zones (Conference Settings) read
- `three_cx.conference_settings.delete_api_key` Delete Api Key (Conference Settings) destructive
- `three_cx.conference_settings.generate_api_key` Generate Api Key (Conference Settings) read
- and 5 more in this area

**Defs 11**

- `three_cx.defs.codecs_list` List Defs Codecs read
- `three_cx.defs.gateway_parameter_values_list` List Defs Gateway Parameter Values read
- `three_cx.defs.gateway_parameters_list` List Defs Gateway Parameters read
- `three_cx.defs.get` Get Defs read
- `three_cx.defs.get_license_parameters` Get License Parameters (Defs) read
- `three_cx.defs.get_routes` Get Routes (Defs) read
- and 5 more in this area

**Microsoft365 integration 11**

- `three_cx.microsoft365_integration.get_m365_groups` Get M365 Groups (Microsoft365 Integration) read
- `three_cx.microsoft365_integration.get_m365_users` Get M365 Users (Microsoft365 Integration) read
- `three_cx.microsoft365_integration.get_users_by_principal_names` Get Users By Principal Names (Microsoft365 Integration) read
- `three_cx.microsoft365_integration.test_presence` Test Presence (Microsoft365 Integration) write
- `three_cx.microsoft365_integration.authorize_presence` Authorize Presence (Microsoft365 Integration) write
- `three_cx.microsoft365_integration.deauthorize_presence` Deauthorize Presence (Microsoft365 Integration) destructive
- and 5 more in this area

**Prompt sets 11**

- `three_cx.prompt_sets.copy` Copy (Prompt Sets) write
- `three_cx.prompt_sets.list` List Prompt Sets read
- `three_cx.prompt_sets.play_prompt` Play Prompt (Prompt Sets) write
- `three_cx.prompt_sets.prompts_list` List Prompts of a Prompt Sets read
- `three_cx.prompt_sets.delete` Delete a Prompt Sets record destructive
- `three_cx.prompt_sets.get` Get a Prompt Sets record read
- and 5 more in this area

**Queues 10**

- `three_cx.queues.agents_list` List Agents of a Queues read
- `three_cx.queues.create` Create a Queues record write
- `three_cx.queues.list` List Queues read
- `three_cx.queues.managers_list` List Managers of a Queues read
- `three_cx.queues.delete` Delete a Queues record destructive
- `three_cx.queues.get` Get a Queues record read
- and 4 more in this area

**My group 9**

- `three_cx.my_group.get` Get My Group read
- `three_cx.my_group.get_my_group_partner_info` Get My Group Partner Info (My Group) read
- `three_cx.my_group.members_list` List My Group Members read
- `three_cx.my_group.rights_list` List My Group Rights read
- `three_cx.my_group.get_restrictions` Get Restrictions (My Group) read
- `three_cx.my_group.link_my_group_partner` Link My Group Partner (My Group) write
- and 3 more in this area

**Recordings 9**

- `three_cx.recordings.archive` Archive (Recordings) write
- `three_cx.recordings.bulk_recordings_archive` Bulk Recordings Archive (Recordings) write
- `three_cx.recordings.list` List Recordings read
- `three_cx.recordings.transcribe_recordings` Transcribe Recordings (Recordings) write
- `three_cx.recordings.bulk_recordings_delete` Bulk Recordings Delete (Recordings) destructive
- `three_cx.recordings.get_recording_repository_settings` Get Recording Repository Settings (Recordings) read
- and 3 more in this area

**Voicemail settings 9**

- `three_cx.voicemail_settings.create_converter_configuration` Create Converter Configuration (Voicemail Settings) write
- `three_cx.voicemail_settings.get` Get Voicemail Settings read
- `three_cx.voicemail_settings.get_configured_converters` Get Configured Converters (Voicemail Settings) read
- `three_cx.voicemail_settings.get_transcribe_languages` Get Transcribe Languages (Voicemail Settings) read
- `three_cx.voicemail_settings.delete_all_user_voicemails` Delete All User Voicemails (Voicemail Settings) destructive
- `three_cx.voicemail_settings.delete_converter_configuration` Delete Converter Configuration (Voicemail Settings) destructive
- and 3 more in this area

**Fax 8**

- `three_cx.fax.create` Create a Fax record write
- `three_cx.fax.get` Get a Fax record read
- `three_cx.fax.get_by_number` Get a Fax record by number read
- `three_cx.fax.list` List Fax read
- `three_cx.fax.bulk_fax_delete` Bulk Fax Delete (Fax) destructive
- `three_cx.fax.delete` Delete a Fax record destructive
- and 2 more in this area

**Outbound rules 8**

- `three_cx.outbound_rules.create` Create an Outbound Rules record write
- `three_cx.outbound_rules.get` Get an Outbound Rules record read
- `three_cx.outbound_rules.get_emergency_outbound_rules` Get Emergency Outbound Rules (Outbound Rules) read
- `three_cx.outbound_rules.list` List Outbound Rules read
- `three_cx.outbound_rules.delete` Delete an Outbound Rules record destructive
- `three_cx.outbound_rules.move_up_down` Move Up Down (Outbound Rules) write
- and 2 more in this area

**Receptionists 8**

- `three_cx.receptionists.create` Create a Receptionists record write
- `three_cx.receptionists.forwards_list` List Forwards of a Receptionists read
- `three_cx.receptionists.get` Get a Receptionists record read
- `three_cx.receptionists.list` List Receptionists read
- `three_cx.receptionists.delete` Delete a Receptionists record destructive
- `three_cx.receptionists.get_by_number` Get a Receptionists record by number read
- and 2 more in this area

**Ring groups 8**

- `three_cx.ring_groups.create` Create a Ring Groups record write
- `three_cx.ring_groups.get` Get a Ring Groups record read
- `three_cx.ring_groups.list` List Ring Groups read
- `three_cx.ring_groups.members_list` List Members of a Ring Groups read
- `three_cx.ring_groups.delete` Delete a Ring Groups record destructive
- `three_cx.ring_groups.get_by_number` Get a Ring Groups record by number read
- and 2 more in this area

**Services 8**

- `three_cx.services.enable` Enable (Services) write
- `three_cx.services.garbage_collect` Garbage Collect (Services) write
- `three_cx.services.list` List Services read
- `three_cx.services.start` Start (Services) write
- `three_cx.services.disable` Disable (Services) destructive
- `three_cx.services.restart` Restart (Services) destructive
- and 2 more in this area

**Call flow apps 7**

- `three_cx.call_flow_apps.create` Create a Call Flow Apps record write
- `three_cx.call_flow_apps.get` Get a Call Flow Apps record read
- `three_cx.call_flow_apps.get_files` Get Files (Call Flow Apps) read
- `three_cx.call_flow_apps.list` List Call Flow Apps read
- `three_cx.call_flow_apps.delete` Delete a Call Flow Apps record destructive
- `three_cx.call_flow_apps.delete_file` Delete File (Call Flow Apps) destructive
- and 1 more in this area

**CRM integration 7**

- `three_cx.crm_integration.get` Get Crm Integration read
- `three_cx.crm_integration.get_crm_template_source` Get Crm Template Source (Crm Integration) read
- `three_cx.crm_integration.get_o_auth` Get O Auth (Crm Integration) read
- `three_cx.crm_integration.test` Test (Crm Integration) write
- `three_cx.crm_integration.delete_crm_contacts` Delete Crm Contacts (Crm Integration) destructive
- `three_cx.crm_integration.set_o_auth_state` Set O Auth State (Crm Integration) write
- and 1 more in this area

**License status 7**

- `three_cx.license_status.edit_license_info` Edit License Info (License Status) write
- `three_cx.license_status.get` Get License Status read
- `three_cx.license_status.link_partner` Link Partner (License Status) write
- `three_cx.license_status.partner_info` Partner Info (License Status) read
- `three_cx.license_status.refresh_license_status` Refresh License Status (License Status) write
- `three_cx.license_status.replace_license_key` Replace License Key (License Status) write
- and 1 more in this area

**My user 7**

- `three_cx.my_user.forwarding_profiles_list` List My User Forwarding Profiles read
- `three_cx.my_user.greetings_list` List My User Greetings read
- `three_cx.my_user.groups_list` List My User Groups read
- `three_cx.my_user.issue_download_ticket` Issue Download Ticket (My User) write
- `three_cx.my_user.generate_prov_link` Generate Prov Link (My User) read
- `three_cx.my_user.get` Get My User read
- and 1 more in this area

**Parkings 7**

- `three_cx.parkings.create` Create a Parkings record write
- `three_cx.parkings.get` Get a Parkings record read
- `three_cx.parkings.groups_list` List Groups of a Parkings read
- `three_cx.parkings.list` List Parkings read
- `three_cx.parkings.delete` Delete a Parkings record destructive
- `three_cx.parkings.get_by_number` Get a Parkings record by number read
- and 1 more in this area

**Website links 7**

- `three_cx.website_links.create` Create a Website Links record write
- `three_cx.website_links.get` Get a Website Links record read
- `three_cx.website_links.list` List Website Links read
- `three_cx.website_links.validate_link` Validate Link (Website Links) read
- `three_cx.website_links.bulk_links_delete` Bulk Links Delete (Website Links) destructive
- `three_cx.website_links.delete` Delete a Website Links record destructive
- and 1 more in this area

**Black list numbers 6**

- `three_cx.black_list_numbers.create` Create a Black List Numbers record write
- `three_cx.black_list_numbers.get` Get a Black List Numbers record read
- `three_cx.black_list_numbers.list` List Black List Numbers read
- `three_cx.black_list_numbers.update` Update a Black List Numbers record write
- `three_cx.black_list_numbers.bulk_numbers_delete` Bulk Numbers Delete (Black List Numbers) destructive
- `three_cx.black_list_numbers.delete` Delete a Black List Numbers record destructive

**Blocklist 6**

- `three_cx.blocklist.create` Create a Blocklist record write
- `three_cx.blocklist.get` Get a Blocklist record read
- `three_cx.blocklist.list` List Blocklist read
- `three_cx.blocklist.update` Update a Blocklist record write
- `three_cx.blocklist.bulk_ips_delete` Bulk Ips Delete (Blocklist) destructive
- `three_cx.blocklist.delete` Delete a Blocklist record destructive

Firmwares **6** FXS **6** Inbound rules **6** Parameters **6** Playlists **6** Remote archiving settings **6** SBCS **6** Service principals **6** Sip devices **6** DN properties **5** FXS templates **5** Holidays **5** Phone templates **5** Scheduled reports **5** Tenant properties **5** Trunk templates **5** Data connector settings **4** Device infos **4** Email template **4** Fax server settings **4** Firewall **4** Microsoft365 teams integration **4** O auth clients **4** Peers **4** Report call log data **4** Activity log **3** CRM templates **3** Custom prompts **3** Google settings **3** Mail settings **3** MCP servers **3** Network settings **3** Syslog settings **3** Active calls **2** Amazon integration settings **2** Anti hacking settings **2** Call cost settings **2** Call parking settings **2** Call types settings **2** CDR settings **2** Chat log settings **2** Codecs settings **2** Console restrictions **2** Country codes **2** Dial code settings **2** E164 settings **2** Emergency geo locations **2** Emergency notifications settings **2** Event logs **2** General settings for apps **2** General settings for PBX **2** Hotel rooms **2** Hotel services **2** Logging settings **2** Music on hold settings **2** My tokens **2** Notification settings **2** Office hours **2** Phone book settings **2** Phone logos **2** Phones settings **2** Secure sip settings **2** Security tokens **2** Call flow scripts **1** Call history view **1** Chat history view **1** Chat messages history view **1** Countries **1** Did numbers **1** Last CDR and chat message timestamp **1** Network interfaces **1** Report abandoned chats statistics **1** Report abandoned queue calls **1** Report agent login history **1** Report agents in queue statistics **1** Report audit log **1** Report average queue waiting time **1** Report breaches sla **1** Report call cost by extension group **1** Report call distribution **1** Report chat log **1** Report detailed queue statistics **1** Report extension statistics **1** Report extension statistics by group **1** Report extensions statistics by ring groups **1** Report inbound calls **1** Report inbound rules **1** Report outbound calls **1** Report queue agents chat statistics **1** Report queue agents chat statistics totals **1** Report queue an un calls **1** Report queue answered calls by wait time **1** Report queue callbacks **1** Report queue chat performance **1** Report queue failed callbacks **1** Report queue performance overview **1** Report queue performance totals **1** Report ring group statistics **1** Report statistic sla **1** Report team queue general statistics **1** Report user activity **1**

This index shows a sample of each area. All 576 actions, with their inputs and prices, are in the [catalogue](https://actionlake.com/console/catalogue), which a free sandbox key can search.

Questions

## The 3CX MCP server, answered.

**Is there a 3CX MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 576 3CX actions across users, backups, system status and trunks, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by 3CX.

**What do I need to connect 3CX?**

Client ID of the 3CX API service principal (Admin Console > Integrations > API; the DN you gave it) and API key shown once when the service principal was created. Plus your host. The free call account { op: "connections.requirements", service: "three_cx" } lists exactly what to paste.

**Can an AI agent delete or change things in 3CX?**

Only if its key allows it, and only with an explicit confirmation. 90 3CX actions are destructive, including delete a Users record, delete a Groups record and delete a Contacts record. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my 3CX API limit?**

actionlake paces every call to the limits in the 3CX service file: 60 calls a minute per connection. Repeated reads are answered from cache (276 3CX actions can be), which never reaches 3CX.

**What does a 3CX action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (576 3CX actions page). Cache hits, searches, dry runs and calls 3CX refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which 3CX API does it cover?**

The 3CX XAPI v1 (OData, PBX 20.0.10.1479) and Call Control API (v20) at your 3CX instance's API base URL, which you enter when connecting. It is built from 3CX's documentation as read on 23 October 2026. 576 actions in 131 areas, each one in the signed service file (version 1.0.0).

**Can I combine 3CX with my other systems?**

Yes. ask joins 3CX to NetSuite or HubSpot CRM on the same customer and returns the answer rather than every row. 3CX maps crm.contact, which 192 other connectors also map.

**Does actionlake keep my 3CX data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your 3CX credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like 3CX

Shares the most action names with

- [Domotz 15](https://actionlake.com/connectors/domotz)
- [NetBox 15](https://actionlake.com/connectors/netbox)
- [Site24x7 10](https://actionlake.com/connectors/site24x7)
- [Commvault Cloud 10](https://actionlake.com/connectors/commvault-cloud)
- [Delinea Secret Server 10](https://actionlake.com/connectors/delinea-secret-server)
- [Cato Networks SASE 9](https://actionlake.com/connectors/cato-networks-sase)

Joins with, on shared entities

- [Microsoft Dynamics 365 4](https://actionlake.com/connectors/microsoft-dynamics-365)
- [Close 4](https://actionlake.com/connectors/close)
- [Outreach 4](https://actionlake.com/connectors/outreach)
- [Intercom 4](https://actionlake.com/connectors/intercom)
- [Salesloft 4](https://actionlake.com/connectors/salesloft)
- [Recruit CRM 4](https://actionlake.com/connectors/recruit-crm)

Browse

- [All MSP & PSA connectors](https://actionlake.com/connectors/category/msp-and-psa)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by 3CX; the name is the vendor's own. Counts are from the 3CX service file, version 1.0.0.

## Give your agent 3CX today.

[Connect 3CX free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/3cx
More: https://actionlake.com/llms.txt
