mcpbeat Sign in

Wavix MCP Server

answering

Wavix is answering right now. Last checked 5 min ago. It exposes 115 tools. Last commit 15 Sep 2026.

Hosted MCP server for the Wavix telecom platform: SMS, voice, 2FA, SIP, numbers, 10DLC, CDRs.

Uptime history 51 days of history · worst day 98%
51 days agonow
100.0%
Uptime 24h
91 of 91 checks
115
Tools
read from the server
168 ms
Response time
average over 24h
3
Stars
last commit 15 Sep 2026

What changed 225

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 8 September 2026. No other catalogue keeps this.

8 Sep 109 tool descriptions were rewritten api_keys_create, api_keys_delete, api_keys_list and 106 more
8 Sep 100 tools changed the parameters they ask for api_keys_create, api_keys_delete, api_keys_list and 97 more
8 Sep 11 tools disappeared api_keys_activate, api_keys_deactivate, billing_invoices_download and 8 more
8 Sep 4 tools appeared api_keys_update, call_recording_get_by_call, cdrs_transcriptions and 1 more
8 Sep a tool changed version

Tools have disappeared from this server

A tool that vanishes takes a piece of your agent with it, and the change arrives silently. Watch this server and every such change lands in your inbox.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 5 min ago.

run in your terminal
claude mcp add mcp --transport http https://mcp.wavix.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.wavix.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://mcp.wavix.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.wavix.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://mcp.wavix.com/mcp"
    }
  }
}

This endpoint answered with an authorization challenge. The server is running, and it signs you in through your browser: there is no API key to paste.

Available tools 115

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

