# Spoke Phone MCP by usefulapi (remote · spoke-phone.usefulapi.io)

Read Spoke calls, transcripts, directory and users; manage phonebook contacts and send SMS.

- Trust score: 18/100 (low)
- Change this week: −44
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `spoke-phone.usefulapi.io`: 18/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-spoke-phone/spoke-phone.md), [page](https://verifymcp.io/servers/io-usefulapi-spoke-phone/spoke-phone)

## Channel facts

- Endpoint: `https://spoke-phone.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.11.3`

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

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Tool Safety**: 0/100
  - Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 5 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### How do I install the Spoke Phone MCP by usefulapi server?

Spoke Phone MCP by usefulapi is a hosted endpoint at https://spoke-phone.usefulapi.io/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 io-usefulapi-spoke-phone 'https://spoke-phone.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-spoke-phone": {
      "url": "https://spoke-phone.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-spoke-phone": {
      "type": "http",
      "url": "https://spoke-phone.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-spoke-phone]
url = "https://spoke-phone.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-spoke-phone": {
      "type": "remote",
      "url": "https://spoke-phone.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-spoke-phone --url 'https://spoke-phone.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-spoke-phone:
    url: "https://spoke-phone.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-spoke-phone": {
      "Transport": "http",
      "Url": "https://spoke-phone.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-spoke-phone -t streamable-http -u 'https://spoke-phone.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-spoke-phone": {
      "type": "http",
      "url": "https://spoke-phone.usefulapi.io/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-11-01 (score 18, −48)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Tool safety: pass → unverified
- [security regression] Authorization: pass → unverified
- [security regression] Stability: 0.17 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-10-31 (score 66, +3)

- [security improvement] Authorization: partial → pass
- [functional improvement] MCP protocol: fail → pass
- [functional] New prompt “check_who_is_available_right_now”
- [functional] New prompt “keep_caller_id_contacts_up_to_date”
- [functional] New prompt “read_a_call_s_transcript_and_ai_summary”
- [functional] New prompt “review_yesterday_s_calls”
- [functional] New prompt “see_how_locations_and_teams_are_staffed”
- [functional] New prompt “send_a_text_message_after_a_call”
- [functional] MCP protocol version: 2025-06-18 → 2025-11-25
- [functional] Server version: 1.7.0 → 1.9.0
- [functional] Server version: 1.6.0 → 1.7.0
- [functional] Server version: 1.5.2 → 1.6.0

### 2026-10-30 (score 63, +1)

- [functional] Server version: 1.5.1 → 1.5.2
- [functional] Server version: 1.5.0 → 1.5.1

### 2026-10-29 (score 62, 0)

- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0

### 2026-10-28 (score 62, +1)

- [functional] Server version: 1.1.0 → 1.3.0

### 2026-10-27 (score 61, 0)

- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-26 (score 61)

First indexed and scored.

## MCP tools (27)

### `spokephone_list_calls` (~247 tokens)

List calls

List call records (oldest first by default; pass sortOrder descending for the latest calls), with caller, direction, duration, assigned user/team and recording URLs. Filter by time window or the external party's number. Returns { meta: { next }, calls }.

Input parameters:

- `before` (integer): Only calls created before this time (unix timestamp in milliseconds).
- `contactNumber` (string): Only calls with this external party number (+E.164).
- `includeActive` (boolean): Also return calls still in progress (default false).
- `includeRecordingUrl` (boolean): Include recording/voicemail URLs (default true).
- `limit` (integer): Page size (default 100, max 1000).
- `modified` (integer): Only calls created or modified since this time (calls gain notes/recordings after they end) (unix timestamp in milliseconds).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.
- `since` (integer): Only calls created at or after this time (unix timestamp in milliseconds).
- `sortOrder` (string): ascending = oldest first (the API default); descending = latest first.

### `spokephone_get_call` (~36 tokens)

Get a call

Get one call record by call id.

Input parameters:

- `id` (string, required): Call id.
- `includeRecordingUrl` (boolean)

### `spokephone_get_call_recording` (~42 tokens)

Get a call recording

Get the details and download URL of one recording of a call.

Input parameters:

- `id` (string, required): Call id.
- `recordingId` (string, required)

### `spokephone_list_call_content_analysis` (~94 tokens)

List a call's AI analysis

List the Enlighten AI content-analysis results (summaries etc.) stored for one call.

Input parameters:

- `artifact` (string): Artifact schema name, e.g. "generalSummary".
- `id` (string, required): Call id.
- `limit` (integer): Page size (default 5, max 10).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.

### `spokephone_list_directory` (~158 tokens)

List the directory

List or search the unified Spoke directory (users, teams, devices) with extensions and live availability. Exactly one of extension, phoneNumber or ivrKey may be used to look up an entry. Returns { meta: { next }, entries }.

Input parameters:

- `extension` (string): Exact extension number.
- `includeHiddenCallGroups` (boolean)
- `includeSuspendedUsers` (boolean)
- `ivrKey` (string): Exact IVR key.
- `limit` (integer): Page size (default 100, max 1000).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.
- `phoneNumber` (string): Exact phone number assigned to an entry.

### `spokephone_get_directory_entry` (~34 tokens)

Get a directory entry

Get one directory entry (user, team or device) by entry id.

Input parameters:

- `entryId` (string, required)

### `spokephone_list_users` (~42 tokens)

List users

List active Spoke users with real-time availability. Optionally filter by email address.

Input parameters:

- `email` (string): Return only the user with this email address.

### `spokephone_get_user` (~29 tokens)

Get a user

Get one Spoke user with availability, by user id.

Input parameters:

- `id` (string, required)

### `spokephone_list_teams` (~64 tokens)

List teams

List Spoke teams (call groups) with their members and availability.

Input parameters:

- `limit` (integer): Page size (default 100, max 1000).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.

### `spokephone_list_locations` (~56 tokens)

List locations

List the locations of the organisation.

Input parameters:

- `limit` (integer): Page size (default 100, max 1000).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.

### `spokephone_get_location` (~24 tokens)

Get a location

Get one location by id.

Input parameters:

- `locationId` (string, required)

### `spokephone_list_location_users` (~66 tokens)

List a location's users

List the users assigned to one location.

Input parameters:

- `limit` (integer): Page size (default 100, max 1000).
- `locationId` (string, required)
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.

### `spokephone_list_phonebooks` (~90 tokens)

List phonebooks

List shared phonebooks (the CRM contact containers used for caller ID), each with its contacts. Use limit 0 to list phonebooks without contacts.

Input parameters:

- `excludeEmpty` (boolean): Skip phonebooks that have no matching contacts.
- `limit` (integer): Page size (default 100, max 1000).
- `search` (string): Filter contacts (at least 3 characters).

### `spokephone_get_phonebook` (~91 tokens)

Get a phonebook

Get one phonebook and a page of its contacts. The id may also be a user's email address for that user's personal phonebook.

Input parameters:

- `id` (string, required)
- `limit` (integer): Page size (default 100, max 1000).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.
- `search` (string)

### `spokephone_get_phonebook_contact` (~38 tokens)

Get a phonebook contact

Get one contact of a phonebook.

Input parameters:

- `contactId` (string, required)
- `id` (string, required): Phonebook id.

### `spokephone_list_transcripts` (~110 tokens)

List transcripts

List call and voicemail transcripts. Filter by time window or source.

Input parameters:

- `before` (integer): Created before (unix timestamp in milliseconds).
- `limit` (integer): Page size (default 100, max 1000).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.
- `since` (integer): Created at or after (unix timestamp in milliseconds).
- `sourceContextId` (string)
- `sourceId` (string)

### `spokephone_get_transcript` (~24 tokens)

Get a transcript

Get one transcript by id.

Input parameters:

- `id` (string, required)

### `spokephone_get_transcript_segments` (~31 tokens)

Get transcript segments

Get the per-speaker segments of one transcript.

Input parameters:

- `id` (string, required): Transcript id.

### `spokephone_list_content_analysis` (~151 tokens)

List AI content analysis

List AI content-analysis results (needs the Enlighten entitlement). Filter by time, source, participant or artifact name.

Input parameters:

- `artifact` (string): Artifact schema name, e.g. "generalSummary".
- `before` (integer): First recording/transcript started before (unix timestamp in milliseconds).
- `contactNumber` (string)
- `limit` (integer): Page size (default 5, max 10).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.
- `participantId` (string)
- `since` (integer): First recording/transcript started at or after (unix timestamp in milliseconds).
- `sourceId` (string)

### `spokephone_get_content_analysis` (~26 tokens)

Get an AI content analysis

Get one content-analysis result by id.

Input parameters:

- `id` (string, required)

### `spokephone_list_webhooks` (~58 tokens)

List webhooks

List the webhook subscriptions of the account.

Input parameters:

- `limit` (integer): Page size (default 100, max 1000).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.

### `spokephone_get_webhook` (~25 tokens)

Get a webhook

Get one webhook subscription by id.

Input parameters:

- `id` (string, required)

### `spokephone_list_trunks` (~64 tokens)

List SIP trunks

List the SIP trunks that overlay a legacy PBX onto Spoke.

Input parameters:

- `limit` (integer): Page size (default 100, max 1000).
- `next` (string): Cursor from the previous reply's meta.next; omit for the first page.

### `spokephone_get_trunk` (~26 tokens)

Get a SIP trunk

Get one SIP trunk by id.

Input parameters:

- `trunkId` (string, required)

### `spokephone_send_sms` (~234 tokens)

Send an SMS

WRITE: send a real SMS to a phone number (or a group MMS to several) from a company number or from a Spoke user's conversation number. The message appears in the Spoke conversation. Confirm the recipient and text with the user first. Needs an SMS-enabled number. POST /conversationMessages.

Input parameters:

- `assignUsers` (array): User emails to assign (required with routingAction assign_users).
- `body` (string, required): Message text, up to 1600 characters.
- `confirm` (boolean, required): Must be true: the user approved sending this exact text to these recipients.
- `conversationName` (string)
- `fromNumber` (string): Company number to send from (+E.164). Give this OR fromUserEmail.
- `fromUserEmail` (string): Email of the Spoke user whose conversation number sends the message. Give this OR fromNumber.
- `notificationMode` (string)
- `routingAction` (string): Who handles replies in a new conversation.
- `to` (array, required): Recipient number(s) in +E.164 form. More than one sends a group MMS.

### `spokephone_save_phonebook_contact` (~205 tokens)

Add or replace a phonebook contact

WRITE: add a contact to a phonebook, REPLACING any contact there with the same contactId (other contacts are untouched). The phonebook id may be a user's email for a personal phonebook. Contacts feed caller ID. PUT /phonebooks/{id}/contacts.

Input parameters:

- `companyName` (string)
- `contactId` (string): Your own stable id for the contact; reuse it to replace that contact.
- `countryIso` (string): ISO country code for formatting local numbers, e.g. GB.
- `emails` (array)
- `firstName` (string)
- `jobTitle` (string)
- `lastName` (string)
- `phoneNumbers` (array, required): At least one number, e.g. { label: 'work', value: '+442071234567' }.
- `phonebookId` (string, required): Phonebook id (from spokephone_list_phonebooks) or a user's email address.

### `spokephone_delete_phonebook_contact` (~77 tokens)

Delete a phonebook contact

WRITE, destructive: delete one contact from a phonebook (it stops showing in caller ID). DELETE /phonebooks/{id}/contacts/{contactId}.

Input parameters:

- `confirm` (boolean, required): Must be true: the user approved deleting this contact.
- `contactId` (string, required)
- `phonebookId` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-spoke-phone/spoke-phone#diagnostics

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 18
- 2026-10-31: 66
- 2026-10-30: 63
- 2026-10-29: 62
- 2026-10-28: 62
- 2026-10-27: 61
- 2026-10-26: 61

## Common questions

### What is the Spoke Phone MCP by usefulapi server?

Spoke Phone MCP by usefulapi is listed in the public MCP registry as io.usefulapi/spoke-phone. Read Spoke calls, transcripts, directory and users; manage phonebook contacts and send SMS. This page covers its hosted endpoint (https://spoke-phone.usefulapi.io/mcp).

### Is the Spoke Phone MCP by usefulapi server safe to use?

Spoke Phone MCP by usefulapi scores 18 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 Spoke Phone MCP by usefulapi server expose?

Spoke Phone MCP by usefulapi exposes 27 tools: spokephone_list_calls, spokephone_get_call, spokephone_get_call_recording, spokephone_list_call_content_analysis, spokephone_list_directory, and 22 more. Their descriptions and schemas cost roughly 2,142 tokens of context every time the server is loaded.

### Does the Spoke Phone MCP by usefulapi server require authentication?

Its publisher declares no required credentials for Spoke Phone MCP by usefulapi. We have not been able to confirm that against the live endpoint, and a server can require authorisation without declaring it here.

### Is the Spoke Phone MCP by usefulapi server still maintained?

Spoke Phone MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the Spoke Phone MCP by usefulapi server?

VerifyMCP ran 4 checks on Spoke Phone MCP by usefulapi, covering TLS certificate, HSTS header, DNSSEC and Transport. 7 items could not be completed, a gap on our side rather than a finding about Spoke Phone MCP by usefulapi: Authorization, HTTPS, Schema quality, Stability and 3 more. 5 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://spoke-phone.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/spoke-phone/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-spoke-phone/spoke-phone.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-spoke-phone/spoke-phone/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-spoke-phone/spoke-phone.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-spoke-phone/spoke-phone
