Text-Em-All MCP server. Send and track Text-Em-All broadcasts, texts and contact lists.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"text-em-all": {
"url": "https://text-em-all.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
get_account | read | Get account settings Fetch your Text-Em-All account settings — company/billing info plus credit balances (AvailableCallUnits, CallBalance) used for sending. Text-Em-All API: GET /v1/account. Use this first to confirm your credentials work. |
list_broadcasts | read | List broadcasts List broadcasts (text + voice campaigns) as a paged Feed { Size, Items:[...], Previous, Next }. Text-Em-All API: GET /v1/broadcasts. Filter with equals-style `params` (e.g. BroadcastStatus=Complete) and order with `sortby`. For date-range operators (StartDate~gte~2024-01-01) use the textemall_request escape hatch. |
get_broadcast | read | Get a broadcast Fetch a single broadcast by id, including its status and summary. Text-Em-All API: GET /v1/broadcasts/{id}. |
get_broadcast_details | read | Get broadcast delivery details Fetch per-contact delivery details/results for a broadcast (who was reached, delivery status). Text-Em-All API: GET /v1/broadcasts/{id}/details. |
list_text_numbers | read | List text numbers List the toll-free text (SMS) numbers on your account as a Feed. Each TextNumber has a TextNumberID you need to send a 1:1 conversation text (see send_text_message). Text-Em-All API: GET /v1/textnumbers. |
list_lists | read | List contact lists List saved contact lists (groups you can broadcast to) as a Feed; each List has a ListID/ListName. Text-Em-All API: GET /v1/lists. NOTE: inferred from the API's List model — if your account/endpoint differs, use the textemall_request escape hatch. |
get_authorization_token | read | Get a user authorization token Exchange a Text-Em-All account username + PIN/password for that user's authorization token (the value you set as TEXTEMALL_AUTH_TOKEN). Text-Em-All API: POST /v1/user/login. Signed with your App/Secret key only (no user token yet). Returns { AuthToken }. Use this once to bootstrap; store the token in config thereafter. |
get_conversations_sso_url | read | Get a single-sign-on conversations URL Generate a single-sign-on URL to the Text-Em-All conversations UI (open in a browser/iframe). Optionally scope it to one conversation thread by passing a toll-free textNumber + the other phoneNumber. Text-Em-All API: POST /v1/singlesignon/conversations. Returns { Url }. No account data is changed. |
textemall_request | read | Raw read request Power-user escape hatch: GET any Text-Em-All API path not wrapped by a dedicated tool. READ-ONLY — only GET is allowed. Pass the FULL API path after the origin, starting with a slash, INCLUDING any query string, e.g. "/v1/broadcasts?StartDate~gte~2024-01-01&sortby=-StartDate" or "/v1/textnumbers". Returns the parsed JSON. |
create_broadcast | write | Send a broadcast MUTATES Text-Em-All data AND SENDS MESSAGES (spends account credits): creates + sends a broadcast to the given contacts. Text-Em-All API: POST /v1/broadcasts. Set broadcastType to 'SMS' (a text broadcast — provide textMessage) or 'Announcement' (a voice broadcast — provide voiceText for text-to-speech, or a pre-recorded AudioID via `fields.Audio`). Contacts is a list of { primaryPhone, firstName?, lastName?, notes? }. Extra documented fields (CallerID, TextNumberID, Lists, RetryTimes, CallThrottle, MaxMessageLength, StartDate, CheckCallingWindow) go through `fields` (PascalCase). Returns the created broadcast. |
send_text_message | write | Send a conversation text MUTATES Text-Em-All data AND SENDS A TEXT (spends credits): sends a 1:1 conversation text message immediately from one of your toll-free text numbers to a single contact. Text-Em-All API: POST /v1/conversations. You need a textNumberId (from list_text_numbers). Returns the conversation. |
create_draft_broadcast | write | Create a draft broadcast MUTATES Text-Em-All data (creates a DRAFT — does NOT send anything): stages a broadcast with the given contacts and returns a single-sign-on URL to finish + send it in the Text-Em-All UI. Safer than create_broadcast when a human should review before sending. Text-Em-All API: POST /v1/draftbroadcasts. Returns { SingleSignOnUrl, ... }. |
add_account_user | write | Add an account user MUTATES Text-Em-All data: adds a new user to your account (a master user can do this). Text-Em-All API: POST /v1/account/users. Provide the user's fields via `fields` using the API's PascalCase names (e.g. UserName, FirstName, LastName, EmailAddress, Permissions). Returns the created user. |
update_account_user | write | Update an account user MUTATES Text-Em-All data: updates an existing account user. Text-Em-All API: PUT /v1/account/users/{user_id}. Provide the fields to change via `fields` (PascalCase, e.g. FirstName, LastName, EmailAddress, Permissions). The user_id is never sent in the body. Returns the updated user. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Pro | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.