# DialMyCalls MCP by usefulapi (remote · dialmycalls.usefulapi.io)

Manage DialMyCalls contacts and groups; read broadcasts; send text and voice broadcasts on approval.

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-25

## Components

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

## Channel facts

- Endpoint: `https://dialmycalls.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.2.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-10-25.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - 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.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 85/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2833 tokens (~101/item across 28 items; 28 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 92% 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 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 29 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 DialMyCalls MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-dialmycalls": {
      "type": "http",
      "url": "https://dialmycalls.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-10-25 (score 63, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-24 (score 63)

First indexed and scored.

## MCP tools (28)

### `dialmycalls_get_account` (~30 tokens)

Get DialMyCalls account

Get the account: credits available (calls and texts spend credits) and the account creation date.

### `dialmycalls_list_contacts` (~81 tokens)

List contacts

List contacts in the account (name, phone, email, groups), 100 per page.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_list_contacts_in_group` (~98 tokens)

List contacts in a group

List the contacts that belong to one contact group (from dialmycalls_list_groups), 100 per page.

Input parameters:

- `group_id` (string, required): The contact group id.
- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_get_contact` (~27 tokens)

Get a contact

Get one contact by id.

Input parameters:

- `id` (string, required): The contact id.

### `dialmycalls_create_contact` (~118 tokens)

Create a contact

Add a contact (phone number required) to the contact list, optionally into contact groups. Sends nothing to the contact.

Input parameters:

- `email` (string)
- `extension` (string): Phone extension.
- `extra1` (string): Miscellaneous data about the contact.
- `firstname` (string)
- `group_ids` (array): Contact groups the contact belongs to (from dialmycalls_list_groups).
- `lastname` (string)
- `phone` (string, required): Phone number, e.g. 5555555555.

### `dialmycalls_update_contact` (~145 tokens)

Update a contact

Update a contact. DialMyCalls requires the phone number on every update. Fields you omit are left as they are; if you pass group_ids the contact's groups are REPLACED by that list.

Input parameters:

- `email` (string)
- `extension` (string): Phone extension.
- `extra1` (string): Miscellaneous data about the contact.
- `firstname` (string)
- `group_ids` (array): Contact groups the contact belongs to (from dialmycalls_list_groups).
- `id` (string, required): The contact id.
- `lastname` (string)
- `phone` (string, required): Phone number, e.g. 5555555555.

### `dialmycalls_list_groups` (~75 tokens)

List contact groups

List contact groups with their contact counts, 100 per page.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_get_group` (~35 tokens)

Get a contact group

Get one contact group (name, contacts_count) by id.

Input parameters:

- `id` (string, required): The contact group id.

### `dialmycalls_create_group` (~29 tokens)

Create a contact group

Create an empty contact group. Sends nothing.

Input parameters:

- `name` (string, required): Group name.

### `dialmycalls_list_recordings` (~92 tokens)

List voice recordings

List voice recordings (the messages a call broadcast can play): id, name, type, length, processed. A call needs a processed recording.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_get_recording` (~42 tokens)

Get a recording

Get one voice recording by id (includes its audio file url and whether it is processed and ready).

Input parameters:

- `id` (string, required): The recording id.

### `dialmycalls_create_recording_tts` (~86 tokens)

Create a text-to-speech recording

Create a voice recording from text (text-to-speech) that a call broadcast can then play. Makes no call and sends nothing.

Input parameters:

- `gender` (string, required): Voice gender: M or F.
- `language` (string, required): Language: en or es.
- `name` (string, required): Recording name.
- `text` (string, required): The text to speak.

### `dialmycalls_list_caller_ids` (~90 tokens)

List caller IDs

List caller ID phone numbers on the account (id, name, phone, approved). A call broadcast needs an approved caller ID.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_list_keywords` (~84 tokens)

List text keywords

List text-message keywords (id, keyword, status). A text broadcast must be tied to one active keyword.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_list_shortcodes` (~72 tokens)

List shortcodes

List shortcodes available to send texts from.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_list_do_not_contacts` (~85 tokens)

List do-not-contact numbers

List phone numbers on the account's do-not-contact lists (type call or text); these opted out.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_list_calls` (~84 tokens)

List call broadcasts

List voice call broadcasts (name, recording, recipients, credit cost, send time), 100 per page.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_get_call` (~43 tokens)

Get a call broadcast

Get one voice call broadcast by id (name, recipients, credit cost, send time, pending_cancel).

Input parameters:

- `id` (string, required): The call broadcast id.

### `dialmycalls_list_call_recipients` (~103 tokens)

List call recipients

List the recipients of a call broadcast with the result per number (answered, voicemail, busy, no answer...), 100 per page.

Input parameters:

- `id` (string, required): The call broadcast id.
- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_send_call` (~352 tokens)

Send a voice call broadcast (spends credits)

Send (or schedule) an automated VOICE CALL broadcast that plays a recording to real people. THIS SPENDS ACCOUNT CREDITS AND PHONES THE RECIPIENTS; it cannot be undone once it goes out (a scheduled one can be stopped with dialmycalls_cancel_call). Needs an approved caller_id (dialmycalls_list_caller_ids) and a processed recording (dialmycalls_list_recordings or dialmycalls_create_recording_tts). Ask the user to approve the recipients, recording and time first; with confirm false nothing is sent and a preview is returned.

Input parameters:

