# Widely (remote · mcp.widely-mobile.com)

Connect your communications to your AI.

- Trust score: 65/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-24

> **Recent critical change**: Authorization (2026-10-22). See the changelog below before you install this server.

## Components

- remote · `mcp.widely-mobile.com`: 65/100 (this document), [markdown](https://verifymcp.io/servers/com-widely-mobile-widely/mcp.md), [page](https://verifymcp.io/servers/com-widely-mobile-widely/mcp)

## Channel facts

- Endpoint: `https://mcp.widely-mobile.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-24.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: this server exposes a tool marked destructive (update_forwarding) and its handshake is open, but we could not confirm whether a tool call is gated, so we do not assert it is callable unauthenticated.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 6775 tokens (~92/item across 73 items; 73 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 39/100
  - Stability check failed: schema churn in the 14 days we've observed: 4 tool removals, 1 breaking changes, 0 auth/transport breaks, 18 additions.
- **Tool Coverage**: 81/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 43% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 74 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Widely MCP server?

Widely is a hosted endpoint at https://mcp.widely-mobile.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-widely-mobile-widely 'https://mcp.widely-mobile.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-widely-mobile-widely": {
      "url": "https://mcp.widely-mobile.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-widely-mobile-widely": {
      "type": "http",
      "url": "https://mcp.widely-mobile.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-widely-mobile-widely]
url = "https://mcp.widely-mobile.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-widely-mobile-widely": {
      "type": "remote",
      "url": "https://mcp.widely-mobile.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-widely-mobile-widely --url 'https://mcp.widely-mobile.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-widely-mobile-widely:
    url: "https://mcp.widely-mobile.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-widely-mobile-widely": {
      "Transport": "http",
      "Url": "https://mcp.widely-mobile.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-widely-mobile-widely -t streamable-http -u 'https://mcp.widely-mobile.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-widely-mobile-widely": {
      "type": "http",
      "url": "https://mcp.widely-mobile.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-24 (score 65, +30)

- [security regression] Stability: unverified → fail
- [security regression] A breaking change shipped without a version bump: still 1.0.0
- [security regression] Tool “check_call_rate” was removed
- [security regression] Tool “delete_account_steps” was removed
- [security regression] Tool “get_account_balance” was removed
- [security regression] Tool “list_pbx” was removed
- [security improvement] Injection markers: unverified → pass
- [security] Authorization: Authorisation not fully verified: this server exposes a tool marked destructive (update_forwarding) and its handshake is open, but we could not confirm whether a tool call is gated, so we do not assert it is callable unauthenticated.
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “cancel_call_task”, which the server declares destructive
- [security] New tool “set_call_handling”, which the server declares destructive
- [security] Tool “account_closure_options” rewrote its description, which is the text the model reads
- [security] Tool “ask_support” rewrote its description, which is the text the model reads
- [security] Tool “get_account” rewrote its description, which is the text the model reads
- [security] Tool “quote_call” rewrote its description, which is the text the model reads
- [security] Tool “request_speak” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 73 → 92
- [functional regression] “request_speak” added a required parameter “brief”, so existing callers break
- [functional regression] “request_speak” dropped the required parameter “task”
- [functional improvement] Tool coverage: 29% → 43%
- [functional improvement] Tool coverage: unverified → 100
- [functional] Destructive annotations: All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
- [functional] New tool “accept_errands_terms”
- [functional] New tool “create_call_task”
- [functional] New tool “describe_errand_template”
- [functional] New tool “get_call_task”
- [functional] New tool “list_call_tasks”
- [functional] New tool “quote_call_task”
- [functional] New tool “set_assistant_name”
- [cosmetic] “request_speak” reworded the description of “destination”
- [cosmetic] “request_speak” reworded the description of “identity_id”
- [cosmetic] “request_speak” dropped the optional parameter “connect_user”
- [cosmetic] “request_speak” made “destination” optional
- [cosmetic] Tool “account_closure_options” changed its title: Stop charges or close an account → Account closure options
- [cosmetic] Tool “quote_call” changed its title: Quote a call → Call rate

### 2026-10-23 (score 35, −29)

- [security regression] Authorization: fail → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.40 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-22 (score 64, 0)

- [critical regression] Authorization: unverified → fail

### 2026-10-21 (score 64, +1)

- [security regression] Authorization: fail → unverified

### 2026-10-20 (score 63, 0)

- [critical regression] Authorization: unverified → fail

### 2026-10-19 (score 63, +28)

- [security improvement] Injection markers: unverified → pass
- [security] Authorization: Authorisation not fully verified: this server exposes a tool marked destructive (update_forwarding) and its handshake is open, but we could not confirm whether a tool call is gated, so we do not assert it is callable unauthenticated.
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.30

### 2026-10-18 (score 35, −27)

- [security regression] Stability: 0.23 → unverified
- [security regression] Authorization: fail → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] This server's schema is too large to store in full, so we cannot compare its tools day to day

### 2026-10-17 (score 62, +27)

- [critical regression] Authorization: unverified → fail
- [security improvement] Injection markers: unverified → pass
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “delete_receptionist_hours”, which the server declares destructive
- [security] New tool “delete_receptionist_knowledge”, which the server declares destructive
- [security] New tool “delete_receptionist_location”, which the server declares destructive
- [security] New tool “update_whatsapp_ai”, which the server declares destructive
- [security] New tool “upsert_receptionist_knowledge”, which the server declares destructive
- [security] New tool “upsert_receptionist_location”, which the server declares destructive
- [security] New tool “upsert_receptionist_profile”, which the server declares destructive
- [security] Tool “upsert_hours” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 4265 → 4998
- [functional regression] Tool coverage: 39% → 29%
- [functional improvement] Destructive annotations: 67% → 83%
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.23
- [functional] New tool “get_receptionist_facts”
- [cosmetic] “upsert_hours” added an optional parameter “ivr_config_id”
- [cosmetic] “upsert_receptionist” added an optional parameter “default_language”
- [cosmetic] “upsert_receptionist” added an optional parameter “description”

## MCP tools (73)

### `list_identities` (~68 tokens)

List my numbers, SIMs, and extensions

Returns the phone numbers, caller IDs, verified SIM numbers, PBX extensions, and eSIMs on this Widely seat, with the provider that supplies each and what it can do.

Input parameters:

- `include_shared` (boolean): Include account shared numbers. This user and the account owner need Business.

### `search_calls` (~169 tokens)

Search call history

Finds phone calls on this Widely seat by date range, direction, contact name, or number. Returns one row per phone call, with direction, duration, outcome, the identity used, and whether a transcript or recording exists.

Input parameters:

- `contact` (string): Saved contact name to match.
- `days` (integer): Look back this many days (default 30).
- `direction` (string)
- `limit` (integer): Max rows to return.
- `line` (string)
- `missed_only` (boolean)
- `number` (string): Phone number or trailing digits.
- `query` (string): Words from a stored transcript. Pro.
- `since` (string): ISO 8601 start (inclusive).
- `until` (string): ISO 8601 end (exclusive).

### `get_call` (~37 tokens)

Get one call

Returns full detail for one phone call, identified by call_id, including which identity and provider carried it.

Input parameters:

- `call_id` (string, required)

### `get_transcript` (~63 tokens)

Get a call transcript

Returns stored transcript text already saved for a phone call. Does not start a new transcription. While speaking is still in progress, the status is in_progress. Returns no_transcript only after the conversation has ended with no stored text.

Input parameters:

- `call_id` (string, required)

### `get_recording` (~39 tokens)

Get a call recording link

Returns a short-lived streaming link for a recorded phone call. Business plan, and the grant includes recordings.read.

Input parameters:

- `call_id` (string, required)

### `list_voicemails` (~60 tokens)

List voicemails

Returns recent voicemails on this seat with caller, time, duration, and transcript text when one is stored.

Input parameters:

- `days` (integer): Look back this many days (default 30).
- `limit` (integer): Max rows to return.

### `get_voicemail` (~50 tokens)

Get one voicemail

Returns one voicemail by call_id, including its transcript. include_audio also returns a short-lived audio link on Pro and above.

Input parameters:

- `call_id` (string, required)
- `include_audio` (boolean)

### `search_messages` (~88 tokens)

Search messages

Searches this user's Widely, SMS, and WhatsApp threads by keyword and date. Returns message text with sender and thread. Support and assistant threads are excluded.

Input parameters:

- `conversation_id` (string)
- `days` (integer): Look back this many days (default 30).
- `limit` (integer): Max rows to return.
- `query` (string): Keyword to match in message text.

### `get_thread` (~55 tokens)

Read a message thread

Returns messages in one thread, oldest first. before is an ISO 8601 cursor for older pages.

Input parameters:

- `before` (string)
- `conversation_id` (string, required)
- `limit` (integer): Max rows to return.

### `search_contacts` (~37 tokens)

Search contacts

Finds saved contacts on this seat by name. Returns names and phone numbers.

Input parameters:

- `limit` (integer)
- `query` (string, required)

### `send_message` (~74 tokens)

Send a message

Sends an SMS or a Widely message to a phone number or saved contact. Pro plan. Sending happens on this request.

Input parameters:

- `identity_id` (string): Optional identity id when the grant is limited to specific numbers.
- `text` (string): Message text.
- `to` (string): Phone number or saved contact name.

### `request_call` (~110 tokens)

Place a call

Rings the user's phones. After one answers, dials the destination into that same conversation. The result shows as an outgoing phone call. The user speaks on it. Pro plan. If no phone answers, the destination is not dialled.

Input parameters:

- `destination` (string): Phone number to connect after the user answers.
- `identity_id` (string): Optional identity id. Omit it and Widely picks the caller ID the same way the app does. Needed only when the grant is limited to several numbers.

### `get_usage` (~54 tokens)

Read usage

Returns the eSIM data balance and minutes already used on this seat. company=true covers the whole account on Business.

Input parameters:

- `company` (boolean)
- `days` (integer): Look back this many days (default 30).

### `get_forwarding` (~21 tokens)

See call forwarding

Returns how this seat's numbers are forwarded. Pro plan.

### `update_forwarding` (~60 tokens)

Change call forwarding

Points a verified number at a business number on this seat, or stops forwarding when forward_to is empty. Pro plan.

Input parameters:

- `forward_to` (string): A business number on this seat, or empty to stop.
- `identity_id` (string)

### `request_transcript` (~35 tokens)

Transcribe a call

Asks Widely to transcribe a recording that has no text yet. Pro plan.

Input parameters:

- `call_id` (string, required)

### `request_speak` (~198 tokens)

Call and speak

Dials the number and the assistant handles the errand on the phone. Business plan. Takes a structured brief only (call describe_errand_template for the fields); free text is refused. A bad brief lists every missing and invalid field at once. The assistant introduces itself with the name in the user's Widely AI assistant settings, or brief.assistant_name; with neither the call is refused (set it with set_assistant_name). It agrees only to allowed_commitments, leaves a voicemail by default, and always ends with a thank-you and goodbye. Returns immediately with the task and call ids.

Input parameters:

- `brief` (object, required): The structured errand brief. destination may be given here or at the top level.
- `destination` (string): Number to call. brief.destination wins when both are set.
- `identity_id` (string): Optional identity id. Omit it and Widely picks the caller ID the same way the app does.

### `get_account` (~49 tokens)

Read the account

Returns the plan, the live wallet balance (the same headline as Home and Wallet), how many people are on the account, how many eSIMs are live, and which setups this seat can run.

### `list_phone_system` (~81 tokens)

See the phone system

Returns numbers and who answers them, AI receptionists with greeting, knowledge, voice, and languages, press-1 menus, queues, and opening hours with the weekly windows. The owner needs Business for shared phone-system features; queue agents, shared-number users, and direct person targets need Business too. A queue rings only members who are signed in and available.

### `list_team` (~18 tokens)

List the team

Returns people on this account and pending email invites.

### `search_numbers` (~108 tokens)

Search numbers

Find Widely phone numbers available for a country and an optional city, with the monthly price. Use this when a local number is needed. No sign-in. This does not purchase a number.

Input parameters:

- `city` (string)
- `country` (string, required): Two-letter country code or country name.
- `currency` (string): GBP, EUR, USD, or ILS. Omit for the rate-checker default.
- `number_type` (string): local, mobile, or toll-free.

### `quote_number` (~156 tokens)

Quote a number

Price a Widely phone number for a country, including the monthly amount and whether local calls are included. Use this when a UK, US, Israeli, or other local number is needed. Each number includes 2 simultaneous calls. More come in packs of 10, shared by the account's numbers in the same country; channel_count prices the packs needed for a total such as 15. No sign-in. This does not purchase the number.

Input parameters:

- `channel_count` (integer): Total simultaneous calls wanted, including the 2 included.
- `country` (string, required)
- `currency` (string): GBP, EUR, USD, or ILS. Omit for the rate-checker default.
- `number_type` (string)

### `quote_port` (~91 tokens)

Quote a port

Price moving an existing number onto Widely. Use this when the current number should be kept. The move is not instant. No sign-in. This does not start the move.

Input parameters:

- `country` (string)
- `currency` (string): GBP, EUR, USD, or ILS. Omit for the rate-checker default.
- `number` (string)
- `number_type` (string)

### `get_port` (~31 tokens)

Port status

Returns the current status of a port request. A port is not instant.

Input parameters:

- `port_id` (string, required)

### `quote_esim` (~110 tokens)

Quote eSIM data

Price Widely travel data for a country. Use this when a trip needs data and not a home mobile service. Pay as you go per GB, with no data package. An optional gb value returns an estimate billed in 0.1 GiB steps. No sign-in.

Input parameters:

- `country` (string, required)
- `currency` (string): GBP, EUR, USD, or ILS. Omit for the rate-checker default.
- `gb` (number): Optional amount of data to estimate.

### `discover_services` (~173 tokens)

Find a mobile service

Find a home mobile service Widely can provide for a country, including eSIM or physical SIM, native voice, SMS, a mobile number, and a regular or kosher line when the offer includes it. No sign-in. An empty list means nothing is listed yet. Travel data for a trip is a separate Widely product.

Input parameters:

- `capabilities` (array): Every capability the offer declares. A missing one is left out.
- `capability` (string): One capability the offer declares, such as native_voice, sms, mobile_number, or number_porting.
- `country` (string): Country name or two-letter code.
- `form_factor` (string): esim or physical_sim.
- `number_line` (string): regular or kosher. Returned only when the offer lists that line.
- `service_type` (string)

### `quote_service` (~85 tokens)

Quote a mobile service

Price one listed home mobile service for a form factor and number line that offer allows. The amount comes from that offer. No sign-in. This is separate from Widely travel data.

Input parameters:

- `form_factor` (string, required)
- `number` (string)
- `number_line` (string, required): regular or kosher, when the offer allows it.
- `offer_id` (string, required)

### `quote_call` (~109 tokens)

Call rate

Returns the per-minute price for dialling a destination number or country. Signed in, it is this account's rate (account_rate true). Not signed in, it is the public list price (list_price true). This does not place the call.

Input parameters:

- `country` (string)
- `currency` (string): GBP, EUR, USD, or ILS. Omit for the rate-checker default.
- `destination` (string): Phone number to price.
- `number_type` (string)

### `list_plans` (~104 tokens)

List plans

List Free, Pro, and Business monthly prices. Each monthly figure is per user. Quote that amount. Do not round it and do not call it an account price. No sign-in. This does not change the plan. Business covers the office phone system. channel_packs lists the 10-channel pack prices: number packs per country, and SIP trunk packs per account.

Input parameters:

- `currency` (string): GBP, EUR, USD, or ILS. Defaults to EUR.

### `invite_member` (~37 tokens)

Invite a person

Emails an invitation to join this Widely account. New users start Free; there is no account user limit.

Input parameters:

- `email` (string, required)

### `upsert_receptionist` (~158 tokens)

Set up an AI receptionist

Creates or edits an AI receptionist. The account owner needs Business. It speaks with the caller and does not transfer the live conversation to a person.

Input parameters:

- `default_language` (string)
- `description` (string)
- `enabled` (boolean)
- `greeting` (string)
- `id` (string)
- `knowledge` (string)
- `languages` (array)
- `name` (string)
- `voice` (string): Voice the receptionist speaks with: one of alloy, ash, ballad, cedar, coral, echo, marin, sage, shimmer, verse (default marin), or a custom voice id made in the Widely app, which starts with voice_.…

### `update_whatsapp_ai` (~80 tokens)

Update WhatsApp AI

Pause, resume, choose who can see the WhatsApp chats, or set the webhook that answers first. Setting a webhook returns the signing secret once.

Input parameters:

- `clear_webhook` (boolean)
- `did_id` (string, required)
- `monitor_ids` (array)
- `pause` (boolean)
- `webhook_url` (string)

### `upsert_receptionist_knowledge` (~83 tokens)

Add receptionist knowledge

Adds or revises a knowledge entry for one receptionist. The next WhatsApp reply and the next phone call both use it.

Input parameters:

- `body` (string, required)
- `category` (string)
- `data` (object)
- `id` (string)
- `ivr_config_id` (string, required)
- `title` (string, required)

### `get_receptionist_facts` (~44 tokens)

Read structured receptionist facts

Returns one receptionist's profile, contacts, locations, opening hours, and categorized business facts before you update them.

Input parameters:

- `ivr_config_id` (string, required)

### `upsert_receptionist_profile` (~111 tokens)

Update receptionist business profile

Creates or edits the business identity, IANA timezone, contact details, and human-escalation instructions used on phone and WhatsApp.

Input parameters:

- `business_name` (string)
- `email` (string)
- `escalation_instructions` (string)
- `is_active` (boolean)
- `ivr_config_id` (string, required)
- `phone` (string)
- `timezone` (string): IANA timezone such as Asia/Jerusalem.
- `website` (string)

### `upsert_receptionist_location` (~167 tokens)

Add or update a receptionist location

Stores a business address plus directions, parking, public transport, accessibility, location contacts, coordinates, and timezone.

Input parameters:

- `accessibility` (string)
- `address` (string)
- `city` (string)
- `country_code` (string)
- `directions` (string)
- `email` (string)
- `id` (string)
- `is_primary` (boolean)
- `ivr_config_id` (string, required)
- `latitude` (number)
- `longitude` (number)
- `name` (string)
- `parking` (string)
- `phone` (string)
- `postal_code` (string)
- `public_transport` (string)
- `region` (string)
- `timezone` (string)

### `delete_receptionist_location` (~36 tokens)

Delete a receptionist location

Deletes one structured location from a receptionist.

Input parameters:

- `id` (string, required)
- `ivr_config_id` (string, required)

### `delete_receptionist_knowledge` (~52 tokens)

Delete receptionist business information

Deletes one categorized service, price, policy, FAQ, inventory, returns, donation, escalation, or custom fact.

Input parameters:

- `id` (string, required)
- `ivr_config_id` (string, required)

### `delete_receptionist_hours` (~42 tokens)

Detach receptionist opening hours

Stops one receptionist from using its informational opening-hours schedule. It does not change DID open/closed routing.

Input parameters:

- `ivr_config_id` (string, required)

### `upsert_menu` (~103 tokens)

Set up a phone menu

Creates or edits a press-1 menu. The account owner needs Business. A key can ring a person, ring a queue, or send the caller to an AI receptionist. A direct person target and every queue agent also need Business.

Input parameters:

- `enabled` (boolean)
- `greeting` (string)
- `id` (string)
- `keys` (array): Press-1 choices. Sending keys replaces the menu's choices.
- `name` (string)

### `upsert_queue` (~90 tokens)

Set up a queue

Creates or edits a queue. The account owner and every queue member need Business. A queue rings only members who are signed in and available.

Input parameters:

- `auto_record` (boolean)
- `id` (string)
- `max_wait_seconds` (integer)
- `member_ids` (array)
- `name` (string)
- `overflow` (string)
- `strategy` (string)

### `upsert_hours` (~104 tokens)

Set opening hours

Creates or edits a timezone-aware opening-hours schedule and optionally attaches it to an AI receptionist. Informational receptionist hours do not change DID routing. day is 0 for Monday through 6 for Sunday; start and end are HH:MM. Date-bounded is_closed windows are exceptions.

Input parameters:

- `id` (string)
- `ivr_config_id` (string)
- `name` (string)
- `timezone` (string)
- `windows` (array)

### `set_call_handling` (~103 tokens)

Set what happens to unanswered calls

Sets what happens when this seat declines a call, does not answer it, or is busy: voicemail, busy, decline, end, or ai_receptionist. ai_receptionist rings the seat first, then hands the call to the AI receptionist or phone menu in menu_id (Business).

Input parameters:

- `action` (string, required)
- `menu_id` (string): AI receptionist or phone menu id, for ai_receptionist.
- `when` (string, required)

### `set_number_routing` (~123 tokens)

Set who answers

Points a number at ring_me, personal_assistant, a receptionist, a menu, a queue, voicemail, busy, or decline. An optional closed target uses the opening hours. A shared line, receptionist, menu, or queue needs Business.

Input parameters:

- `auto_record` (boolean)
- `closed_target` (string)
- `closed_target_id` (string)
- `number` (string)
- `number_id` (string)
- `target` (string)
- `target_id` (string)
- `time_group_id` (string)

### `submit_product_note` (~117 tokens)

Send a product note

Sends Widely a note about a missing capability, a complaint, or a use case to build. No account is required. reply_url, when it is https, receives each desk reply. Returns conversation_id. Passing that id on a later request adds to the same thread.

Input parameters:

- `conversation_id` (string): Continue this thread instead of opening a new one.
- `kind` (string)
- `reply_url` (string): Public https URL that receives each reply.
- `text` (string, required)
- `title` (string)

### `get_product_note` (~40 tokens)

Read a product note

Returns one product-note thread by conversation_id, oldest first. No account is required. Does not list other threads.

Input parameters:

- `conversation_id` (string, required)

### `subscribe_events` (~86 tokens)

Subscribe to events

Sets the https URL that receives call.started, call.ended, and speak.completed for this seat. events chooses which of those names to receive. Omitting events receives all three. An empty webhook_url stops delivery.

Input parameters:

- `events` (array): Names to receive. Omit or empty for all of them.
- `webhook_url` (string): Public https URL, or empty to stop.

### `search_help` (~38 tokens)

Look up how Widely works

Returns public product facts and in-app menu names for a question. No sign-in. Does not return a price.

Input parameters:

- `query` (string, required)

### `uk_divert_number` (~26 tokens)

UK Always-forward number

Returns the UK shared Always-forward destination and the dial code. No sign-in.

### `account_closure_options` (~70 tokens)

Account closure options

Information only. Returns the ways to stop charges without closing the account (cancel membership, stop a number renewing, remove a saved card), and that unused credit is refunded on closure. Account closure and deletion are handled by Widely Support. This tool does not close or delete anything. No sign-in.

### `port_requirements` (~27 tokens)

What a number port needs

Returns the documents a number port needs. No sign-in. Does not submit a port.

### `esim_install_steps` (~37 tokens)

How to install an eSIM

Returns the eSIM install path and the APN. The APN is null when this profile has no APN. No sign-in.

### `list_wallet_activity` (~45 tokens)

Wallet activity

Returns the wallet ledger of top-ups, product debits, and holds. Each row includes the customer label.

Input parameters:

- `limit` (integer)
- `offset` (integer)

### `explain_charges` (~38 tokens)

Explain charges

Returns charges already on this account, with amounts and labels. An empty list means there is no matching charge.

Input parameters:

- `question` (string)

### `list_payment_methods` (~32 tokens)

Saved payment methods

Returns masked saved cards and bank methods: brand, last4, and default. A processor id is not included.

### `get_data_rate` (~79 tokens)

This account's data rate

Returns this customer's pay-as-you-go data ladder, starting from data already used this period. This is the account rate, separate from the public shelf. Omitting gb returns the volume points.

Input parameters:

- `country` (string, required): ISO-2 or country name.
- `gb` (number): Gigabytes they expect. Omit when they have not said.

### `get_did_rate` (~43 tokens)

This account's number price

Returns an indicative monthly phone-number price for a country, using this account's rate checker.

Input parameters:

- `country` (string, required)
- `number_type` (string)

### `list_did_numbers` (~28 tokens)

Numbers and registration

Returns this account's phone numbers, including numbers that stay inactive until identity registration is finished.

### `list_wallet_refunds` (~41 tokens)

Eligible wallet refunds

Returns first-eSIM wallet top-ups that can be refunded to the card: the profile has not been installed and the top-up is inside the refund window.

### `get_auto_topup` (~24 tokens)

Auto top-up settings

Returns whether auto top-up is on, and the threshold and amount.

### `get_notification_preferences` (~20 tokens)

Notification settings

Returns notification toggles and the low-balance threshold.

### `run_esim_connection_check` (~80 tokens)

Check the eSIM connection

Asks this user's Widely app to check the eSIM and returns a request_id. A result of no_install_yet means the profile may have been installed from a QR and the Widely app is not on that phone. An APN is not included.

Input parameters:

- `device_id` (string)
- `sim_id` (string)

### `get_esim_connection_check` (~44 tokens)

Read the eSIM check

Returns the result of an eSIM connection check for request_id, including fail and warn items. Phone settings are not changed.

Input parameters:

- `request_id` (string, required)

### `ask_support` (~71 tokens)

Ask Widely Support

Writes a message into this user's Widely Support chat and notifies the Support team. A person on the team replies in that chat (not instantly); call read_support to get the reply. Any connected account can send it. text is what is needed and what was already tried.

Input parameters:

- `text` (string, required)

### `read_support` (~43 tokens)

Read the Support reply

Returns messages in this user's Support chat, oldest first. Any connected account can read it. Other chats are not included.

Input parameters:

- `limit` (integer): Max rows to return.

### `set_assistant_name` (~51 tokens)

Set the assistant's name

Sets the name the assistant uses on AI calls (Widely AI assistant settings → Assistant's name). Calls are refused until a name is set or passed in the brief.

Input parameters:

- `name` (string, required)

### `accept_errands_terms` (~100 tokens)

Accept the Errands terms

One-time acceptance of the Widely Errands terms, needed before any AI call or errand can dial. Without confirm it returns a short terms summary, the link to the full terms, and whether this user already accepted. Show that to the user; only after the user clearly agrees, call again with confirm=true to record the acceptance. Safe to repeat.

Input parameters:

- `confirm` (boolean): true only after the user has agreed to the terms shown.

### `describe_errand_template` (~104 tokens)

Describe the Errands brief

Returns the Errands brief fields (required and optional, with shapes and allowed values), the rules the assistant always follows, and worked examples. Read-only. The assistant introduces itself with the name in Widely AI assistant settings (Settings → Voicemail → Configure Personal Assistant → Assistant's name). assistant_name overrides it for one errand; save_as_default true also saves it as the default. With neither, the call is refused: set it with set_assistant_name.

### `quote_call_task` (~730 tokens)

Quote an Errands call

Prices an Errands brief from the call rate sheet, including the ai_task minute. Returns the caller ID and the cost at max_call_minutes. No rate refuses the call. Emergency and premium-rate numbers are refused. A marketing brief is refused. The seat needs the current Errands terms. A bad brief lists every missing and invalid field at once. This does not dial.

Input parameters:

- `allowed_commitments` (array): The only things the assistant may agree to, e.g. 'accept any slot Tue–Thu after 14:00'. For anything else it says it will check and come back, and lists it in the report. Payments, contracts and canc…
- `assistant_name` (string): Optional. The name the assistant uses on this call instead of the AI assistant settings name.
- `callback` (object)
- `callee_is_business` (boolean): Optional. True when the callee is a business.
- `callee_name` (string, required): Who you are calling, e.g. 'FedEx UK Import Clearance' or 'Dr Cohen's clinic'.
- `caller_identity_id` (string): Optional identity id. Omit it and Widely picks the caller ID the same way the app does.
- `client_reference` (string): Your own reference.
- `connect_user` (boolean): When true, the assistant asks the callee to hold at the end, rings the user's phones into the call, and leaves.
- `destination` (string, required): Number to call, E.164 (+44…, +972…, +1…) or local. Emergency and premium-rate numbers are refused.
- `escalation` (object)
- `facts_to_collect` (array): Questions to ask and the information to bring back.
- `facts_to_give` (array): Facts the assistant may give. Card numbers, CVVs, PINs and passwords are refused.
- `forbidden` (array): Things the assistant must not say or agree to.
- `goal` (string, required): The outcome you want, in one or two sentences.
- `if_unknown` (string): What to do when asked something the brief does not cover.
- `ivr_hints` (array): Phone menu hints, e.g. 'choose imports'.
- `language` (string): BCP-47 such as en-GB or he-IL, or auto-from-seat.
- `limits` (object)
- `on_behalf_of` (object, required): Who the call is for. person is required.
- `opening_line` (string): Optional. What to say first, after the assistant introduces itself and plays the mandatory notice.
- `purpose_category` (string, required): Kind of call. Marketing, sales, surveys, debt collection, political and fundraising calls are refused.
- `save_as_default` (boolean): With assistant_name, also save it as the default name in Widely AI assistant settings.
- `schedule_at` (string): When to call, ISO date-time, at most 14 days ahead. Omit it to call now.
- `success_criteria` (array, required): How to tell the call worked, e.g. 'they confirm the delivery date'.
- `time_window` (object): Optional calling window, at least 10 minutes long and within 14 days. The call is placed inside it.
- `voicemail` (string): On voicemail: leave_message (default), hang_up_and_retry (uses limits.retry), or hang_up.
- `voicemail_message` (string): Optional. If absent, the assistant leaves a short message from the goal and on_behalf_of, with no sensitive facts.

### `create_call_task` (~766 tokens)

Create an Errands call

Places or schedules an Errands call from a brief. The price comes from the rate sheet. A future schedule_at waits until then. There is no global calling-hours window. Fill every field you can; call describe_errand_template for the fields and examples. Emergency and premium-rate numbers are refused. A marketing brief is refused. The seat needs the current Errands terms. Business plan. A bad brief lists every missing and invalid field at once. The assistant introduces itself with the name set in the user's Widely AI assistant settings (Assistant's name).

Input parameters:

- `allowed_commitments` (array): The only things the assistant may agree to, e.g. 'accept any slot Tue–Thu after 14:00'. For anything else it says it will check and come back, and lists it in the report. Payments, contracts and canc…
- `assistant_name` (string): Optional. The name the assistant uses on this call instead of the AI assistant settings name.
- `callback` (object)
- `callee_is_business` (boolean): Optional. True when the callee is a business.
- `callee_name` (string, required): Who you are calling, e.g. 'FedEx UK Import Clearance' or 'Dr Cohen's clinic'.
- `caller_identity_id` (string): Optional identity id. Omit it and Widely picks the caller ID the same way the app does.
- `client_reference` (string): Your own reference.
- `connect_user` (boolean): When true, the assistant asks the callee to hold at the end, rings the user's phones into the call, and leaves.
- `destination` (string, required): Number to call, E.164 (+44…, +972…, +1…) or local. Emergency and premium-rate numbers are refused.
- `escalation` (object)
- `facts_to_collect` (array): Questions to ask and the information to bring back.
- `facts_to_give` (array): Facts the assistant may give. Card numbers, CVVs, PINs and passwords are refused.
- `forbidden` (array): Things the assistant must not say or agree to.
- `goal` (string, required): The outcome you want, in one or two sentences.
- `if_unknown` (string): What to do when asked something the brief does not cover.
- `ivr_hints` (array): Phone menu hints, e.g. 'choose imports'.
- `language` (string): BCP-47 such as en-GB or he-IL, or auto-from-seat.
- `limits` (object)
- `on_behalf_of` (object, required): Who the call is for. person is required.
- `opening_line` (string): Optional. What to say first, after the assistant introduces itself and plays the mandatory notice.
- `purpose_category` (string, required): Kind of call. Marketing, sales, surveys, debt collection, political and fundraising calls are refused.
- `save_as_default` (boolean): With assistant_name, also save it as the default name in Widely AI assistant settings.
- `schedule_at` (string): When to call, ISO date-time, at most 14 days ahead. Omit it to call now.
- `success_criteria` (array, required): How to tell the call worked, e.g. 'they confirm the delivery date'.
- `time_window` (object): Optional calling window, at least 10 minutes long and within 14 days. The call is placed inside it.
- `voicemail` (string): On voicemail: leave_message (default), hang_up_and_retry (uses limits.retry), or hang_up.
- `voicemail_message` (string): Optional. If absent, the assistant leaves a short message from the goal and on_behalf_of, with no sensitive facts.

### `get_call_task` (~34 tokens)

Get an Errands call

Returns one Errands task: status, quote, collected facts, and recent events.

Input parameters:

- `task_id` (string, required)

### `list_call_tasks` (~51 tokens)

List Errands calls

Lists this seat's Errands tasks. Filter by status or date.

Input parameters:

- `limit` (integer)
- `since` (string)
- `status` (string)
- `until` (string)

### `cancel_call_task` (~56 tokens)

Cancel an Errands call

Stops an Errands task. graceful records a wrap-up and hangs up. immediate hangs up. A task that has not dialled is cancelled without a call.

Input parameters:

- `mode` (string)
- `task_id` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-widely-mobile-widely/mcp#diagnostics

## Score history

- 2026-10-24: 65
- 2026-10-23: 35
- 2026-10-22: 64
- 2026-10-21: 64
- 2026-10-20: 63
- 2026-10-19: 63
- 2026-10-18: 35
- 2026-10-17: 62
- 2026-10-16: 35
- 2026-10-15: 60
- 2026-10-14: 60
- 2026-10-13: 60
- 2026-10-12: 59
- 2026-10-11: 59
- 2026-10-10: 59
- 2026-10-08: 33
- 2026-10-05: 33

## Common questions

### What is the Widely MCP server?

Widely is an MCP server listed in the public MCP registry as com.widely-mobile/widely. Connect your communications to your AI. This page covers its hosted endpoint (https://mcp.widely-mobile.com/mcp).

### Is the Widely MCP server safe to use?

Widely scores 65 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Widely MCP server expose?

Widely exposes 73 tools: list_identities, search_calls, get_call, get_transcript, get_recording, and 68 more. Their descriptions and schemas cost roughly 6,587 tokens of context every time the server is loaded.

### Does the Widely MCP server require authentication?

No. We connected to Widely without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Widely MCP server still maintained?

Widely is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.widely-mobile.com/mcp
- Repository: https://github.com/Swift-Mobile-Solutions-Dev/widely-mcp
- Website: https://widely-mobile.com/mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-widely-mobile-widely/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-widely-mobile-widely/mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-widely-mobile-widely/mcp
