FireText MCP by usefulapi
Read FireText credit, messages and reports; send an SMS to up to 10 numbers; manage opt-outs.
Should I use this
Quality & Safety
Findings (3)
- LOWin firetext_get_sent_summary
- LOWin firetext_list_received_messages
- LOWin firetext_list_scheduled_messages
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"firetext": {
"url": "https://firetext.usefulapi.io/mcp"
}
}
}Remote endpoints
https://firetext.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (13)
🟢firetext_get_credit(subaccount)
Number of SMS credits (messages) remaining on the FireText account or a sub-account. FireText: /credit.
Input Schema
{
"type": "object",
"properties": {
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_list_received_messages(from, to, pp, page, subaccount)
Inbound SMS received on the account's FireText numbers/keywords (messageID, sentTo, keyword, receivedFrom, receivedOn, message). Dates YYYY-MM-DD; from="last" returns only what is new since the last call. FireText: /receivedmessages.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Start date YYYY-MM-DD, or \"last\" for only what is new since the last access.",
"type": "string",
"pattern": "^(\\d{4}-\\d{2}-\\d{2}|last)$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date YYYY-MM-DD."
},
"pp": {
"description": "Results per page: 10, 25 (default), 50 or 100.",
"anyOf": [
{
"type": "number",
"const": 10
},
{
"type": "number",
"const": 25
},
{
"type": "number",
"const": 50
},
{
"type": "number",
"const": 100
}
]
},
"page": {
"description": "Page number (1-based).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_list_sent_messages(from, to, pp, page, subaccount)
Messages (campaigns) sent from the account: messageID, sentOn, sentTo (group), recipientCount, message. The messageID is what the delivery and click reports need. Dates YYYY-MM-DD. FireText: /sentmessages.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Start date YYYY-MM-DD, or \"last\" for only what is new since the last access.",
"type": "string",
"pattern": "^(\\d{4}-\\d{2}-\\d{2}|last)$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date YYYY-MM-DD."
},
"pp": {
"description": "Results per page: 10, 25 (default), 50 or 100.",
"anyOf": [
{
"type": "number",
"const": 10
},
{
"type": "number",
"const": 25
},
{
"type": "number",
"const": 50
},
{
"type": "number",
"const": 100
}
]
},
"page": {
"description": "Page number (1-based).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_get_sent_summary(from, to, subaccount)
Totals for a date range: number of campaigns, recipients and credits used. FireText: /sentreport.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date YYYY-MM-DD."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date YYYY-MM-DD."
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_list_scheduled_messages(pp, page, subaccount)
Messages queued for later sending (messageID, queuedOn, scheduledFor, recipientCount, sourceAddress, sendTo, message). FireText: /scheduledmessages.
Input Schema
{
"type": "object",
"properties": {
"pp": {
"description": "Results per page: 10, 25 (default), 50 or 100.",
"anyOf": [
{
"type": "number",
"const": 10
},
{
"type": "number",
"const": 25
},
{
"type": "number",
"const": 50
},
{
"type": "number",
"const": 100
}
]
},
"page": {
"description": "Page number (1-based).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_get_delivery_report(message, reference, pp, page, subaccount)
Per-recipient delivery status of one sent message (mobile, names, messageSent, messageUpdate, status: Delivered / Declined / Buffered / Pending with Network / Rejected / Unconfirmed). Give the FireText message id OR the custom reference used when sending. FireText: /deliveryreport.
Input Schema
{
"type": "object",
"properties": {
"message": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,40}$",
"description": "FireText message ID (see firetext_list_sent_messages)."
},
"reference": {
"description": "The custom reference set when sending (alternative to message).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"pp": {
"description": "Results per page: 10000 or 25000 (the vendor's only choices for this report). Large; omit for the vendor default.",
"anyOf": [
{
"type": "number",
"const": 10000
},
{
"type": "number",
"const": 25000
}
]
},
"page": {
"description": "Page number (1-based).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_get_click_report(message, pp, page, subaccount)
Link clicks for one sent message (mobile, names, clicked, userAgent). Only for messages that used FireText's Trackable SMS feature (otherwise the vendor answers URL error). FireText: /clickreport.
Input Schema
{
"type": "object",
"properties": {
"message": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,40}$",
"description": "FireText message ID (see firetext_list_sent_messages)."
},
"pp": {
"description": "Results per page: 10000 or 25000 (the vendor's only choices for this report). Large; omit for the vendor default.",
"anyOf": [
{
"type": "number",
"const": 10000
},
{
"type": "number",
"const": 25000
}
]
},
"page": {
"description": "Page number (1-based).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"required": [
"message"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_get_contact(mobile, subaccount)
Stored details of one contact by mobile number (firstname, lastname, mobile, customField1-3). FireText: /contactinfo.
Input Schema
{
"type": "object",
"properties": {
"mobile": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"description": "Mobile number: UK 07700900123 / 447700900123, or international without + and leading zeros (e.g. 33612345678)."
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"required": [
"mobile"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_list_unsubscribed(from, to, group, pp, page, ...)
Contacts that opted out (names, mobile, custom fields, addedOn, unsubscribedOn, reason). Optional date range and group API id. FireText: /unsubscribed.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Start date YYYY-MM-DD, or \"last\" for only what is new since the last access.",
"type": "string",
"pattern": "^(\\d{4}-\\d{2}-\\d{2}|last)$"
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date YYYY-MM-DD."
},
"group": {
"description": "Group API ID to restrict to one group.",
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,64}$"
},
"pp": {
"description": "Results per page: 10, 25 (default), 50 or 100.",
"anyOf": [
{
"type": "number",
"const": 10
},
{
"type": "number",
"const": 25
},
{
"type": "number",
"const": 50
},
{
"type": "number",
"const": 100
}
]
},
"page": {
"description": "Page number (1-based).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢firetext_list_keywords(pp, page, subaccount)
SMS keywords on the account (keywordID, number, keyword, reference). FireText: /keywords.
Input Schema
{
"type": "object",
"properties": {
"pp": {
"description": "Results per page: 10, 25 (default), 50 or 100.",
"anyOf": [
{
"type": "number",
"const": 10
},
{
"type": "number",
"const": 25
},
{
"type": "number",
"const": 50
},
{
"type": "number",
"const": 100
}
]
},
"page": {
"description": "Page number (1-based).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴firetext_send_sms(to, message, from, reference, unicode, ...)
WRITE, SPENDS MONEY: sends a REAL SMS to real phones and uses the account's SMS credits (one credit per 160 GSM characters per recipient; long and unicode messages cost more). Cannot be undone. At most 10 recipients per call; no groups, templates, scheduling or repeats. Only call after the user confirmed the exact text, sender and numbers. FireText: /sendsms.
Input Schema
{
"type": "object",
"properties": {
"to": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"description": "Mobile number: UK 07700900123 / 447700900123, or international without + and leading zeros (e.g. 33612345678)."
},
"description": "Recipient mobile numbers (1-10): UK 07... / 447..., or international without + and leading zeros."
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 612,
"description": "Message text (UTF-8), up to 612 characters (160 per single GSM SMS, 153 per part when longer; unicode 70/66)."
},
"from": {
"type": "string",
"pattern": "^[A-Za-z0-9]{3,11}$",
"description": "Sender ID shown on the handset: 3-11 characters, letters and digits only (a company name or a reply number)."
},
"reference": {
"description": "Optional custom reference stored against the message (usable in firetext_get_delivery_report).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"unicode": {
"description": "0 = GSM characters only (default), 1 = always unicode, 2 = auto-detect from the text.",
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
}
]
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"required": [
"to",
"message",
"from"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴firetext_subscribe_contact(mobile, firstname, lastname, custom1, custom2, ...)
WRITE: adds a contact (by mobile number) to the FireText account, optionally into a group, or with update=true refreshes the names/custom fields of an existing contact. Does not send any SMS. A contact that opted out cannot be re-added this way (they must rejoin by SMS). FireText: /subscribe.
Input Schema
{
"type": "object",
"properties": {
"mobile": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"description": "Mobile number: UK 07700900123 / 447700900123, or international without + and leading zeros (e.g. 33612345678)."
},
"firstname": {
"type": "string",
"maxLength": 100
},
"lastname": {
"type": "string",
"maxLength": 100
},
"custom1": {
"type": "string",
"maxLength": 255
},
"custom2": {
"type": "string",
"maxLength": 255
},
"custom3": {
"type": "string",
"maxLength": 255
},
"group": {
"description": "Group API ID to add the contact to.",
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,64}$"
},
"update": {
"description": "true = overwrite firstname, lastname and custom1-3 of an existing contact.",
"type": "boolean"
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"required": [
"mobile"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴firetext_unsubscribe_contact(mobile, group, subaccount)
WRITE: opts a contact out of the FireText account (all groups by default), so it no longer receives group messages. The contact can only rejoin by SMS. Does not send any SMS. FireText: /unsubscribe.
Input Schema
{
"type": "object",
"properties": {
"mobile": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"description": "Mobile number: UK 07700900123 / 447700900123, or international without + and leading zeros (e.g. 33612345678)."
},
"group": {
"description": "Group API ID, only if the account unsubscribes per group.",
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{1,64}$"
},
"subaccount": {
"description": "Sub-account ID (only when the account has the sub-account module). Omit for the main account.",
"type": "string",
"pattern": "^[A-Za-z0-9_.@-]{1,64}$"
}
},
"required": [
"mobile"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence