EZ MCP Server

The EZ Texting MCP Server exposes EZ Texting platform capabilities as tools that AI agents — Claude, ChatGPT, Cursor, and any other Model Context Protocol client — can call to perform messaging, contact management, and account operations on behalf of users. Instead of writing API-client code, your AI assistant handles authentication, payload shaping, and error handling in response to natural-language requests like “send a reminder to everyone in my VIP group” or “how many messages did I send last month?”

Connection details

MCP Server URLhttps://mcp.eztexting.com/mcp
TransportStreamable HTTP (remote MCP)
AuthenticationOAuth, handled by the MCP client

Connecting in Claude

Open Settings → Integrations, add a new MCP server, and paste the URL:

https://mcp.eztexting.com/mcp

Claude will walk you through the OAuth flow to authorize the server against your EZ Texting account.

Connecting programmatically

For clients that accept a JSON MCP server config:

{
  "type": "url",
  "url": "https://mcp.eztexting.com/mcp",
  "name": "eztexting-mcp"
}

Claude Code (terminal)

Staging example — point to prod once finalized:

claude mcp add --transport http ez-stg0 http://mcp-app.stg0.cf.wtf/mcp

Then use the /mcp menu in Claude Code to connect and authenticate.

When to use the MCP server vs. the REST API

  • MCP Server— you want to drive the API from Claude, ChatGPT, or another AI assistant; you're scripting in natural language; you want to skip writing API client code for one-off or exploratory tasks.
  • REST API— you're building a product integration, a scheduled job, or any automation that needs deterministic, repeatable calls from code. The MCP server is a wrapper; the REST API is the underlying contract.

Available tools

The MCP server exposes 41 tools across 11 categories. Every tool maps to a REST API endpoint — if you know the API, you know what each tool does.

Account

Check account status, buy credits.

ToolDescriptionKey parameters
account_detailsAccount creation date, billing plan name and type, remaining credits, and whether credits can be purchased.
buy_creditsPurchase credits (min 150, max 10,000).creditsToBuy (integer, required)
toolsLists every available tool with a one-line summary, grouped by category.

Contacts

Create, update, list, and delete contacts.

ToolDescriptionKey parameters
contact_listPaged list of contacts with optional filters and sorting.phoneNumber, firstName, lastName, email, groupName, optOut, source, page, size, sort
contact_getFetch a contact by phone number — name, email, note, opt-out status, group memberships.phoneNumber (required)
contact_upsertCreate or update a contact. Phone number is the unique key.phoneNumber (required); firstName, lastName, email, note
contact_deleteDelete a contact by phone number. Irreversible.phoneNumber (required)

Contact Groups

Organize contacts into groups for targeted sends.

ToolDescriptionKey parameters
contact_group_listPaged list of contact groups.name (partial match), page, size, sort
contact_group_getFetch a group — name, note, contact count.id (required)
contact_group_upsertCreate or update a group. Omit id to create; provide id to update. Can seed with contacts or merge existing groups on create.name (max 25 chars, required); id, phoneNumbers, groupIds, note
contact_group_deleteDelete a group. Irreversible.id (required)
contact_group_membershipAdd or remove contacts in a group by phone number.id, phoneNumbers, action (add/remove) — all required

Contact Fields

Define custom fields on contact records.

ToolDescriptionKey parameters
contact_field_listPaged list of custom fields — id, label, type, name, editable.page, size
contact_field_upsertCreate or update a custom field. Omit id to create; provide id to update.label (max 20 chars), type (text/number/date) — required; id
contact_field_deleteDelete a custom contact field. Irreversible.id (required)

Messages

Send SMS/MMS, list sent messages, get delivery details.

ToolDescriptionKey parameters
message_sendSend an SMS or MMS immediately or scheduled. Requires toNumbers or groupIds.toNumbers, groupIds, message, fromNumber, mediaUrl, sendAt
message_getFetch details for a message by ID — type, from number, sent time, recipient count, credits used.id (required)
message_listPaged list of messages with filters.contactNumber, userNumber, textQuery, incoming, unread, type (sms/mms), sentAtStart, sentAtEnd, page, size, sort

Message Templates

Reusable message bodies for consistent sends.