ten
ten_dlc_brand_appeals_create
Submits an appeal of a 10DLC Brand's identity verification, with one or more `appeal_categories` (`VERIFY_TAX_ID`, `VERIFY_NON_PROFIT`, or `VERIFY_GOVERNMENT`) plus supporting `evidence`. Use when a Brand is UNVERIFIED (or verified but missing tax-exempt or government-entity status) and the user wants to contest the identity result. Creates and submits an appeal for review. Requires the `campaigns:write` scope, the Brand's `brand_id`, one or more `appeal_categories`, and `evidence` supporting the appeal.
ten_dlc_brand_appeals_list
Lists the identity verification appeals submitted for the 10DLC Brand identified by `brand_id`. Use to review a Brand's appeal history or check appeal status. Read-only; no side effects. Requires the `campaigns:read` scope and the Brand's `brand_id`.
ten_dlc_brand_campaigns_create
Registers a new 10DLC Campaign under the 10DLC Brand identified by `brand_id`, with its use case, message samples, opt-in/opt-out/help keywords, and content flags. Use when the user wants to create a 10DLC Campaign for A2P messaging under an existing Brand. Creates a new 10DLC Campaign under the Brand; set `mock` to `true` to create a test Campaign that cannot send production traffic. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, and a `brand_id` whose Brand has a verified identity status.
ten_dlc_brand_campaigns_delete
Deletes the 10DLC Campaign identified by `campaign_id` under the 10DLC Brand `brand_id`. Use when the user wants to remove a 10DLC Campaign they no longer need and has confirmed which one. Permanent and irreversible; once deleted, the phone numbers associated with the Campaign can no longer be used as Sender IDs. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, and the `brand_id` and `campaign_id`.
ten_dlc_brand_campaigns_get
Retrieves the 10DLC Campaign identified by `campaign_id` under the 10DLC Brand `brand_id`, including its registration details and status. Use to inspect one Campaign the account already has. Read-only; no side effects. Requires the `campaigns:read` scope, the 10DLC feature enabled for the account, and the `brand_id` and `campaign_id`.
ten_dlc_brand_campaigns_list
Lists the 10DLC Campaigns registered under the 10DLC Brand identified by `brand_id`, filterable by name, use case, status, mock flag, and creation date. Use to review or find Campaigns belonging to one specific Brand. Read-only; no side effects. Requires the `campaigns:read` scope, the 10DLC feature enabled for the account, and the `brand_id`; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
ten_dlc_brand_campaigns_update
Updates the 10DLC Campaign identified by `campaign_id` under the 10DLC Brand `brand_id`; only the fields you supply are changed. Use when the user wants to modify an existing Campaign's details, such as its name, samples, or opt-in/opt-out settings. Changes the stored Campaign; only the provided fields are overwritten. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, and the `brand_id` and `campaign_id`; if set, `usecase` must be one of `CUSTOMER_CARE`, `MARKETING`, `ACCOUNT_NOTIFICATION`, `FRAUD_ALERT`, `PUBLIC_SERVICE_ANNOUNCEMENT`, or `SECURITY_ALERT`.
ten_dlc_brand_evidence_delete
Deletes a Brand evidence file from a 10DLC Brand by its evidence `id`. Use when the user wants to remove a previously uploaded evidence file. Permanent and irreversible; once deleted the evidence file cannot be recovered. Requires the `campaigns:write` scope, the Brand's `brand_id`, and the evidence file's `id`.
ten_dlc_brand_evidence_get
Get a download URL for a 10DLC brand evidence file. Returns ``{download_url, content_type, status_code, note}`` instead of the binary file stream. Fetch ``download_url`` to obtain the file.
ten_dlc_brand_evidence_list
Lists the evidence files uploaded for the 10DLC Brand identified by `brand_id`. Use to review which evidence files are attached to a Brand, for example before submitting an appeal. Read-only; no side effects. Requires the `campaigns:read` scope and the Brand's `brand_id`.
ten_dlc_brand_usecase_qualify
Returns the qualification results for a 10DLC Brand and a named `use_case`, including MNO-specific attributes, restrictions, and fees. Use to check whether a Brand qualifies for a use case (such as `MARKETING`, `2FA`, or `CUSTOMER_CARE`) and at what fees before registering a 10DLC Campaign. Read-only; no side effects. Requires the `campaigns:read` scope, the Brand's `brand_id`, and a `use_case`; the Brand must already be scored and submitted to TCR.
ten_dlc_brand_vetting_appeals_create
Submits an appeal of a 10DLC Brand's external vetting, with one or more `appeal_categories` (`VERIFY_TAX_ID`, `VERIFY_NON_PROFIT`, `VERIFY_GOVERNMENT`, or `LOW_SCORE`) and a list of supporting `evidence` IDs. Use when the user wants to contest an external vetting result for a Brand. Creates and submits a vetting appeal for review. Requires the `campaigns:write` scope, the Brand's `brand_id`, the `appeal_categories`, and the `evidence` IDs; a `VETTED_VERIFIED` Brand cannot request the `VERIFY_TAX_ID` category.
ten_dlc_brand_vetting_appeals_list
Lists the external vetting appeals for the 10DLC Brand identified by `brand_id`. Use to review a Brand's vetting-appeal history or check appeal status. Read-only; no side effects. Requires the `campaigns:read` scope and the Brand's `brand_id`.
ten_dlc_brand_vettings_create
Requests external vetting for a 10DLC Brand from a vetting provider (`AEGIS`, `CV`, or `WMC`) at a `vetting_class` of `STANDARD` or `ENHANCED`. Use when the user wants third-party vetting to raise a Brand's trust standing. Charges a 10DLC brand vetting fee (Standard or Enhanced) to the account balance; fails with an insufficient-funds error when the balance cannot cover it. Requires the `campaigns:write` scope, the Brand's `brand_id`, the provider `evp_id`, and the `vetting_class`.
ten_dlc_brand_vettings_import
Imports an existing external vetting record into the 10DLC Brand identified by `brand_id`. Use when the account already holds a vetting result from a provider and wants to attach it to the Brand. Records the imported vetting against the Brand. Requires the `campaigns:write` scope, the Brand's `brand_id`, the provider `evp_id`, the `vetting_id`, and the `vetting_token`.
ten_dlc_brand_vettings_list
Lists the external vettings for the 10DLC Brand identified by `brand_id`. Use to review which vettings a Brand has and their results. Read-only; no side effects. Requires the `campaigns:read` scope and the Brand's `brand_id`.
ten_dlc_brands_create
Registers a 10DLC Brand, submitting the company's legal identity data — `ein_taxid` (EIN/Tax ID), legal company name, `entity_type`, `vertical`, and business contact and address — to The Campaign Registry (TCR) for identity verification. Use when the user wants to register a Brand as the first step toward running 10DLC Campaigns. Charges a 10DLC brand registration fee on successful submission; fails with an insufficient-funds error when the balance cannot cover it. Requires the `campaigns:write` scope and the required identity fields; only Brands in `VERIFIED` or `VETTED_VERIFIED` status can go on to register 10DLC Campaigns.
ten_dlc_brands_delete
Deletes the 10DLC Brand identified by `brand_id`. Use when the user wants to remove a Brand the account no longer needs. Permanent and irreversible; a Brand with active 10DLC Campaigns cannot be deleted. Requires the `campaigns:write` scope and the Brand's `brand_id`.
ten_dlc_brands_get
Retrieves the 10DLC Brand identified by `brand_id`, including its identity verification status and registration identity data (EIN/Tax ID, legal company name, and business contact details). Use to inspect one Brand the account already has. Read-only; no side effects. Requires the `campaigns:read` scope and the Brand's `brand_id`.
ten_dlc_brands_list
Lists the account's 10DLC Brands, filterable by DBA name, legal company name, entity type, identity verification status, registration country, EIN/Tax ID, creation date, and the mock and deleted flags. Use to find Brands or review their registration status. Read-only; no side effects. Requires the `campaigns:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
ten_dlc_brands_update
Updates the 10DLC Brand identified by `brand_id`. Use to correct or change a Brand's details before it is verified. Changing identity fields (`ein_taxid`, `ein_taxid_country`, or `entity_type`) resets the Brand status to `UNVERIFIED` and triggers automatic re-submission to TCR. Requires the `campaigns:write` scope and the Brand's `brand_id`; a Brand in `VETTED_VERIFIED` status or with active 10DLC Campaigns cannot be updated.
ten_dlc_campaign_numbers_link
Links a phone number, in E.164 format, to the 10DLC Campaign identified by `campaign_id` under the 10DLC Brand `brand_id`. Use when the user wants to associate a number with a Campaign so it can send A2P traffic. Links the number to the Campaign; Wavix automatically creates a Sender ID for it once the number is approved. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, and the `brand_id`, `campaign_id`, and `number`.
ten_dlc_campaign_numbers_list
Lists the phone numbers linked to the 10DLC Campaign identified by `campaign_id` under the 10DLC Brand `brand_id`. Use to review which numbers are associated with a Campaign. Read-only; no side effects. Requires the `campaigns:read` scope, the 10DLC feature enabled for the account, and the `brand_id` and `campaign_id`.
ten_dlc_campaign_numbers_unlink
Unlinks a phone number, in E.164 format, from the 10DLC Campaign identified by `campaign_id` under the 10DLC Brand `brand_id`. Use when the user wants to remove a number from a Campaign and has confirmed which one. Permanent and irreversible; the Sender ID associated with the number is also deleted. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, and the `brand_id`, `campaign_id`, and `number`.
ten_dlc_campaigns_list
Lists the 10DLC Campaigns across all 10DLC Brands on the authenticated account, filterable by name, use case, status, mock flag, and creation date. Use to review or find Campaigns account-wide, rather than under one specific Brand. Read-only; no side effects. Requires the `campaigns:read` scope and the 10DLC feature enabled for the account; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
ten_dlc_campaigns_nudge
Requests carrier action on a pending or rejected 10DLC Campaign identified by `campaign_id` under the 10DLC Brand `brand_id`, using `nudge_intent` — `REVIEW` to request review of a pending Campaign or `APPEAL_REJECTION` to appeal a rejected one. Use when a Campaign is stuck pending or was rejected and the user wants to prompt another review. Submits the review or appeal request; no Campaign data is changed. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, the `brand_id` and `campaign_id`, and a `description` of the request; the Campaign must be at least 72 hours old, and only one nudge is allowed per Campaign every 24 hours.
ten_dlc_subscriptions_create
Registers a webhook callback URL to receive Wavix 10DLC event notifications for a chosen event category. Use when the user wants to be notified of 10DLC brand, campaign, or number changes over a webhook. Creates a 10DLC event subscription delivering events in the chosen category to the given URL. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, a `url`, and a `subscription_category` of `brand`, `campaign`, or `number`.
ten_dlc_subscriptions_delete
Deletes the 10DLC event subscription for the specified event category. Use when the user wants to stop receiving 10DLC webhook notifications for that category. Permanent and irreversible; event notifications for that category stop being delivered. Requires the `campaigns:write` scope, the 10DLC feature enabled for the account, and a `subscription_category`.
ten_dlc_subscriptions_list
Lists the 10DLC event subscriptions registered for the authenticated account, each with its event category and callback URL. Use to review which 10DLC webhook subscriptions are active. Read-only; no side effects. Requires the `campaigns:read` scope and the 10DLC feature enabled for the account.
call
call_control_answer
Answers the inbound call identified by `id`, optionally starting call recording, post-call transcription, or live media streaming to a WebSocket `stream_url` on answer. Use when an inbound call must be picked up before audio can be played, input collected, or its media streamed. Answers the live call and connects the caller; enabling `call_recording` records the call, `call_transcription` transcribes it after it ends, and any `stream_url` begins receiving the call's audio. Requires the `calls:write` scope and the call's `id` (`uuid`).
call_control_audio_play
Plays an audio prompt into the active call identified by `id`, audible to the remote party in real time. Use to play a message, announcement, or prompt to the caller on a connected call. Streams the given `audio_file` into the live call so the remote party hears it immediately. Requires the `calls:write` scope, the call's `id` (`uuid`), and an `audio_file` URL to play.
call_control_audio_stop
Stops audio playback in the active call identified by `id`. Use to cut off a prompt or announcement currently playing on the call, for example before transferring the call or collecting input. Immediately halts any audio being played to the live call; the call itself stays connected. Requires the `calls:write` scope and the call's `id` (`uuid`).
call_control_collect
Collects DTMF keypad input from the caller on the active call identified by `id`, optionally playing a `prompt` first. Use to gather digits from the caller, such as a menu selection or PIN, on a connected call. Plays the prompt and waits for the caller to enter digits on the live call; collection ends on the termination character, the digit limit, or the timeout. Requires the `calls:write` scope and the call's `id` (`uuid`); `max_digits` accepts 1 to 20 and `timeout` 1 to 60 seconds.
call_control_create
Places a real, billable outbound PSTN call from `from` to `to`, returning the call's `uuid` for tracking and control. Use when the user asks to start an outbound phone call and has confirmed the caller ID and destination number. Billable to the account balance; the call is placed on the live PSTN network as soon as the request is accepted. Requires the `calls:write` scope, a `from` Caller ID that is an active or verified number on the account, a `to` number in E.164 format, and a `callback_url` for call status updates.
call_control_delete
Ends the active call identified by `id` by hanging up. Use when the user asks to end or drop a call in progress. Permanent and irreversible; the call is disconnected and cannot be resumed once ended. Requires the `calls:write` scope and the call's `id` (`uuid`).
call_control_get
Returns the call identified by `id`, including its current event and timestamps. Use to check the status or details of one known call. Read-only; no side effects. Requires the `calls:read` scope and the call's `id` (`uuid`).
call_control_list
Returns the calls currently in progress for the authenticated account. Use to discover active calls or find a call's `uuid` before controlling it. Read-only; no side effects. Requires the `calls:read` scope.
call_control_streams_create
Starts streaming the audio of the call identified by `call_id` to the WebSocket `stream_url` you supply, in the audio direction (`stream_type`) and channel (`stream_channel`) you configure, returning the `stream_id`. Use to forward a live call's audio to an external real-time consumer, such as a transcription or AI service. Begins sending the live call's audio to the given `stream_url`, which can be any URL you specify. Requires the `calls:write` scope, the call's `call_id` (`uuid`), a `stream_url` WebSocket URL, and the `stream_type` and `stream_channel` values.
call_control_streams_delete
Stops the media stream identified by `id` on the call identified by `call_id`. Use to end one audio stream started for a call while leaving the call itself connected. Halts audio delivery to that stream's destination; the call continues. Requires the `calls:write` scope, the call's `call_id` (`uuid`), and the media stream's `id` (`uuid`).
call_control_update
Updates the active call identified by `id`; only the `tag` label can be changed. Use to attach or change a user-defined tracking label on a call in progress. Changes the call's `tag` metadata only; no effect on the call's audio or connection. Requires the `calls:write` scope, the call's `id` (`uuid`), and a `tag` value.
call_recording_delete
Deletes the call recording identified by `id`. Use when the user wants to remove a call recording they no longer need and has confirmed which one. Permanent and irreversible; the audio file is deleted and cannot be recovered. Requires the `recordings:write` scope and the recording's `id`.
call_recording_get
Returns the call recording identified by `id`, including its metadata and download URL. Use to inspect one known recording's metadata or obtain its download URL. Read-only; no side effects. Requires the `recordings:read` scope and the recording's `id`.
call_recording_get_by_call
Get a download URL for a call recording audio file by call ID. Returns ``{download_url, content_type, status_code, note}`` instead of the binary audio stream. Fetch ``download_url`` to obtain the MP3.
call_recording_list
Lists the account's call recordings, filterable by date range, originating number, destination number, call ID, and SIP trunk login. Use to browse recordings or find those matching criteria. Read-only; no side effects. Requires the `recordings:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
call_webhooks_create
Registers a callback URL for the `on-call` or `post-call` event so Wavix sends a POST callback with call metadata to the URL when the event occurs. Use to set up delivery of real-time or after-call status updates to your own endpoint. Creates persistent configuration that forwards call events to the URL on every matching call until the webhook is deleted. Requires the `webhooks:write` scope, a `url` to receive callbacks, and an `event_type` of `on-call` or `post-call`.
call_webhooks_delete
Removes the call webhook for the given event type, stopping Wavix from sending further callbacks for it. Use when the user no longer wants `on-call` or `post-call` callbacks delivered. Permanent; callbacks for that event type stop and the webhook configuration is removed. Requires the `webhooks:write` scope and an `event_type` of `on-call` or `post-call`.
call_webhooks_list
Returns the call webhooks configured for the authenticated account for the `on-call` and `post-call` events. Use to review which callback URLs are registered before adding or removing one. Read-only; no side effects. Requires the `webhooks:read` scope.
sms
sms_and_mms_messages_get
Retrieves a single SMS or MMS message by its ID, including its delivery status, charge, and content. Use to check the status or content of one known message. Read-only; no side effects. Requires the `messages:read` scope and the message `id`.
sms_and_mms_messages_list
Lists the account's SMS and MMS messages, filterable by direction, date, Sender ID, recipient number, delivery status, tag, and message type. Use to review message history or find messages matching criteria. Read-only; no side effects. Requires the `messages:read` scope and the `type` filter (`inbound` or `outbound`); results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
sms_and_mms_messages_send
Sends an SMS or MMS message to a single recipient. Use when the user asks to send a text or multimedia message and has confirmed the recipient number and message content. Billable to the account balance; delivery is irreversible once the message is accepted. Requires the `messages:write` scope and a `from` value that is a registered Sender ID; MMS is supported for US recipients only; the recipient must not be on the account's opt-out list.
sms_and_mms_opt_outs_create
Adds a phone number to the account's opt-out list, either for a specific Sender ID or for all outbound messages when no Sender ID is given. Use when a recipient asks to stop receiving messages or to honor a suppression request. Once created, outbound messages to that number within the chosen scope are blocked. Requires the `messages:write` scope and the recipient phone number.
sms_and_mms_opt_outs_list
Lists the phone numbers that have opted out of receiving messages from the account, filterable by Sender ID, 10DLC campaign, and creation date. Use to check whether a recipient has opted out before sending, or to review the opt-out list. Read-only; no side effects. Requires the `messages:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
sms_and_mms_sender_ids_create
Registers a new Sender ID for the account so it can be used as a message `from` value. Use when the user wants to add an alphanumeric or numeric sender and has confirmed its details. Registering a Sender ID incurs a recurring monthly fee billed to the account balance. Requires the `messages:write` scope; US Sender IDs must be registered through the 10DLC tools instead.
sms_and_mms_sender_ids_delete
Deletes a registered Sender ID by its ID. Use when the user wants to remove a Sender ID they no longer need and has confirmed which one. Permanent and irreversible; once deleted the Sender ID can no longer be used to send messages. Requires the `messages:write` scope and the Sender ID's `id`.
sms_and_mms_sender_ids_get
Retrieves a single registered Sender ID by its ID, including its type, use case, and allowlisted countries. Use to inspect one Sender ID the account already has. Read-only; no side effects. Requires the `messages:read` scope and the Sender ID's `id`.
sms_and_mms_sender_ids_list
Lists the Sender IDs registered on the account, each with its Sender ID name, type, use case, and allowlisted countries. Use to discover which `from` values are available before sending a message, or to audit registered senders. Read-only; no side effects. Requires the `messages:read` scope.
two
two_fa_events_list
Returns the lifecycle events of the 2FA verification identified by `session_id`, such as number lookup and code delivery. Use to inspect the timeline of a single verification after starting it. Read-only; no side effects. Requires the `two_fa:read` scope and the verification's `session_id`.
two_fa_sessions_list
Returns the 2FA verifications for the service identified by `service_id` within the requested date range. Use to review 2FA verification history for a service or find verifications in a given period. Read-only; no side effects. Requires the `two_fa:read` scope, the `service_id`, and both `from` and `to` dates in `YYYY-MM-DD` format (inclusive).
two_fa_verification_cancel
Cancels the 2FA verification identified by `session_id`. Use when the user wants to abandon an in-progress verification so no further codes are sent. Permanent: no further OTPs are sent and previously sent codes can no longer be validated, so a new verification is required to send another code. Requires the `two_fa:write` scope and the verification's `session_id`.
two_fa_verification_check
Validates the one-time password (OTP) submitted by the end user against the 2FA verification identified by `session_id`, confirming whether the code is correct. Use when the user has entered the code they received and it must be checked. Non-idempotent: each call consumes one of a limited number of server-tracked attempts, and once they are exhausted the verification returns `429` until a new verification is created. Requires the `two_fa:write` scope, the verification's `session_id`, and the `code` entered by the end user.
two_fa_verification_create
Creates a 2FA verification and sends a real one-time password (OTP) to the destination number over the selected channel. Use when the user asks to start phone verification and has confirmed the destination number and channel. Billable per OTP sent and irreversible: the message or call is delivered to a real phone once accepted. Requires the `two_fa:write` scope, a `service_id` for a 2FA service configured in the Wavix portal, a `to` number in E.164 format, and a `channel` of `sms` (text message) or `voice` (call reading the code aloud).
two_fa_verification_resend
Resends the one-time password (OTP) for the 2FA verification identified by `session_id` over the specified channel, invalidating any previously sent codes. Use when the end user did not receive the earlier code and asks for it to be sent again. Delivers a real OTP to the destination phone over the chosen channel and invalidates codes already sent. Requires the `two_fa:write` scope, the verification's `session_id`, and a `channel` of `sms` (text message) or `voice` (call reading the code aloud).
buy
buy_cities_list
Lists the cities in a country where phone numbers are available for purchase, for countries that have no regions (`has_provinces_or_states` is `false`). Use to pick a city before listing available DIDs, once a country has been chosen; for countries that have regions, use the region tools instead. Read-only; no side effects. Requires the `numbers:read` scope and the `country_id`; pass `text_enabled_only` to return only cities that offer text-enabled numbers.
buy_countries_list
Lists the countries where phone numbers are available for purchase. Use as the first step of buying a number, to choose a country before drilling into its regions or cities and then adding DIDs to the cart. Read-only; no side effects. Requires the `numbers:read` scope; pass `text_enabled_only` to return only countries that offer text-enabled phone numbers.
buy_numbers_list
Lists the phone numbers (DIDs) available for purchase in a city. Use after selecting a country and city to find specific DIDs to add to the cart. Read-only; no side effects. Requires the `numbers:read` scope, the `country_id`, and the `city_id`; pass `text_enabled_only` to return only text-enabled numbers; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
buy_region_cities_list
Lists the cities in a region (state or province) where phone numbers are available for purchase, for countries that have regions (`has_provinces_or_states` is `true`). Use to pick a city within a chosen region before listing available DIDs; for countries without regions, use the plain city tool instead. Read-only; no side effects. Requires the `numbers:read` scope, the `country_id`, and the `region_id`; pass `text_enabled_only` to return only cities that offer text-enabled numbers.
buy_regions_list
Lists the regions (states or provinces) of a country where phone numbers are available for purchase, for countries that have regions (`has_provinces_or_states` is `true`). Use after choosing a country to pick a region before listing its cities. Read-only; no side effects. Requires the `numbers:read` scope and the `country_id`; pass `text_enabled_only` to return only regions that offer text-enabled numbers.
cdrs
cdrs_get
Returns the CDR for the call identified by `call_id`, optionally including the call transcription when `show_transcription` is `true`. Use to look up the detail record of one known call, such as its direction, duration, disposition, and charge. Read-only; no side effects. Requires the `calls:read` scope and the call's `call_id`.
cdrs_list
Lists the account's CDRs within a required date range, filterable by call direction, disposition, originating number, destination number, SIP trunk login, and call ID. Use to review call history or find calls matching criteria over a date range. Read-only; no side effects. Requires the `calls:read` scope and the required `from` and `to` dates (`YYYY-MM-DD`, inclusive) and `type` filter (`placed` or `received`); results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
cdrs_retranscribe
Transcribes the recording of the call identified by `call_id`; transcription is asynchronous, so poll the transcription endpoint for the result. Use when the user wants a transcript of a recorded call that has not been transcribed yet. Billed per minute at the account's call-transcription rate; fails with an insufficient-funds error when the balance cannot cover it. Requires the `calls:write` scope and the call's `call_id`; optionally set the transcription `language` and a `webhook_url` to receive the result.
cdrs_search
Searches the account's call transcriptions for the given keywords or phrases and returns the matching CDRs with their transcriptions, filterable by call direction, originating number, destination number, SIP trunk login, minimum duration, and call ID. Use to find recorded calls whose transcription contains specific words or phrases over a date range. Read-only; no side effects. Requires the `calls:read` scope and the required `type` filter (`placed` or `received`) and `from` and `to` dates (`YYYY-MM-DD`); results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
cdrs_transcriptions
Returns the transcription of the recorded call identified by `call_id`. Use to retrieve the transcript of a call that has already been transcribed, for example after `cdrs_retranscribe` completes. Read-only; no side effects. Requires the `calls:read` scope and the call's `call_id`.
numbers
my_numbers_bulk_update
Applies the same configuration changes to every owned phone number in the given `ids` list, updating only the fields provided — SMS enablement, inbound call routing destinations, the inbound-message callback URL, call recording, transcription and its duration threshold, and the call-status callback URL. Use to apply one routing or feature change across several owned numbers at once. Changes the numbers' configuration; destination and SMS callback changes are applied asynchronously and may not appear in the response immediately. Requires the `numbers:write` scope and the `ids` list of numbers to update.
my_numbers_delete
Releases the listed phone numbers back to stock, selected by either their record `ids` or their `dids` (the phone numbers themselves), but not both. Use when the user wants to give up one or more owned numbers and has confirmed exactly which. Permanent and irreversible; once released the DIDs return to stock and the account no longer owns them. Requires the `numbers:write` scope and either `ids` or `dids` (the two are mutually exclusive).
my_numbers_get
Retrieves a single owned phone number by its `id`, including its inbound call routing destinations, documents, and feature settings. Use to inspect the configuration of one known number. Read-only; no side effects. Requires the `numbers:read` scope and the number's `id`.
my_numbers_list
Lists the phone numbers owned by the account, filterable by city or rate center, full or partial phone number, and label (including whether a label is present). Use to find owned numbers or to discover a number's `id` before retrieving or configuring it. Read-only; no side effects. Requires the `numbers:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
my_numbers_update
Updates the configuration of the owned phone number identified by `id`, changing only the fields provided — SMS enablement, inbound call routing destinations, the inbound-message callback URL, call recording, transcription and its duration threshold, and the call-status callback URL. Use to change one number's routing or feature settings. Changes the number's configuration. Requires the `numbers:write` scope and the number's `id`.
sip
sip_trunks_create
Creates a SIP trunk for routing inbound and outbound calls, returning the new trunk with its generated `access_token`. Use when the user wants to provision a new SIP trunk and has confirmed its label, password, and Caller ID. Creates a new SIP trunk configuration on the account; supply IP-authentication and call-limit settings as needed. Requires the `trunks:write` scope, a `callerid` that is an active or verified number on the account, and `allowed_ips` whenever `ip_restrict` is `true`.
sip_trunks_delete
Deletes the SIP trunk identified by `id`. Use when the user wants to remove a SIP trunk they no longer need and has confirmed which one. Permanent and irreversible; deletion stops all call routing through the trunk. Requires the `trunks:write` scope and the SIP trunk's `id`.
sip_trunks_get
Retrieves the SIP trunk identified by `id`, including its configuration. Use to inspect one SIP trunk the account already has. Read-only; no side effects. Requires the `trunks:read` scope and the SIP trunk's `id`.
sip_trunks_list
Lists the SIP trunks on the authenticated account. Use to discover which SIP trunks exist before retrieving, updating, or deleting one. Read-only; no side effects. Requires the `trunks:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
sip_trunks_update
Replaces the configuration of the SIP trunk identified by `id`; any omitted fields revert to their defaults. Use when the user wants to change a SIP trunk's settings and has provided the full desired configuration. Overwrites the trunk's existing configuration on the account. Requires the `trunks:write` scope, the SIP trunk's `id`, a `callerid` that is an active or verified number on the account, and `allowed_ips` whenever `ip_restrict` is `true`.
sub
sub_accounts_create
Creates a new sub-organization under the authenticated master account and returns it with a generated `api_key`. Use when the user wants to add a sub-organization and has confirmed its name. Creates a persistent sub-organization and issues its `api_key`. Requires the `subaccounts:write` scope and a `name` of up to 255 characters; the optional `default_destinations` object sets default webhook URLs for inbound messages and delivery reports.
sub_accounts_get
Retrieves a single sub-organization by its `id`. Use to inspect one known sub-organization the master account owns. Read-only; no side effects. Requires the `subaccounts:read` scope and the sub-organization's `id`.
sub_accounts_list
Lists the sub-organizations under the authenticated master account, filterable by status (`enabled` or `disabled`). Use to browse sub-organizations or find ones matching a status. Read-only; no side effects. Requires the `subaccounts:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
sub_accounts_transactions_list
Lists the billing transactions for the sub-organization identified by `id` within a date range, filterable by transaction type. Use to review a sub-organization's billing history over a period. Read-only; no side effects. Requires the `subaccounts:read` scope, the sub-organization's `id`, and a `from_date` and `to_date` in `YYYY-MM-DD` format (both inclusive); results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
sub_accounts_update
Replaces the configuration of the sub-organization identified by `id`, updating its `name`, `status`, and `default_destinations`. Use when the user wants to rename a sub-organization, enable or disable it, or change its default webhook destinations, and has confirmed the full intended configuration. Overwrites the existing configuration — any field omitted from the request reverts to its default. Requires the `subaccounts:write` scope and the sub-organization's `id`; `status` accepts `enabled` or `disabled`, and `name` may be up to 255 characters.
webrtc
webrtc_tokens_create
Creates a Wavix Embeddable widget token that authenticates a browser-based softphone session against a SIP trunk. Use when the user needs a new widget credential to start a browser dialer session. Creates a token that grants softphone access until it expires. Requires the `embeddable:write` scope and a `sip_trunk` name, and optionally a `payload` of client-defined data and a `ttl` in seconds (minimum 1, default 3600; pass `null` for no expiration).
webrtc_tokens_delete
Deletes the Wavix Embeddable widget token identified by `id`. Use when the user wants to revoke a widget token they no longer need or that may be compromised. Permanent and irreversible: the token can no longer authenticate widget sessions and any active session using it ends. Requires the `embeddable:write` scope and the token's `id` (a UUID).
webrtc_tokens_get
Retrieves the Wavix Embeddable widget token identified by `id`. Use to inspect a single widget token the account already has. Read-only; no side effects. Requires the `embeddable:read` scope and the token's `id` (a UUID).
webrtc_tokens_list
Returns the Wavix Embeddable widget tokens for the authenticated account. Use to discover which widget tokens exist or audit issued credentials. Read-only; no side effects. Requires the `embeddable:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
webrtc_tokens_update
Updates the `payload` carried by the Wavix Embeddable widget token identified by `id`, replacing the existing payload. Use when the user wants to change the client-defined data associated with a token. Overwrites the token's existing payload; the token itself and its authentication remain valid. Requires the `embeddable:write` scope, the token's `id` (a UUID), and the replacement `payload`.
api
api_keys_create
Creates an API key for the authenticated account, optionally restricting its access to specific IP addresses. Use when the user wants to issue a new API key and has confirmed its label and any access restrictions. Creates a new API key that can authenticate against the account immediately. Requires a `label`; when `restricted` is `true`, `permitted_ips` must list the allowed IPv4 addresses, and setting `scopes_enabled` to `true` enforces the per-resource scope permissions.
api_keys_delete
Deletes the API key identified by `id`. Use when the user wants to revoke an API key and has confirmed which one. Permanent and irreversible; the key is revoked immediately and can no longer authenticate. Requires the API key's `id`.
api_keys_list
Lists the API keys belonging to the authenticated account, optionally filtered by `label` (partial match). Use to discover which API keys exist or to find one by name before updating or deleting it. Read-only; no side effects. Accepts an optional `label` filter.
api_keys_update
Updates the API key identified by `id`, changing only the fields provided. Use when the user wants to modify an existing API key's label, active state, IP restriction, or scope permissions and has confirmed the change. Modifies the API key's configuration on the account; unspecified fields are left unchanged. Requires the API key's `id`.
cart
cart_add
Adds the listed phone numbers (DIDs) to the purchase cart. Use after finding available numbers to stage them for purchase, before checking out. Modifies the cart by adding the given numbers; nothing is charged until checkout. Requires the `numbers:write` scope and an `ids` array of the phone numbers to add.
cart_checkout
Purchases the phone numbers (DIDs) listed from the cart, provisioning them to the account. Use as the final step of buying numbers, after staging them in the cart and confirming the purchase with the user. This is the irreversible commit step: activation and monthly fees are debited from the account balance immediately, and the purchase cannot be reversed through this API. Requires the `numbers:write` scope and an `ids` array of the cart numbers to purchase.
cart_get
Retrieves the current purchase cart, including the phone numbers (DIDs) it contains and the documents each one requires. Use to review what will be purchased, or to check which documents are required, before checkout. Read-only; no side effects. Requires the `numbers:read` scope.
cart_remove
Removes the listed phone numbers (DIDs) from the purchase cart. Use to drop numbers the user no longer wants to buy before checkout. Modifies the cart by removing the given numbers; the numbers themselves are unaffected and can be added again. Requires the `numbers:write` scope and an `ids` array of the phone numbers to remove.
number
number_validator_create_bulk
Validates a batch of phone numbers in a single request. Use when the user needs validation details for many numbers at once rather than checking them one at a time. Submits the batch for validation; when `async` is `true` it returns a `request_id` to poll for the results instead of returning the validation details directly. Requires the `validator:write` scope, the `phone_numbers` to validate, and the validation `type`.
number_validator_get
Validates a single phone number and returns its line type, carrier, portability, and reachability details; the response's per-number `error_code` reports the outcome (`000` success, `013` internal error, `021` invalid format, `041` remote timeout, `042` remote query failed, `091` insufficient funds), distinct from the HTTP status. Use to look up or verify one number before calling or messaging it. Read-only; no side effects. Requires the `validator:read` scope, a `phone_number` in E.164 format (with or without the leading `+`), and a `type` giving the depth of validation to perform.
number_validator_results_get
Retrieves the results of an asynchronous batch validation identified by `request_id`. Use to fetch the outcome of a bulk validation submitted with `async` set to `true`, once its `request_id` is available. Read-only; no side effects. Requires the `validator:read` scope and the `request_id` returned by the asynchronous bulk validation request.
profile
profile_config_get
Returns the account balance and the global limits configured for the authenticated account. Use to check the current account balance or the account-wide limits before an action that depends on them. Read-only; no side effects. Requires the `account:read` scope.
profile_get
Returns the profile and billing details of the authenticated account. Use to look up the account's profile information or billing details. Read-only; no side effects. Requires the `account:read` scope.
profile_update
Updates the profile and billing details of the authenticated account. Use when the user wants to change their account profile or billing information and has confirmed the new values. Modifies the account's stored profile and billing details. Requires the `account:write` scope.
speech
speech_analytics_file_get
Get a download URL for a speech-analytics audio file. Returns ``{download_url, content_type, status_code, note}`` instead of the binary audio stream (WAV/MP3/MP4). Fetch ``download_url`` to obtain the file.
speech_analytics_get
Returns the transcription for the speech-analytics request identified by `request_id`, including the transcript, speaker turns, and insights when available. Use to retrieve the result of a speech-analytics request after the file has been uploaded and transcribed. Read-only; no side effects. Requires the `calls:read` scope and the `request_id` returned when the file was uploaded.
speech_analytics_retranscribe
Re-runs transcription on the speech-analytics file identified by `request_id`, replacing the existing transcript, and optionally enabling insights generation. Use when the user wants to regenerate the transcript for an already-uploaded file. Permanent; the previous transcript is overwritten and cannot be recovered. Requires the `calls:write` scope, the `request_id`, and a `callback_url` for transcription status updates.
billing
billing_invoices_list
Lists the account's auto-generated financial statements (invoices), ordered by billing period. Use to review the account's invoices or find a statement for a given billing period. Read-only; no side effects. Requires the `billing:read` scope; results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
billing_transactions_list
Lists the account's billing transactions within a requested date range, filterable by transaction type, a substring of the transaction `details`, and whether to return only account top-ups. Use to review account transactions or reconcile charges and payments over a period. Read-only; no side effects. Requires the `billing:read` scope and the required `from_date` and `to_date` range (inclusive, `YYYY-MM-DD`); results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
link
link_shortener_create
Creates a short link that redirects to a target URL and tracks click metrics. Use when the user wants a trackable shortened URL, typically for a campaign message. Creates a new, publicly reachable short link pointing at the given target URL. Requires the `campaigns:write` scope and the destination URL (`link`); an optional `phone`, `fallback_url`, `expiration_time`, and `utm_campaign` refine it.
link_shortener_metrics_list
Lists per-click metrics for short links within a date range, including device, location, and campaign attribution, filterable by the phone number associated with the click and by `utm_campaign`. Use to analyze how short links performed over a period. Read-only; no side effects. Requires the `campaigns:read` scope and a `from` and `to` date in `YYYY-MM-DD` format (both inclusive); results are paginated with `per_page` from 1 to 100 (default 25) and `page` starting at 1.
voice
voice_campaigns_create
Launches a voice campaign that places a real outbound call running a pre-approved call flow, returning a voice campaign `id` to track progress. Use when the user asks to trigger a voice scenario and has confirmed the exact destination number (`contact`), the account Caller ID (`caller_id`), and which call flow (`callflow_id`) to run. Billable and irreversible: a real outbound call is placed once the campaign launches, and it fails with `422` when the account has insufficient funds. Requires the `campaigns:write` scope and a `voice_campaign` with `callflow_id` (a pre-approved call flow), plus `caller_id` and `contact` in E.164 format.
voice_campaigns_get
Returns the voice campaign identified by `id`, including its current status. Use to check the progress or outcome of a campaign already launched. Read-only; no side effects. Requires the `campaigns:read` scope and the campaign's `id`.

Tools removed

Tools this server used to expose. Anything built against them stopped working on the day they went.

api_keys_activate
removed 8 Sep 2026
api_keys_deactivate
removed 8 Sep 2026
billing_invoices_download
removed 8 Sep 2026
cdrs_list_all
removed 8 Sep 2026
cdrs_transcription_get
removed 8 Sep 2026
my_numbers_destinations_update
removed 8 Sep 2026
my_numbers_papers_upload
removed 8 Sep 2026
my_numbers_sms_update
removed 8 Sep 2026
sms_and_mms_messages_list_all
removed 8 Sep 2026
speech_analytics_create
removed 8 Sep 2026
ten_dlc_brand_evidence_upload
removed 8 Sep 2026

Endpoints

URLTransportStateLatencyChecked
https://mcp.wavix.com/mcp streamable-http sign-in 137 ms 5 min ago

Alternatives to Wavix

same job, measured the same way
FeedbackRobot
by feedbackrobot

Hosted MCP server for the FeedbackRobot customer feedback and reviews platform

answering
Vulners MCP
by vulnerscom

MCP server for the Vulners.com API

45 installs/wk local only
Sipnav MCP
by werebear73

MCP server for the SIPNAV VOIP switch.

local only
Telnyx
by stucchi

MCP server for the Telnyx API — billing, phone numbers, and messaging

60 installs/wk local only
Supabase
by supabase

MCP server for interacting with the Supabase platform

88 959 installs/wk answering
volai
by volai

Czech telephony API and MCP for apps and AI agents - numbers, calls, SMS, voice agent.

answering
Mealie MCP Server
by ni-c

MCP server for Mealie, the self-hosted recipe manager and meal planner

57 installs/wk local only
C
Dealsurface
by dealsurface

MCP server for DealSurface.com sales intelligence platform.

54 installs/wk local only

Wavix — questions

Answers built from our own checks of this server.

What can Wavix do?
It exposes 115 tools, read directly from the server on our last check. Among them: api_keys_create, api_keys_delete, api_keys_list, api_keys_update, billing_invoices_list, billing_transactions_list and 109 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Wavix mostly used for?
Its tools cluster around ten, call and sms. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Wavix working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 168 ms. The bar chart above shows every period we have measured.
Did Wavix ever remove tools?
Yes. api_keys_activate, api_keys_deactivate, billing_invoices_download, cdrs_list_all and 7 more are no longer exposed — we recorded the date each one disappeared. A tool vanishing usually means a breaking change for anything that depended on it.
How do I connect Wavix?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address. You sign in through your browser once and the client keeps the session: no key to copy, and it refuses anonymous clients.
How do you sign in to Wavix?
No API key is involved. Wavix answers our knock with an OAuth challenge, so you authorise it once in your browser and the client keeps the session. That is also why we see no tool list: it will not describe itself to an anonymous client, and that is the server working as intended, not a fault.
How fast is Wavix?
It answers our handshake in 168 ms on average, which is faster than 75% of all working MCP servers we measure. That puts it in the quick quarter of the ecosystem. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is Wavix open source?
Yes — it is published under the MIT licence, written in Python and 3 stars on GitHub. The source link is on this page, so you can read exactly what it does with your data before you connect it.