Promotexter MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Promotexter MCP Serversend 'Your appointment is confirmed for 2 PM' to 639170000001"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Promotexter MCP Server
A Model Context Protocol (MCP) server for integrating with the Promotexter SMS API. This server provides tools for sending SMS messages and checking account balance.
Features
Balance Inquiry: Check your current Promotexter account balance with detailed information (available balance, account balance, credit limit, withheld amount)
Single SMS Transaction: Send SMS messages to individual recipients
Related MCP server: iletiMerkezi MCP Server
Installation
Using pip
pip install promotexter-mcpUsing uvx (recommended)
uvx promotexter-mcpQuick Start
1. Get Your Promotexter Credentials
You'll need:
API Key
API Secret
Sender ID (must be whitelisted in your Promotexter account)
Get these from your Promotexter dashboard at https://promotexter.com
2. Set Environment Variables
export PROMOTEXTER_API_KEY="your_api_key_here"
export PROMOTEXTER_API_SECRET="your_api_secret_here"
export PROMOTEXTER_SENDER_ID="your_sender_id_here"Or create a .env file:
PROMOTEXTER_API_KEY=your_api_key_here
PROMOTEXTER_API_SECRET=your_api_secret_here
PROMOTEXTER_SENDER_ID=your_sender_id_here3. Configure MCP Client
For Claude Desktop
Add to your MCP settings file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"promotexter": {
"command": "uvx",
"args": ["promotexter-mcp"],
"env": {
"PROMOTEXTER_API_KEY": "your_api_key_here",
"PROMOTEXTER_API_SECRET": "your_api_secret_here",
"PROMOTEXTER_SENDER_ID": "your_sender_id_here"
}
}
}
}Or using environment variables from your shell:
{
"mcpServers": {
"promotexter": {
"command": "uvx",
"args": ["promotexter-mcp"]
}
}
}For Claude Code CLI
Add to your MCP settings:
{
"mcpServers": {
"promotexter": {
"command": "uvx",
"args": ["promotexter-mcp"],
"env": {
"PROMOTEXTER_API_KEY": "your_api_key_here",
"PROMOTEXTER_API_SECRET": "your_api_secret_here",
"PROMOTEXTER_SENDER_ID": "your_sender_id_here"
}
}
}
}Available Tools
get_balance
Get the current account balance from Promotexter.
Parameters: None
Returns:
Available Balance
Account Balance
Credit Limit
Withheld Amount
Example:
get_balance()Response:
Available Balance: 486
Account Balance: 486
Credit Limit: 0
Withheld: 0send_sms
Send a single SMS message via Promotexter.
Parameters:
to(required): Recipient mobile number in international format (e.g., 639170000001)text(required): Message content (maximum 1000 characters)reference_id(optional): Your own reference ID for tracking
Note: The sender ID is configured via the PROMOTEXTER_SENDER_ID environment variable and must be whitelisted in your Promotexter account.
Returns: SMS send response with transaction details including:
Message ID
Remaining Balance
Transaction Cost
Unit Cost
Message Parts count
Operator Code
Recipient number
Sender ID
Reference ID (if provided)
Example:
send_sms(
to="639170000001",
text="Hello! This is a test message.",
reference_id="test-001"
)Response:
SMS Sent Successfully!
Message ID: abc123...
Remaining Balance: 485.50
Transaction Cost: 0.50
Unit Cost: 0.50
Message Parts: 1
Operator: PHLSMART
To: 639170000001
From: DEMO
Reference ID: test-001Development
Running Locally
Clone the repository:
git clone https://github.com/johnalvero/promotexter-mcp.git
cd promotexter-mcpInstall dependencies:
pip install -e .Run the server:
python -m promotexter_mcp.serverTesting with MCP Inspector
fastmcp dev promotexter_mcp/server.pyAPI Documentation
For more information about the Promotexter API, visit:
API Documentation: https://promotexter.docs.apiary.io/
Promotexter Website: https://promotexter.com
Security Notes
Never commit your API credentials to version control
Use environment variables or secure credential management systems
The sender ID must be whitelisted in your Promotexter account before use
Ensure proper validation of recipient numbers before sending
Test thoroughly in a development environment before production use
Error Handling
The server includes comprehensive error handling for:
Missing or invalid credentials
HTTP errors from the Promotexter API
Invalid parameters
Network timeouts
Message length validation (max 1000 characters)
Invalid phone number formats
Requirements
Python 3.10 or higher
fastmcp >= 2.13.0
httpx >= 0.27.0
License
MIT License - see LICENSE file for details
Support
For issues related to:
This MCP server: Open an issue at https://github.com/johnalvero/promotexter-mcp/issues
Promotexter API: Contact Promotexter support at https://promotexter.freshdesk.com/
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Changelog
0.1.1 (2025-11-01)
Updated documentation with correct installation instructions
Added uvx support in configuration examples
Improved README with detailed examples and responses
Added package exclusions for cleaner distribution
0.1.0 (2025-11-01)
Initial release
Balance inquiry tool
Single SMS transaction tool
Environment-based configuration
Comprehensive error handling
Available Tools
2 toolsget_balanceB
Get the current account balance from Promotexter.
Returns: Account balance information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the return type ('Account balance information') but lacks details on authentication needs, rate limits, or what specific data is included in the balance. This is insufficient for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main purpose, followed by a returns section. It avoids unnecessary words, though the returns section could be more specific to enhance clarity without adding bulk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, annotations, but an output schema, the description is minimally adequate. It states the purpose and return type, but lacks context on usage, authentication, or detailed behavior, leaving gaps despite the output schema covering return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description doesn't add parameter details, but with no parameters, this is acceptable, and it implies no input is needed, aligning with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current account balance from Promotexter'), making the purpose understandable. However, it doesn't differentiate from the sibling tool 'send_sms' which is unrelated, so it doesn't reach the highest score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives or in what context. The description only states what it does, not when it should be used, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_smsA
Send a single SMS message via Promotexter.
Args: to: Recipient mobile number (must be valid mobile number format) text: Message content (maximum 1000 characters) reference_id: Optional reference ID for tracking
Returns: SMS send response with transaction details
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | ||
| text | Yes | ||
| reference_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the action ('Send') and return type ('SMS send response with transaction details'), it lacks critical behavioral information such as authentication requirements, rate limits, error conditions, cost implications, or delivery guarantees. The description provides basic functional information but misses important operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and economical. It begins with a clear purpose statement, then provides organized parameter documentation in an Args/Returns format, with each sentence serving a specific purpose. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (which handles return values), the description covers the basic purpose and parameters well. However, for a mutation tool with no annotations, it should provide more behavioral context about authentication, costs, or operational constraints. The parameter documentation is excellent, but overall completeness is limited by the lack of behavioral transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing clear semantic meaning for all 3 parameters. It explains what 'to' represents (recipient mobile number with format requirement), what 'text' contains (message content with length limit), and the purpose of 'reference_id' (optional tracking). This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Send a single SMS message'), identifies the resource ('via Promotexter'), and distinguishes it from the only sibling tool 'get_balance' which is a read operation. The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the parameter documentation (e.g., 'must be valid mobile number format', 'maximum 1000 characters'), but doesn't explicitly state when to use this tool versus alternatives or any prerequisites. There's no explicit guidance on when-not-to-use or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have completely distinct purposes: get_balance retrieves account information, while send_sms sends messages. There is no overlap in functionality, and an agent would never confuse one for the other.
Both tools follow a consistent verb_noun pattern (get_balance, send_sms) with clear, descriptive names. The naming convention is uniform throughout the toolset.
With only two tools, the server feels severely underpowered for an SMS service domain. There are obvious missing operations like checking SMS status, viewing message history, managing contacts, or handling bulk sends that would be expected in a complete SMS API surface.
The toolset is severely incomplete for an SMS service. While it covers basic balance checking and message sending, it lacks essential operations like viewing sent messages, checking delivery status, managing templates, or handling errors. This will cause significant agent failures when trying to perform common SMS workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Send and schedule SMS and WhatsApp messages, manage contacts and templates, and track delivery.
Send SMS, manage contacts and groups, and read delivery reports. OAuth 2.1 SureSMS login.
SMS Verify: SMS Verify API is a secure and easy-to-integrate service that sends verification codes.
Send SMS/MMS, manage contacts, and read campaigns, messages and media on SimpleTexting.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI agents to send, receive, schedule, and manage SMS and MMS messages using the Twilio Programmable Messaging API. It provides comprehensive tools for handling bulk messaging, conversation threads, and real-time inbox monitoring through a secure, production-grade architecture.161MIT
- AlicenseAqualityAmaintenanceEnables sending SMS, querying delivery reports, and managing senders and blacklists through the iletiMerkezi SMS API.11342MIT
- FlicenseAqualityDmaintenanceEnables sending SMS messages and checking delivery status and credit balance via the web2sms.ro Romanian SMS gateway.3-
- AlicenseAqualityCmaintenanceExposes the Hellio Messaging API as MCP tools for SMS, OTP, voice, HLR lookup, email verification, balance, pricing, webhooks, and USSD operations.2816MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/johnalvero/promotexter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server