ToolDescriptionKey parameters
message_template_listPaged list of message templates.name (exact), nameLike (partial), page, size, sort
message_template_getFetch a template by ID — name, company, message text, media.id (required)
message_template_upsertCreate or update a message template. Omit id to create; provide id to update.name, message (required); id, companyName, mediaFileId, mediaFileUrl
message_template_deleteDelete a template. Irreversible.id (required)

Message Reports

Delivery, engagement, and link-click reporting.

ToolDescriptionKey parameters
message_report_getDelivery and engagement breakdown (counts and percentages) plus link click stats.id (required)
message_report_responsesContacts and their response for a message, filtered by report type and status.id, reportType, status (required); page, size, sort

Conversations

Two-way threads with contacts.

ToolDescriptionKey parameters
conversation_listPaged list of conversations with contact name, unread count, opt status, and last message.unread, archived, optType (OPTIN/OPTOUT/NONE), query, page, size, sort
conversation_messagesMessages in a specific conversation between a user number and contact number.userNumber, contactNumber (both required); read, page, size
conversation_stateArchive or restore a conversation.userNumber, contactNumber, action (archive/restore) — all required
conversation_messages_markMark one or more conversation messages as read or unread by message ID.ids, read (both required)

Workflows

Build, save, publish, and manage automated messaging workflows.

ToolDescriptionKey parameters
wf_pub_availableCheck if the account's plan allows publishing workflows.
wf_statWorkflow count broken down by status (PUBLISHED, UNPUBLISHED, PAUSED).
wf_create_from_templateClone a new workflow from an existing template.templateId (required)
wf_store_idSave a workflow ID into session context (call before editing or publishing).workflowId (required)
wf_fetchFetch an existing workflow by ID.workflowId (required)
wf_saveSave updated workflow content.workflow (JSON string, required)
wf_statusActivate or deactivate a workflow (publish/unpublish).workflowId, action (both required)

Webhooks

Real-time notifications for incoming messages, opt-ins, and new contacts.

ToolDescriptionKey parameters
webhook_listPaged list of webhook subscriptions.page, size
webhook_getFetch a webhook by ID — type, callback URL, SSL settings.id (required)
webhook_createCreate a webhook subscription for an event type.type (inbound_text.received / keyword.opt_in / contact.created), callbackUrl (both required); secret, insecureSsl
webhook_deleteDelete a webhook subscription. Irreversible.id (required)

Statistics

Aggregate account-level metrics.

ToolDescriptionKey parameters
msg_statAccount-level SMS/MMS message statistics.
ai_compose_statMessages created via AI Compose, broken down by source.

Conventions

  • Phone number format. All phone numbers must be 11 digits (country code + area code + number), e.g. 12015551234.
  • Pagination. Default size is 20. Allowed values: 10, 20, 50, 100, 200.
  • Sorting. Prefix the field name with - for descending, e.g. -sentAt.
  • Scheduling. message_send accepts an ISO 8601 sendAt timestamp to schedule messages for future delivery.
  • MMS media. Attach media via mediaUrl — images, video, or audio up to 5 MB.
  • Webhook event types. inbound_text.received, keyword.opt_in, contact.created.
  • Upsert pattern. contact_group_upsert, contact_field_upsert, and message_template_upsert handle both create and update — omit id to create, provide id to update.

Example prompts

Once your client is connected, these are representative things you can ask. The AI picks the right tool(s) and handles the payload:

  • “Send ‘Your table is ready’ to 12015551234.”message_send
  • “Create a contact group called VIP Customers and add Jane Doe (12015551234) to it.”contact_group_upsert + contact_group_membership
  • “How many text messages did I send this month?”msg_stat
  • “Show me all conversations with unread replies.”conversation_list with unread=true
  • “Set up a webhook that pings https://my-app.com/hooks/sms whenever someone replies.”webhook_create
  • “Buy 500 more credits.”buy_credits

Safety & authentication

  • MCP tools act with the same permissions as your EZ Texting account. Sending messages costs real credits; deleting a contact is irreversible.
  • Destructive tools (contact_delete, contact_group_delete, contact_field_delete, webhook_delete, message_template_delete) should be gated behind user confirmation in your client — Claude Desktop and most MCP clients prompt for confirmation before invoking tools tagged as destructive.
  • OAuth is handled by the MCP client — EZ Texting never sees your client credentials, and your client never handles your EZ Texting password directly.

Related