Widely

Connect your communications to your AI.

Should I use this

Quality & Safety

A
Description quality
92%
Schema completeness
69%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (9)

  • LOWTool 'get_forwarding' description lacks action verbin get_forwarding
  • LOWTool 'get_port' description lacks action verbin get_port
  • LOWTool 'search_help' description lacks action verbin search_help
  • LOWTool 'uk_divert_number' description lacks action verbin uk_divert_number
  • LOWTool 'esim_install_steps' description lacks action verbin esim_install_steps
  • LOWTool 'get_account_balance' description lacks action verbin get_account_balance
  • LOWTool 'list_wallet_activity' description lacks action verbin list_wallet_activity
  • LOWTool 'get_auto_topup' description lacks action verbin get_auto_topup
  • LOWTool 'get_notification_preferences' description lacks action verbin get_notification_preferences

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,942Tokens (tool definitions)
~674 BTypical response size
Significant attention impact (6.20% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

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

Remote endpoints

https://mcp.widely-mobile.com/mcpstreamable-http

What it can do

Tool inventory

Tools (61)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒list_identities(include_shared)

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 Schema

{
  "type": "object",
  "properties": {
    "include_shared": {
      "type": "boolean",
      "description": "Include account shared numbers. This user and the account owner need Business."
    }
  },
  "additionalProperties": false
}
🟒search_calls(since, until, days, direction, missed_only, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "since": {
      "type": "string",
      "description": "ISO 8601 start (inclusive)."
    },
    "until": {
      "type": "string",
      "description": "ISO 8601 end (exclusive)."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3650,
      "description": "Look back this many days (default 30)."
    },
    "direction": {
      "type": "string",
      "enum": [
        "inbound",
        "outbound"
      ]
    },
    "missed_only": {
      "type": "boolean"
    },
    "contact": {
      "type": "string",
      "description": "Saved contact name to match."
    },
    "number": {
      "type": "string",
      "description": "Phone number or trailing digits."
    },
    "query": {
      "type": "string",
      "description": "Words from a stored transcript. Pro."
    },
    "line": {
      "type": "string",
      "enum": [
        "sip_extension",
        "business_number",
        "trunk"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max rows to return."
    }
  },
  "additionalProperties": false
}
🟒get_call(call_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "call_id": {
      "type": "string"
    }
  },
  "required": [
    "call_id"
  ],
  "additionalProperties": false
}
🟒get_transcript(call_id)

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 Schema

{
  "type": "object",
  "properties": {
    "call_id": {
      "type": "string"
    }
  },
  "required": [
    "call_id"
  ],
  "additionalProperties": false
}
🟒get_recording(call_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "call_id": {
      "type": "string"
    }
  },
  "required": [
    "call_id"
  ],
  "additionalProperties": false
}
🟒list_voicemails(days, limit)

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

Input Schema

{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3650,
      "description": "Look back this many days (default 30)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max rows to return."
    }
  },
  "additionalProperties": false
}
🟒get_voicemail(call_id, include_audio)

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

Input Schema

{
  "type": "object",
  "properties": {
    "call_id": {
      "type": "string"
    },
    "include_audio": {
      "type": "boolean"
    }
  },
  "required": [
    "call_id"
  ],
  "additionalProperties": false
}
🟒search_messages(query, conversation_id, days, limit)

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 Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Keyword to match in message text."
    },
    "conversation_id": {
      "type": "string"
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3650,
      "description": "Look back this many days (default 30)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max rows to return."
    }
  },
  "additionalProperties": false
}
🟒get_thread(conversation_id, before, limit)

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

Input Schema

{
  "type": "object",
  "properties": {
    "conversation_id": {
      "type": "string"
    },
    "before": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max rows to return."
    }
  },
  "required": [
    "conversation_id"
  ],
  "additionalProperties": false
}
🟒search_contacts(query, limit)

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

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟑send_message(to, text, identity_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "Phone number or saved contact name."
    },
    "text": {
      "type": "string",
      "description": "Message text."
    },
    "identity_id": {
      "type": "string",
      "description": "Optional identity id when the grant is limited to specific numbers."
    }
  },
  "additionalProperties": false
}
βšͺrequest_call(destination, identity_id)

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 Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Phone number to connect after the user answers."
    },
    "identity_id": {
      "type": "string",
      "description": "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."
    }
  },
  "additionalProperties": false
}
🟒get_usage(days, company)

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

Input Schema

{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3650,
      "description": "Look back this many days (default 30)."
    },
    "company": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
🟒get_forwarding

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

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
πŸ”΄update_forwarding(identity_id, forward_to)

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

Input Schema

{
  "type": "object",
  "properties": {
    "identity_id": {
      "type": "string"
    },
    "forward_to": {
      "type": "string",
      "description": "A business number on this seat, or empty to stop."
    }
  },
  "additionalProperties": false
}
βšͺrequest_transcript(call_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "call_id": {
      "type": "string"
    }
  },
  "required": [
    "call_id"
  ],
  "additionalProperties": false
}
βšͺrequest_speak(destination, task, identity_id, connect_user)

Dials the number and the assistant handles the task on the phone. Business plan. The user's own phones stay quiet unless connect_user is true. Returns immediately with call_id. An empty transcript means speaking is still in progress. connect_user true asks the person to hold, rings the user's phones into the same conversation, and the assistant leaves.

Input Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string"
    },
    "task": {
      "type": "string",
      "description": "What the assistant should say and do. Max 500 characters."
    },
    "identity_id": {
      "type": "string",
      "description": "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."
    },
    "connect_user": {
      "type": "boolean",
      "description": "When true, the destination is asked to hold, the user's phones are rung into the same conversation, and the assistant leaves."
    }
  },
  "required": [
    "destination",
    "task"
  ],
  "additionalProperties": false
}
πŸ”΄control_call(call_id, action, destination)

Holds, resumes, hangs up, or transfers an in-progress conversation on this seat. Business plan.

Input Schema

{
  "type": "object",
  "properties": {
    "call_id": {
      "type": "string"
    },
    "action": {
      "type": "string",
      "enum": [
        "hold",
        "resume",
        "hangup",
        "transfer"
      ]
    },
    "destination": {
      "type": "string"
    }
  },
  "required": [
    "call_id",
    "action"
  ],
  "additionalProperties": false
}
🟒list_pbx

Returns shared numbers and phone menus. This user and the account owner need Business.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒get_account

Returns the plan, wallet balance, how many people are on the account, how many eSIMs are live, and which setups this seat can run.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒list_phone_system

Returns numbers and who answers them, AI receptionists, press-1 menus, queues, and opening hours. The owner needs Business for shared phone-system features; queue agents, shared-number users, and direct person targets need Business too.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒list_team

Returns people on this account and pending email invites.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒search_numbers(country, city, number_type, currency)

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 Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Two-letter country code or country name."
    },
    "city": {
      "type": "string"
    },
    "number_type": {
      "type": "string",
      "description": "local, mobile, or toll-free."
    },
    "currency": {
      "type": "string",
      "description": "GBP, EUR, USD, or ILS. Omit for the rate-checker default."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}
🟒quote_number(country, number_type, currency)

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. No sign-in. This does not purchase the number.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string"
    },
    "number_type": {
      "type": "string"
    },
    "currency": {
      "type": "string",
      "description": "GBP, EUR, USD, or ILS. Omit for the rate-checker default."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}
🟒quote_port(number, country, number_type, currency)

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 Schema

{
  "type": "object",
  "properties": {
    "number": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "number_type": {
      "type": "string"
    },
    "currency": {
      "type": "string",
      "description": "GBP, EUR, USD, or ILS. Omit for the rate-checker default."
    }
  },
  "additionalProperties": false
}
🟒get_port(port_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "port_id": {
      "type": "string"
    }
  },
  "required": [
    "port_id"
  ],
  "additionalProperties": false
}
🟒quote_esim(country, gb, currency)

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 Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string"
    },
    "gb": {
      "type": "number",
      "description": "Optional amount of data to estimate."
    },
    "currency": {
      "type": "string",
      "description": "GBP, EUR, USD, or ILS. Omit for the rate-checker default."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}
🟒discover_services(country, service_type, form_factor, capability, capabilities, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country name or two-letter code."
    },
    "service_type": {
      "type": "string"
    },
    "form_factor": {
      "type": "string",
      "description": "esim or physical_sim."
    },
    "capability": {
      "type": "string",
      "description": "One capability the offer declares, such as native_voice, sms, mobile_number, or number_porting."
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Every capability the offer declares. A missing one is left out."
    },
    "number_line": {
      "type": "string",
      "description": "regular or kosher. Returned only when the offer lists that line."
    }
  },
  "additionalProperties": false
}
🟒quote_service(offer_id, form_factor, number_line, number)

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 Schema