- `callerid_id` (string, required): Caller ID to call from (an approved one from dialmycalls_list_caller_ids).
- `confirm` (boolean, required): MUST be true to send. Set it to true ONLY after the user has explicitly approved the recipients and content in this conversation. With false the tool sends nothing and returns a preview.
- `group_id` (string): Send to every contact in this contact group (from dialmycalls_list_groups); contacts without a phone number are skipped.
- `name` (string, required): Name of the broadcast.
- `recipients` (array): People to send to, by phone number (up to 1000). Give recipients, group_id, or both.
- `recording_id` (string, required): Recording to play (from dialmycalls_list_recordings).
- `send_at` (string): When to send, an ISO 8601 date-time WITH time zone (e.g. 2026-11-05T14:00:00-05:00). Omit to send immediately.
- `use_amd` (boolean): Detect answering machines (default: off).

### `dialmycalls_cancel_call` (~41 tokens)

Cancel a call broadcast

Cancel an outgoing or scheduled call broadcast that has not finished. Calls already placed are not undone.

Input parameters:

- `id` (string, required): The call broadcast id.

### `dialmycalls_list_texts` (~86 tokens)

List text broadcasts

List outgoing text (SMS) broadcasts (name, recipients, credit cost, send time), 100 per page.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_get_text` (~43 tokens)

Get a text broadcast

Get one outgoing text broadcast by id (name, recipients, credit cost, send time, pending_cancel).

Input parameters:

- `id` (string, required): The text broadcast id.

### `dialmycalls_list_text_recipients` (~105 tokens)

List text recipients

List the recipients of a text broadcast with the delivery status per number (delivered, undeliverable, queued...), 100 per page.

Input parameters:

- `id` (string, required): The text broadcast id.
- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_send_text` (~364 tokens)

Send a text (SMS) broadcast (spends credits)

Send (or schedule) a TEXT MESSAGE (SMS) broadcast to real people. THIS SPENDS ACCOUNT CREDITS AND TEXTS THE RECIPIENTS; it cannot be undone once it goes out (a scheduled one can be stopped with dialmycalls_cancel_text). Needs an active keyword (dialmycalls_list_keywords). Up to 10 messages per broadcast. Ask the user to approve the recipients, wording and time first; with confirm false nothing is sent and a preview is returned.

Input parameters:

- `concatenate_sms` (boolean): Combine all messages into one on the recipient's phone.
- `confirm` (boolean, required): MUST be true to send. Set it to true ONLY after the user has explicitly approved the recipients and content in this conversation. With false the tool sends nothing and returns a preview.
- `group_id` (string): Send to every contact in this contact group (from dialmycalls_list_groups); contacts without a phone number are skipped.
- `keyword_id` (string, required): The keyword to tie the broadcast to (an active one from dialmycalls_list_keywords).
- `messages` (array, required): The message texts (1-10, each up to 1600 characters).
- `name` (string, required): Name of the broadcast.
- `recipients` (array): People to send to, by phone number (up to 1000). Give recipients, group_id, or both.
- `send_at` (string): When to send, an ISO 8601 date-time WITH time zone (e.g. 2026-11-05T14:00:00-05:00). Omit to send immediately.
- `shortcode_id` (string): Send from this shortcode (from dialmycalls_list_shortcodes); default: the account's number.

### `dialmycalls_cancel_text` (~42 tokens)

Cancel a text broadcast

Cancel an outgoing or scheduled text broadcast that has not finished. Texts already sent are not undone.

Input parameters:

- `id` (string, required): The text broadcast id.

### `dialmycalls_list_incoming_texts` (~89 tokens)

List incoming texts

List text messages people sent to the account's numbers (from, to, message, time), 100 per page.

Input parameters:

- `limit` (integer): Records per page, 1-100 (default 100).
- `start` (integer): First record to return, 1-based (default 1). Use next_start from the previous reply to get the next page.

### `dialmycalls_get_incoming_text` (~32 tokens)

Get an incoming text

Get one incoming text message by id.

Input parameters:

- `id` (string, required): The incoming text id.

## Diagnostics

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

## Score history

- 2026-10-25: 63
- 2026-10-24: 63

## Common questions

### What is the DialMyCalls MCP by usefulapi server?

DialMyCalls MCP by usefulapi is listed in the public MCP registry as io.usefulapi/dialmycalls. Manage DialMyCalls contacts and groups; read broadcasts; send text and voice broadcasts on approval. This page covers its hosted endpoint (https://dialmycalls.usefulapi.io/mcp).

### Is the DialMyCalls MCP by usefulapi server safe to use?

DialMyCalls MCP by usefulapi scores 63 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 DialMyCalls MCP by usefulapi server expose?

DialMyCalls MCP by usefulapi exposes 28 tools: dialmycalls_get_account, dialmycalls_list_contacts, dialmycalls_list_contacts_in_group, dialmycalls_get_contact, dialmycalls_create_contact, and 23 more. Their descriptions and schemas cost roughly 2,573 tokens of context every time the server is loaded.

### Does the DialMyCalls MCP by usefulapi server require authentication?

Yes. DialMyCalls MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the DialMyCalls MCP by usefulapi server still maintained?

DialMyCalls MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 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://dialmycalls.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/dialmycalls/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-dialmycalls/dialmycalls.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-dialmycalls/dialmycalls.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-dialmycalls/dialmycalls
