# Trumpia MCP by usefulapi (remote · trumpia.usefulapi.io)

Read Trumpia lists, subscribers, keywords and reports; add contacts and send SMS or email campaigns.

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

## Components

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

## Channel facts

- Endpoint: `https://trumpia.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.5.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-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**: 83/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).
  - Context-footprint check failed: tool/resource definitions use about 2398 tokens (~109/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 81% 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 23 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 Trumpia MCP by usefulapi server?

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

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

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

### Vellum

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

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-trumpia": {
      "type": "http",
      "url": "https://trumpia.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-24 (score 64, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0
- [functional] Server version: 1.1.0 → 1.3.0

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

- [functional] Server version: 1.0.1 → 1.1.0

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

- [functional] Server version: 1.0.0 → 1.0.1

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

- [functional improvement] Stability: unverified → 0.03

### 2026-10-20 (score 62)

First indexed and scored.

## MCP tools (22)

### `trumpia_get_credit_balance` (~27 tokens)

Get credit balance

The account's remaining domestic and international text credits. GET /balance/credit.

### `trumpia_get_request_report` (~81 tokens)

Get request status report

The outcome of an earlier write request (list/contact/message changes are processed asynchronously). Pass the request_id that the write tool returned; the reply holds the result (for example the new list_id) or says it is still processing or failed. GET /report/{request_id}.

Input parameters:

- `request_id` (string, required): The request_id from a write reply.

### `trumpia_list_lists` (~29 tokens)

List distribution lists

All distribution lists (id and name). Lists group subscriptions for targeted messages. GET /list.

### `trumpia_get_list` (~53 tokens)

Get distribution list

One distribution list: display name, description, message frequency and subscription / mobile / email counts. GET /list/{list_id}.

Input parameters:

- `list_id` (string, required): Distribution list id (from trumpia_list_lists).

### `trumpia_create_list` (~139 tokens)

Create distribution list

WRITE: create a distribution list. Trumpia requires disclosing how often subscribers get messages and what for. Returns request_id and list_id. The list name must not contain spaces or special characters. PUT /list.

Input parameters:

- `description` (string, required): What the list sends, e.g. 'promo alerts' (max 20 characters).
- `display_name` (string, required): Name subscribers see when they sign up (max 50 characters).
- `frequency` (integer, required): Messages per month subscribers will receive (disclosure required by mobile regulations).
- `list_name` (string, required): List name (no spaces or special characters), e.g. GeneralList.

### `trumpia_update_list` (~81 tokens)

Update distribution list

WRITE: change a distribution list's name, display name, frequency or description. Only the fields you pass change. POST /list/{list_id}.

Input parameters:

- `description` (string)
- `display_name` (string)
- `frequency` (integer)
- `list_id` (string, required): Distribution list id.
- `list_name` (string)

### `trumpia_list_subscriptions` (~95 tokens)

List subscription ids

Subscription (contact) ids, newest first. Returns ids only; use trumpia_get_subscription for the details. Pages of 100-10000 ids; next_page is set when a full page came back. GET /subscription.

Input parameters:

- `page` (integer): Page number from 1 (default 1).
- `row_size` (integer): Ids per page, 100-10000 (default 100).

### `trumpia_get_subscription` (~64 tokens)

Get subscription

One subscription (contact): name, email, mobile and landline (with verified flags), list ids, created date and custom data. Contains personal data. GET /subscription/{subscription_id}.

Input parameters:

- `subscription_id` (string, required): Subscription id (from a list or search).

### `trumpia_search_subscriptions` (~225 tokens)

Search subscriptions

Find subscription ids by email, mobile number, landline, country code, created date, first name or last name; optionally within one list. search_data 'all' returns every subscription that has data of that type. Returns ids; use trumpia_get_subscription for details. GET /subscription/search.

Input parameters:

- `list_id` (string): Limit the search to this distribution list.
- `page` (integer): Page number from 1 (default 1).
- `row_size` (integer): Ids per page, 100-10000 (default 100).
- `search_data` (string, required): The value to find, or 'all' (every subscription that has data of that type; email, mobile and landline only). For search_type created_date a range is required: 'YYYY-MM-DD hh:mm:ss~YYYY-MM-DD hh:mm:s…
- `search_type` (string, required): Which field to search.

### `trumpia_add_subscriptions` (~122 tokens)

Add subscriptions

WRITE: add contacts to one or more distribution lists (comma-separated list names that already exist). Each contact needs a mobile number, an email or a landline. Only add people who gave express consent to receive messages (TCPA, CAN-SPAM, CTIA rules apply); Trumpia may require a submitted API contract. Returns a request_id; check trumpia_get_request_report. PUT /subscription.

Input parameters:

- `list_names` (array, required): Names of existing distribution lists to add the contacts to.
- `subscriptions` (array, required): 1-100 contacts.

### `trumpia_update_subscription` (~124 tokens)

Update subscription

WRITE: change a contact's name, email, mobile, landline, custom data or list membership. Only the fields you pass change. Returns a request_id. POST /subscription/{subscription_id}.

Input parameters:

- `customdata` (array)
- `email` (string)
- `first_name` (string)
- `landline` (object)
- `last_name` (string)
- `list_names` (array): Existing distribution list names the contact should be added to.
- `mobile` (object)
- `subscription_id` (string, required): Subscription id.

### `trumpia_list_custom_fields` (~39 tokens)

List custom data fields

All custom data fields (id and name) that can be stored on subscriptions and used as mail-merge values. GET /customdata.

### `trumpia_get_custom_field` (~58 tokens)

Get custom data field

One custom data field: type, options (allowed values, max length), whether required, and its mail-merge text. GET /customdata/{customdata_id}.

Input parameters:

- `customdata_id` (string, required): Custom data field id.

### `trumpia_list_keywords` (~28 tokens)

List keywords

All mobile keywords with id, keyword and the short or long code. GET /keyword.

### `trumpia_get_keyword` (~48 tokens)

Get keyword

One mobile keyword in detail: auto-response message, code, alternative messages. GET /keyword/{keyword_id}.

Input parameters:

- `keyword_id` (string, required): Keyword id (from trumpia_list_keywords).

### `trumpia_list_org_names` (~60 tokens)

List organization names

Registered organization names as { org_names: [ { org_name_id, name, default } ] } (Trumpia returns a bare array; it is wrapped). The id can be set as org_name_id on messages. GET /orgname.

### `trumpia_list_email_senders` (~62 tokens)

List email sender addresses

Registered email sender addresses (the From / Reply-To addresses allowed for email messages) as { senders: [ { sender_id, address, default } ] } (Trumpia returns a bare array; it is wrapped). GET /email/sender.

### `trumpia_get_message` (~65 tokens)

Get message statistics

Delivery statistics of a message sent with trumpia_send_message: status (sent / scheduled / canceled), totals, sent and failed counts per channel and credits used. GET /message/{message_id}.

Input parameters:

- `message_id` (string, required): Message id returned by trumpia_send_message.

### `trumpia_list_scheduled_messages` (~106 tokens)

List scheduled messages

Messages that are scheduled and not yet sent (id, description, scheduled time, recipient counts). Use offset and limit to page; total_count says how many exist. GET /message/scheduled.

Input parameters:

- `limit` (integer): Messages to return, 1-1000 (default 50).
- `offset` (integer): Messages to skip (default 0).
- `order` (string): scheduled_at = oldest first (default), -scheduled_at = newest first.

### `trumpia_send_message` (~352 tokens)

Send message

WRITE, SENDS REAL MESSAGES that spend credits and cannot be recalled once sent: send an SMS and/or an email to distribution lists or specific subscriptions, now or scheduled (a scheduled one can be cancelled with trumpia_cancel_scheduled_message). Subscribers must have opted in (TCPA, CAN-SPAM, CTIA). Confirm the recipients and text with the user first. Mail merge tokens: [$FirstName], [$LastName], [$FullName], [$CustomData-NAME]. Returns request_id and message_id. PUT /message.

Input parameters:

- `description` (string, required): Internal description of the message.
- `email_body` (string): Email body (needs email_subject).
- `email_reply_to` (string): Reply-to address (a registered sender).
- `email_subject` (string): Email subject (needs email_body).
- `mail_merge_first_name` (string): Replacement when a contact has no first name.
- `mail_merge_full_name` (string): Replacement when a contact has no full name.
- `mail_merge_last_name` (string): Replacement when a contact has no last name.
- `org_name_id` (string): Organization name id to include in the mobile message (default organization name if omitted).
- `recipient_ids` (array, required): 1-300 ids (at most 100 lists or 300 subscriptions).
- `recipient_type` (string, required): Whether recipient_ids are distribution list ids or subscription ids.
- `send_date` (string): Schedule time as YYYY-MM-DD hh:mm:ss (24-hour clock; the account's time zone). Omit to send immediately.
- `sms` (string): SMS text (140 bytes per segment in US/Canada, up to 980 bytes concatenated).

### `trumpia_send_sms` (~219 tokens)

Send direct SMS

WRITE, SENDS A REAL TEXT that spends a credit and cannot be recalled: one SMS to one mobile number without adding the contact first. The recipient must have consented; Trumpia may require API Certification for contacts that have not opted in. Confirm number and text with the user first. Returns request_id and sms_id. PUT /sms.

Input parameters:

- `country_code` (string): Country code (default 1). 0 = infer it from the number, which then must start with +.
- `message` (string, required): The text (the SMS header and footer count toward the length).
- `mobile_number` (string, required): US: the 10-digit number without leading 0 or 1. With country_code 0 the number must be E.164 with a leading +, e.g. +17774443210.
- `org_name_id` (string): Organization name id (default organization name if omitted).
- `sender` (string): Short/long code or registered landline to send from (default: the account's code).

### `trumpia_cancel_scheduled_message` (~63 tokens)

Cancel scheduled message

WRITE: cancel a message that is scheduled and has not been sent yet (see trumpia_list_scheduled_messages). Does nothing for a message already sent. DELETE /message/scheduled/{message_id}.

Input parameters:

- `message_id` (string, required): Scheduled message id.

## Diagnostics

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

## Score history

- 2026-10-25: 64
- 2026-10-24: 64
- 2026-10-23: 63
- 2026-10-22: 63
- 2026-10-21: 62
- 2026-10-20: 62

## Common questions

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

Trumpia MCP by usefulapi is listed in the public MCP registry as io.usefulapi/trumpia. Read Trumpia lists, subscribers, keywords and reports; add contacts and send SMS or email campaigns. This page covers its hosted endpoint (https://trumpia.usefulapi.io/mcp).

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

Trumpia MCP by usefulapi scores 64 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 Trumpia MCP by usefulapi server expose?

Trumpia MCP by usefulapi exposes 22 tools: trumpia_get_credit_balance, trumpia_get_request_report, trumpia_list_lists, trumpia_get_list, trumpia_create_list, and 17 more. Their descriptions and schemas cost roughly 2,140 tokens of context every time the server is loaded.

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

Yes. Trumpia 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 Trumpia MCP by usefulapi server still maintained?

Trumpia 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://trumpia.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/trumpia/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-trumpia/trumpia.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-trumpia/trumpia.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-trumpia/trumpia
