# TextUs MCP by usefulapi (remote · textus.usefulapi.io)

Read texts, contacts, campaigns and opt-outs; send SMS, add contacts and notes in TextUs.

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

## Components

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

## Channel facts

- Endpoint: `https://textus.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.5.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 TextUs MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-textus": {
      "type": "http",
      "url": "https://textus.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-02 (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.03 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified

### 2026-11-01 (score 66, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-31 (score 66)

First indexed and scored.

## MCP tools (24)

### `textus_get_profile` (~36 tokens)

Get my profile

Get the profile of the user who owns the API token, including account memberships and roles. TextUs API: GET /profile.

### `textus_list_accounts` (~71 tokens)

List accounts

List the TextUs accounts the user belongs to, with phone numbers and role. Most other tools need an account `slug` from here. TextUs API: GET /accounts.

Input parameters:

- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.

### `textus_get_account` (~56 tokens)

Get an account

Get one account by slug: name, phone numbers, type and links. TextUs API: GET /accounts/{account}.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).

### `textus_list_account_users` (~77 tokens)

List account users

List the users who belong to an account. TextUs API: GET /{account}/users.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.

### `textus_list_contacts` (~146 tokens)

List or search contacts

List contacts of an account in alphabetical order. Use `q` to search by name or phone number. Pass a saved `contact_filter` slug for a saved view (default `all`). TextUs API: GET /{account}/contact_filters/{filter}/contacts.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `contact_filter` (string): Contact filter slug (default `all`; see textus_list_contact_filters).
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.
- `q` (string): Search text (name or phone digits).

### `textus_list_contact_filters` (~81 tokens)

List contact filters

List the saved contact filters (views) of an account. TextUs API: GET /{account}/contact_filters.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.

### `textus_get_contact` (~53 tokens)

Get a contact

Get all known data about one contact: name, phone numbers, custom data and tags. TextUs API: GET /contacts/{contact}.

Input parameters:

- `contact` (string, required): Contact id (from textus_list_contacts).

### `textus_list_contact_notes` (~66 tokens)

List contact notes

List the notes users wrote about a contact. TextUs API: GET /contacts/{contact}/notes.

Input parameters:

- `contact` (string, required): Contact id.
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.

### `textus_list_conversation_filters` (~69 tokens)

List conversation filters

List the conversation filters (inbox views such as unread, mine, closed) of an account, with unread counts. TextUs API: GET /{account}/conversation_filters.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).

### `textus_list_conversations` (~146 tokens)

List or search conversations

List conversations in an inbox view, newest message first. Use filter `search` with `q` (a phone number or text) to find a conversation. TextUs API: GET /{account}/conversation_filters/{filter}/conversations.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `conversation_filter` (string, required): Filter slug from textus_list_conversation_filters (for example `you`, `search`).
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.
- `q` (string): Search text (name or phone digits).

### `textus_get_conversation` (~45 tokens)

Get a conversation

Get one conversation: contact, assigned users, state and last message. TextUs API: GET /conversations/{conversation}.

Input parameters:

- `conversation` (string, required): Conversation id.

### `textus_get_conversation_timeline` (~81 tokens)

Get conversation timeline

Get the messages and events of a conversation, newest first. Messages include direction, body and delivery state. TextUs API: GET /conversations/{conversation}/timeline.

Input parameters:

- `conversation` (string, required): Conversation id.
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.

### `textus_get_conversation_stats` (~50 tokens)

Get conversation stats

Get stats for one conversation: start time, engagement grade and outbound delivery percentage. TextUs API: GET /conversations/{conversation}/stats.

Input parameters:

- `conversation` (string, required): Conversation id.

### `textus_list_campaign_filters` (~58 tokens)

List campaign filters

List the campaign views of an account (for example mine, all). TextUs API: GET /{account}/campaign_filters.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).

### `textus_list_campaigns` (~113 tokens)

List campaigns

List campaigns (bulk messages) in a campaign view, ordered by scheduled time, with title, body and state. TextUs API: GET /{account}/campaign_filters/{filter}/campaigns.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `campaign_filter` (string): Campaign filter slug (default `all`).
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.

### `textus_get_campaign` (~51 tokens)

Get a campaign

Get one campaign: message body, state, schedule and recipient counts. TextUs API: GET /campaigns/{campaign}.

Input parameters:

- `campaign` (string, required): Campaign id (from textus_list_campaigns).

### `textus_get_campaign_analytics` (~66 tokens)

Get campaign analytics

Get aggregated statistics (campaigns sent, recipients, delivery) for all campaigns of an account. TextUs API: GET /{account}/campaigns/analytics.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).

### `textus_list_groups` (~139 tokens)

List groups

List contact groups in a group folder (`mine` or account groups). Use `q` to search group names. TextUs API: GET /{account}/group_filters/{filter}/groups.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.
- `group_filter` (string): Group filter slug (default `mine`; see the `slug` values of GET /{account}/group_filters).
- `q` (string): Search text (name or phone digits).

### `textus_list_group_contacts` (~72 tokens)

List group contacts

List the contacts that belong to a group. TextUs API: GET /groups/{group}/contacts.

Input parameters:

- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.
- `group` (string, required): Group id (from textus_list_groups).

### `textus_list_opt_outs` (~111 tokens)

List opt-outs

List phone numbers that opted out of messages for an account. Use `q` for a partial search (3 digits or more). TextUs API: GET /{account}/opt_outs.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.
- `q` (string): Search text (name or phone digits).

### `textus_list_saved_replies` (~75 tokens)

List saved replies

List the canned message bodies a user saved. TextUs API: GET /users/{user}/saved_replies.

Input parameters:

- `cursor` (string): Pagination cursor: the value after `cursor=` in `view.next` of the previous page.
- `user` (string, required): User id (from textus_get_profile).

### `textus_send_message` (~139 tokens)

Send a text message

WRITE: sends a REAL SMS from the account's number to one or more recipients. It cannot be undone and is never retried. Show the user the recipients and text first, then call with confirm=true. TextUs API: POST /{account}/messages.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `body` (string, required): Message text.
- `confirm` (boolean, required): Must be true. Set it only after the user approved the exact recipients and text.
- `to` (array, required): Recipient phone numbers in E.164 format, for example +13035551234.

### `textus_create_contact` (~109 tokens)

Create a contact

WRITE: creates a new contact in an account. TextUs API: POST /{account}/contacts.

Input parameters:

- `account` (string, required): Account slug (from textus_list_accounts, the `slug` field).
- `business_name` (string): Business name.
- `name` (string, required): Full name.
- `phone` (string, required): Phone number.
- `phone_type` (string): Phone label, for example Mobile or Work (default Mobile).
- `tags` (array): Tags to set.

### `textus_add_contact_note` (~58 tokens)

Add a contact note

WRITE: adds an internal note to a contact. The contact does not see it. TextUs API: POST /contacts/{contact}/notes.

Input parameters:

- `contact` (string, required): Contact id.
- `content` (string, required): Note text.

## Diagnostics

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

## Score history

- 2026-11-05: 18
- 2026-11-04: 18
- 2026-11-03: 18
- 2026-11-02: 18
- 2026-11-01: 66
- 2026-10-31: 66

## Common questions

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

TextUs MCP by usefulapi is listed in the public MCP registry as io.usefulapi/textus. Read texts, contacts, campaigns and opt-outs; send SMS, add contacts and notes in TextUs. This page covers its hosted endpoint (https://textus.usefulapi.io/mcp).

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

TextUs 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 TextUs MCP by usefulapi server expose?

TextUs MCP by usefulapi exposes 24 tools: textus_get_profile, textus_list_accounts, textus_get_account, textus_list_account_users, textus_list_contacts, and 19 more. Their descriptions and schemas cost roughly 1,968 tokens of context every time the server is loaded.

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

Its publisher declares no required credentials for TextUs 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 TextUs MCP by usefulapi server still maintained?

TextUs 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 TextUs MCP by usefulapi server?

VerifyMCP ran 4 checks on TextUs 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 TextUs 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://textus.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/textus/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-textus/textus.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-textus/textus/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/io-usefulapi-textus/textus.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-textus/textus
