What is MCP?
Model Context Protocol (MCP) is an open standard that lets AI assistants securely connect to external tools and data. EZ Texting's MCP server puts your account directly inside the AI clients you already use. No switching tabs, no copy-paste.
EZ Texting MCP exposes 38 tools — send SMS/MMS, manage contacts and groups, run workflows, fetch reports, manage webhooks, query account state.
https://mcp.eztexting.com/mcp directly. No npm, no Node, no child process, faster startup, auto-updates server-side. Use the local stdio bridge only when the client doesn't support remote yet.
Claude.ai, ChatGPT, Claude Desktop, Claude Code, Cursor 0.46+, VS Code 1.99+, Windsurf, Cline 3.0+.
Endpoint: https://mcp.eztexting.com/mcp. OAuth 2.1 PKCE auto-discovered.
Fallback: clients without native remote MCP support, air-gapped envs, or proxy quirks.
Runs npx -y @eztexting/mcp-server as child process. Tokens cached in ~/.mcp-auth/.
node -v.EZ Textinghttps://mcp.eztexting.com/mcp
Available on Pro / Max / Team / Enterprise plans.
ChatGPT supports remote MCP via custom connectors (Plus / Pro / Team / Enterprise — Developer mode).
EZ Textinghttps://mcp.eztexting.com/mcp
EZ Textinghttps://mcp.eztexting.com/mcpPro / Max / Team / Enterprise plans. No config file, no Node.
Edit your config file, then fully quit + relaunch Claude Desktop.
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Verify: Settings → Developer → MCP Servers. eztexting shown as "running".
claude mcp add --transport http eztexting https://mcp.eztexting.com/mcp
Scope flag works the same:
claude mcp add --transport http --scope user eztexting https://mcp.eztexting.com/mcp
claude mcp add --transport http --scope project eztexting https://mcp.eztexting.com/mcp
Or in ~/.claude.json / .mcp.json:
{
"mcpServers": {
"eztexting": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp"
}
}
}
Verify: claude mcp list. First tool call triggers OAuth.
claude mcp add eztexting -- npx -y @eztexting/mcp-server
Or JSON:
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"eztexting": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp"
}
}
}
Or: Settings → MCP → Add new MCP server → choose HTTP transport.
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Command palette → MCP: Open User Configuration. Add:
{
"servers": {
"eztexting": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp"
}
}
}
Workspace scope: same shape in .vscode/mcp.json. Open Copilot Chat → Agent mode → eztexting tools surface.
{
"servers": {
"eztexting": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Edit ~/.codeium/windsurf/mcp_config.json (or: Settings → Cascade → MCP Servers → Add).
{
"mcpServers": {
"eztexting": {
"serverUrl": "https://mcp.eztexting.com/mcp"
}
}
}
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Restart Windsurf after editing.
Open Cline panel → MCP Servers icon → Configure MCP Servers → opens cline_mcp_settings.json.
{
"mcpServers": {
"eztexting": {
"type": "streamableHttp",
"url": "https://mcp.eztexting.com/mcp",
"disabled": false,
"autoApprove": []
}
}
}
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"],
"disabled": false,
"autoApprove": []
}
}
}
Save → Cline auto-restarts server. Refresh MCP panel if tools don't appear.
Zed remote-MCP support is limited as of writing. Use the local stdio bridge.
Open ~/.config/zed/settings.json. Add under context_servers:
{
"context_servers": {
"eztexting": {
"command": {
"path": "npx",
"args": ["-y", "@eztexting/mcp-server"]
},
"settings": {}
}
}
}
Restart Zed. Tools surface in the assistant panel.
38 tools across 4 functional groups (+3 meta-tools on the unified endpoint — see tool tiers).
| Tool | Purpose |
|---|---|
message_send | Send SMS / MMS to one or more recipients |
message_list | List sent messages with filters (date, status, recipient) |
message_get | Fetch a single message by ID |
message_template_list | List templates; pass id to fetch one |
message_template_upsert | Create or update a template |
message_template_delete | Delete a template |
conversation_list | List conversation threads (inbox) |
conversation_messages | Fetch messages within a thread |
conversation_messages_mark | Mark thread messages read / unread |
conversation_state | Get / set thread state (open, closed, archived) |
message_report_get | Fetch delivery + engagement report for a campaign |
message_report_responses | Fetch response data tied to a sent message |
| Tool | Purpose |
|---|---|
contact_list | List contacts with filters / pagination |
contact_get | Fetch a single contact by ID |
contact_upsert | Create or update a contact |
contact_delete | Delete a contact |
contact_group_list | List contact groups; pass id to fetch one |
contact_group_upsert | Create or update a group |
contact_group_delete | Delete a group |
contact_group_membership | Add / remove contacts in a group |
contact_field_list | List custom contact fields |
contact_field_upsert | Create or update a custom field |
contact_field_delete | Delete a custom field |
| Tool | Purpose |
|---|---|
wf_list | List workflows on the account with filters (query, name, statuses, types) |
wf_fetch | Fetch a workflow definition by id |
wf_save | Create or update a workflow |
wf_status | Activate / deactivate a workflow (publish / unpublish) |
wf_stat | Workflow counts by status (PUBLISHED, UNPUBLISHED, PAUSED) |
wf_templates | List available workflow templates |
wf_create_from_template | Instantiate a workflow from a template |
wf_schema | Fetch workflow JSON schema (root or per node type) |
Workflow publishing eligibility is exposed via account_details (workflowPublishAllowed).
| Tool | Purpose |
|---|---|
account_details | Account info, plan, balance, workflow publishing eligibility |
buy_credits | Purchase message credits |
stat_get | Account stats — type=MSG (delivery) or AI_COMPOSE (AI usage) |
webhook_list | List webhooks; pass id to fetch one |
webhook_create | Register a new webhook |
webhook_delete | Remove a webhook |
keyword_list | List keyword auto-responders |
The unified https://mcp.eztexting.com/mcp endpoint runs in hybrid mode.
Rather than dumping all 38 tool schemas into every tools/list response
(which consumes context budget before you type a single prompt), it exposes a curated set of
HOT tools directly and hides the rest behind three lightweight meta-tools.
/mcp/messaging,
/mcp/contacts, etc.) are never hybrid — all their tools appear directly in
tools/list. Use a sub-server when you want the full catalog for one domain
without discovery overhead.
tools/list 11 toolsListed statically on every connection. Zero latency, no discovery step needed.
| Tool | Group |
|---|---|
message_send | Messaging |
message_list | Messaging |
message_get | Messaging |
conversation_list | Messaging |
conversation_messages | Messaging |
conversation_messages_mark | Messaging |
conversation_state | Messaging |
contact_list | Contacts |
contact_get | Contacts |
contact_upsert | Contacts |
account_details | Admin |
All remaining tools (templates, reports, groups, fields, all workflows, admin bulk ops) are hidden from tools/list but fully reachable via the meta-tools below. See the Available tools section for the full list.
Always listed alongside HOT tools. Let the AI find and execute COLD tools without you spelling out tool names.
| Tool | Purpose |
|---|---|
search_tools | Keyword / category search over all 38 tools; returns names and one-line summaries (no input schemas — use describe_tools for those) |
describe_tools | Fetch full schema for a list of tool names |
execute_tool | Call any tool by name (HOT or COLD), passing its arguments as a JSON object |
You don't need to manage this manually — the AI handles it automatically. For reference:
search_tools("webhook") → discovers webhook_list, webhook_create, webhook_deletedescribe_tools(["webhook_create"]) → gets full schemaexecute_tool("webhook_create", {"url": "...", "events": [...]}) → creates the webhookFor clients or scripts that need all 38 tools listed without the discovery layer, use the relevant sub-server URL directly (e.g. /mcp/admin for webhook tools).
Measured via tools/list response size against https://mcp.eztexting.com. Token estimate: bytes ÷ 4
| Endpoint | Tools listed | Bytes | ~Tokens |
|---|---|---|---|
/mcp (hybrid: 11 HOT + 3 meta) | 14 | 9,587 | 2,396 |
/mcp/messaging | 12 | 8,493 | 2,123 |
/mcp/contacts | 11 | 6,494 | 1,623 |
/mcp/workflows | 8 | 5,568 | 1,392 |
/mcp/admin | 7 | 3,389 | 847 |
Use the unified /mcp endpoint by default. Pick a sub-server when you want the full catalog without discovery overhead.
| Sub-server | Remote URL | Sample tools |
|---|---|---|
messaging | https://mcp.eztexting.com/mcp/messaging | message_send, conversation_list, message_template_upsert |
contacts | https://mcp.eztexting.com/mcp/contacts | contact_upsert, contact_group_membership, contact_field_list |
workflows | https://mcp.eztexting.com/mcp/workflows | wf_save, wf_create_from_template, wf_status |
admin | https://mcp.eztexting.com/mcp/admin | account_details, buy_credits, webhook_create |
Point your client at the sub-server URL directly. Example (Claude Code):
claude mcp add --transport http eztexting-messaging https://mcp.eztexting.com/mcp/messaging
Or JSON (Cursor / VS Code / Claude Desktop / Claude Code):
{
"mcpServers": {
"eztexting-messaging": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp/messaging"
}
}
}
{
"mcpServers": {
"eztexting-messaging": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server", "--server", "messaging"]
}
}
}
"Send 'Order shipped — track at ez.tx/abc' to +15555550123."
usesmessage_send
"Add these 50 contacts to group 'VIP-2026' from contacts.csv."
usescontact_upsert, contact_group_membership
"Create a 3-step drip from the 'Welcome' template, send Day 0/3/7."
useswf_create_from_template, wf_save
"How many messages did we send last week, broken out by day?"
usesstat_get, message_report_get
"Register a webhook at https://my.app/ez for incoming replies."
useswebhook_create
"List unread conversations and summarize the top 5."
usesconversation_list, conversation_messages