{
  "type": "object",
  "properties": {
    "offer_id": {
      "type": "string"
    },
    "form_factor": {
      "type": "string"
    },
    "number_line": {
      "type": "string",
      "description": "regular or kosher, when the offer allows it."
    },
    "number": {
      "type": "string"
    }
  },
  "required": [
    "offer_id",
    "form_factor",
    "number_line"
  ],
  "additionalProperties": false
}
🟒quote_call(destination, country, number_type, currency)

Returns the price for dialling a destination number or country. No sign-in. This does not place the call.

Input Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Phone number to price."
    },
    "country": {
      "type": "string"
    },
    "number_type": {
      "type": "string"
    },
    "currency": {
      "type": "string",
      "description": "GBP, EUR, USD, or ILS. Omit for the rate-checker default."
    }
  },
  "additionalProperties": false
}
🟒list_plans(currency)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "currency": {
      "type": "string",
      "description": "GBP, EUR, USD, or ILS. Defaults to EUR."
    }
  },
  "additionalProperties": false
}
βšͺprepare_order(kind, country, gb, currency, number_type, ...)

Prepare travel data, a phone number, a number move, a listed mobile service, Pro or Business, or an office phone system after the price is known. Returns a Widely link to finish. Pro and Business quotes include monthly_per_user and monthly_total (that price times users). No sign-in. This does not charge a card or the wallet.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "travel_data",
        "number",
        "port",
        "mobile_service",
        "membership",
        "phone_system"
      ],
      "description": "What the person needs."
    },
    "country": {
      "type": "string",
      "description": "Country name or two-letter code."
    },
    "gb": {
      "type": "number",
      "description": "Travel data amount to estimate."
    },
    "currency": {
      "type": "string",
      "description": "GBP, EUR, USD, or ILS."
    },
    "number_type": {
      "type": "string"
    },
    "number": {
      "type": "string",
      "description": "Existing number when kind is port."
    },
    "offer_id": {
      "type": "string"
    },
    "form_factor": {
      "type": "string",
      "description": "esim or physical_sim."
    },
    "number_line": {
      "type": "string",
      "description": "regular or kosher, when the offer allows it."
    },
    "plan_tier": {
      "type": "string",
      "enum": [
        "pro",
        "business"
      ]
    },
    "users": {
      "type": "integer",
      "minimum": 1
    },
    "phone_numbers": {
      "type": "integer",
      "minimum": 0
    },
    "business_hours": {
      "type": "boolean"
    },
    "queue": {
      "type": "boolean"
    },
    "menu": {
      "type": "boolean"
    },
    "ai_receptionist": {
      "type": "boolean"
    },
    "who_answers": {
      "type": "string"
    },
    "recording": {
      "type": "boolean"
    },
    "correlation_id": {
      "type": "string",
      "description": "Existing acquisition id, when one was already issued."
    }
  },
  "required": [
    "kind"
  ],
  "additionalProperties": false
}
βšͺinvite_member(email)

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

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}
πŸ”΄upsert_receptionist(id, name, greeting, knowledge, voice, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "greeting": {
      "type": "string"
    },
    "knowledge": {
      "type": "string"
    },
    "voice": {
      "type": "string"
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
πŸ”΄upsert_menu(id, name, greeting, keys, enabled)

Creates or edits a press-1 menu. The account owner needs Business. A direct person target and every queue agent also need Business.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "greeting": {
      "type": "string"
    },
    "keys": {
      "type": "array",
      "description": "Press-1 choices. Sending keys replaces the menu's choices.",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "digit": {
            "type": "string",
            "description": "Key the caller presses, such as 1."
          },
          "target": {
            "type": "string",
            "enum": [
              "user",
              "queue",
              "ai_receptionist"
            ],
            "description": "user rings a person. queue rings a queue. ai_receptionist sends the caller to an AI receptionist."
          },
          "consumer_user_id": {
            "type": "string",
            "description": "Person on this account when target is user."
          },
          "queue_id": {
            "type": "string",
            "description": "Queue on this account when target is queue."
          },
          "receptionist_id": {
            "type": "string",
            "description": "AI receptionist on this account when target is ai_receptionist."
          }
        },
        "required": [
          "digit",
          "target"
        ]
      }
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
πŸ”΄upsert_queue(id, name, strategy, max_wait_seconds, overflow, ...)

Creates or edits a queue. The account owner and every queue member need Business; calls ring only signed-in, available members.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "strategy": {
      "type": "string",
      "enum": [
        "round_robin",
        "least_recent",
        "priority"
      ]
    },
    "max_wait_seconds": {
      "type": "integer"
    },
    "overflow": {
      "type": "string",
      "enum": [
        "voicemail",
        "other_queue",
        "hangup"
      ]
    },
    "member_ids": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "auto_record": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
πŸ”΄upsert_hours(id, name, timezone, windows)

Creates or edits a named weekly schedule. The account owner needs Business. day is 0 for Monday through 6 for Sunday; start and end are HH:MM.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "windows": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": false
}
πŸ”΄set_number_routing(number_id, number, target, target_id, time_group_id, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "number_id": {
      "type": "string"
    },
    "number": {
      "type": "string"
    },
    "target": {
      "type": "string"
    },
    "target_id": {
      "type": "string"
    },
    "time_group_id": {
      "type": "string"
    },
    "closed_target": {
      "type": "string"
    },
    "closed_target_id": {
      "type": "string"
    },
    "auto_record": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
🟑submit_product_note(kind, text, title, reply_url, conversation_id)

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 Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "request",
        "complaint",
        "use_case",
        "other"
      ]
    },
    "text": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "reply_url": {
      "type": "string",
      "description": "Public https URL that receives each reply."
    },
    "conversation_id": {
      "type": "string",
      "description": "Continue this thread instead of opening a new one."
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}
🟒get_product_note(conversation_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "conversation_id": {
      "type": "string"
    }
  },
  "required": [
    "conversation_id"
  ],
  "additionalProperties": false
}
πŸ”΄subscribe_events(webhook_url, 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 Schema

{
  "type": "object",
  "properties": {
    "webhook_url": {
      "type": "string",
      "description": "Public https URL, or empty to stop."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "call.started",
          "call.ended",
          "speak.completed"
        ]
      },
      "description": "Names to receive. Omit or empty for all of them."
    }
  },
  "additionalProperties": false
}
🟒search_help(query)

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

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟒uk_divert_number

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

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒delete_account_steps

Returns how a customer deletes a Widely account, including the in-app path and the confirmation word. Signup uses a one-time code. No sign-in. The response does not include a customer name and does not include a refund.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒port_requirements

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

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒esim_install_steps

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

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒get_account_balance

Returns the live wallet total for this seat, the same headline as Home and Wallet. The response has no spendable or reserved breakdown.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒list_wallet_activity(limit, offset)

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

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
🟒explain_charges(question)

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

Input Schema

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
🟒list_payment_methods

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

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒get_data_rate(country, gb)

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 Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "ISO-2 or country name."
    },
    "gb": {
      "type": "number",
      "description": "Gigabytes they expect. Omit when they have not said."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}
🟒check_call_rate(destination, country, number_type)

Returns the per-minute rate to a destination country or number for this account. The rate depends on the destination.

Input Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "number_type": {
      "type": "string",
      "enum": [
        "mobile",
        "geographic",
        "landline"
      ]
    }
  },
  "additionalProperties": false
}
🟒get_did_rate(country, number_type)

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

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string"
    },
    "number_type": {
      "type": "string"
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false
}
🟒list_did_numbers

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

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒list_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.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒get_auto_topup

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

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒get_notification_preferences

Returns notification toggles and the low-balance threshold.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒run_esim_connection_check(device_id, sim_id)

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 Schema

{
  "type": "object",
  "properties": {
    "device_id": {
      "type": "string"
    },
    "sim_id": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
🟒get_esim_connection_check(request_id)

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

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string"
    }
  },
  "required": [
    "request_id"
  ],
  "additionalProperties": false
}
🟑ask_support(text)

Writes a message into this user's Support chat for a person to read. Any connected account can send it. Support's own assistant does not answer this message. text is what is needed and what was already tried.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}
🟒read_support(limit)

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

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max rows to return."
    }
  },
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded61 tools