EnvoiSMS
Server Details
Send SMS/WhatsApp and verify OTP codes in Morocco (+212) and worldwide. Direct carrier routing.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
15 toolscreate_topupAInspect
Create a balance top-up checkout link (Stripe card or crypto USDC) for the authenticated account.
| Name | Required | Description | Default |
|---|---|---|---|
| pack_id | No | SMS top-up pack ID (e.g. 'sms-300' for 300 MAD, 'sms-1000' for 1000 MAD, 'sms-5000' for 5000 MAD). Optional if amount_mad is provided. | |
| currency | No | Payment presentation currency for card checkout ('mad' or 'eur'). Default 'mad'. | |
| amount_mad | No | Custom recharge amount in MAD (minimum 300 MAD). Optional if pack_id is provided. | |
| payment_method | No | Payment method ('stripe' for card or 'crypto' for USDC). Default 'stripe'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool creates a checkout link rather than directly crediting balance, and it names the payment methods. However, it does not explicitly state that the payment is not executed immediately, what the return value contains, or any authentication requirements beyond 'authenticated account'.
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?
A single, front-loaded sentence that conveys the core purpose and key options without wasted words. It is appropriately concise for a tool with well-documented parameters.
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?
The description is adequate for a simple link-creation tool but leaves some context implicit: there is no output schema, yet the return value (presumably the checkout link) is not mentioned directly. The conditional relationship between pack_id and amount_mad is only in the schema, and no behavioral caveats about payment completion are given.
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?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level meaning beyond what the schema already provides; 'Stripe card or crypto USDC' merely restates the payment_method enum values.
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 ('Create'), the resource ('balance top-up checkout link'), and the payment options ('Stripe card or crypto USDC'). It is specific enough to distinguish this from the messaging and monitoring siblings, though it does not explicitly name or contrast a sibling.
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 the tool is for topping up the authenticated account's balance via a generated checkout link, but it gives no explicit when-to-use or when-not-to-use guidance. There are no alternative top-up tools listed, so the usage context is reasonable but not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyticsAInspect
Get SMS & WhatsApp message delivery metrics, success rates, and volume statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (1-365, default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys the core behavior: it returns delivery metrics, success rates, and volume statistics for SMS and WhatsApp, and the verb 'Get' implies read-only. However, with no annotations, it omits context about aggregation behavior, time-window effects, and output shape, so the disclosure is partial.
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 a single sentence with no filler, front-loading the verb and resource. It is appropriately sized for the simplicity of the tool.
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?
For a simple one-optional-parameter read tool, the description and schema cover the basics. However, the lack of an output schema and any guidance on how this tool relates to sibling monitoring tools leaves some ambiguity about the response structure and suitable selection.
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?
Schema description coverage is 100%: the 'days' parameter is fully described with a range and default. The tool description adds no parameter-specific detail, so the schema carries the semantic load and the baseline score applies.
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 a specific verb ('Get') and resource (SMS & WhatsApp delivery metrics, success rates, and volume statistics). It distinguishes itself from siblings like get_message_status or list_messages by focusing on aggregate analytics, though it does not explicitly name those alternatives.
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 use for aggregate channel analytics, but it does not explicitly state when to choose this tool over get_message_status, list_messages, or ops_monitoring. No alternatives, prerequisites, or exclusions are given, leaving the selection logic to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceAInspect
Check remaining SMS credit balance in MAD and account status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The word 'Check' implies a read-only operation, and the description adds useful detail (currency and account status), but it does not explicitly state that no credit is consumed or that the call has no side effects.
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 a single front-loaded sentence with no filler words. Every part adds information: the action, the resource, the currency, and the additional status check.
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?
For a zero-parameter getter with no output schema, the description covers the essential returned information (balance and account status) and leaves no major ambiguity about what the tool does. No additional caveats or preconditions are needed for a simple read-only balance check.
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 takes zero parameters, which is the baseline 4 case. The description correctly avoids inventing parameters and simply states what the tool looks up.
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 uses a specific verb ('Check') and names the exact resource ('remaining SMS credit balance in MAD') plus the secondary result ('account status'). This clearly differentiates it from siblings like send_sms, get_analytics, or create_topup.
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?
Although it does not explicitly mention alternatives or exclusion conditions, the intended context is obvious: call this tool whenever the remaining SMS credit or account status is needed. There is no competing sibling that does the same thing, so no stronger routing is necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_message_statusAInspect
Check the real-time delivery status, segments, and cost of a sent message by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | Message ID returned by send_sms |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does reveal that the tool returns real-time delivery status, segments, and cost, which is useful. However, it does not mention error behavior, whether the operation is read-only, or what happens when a message ID is invalid or not found.
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 a single sentence with no filler. Every word contributes meaning: real-time, delivery status, segments, cost, and the ID-based lookup.
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?
For a single-parameter getter with no output schema, the description gives a solid outline of what the agent will get back: status, segments, and cost. It is concise and complete enough for typical use, though error or not-found behavior is not described.
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?
Schema description coverage is 100%, and the message_id parameter is already explained as the ID returned by send_sms. The description adds only the general 'by ID' phrasing, so it does not need to compensate for missing schema information.
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 uses a specific verb ('Check') with a clear resource: delivery status, segments, and cost of a sent message by ID. This distinguishes it from siblings like list_messages or get_analytics, which cover different query scopes.
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 phrase 'by ID' and the schema's reference to 'Message ID returned by send_sms' make the intended usage context clear. It does not explicitly list alternatives or exclusions, but the context is sufficient for a simple getter tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricingAInspect
Get EnvoiSMS pricing. Pass to (a phone number in E.164, e.g. +2348012345678) for that destination's per-SMS rate; omit it for Moroccan rates and credit packs. Public — no authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Destination phone number in E.164 format, e.g. +2348012345678. Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It explicitly states 'Public — no authentication required,' which is a key behavioral trait. It also explains the conditional behavior based on the `to` parameter, though it does not discuss output format, potential errors, or rate limits.
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 entire description is two sentences with no filler. The core purpose is front-loaded, parameter usage is explained with an example, and the authentication requirement is a single concise suffix. Every sentence earns its place.
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?
For a tool with a single optional parameter and no output schema, the description covers everything needed to invoke it correctly: parameter format, conditional behavior, and authentication requirements. There are no significant gaps for a pricing lookup tool.
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?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining the exact effect of including or omitting `to` and providing an E.164 example. This clarifies the parameter's purpose in a way the schema alone does not.
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 opens with a specific verb and resource: 'Get EnvoiSMS pricing.' It clearly distinguishes this tool from siblings by focusing exclusively on pricing, and it explains the two modes of operation (destination-specific vs. Moroccan rates), leaving no ambiguity about what the tool does.
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 gives clear context for when to pass `to` versus when to omit it, effectively acting as usage guidance. It does not explicitly name alternatives or state when not to use the tool, but since no sibling tool handles pricing, the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsAInspect
List SMS marketing campaigns created on the account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of campaigns to retrieve (1-50, default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of disclosing behavior. The word 'List' implies a read-only operation and the account scope is stated, but it does not describe ordering, pagination behavior, or what a campaign object looks like.
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?
One short, front-loaded sentence with no filler. It states the action, resource, and scope efficiently and earns every word.
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?
For a simple list tool with one optional parameter and no output schema, the description is mostly complete. It clearly defines the resource and scope, and the limit parameter is documented in the schema. It could mention return format, but the low complexity keeps this from being a major gap.
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 single parameter 'limit' is fully documented in the input schema with 100% coverage. The description adds no extra parameter semantics, so the schema does the required work and the baseline of 3 applies.
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 uses a specific verb ('List') with a precise resource ('SMS marketing campaigns') and account scope. This clearly distinguishes it from sibling tools like list_messages and list_contacts.
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 given on when to use this tool versus alternatives like list_messages or list_contacts. The description only states what it lists, but does not mention exclusions, prerequisites, or preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsAInspect
List saved contacts or search contacts by name, phone, or email.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search query matching phone, name, or email | |
| limit | No | Number of contacts to retrieve (1-100, default 20) | |
| list_id | No | Filter contacts by contact list ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It reveals that the tool supports both listing and searching, which is valuable context, but omits return format, pagination, and default behavior when no query is supplied. For a read-only listing tool, this is acceptable yet incomplete.
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?
One concise sentence that fronts the action, states the resource, and enumerates searchable fields. No wasted words or irrelevant detail; every element earns its place.
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?
For a simple read-only listing tool with fully documented optional parameters, the description plus schema covers the essential usage modes. It could explicitly state that omitting q lists all contacts, but this is reasonably inferable from the 'list or search' phrasing.
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?
Schema coverage is 100%, so baseline 3 applies. The description adds that q matches name, phone, or email—lightly redundant with the schema's own q description—and provides no extra semantic context for limit or list_id beyond what the schema already explains.
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?
Clearly identifies the action (list) and resource (saved contacts), and specifies searchable fields (name, phone, email). It distinguishes itself from sibling message/campaign/analytics tools by resource type, though it does not explicitly contrast with a contact-specific alternative.
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?
Provides implicit usage context by contrasting the two main modes—listing all saved contacts versus searching by contact fields. However, there is no explicit guidance on when to choose this tool over alternatives, no prerequisites, and no stated exclusions. With no contact-related siblings, this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_messagesAInspect
List recent outbound messages for the authenticated account with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of messages to retrieve (1-50, default 20) | |
| status | No | Filter by delivery status | |
| channel | No | Filter by communication channel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It communicates that this is a read-only listing operation, scoped to the authenticated account and outbound messages, and that it returns recent items. It does not disclose pagination behavior, ordering details, or possible response/error characteristics, which are not covered elsewhere.
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 a single sentence that front-loads the core action and resource, followed by scope and filter availability. There is no redundant wording or unnecessary detail.
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?
For a low-complexity list tool, the description plus the fully documented schema provides enough context to invoke the tool correctly: it identifies the resource type, scope, recency, and filter capability. However, absent annotations and an output schema, a bit more detail about ordering or response shape would make it fully complete.
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 input schema already documents all three parameters with descriptions and enums, achieving 100% coverage. The description only adds the generic phrase 'optional filters,' which correctly signals that all parameters are optional but adds no specific semantic detail beyond 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 states a clear action and resource: 'List recent outbound messages'. It also specifies scope ('for the authenticated account') and the presence of optional filters, which differentiates it from siblings like send_sms, get_message_status, and list_campaigns.
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 when to use this tool—when a list of recent outbound messages is needed—but it does not explicitly contrast it with alternatives such as get_message_status for a single message or list_campaigns for campaign-level data. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ops_monitoringAInspect
Admin only. Current operational state: open ops alerts by severity, upstream gateway balance, and known issues that need attention right now.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It implies a read-only snapshot but doesn't explicitly state it, nor does it mention any side effects, caching behavior, or data freshness. It does describe the content returned, which is useful, but leaves out potential characteristics like latency, pagination, or error handling.
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 a single, tightly written sentence. It front-loads the access restriction ('Admin only') and then lists the core data points. No filler words; every clause adds value. This is exemplary conciseness.
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?
For a zero-parameter tool with no output schema, the description provides a clear list of data categories (alerts, balance, issues). It covers the essential 'what' and 'why' (needs attention). While it could mention freshness or how to interpret severity levels, the simplicity of the tool means this is largely sufficient. The note 'Admin only' also adds necessary context for access.
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 zero parameters, so the input schema provides no semantic burden. Per the guidelines, a baseline of 4 is appropriate since the description doesn't need to compensate for missing parameter documentation. The description focuses on outputs, which is effective.
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 that the tool reports current operational state including alerts by severity, gateway balance, and known issues. It uses specific verbs and resources, and while it doesn't explicitly distinguish from siblings like ops_pulse, the focus on 'needs attention right now' gives it a distinct purpose.
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?
It provides an access restriction ('Admin only') but no explicit guidance on when to use this tool versus alternatives such as ops_pulse or ops_route_quality. The phrase 'known issues that need attention right now' implies urgent operational monitoring, but it doesn't clearly state exclusions or alternative use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ops_pulseAInspect
Admin only. Business health snapshot: margin, cash collected, customer float (liability), solvency ratio, active accounts, and money stuck in the refund-review queue.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (1-365). Default 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses an auth requirement (Admin only) and clearly enumerates the data returned, implying a read-only snapshot. It does not explicitly confirm non-mutating behavior or describe response shape, but for a report-style tool this is strong disclosure.
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 a single, well-structured sentence that front-loads access control and core purpose, then lists concrete metrics. There is no filler 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?
For a simple snapshot tool with one optional parameter and no output schema, the description covers the key decision-relevant aspects: admin-only access and the complete set of returned metrics. It could mention how the days parameter influences the snapshot, but the schema handles that detail.
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?
Schema coverage is 100%, so the baseline is 3. The only parameter, days, is fully described in the schema with its range and default. The tool description adds no parameter-level detail, but the schema already provides sufficient semantics.
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 identifies the tool as a business health snapshot and enumerates the specific metrics it returns (margin, cash collected, customer float, solvency ratio, active accounts, refund-review queue). This is specific enough to distinguish it from siblings like ops_monitoring or get_balance.
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 'Admin only' prefix provides a clear access restriction and implies this is for administrative business health overviews. However, there is no explicit guidance on when to prefer this tool over related siblings like ops_monitoring, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ops_route_qualityAInspect
Admin only. Delivery quality per carrier/provider/channel, failure codes, DLR plausibility (whether delivery reports can be trusted), and ported-number routing hints. The data behind any provider-routing decision.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (1-365). Default 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does disclose an admin-only authorization requirement and explains what DLR plausibility means, which is useful. However, it does not state side effects, read-only nature, data freshness, output format, or error behavior, leaving notable gaps for a no-annotation tool.
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 compact and front-loaded with the access restriction, followed by a dense but well-organized list of data dimensions. The final sentence earns its place by framing the tool's strategic purpose without repetition or filler.
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?
For a tool with one optional parameter and no output schema, the description covers the main content areas and access constraints well. It could be more complete by explicitly distinguishing itself from ops_monitoring/ops_pulse or describing the expected response shape, but the current description is sufficient for basic selection and invocation.
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 only parameter, 'days', is fully documented in the schema with range and default (1-365, default 30), providing 100% schema coverage. The description adds no additional parameter detail, so the baseline score of 3 is appropriate since the schema already does the heavy lifting.
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 identifies the tool's domain: delivery quality per carrier/provider/channel, failure codes, DLR plausibility, and ported-number routing hints. It distinguishes itself from generic balance/pricing/send tools, and the phrase 'data behind any provider-routing decision' grounds its purpose. However, it lacks an explicit verb like 'retrieves' or 'reports', and does not directly contrast with the sibling ops_monitoring/ops_pulse tools.
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?
'Admin only' sets an access prerequisite, and 'The data behind any provider-routing decision' clearly communicates the intended use case. This gives a clear context for when the tool would be relevant, though it does not state explicit exclusions or alternative tools for non-routing operational monitoring.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_bulk_smsAInspect
Send an SMS message to multiple recipients in E.164 format at once (up to 100 recipients).
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Text content of the SMS | |
| sender_id | No | Optional approved custom Sender ID | |
| recipients | Yes | Array of recipient phone numbers in E.164 format (+212600000000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden. It discloses the recipient limit (up to 100) and the E.164 format requirement, which is useful. However, it does not mention delivery semantics, error handling, partial failures, asynchronous behavior, or costs—gaps that matter for a bulk-sending tool.
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?
A single, front-loaded sentence conveys the core action, the recipient scope, the format, and the limit with zero wasted words. Every phrase earns its place.
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 simple input schema and the clear sibling landscape, the description is sufficient for selection and invocation. It lacks details about response shape or failure behavior, but the tool's simplicity partly compensates. It could be more complete by noting when to use send_sms instead.
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?
Schema coverage is 100%, so the schema already documents all parameters. The description enhances the semantics by emphasizing the bulk nature ('at once') and the hard limit of 100 recipients, which is not visible in the schema. This adds value beyond the structured fields.
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 uses a specific verb and resource: 'Send an SMS message to multiple recipients.' It also highlights 'at once' and a recipient cap, which clearly distinguishes this from the sibling send_sms tool. An agent can tell it apart without opening the schema.
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 clearly implies the intended use case: sending to multiple recipients at once, up to 100. It does not explicitly name send_sms as the alternative for single recipients, nor does it state when not to use this tool, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_otpBInspect
Send a 6-digit OTP verification code via SMS or WhatsApp.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number in E.164 format | |
| brand | No | Brand name shown in the OTP message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention that the tool only sends the code and does not verify it, nor does it note any side effects, requirements, or limitations. The single sentence is purely functional without safety or 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 a single, concise sentence that front-loads the primary action ('Send a 6-digit OTP verification code') and channel. Every word earns its place; there is no redundancy or unnecessary detail.
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?
For a simple two-parameter tool, the description covers the core function, but lacks important context such as the separate verification step (verify_otp) and any delivery caveats. The absence of annotations and output schema makes this borderline, though the tool is simple enough that a 3 is reasonable.
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 input schema already fully documents both parameters (to, brand) with descriptions, achieving 100% coverage. The tool description adds no additional meaning about parameter constraints, relationships, or formatting beyond what the schema provides, so the baseline of 3 applies.
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 tool sends a 6-digit OTP verification code via SMS or WhatsApp, which is a specific verb+resource. However, it does not explicitly distinguish itself from the sibling send_sms tool, leaving potential ambiguity about when to prefer this tool over a generic SMS sender.
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 provides no guidance on when to use this tool versus alternatives like send_sms or verify_otp. It only states what it does, leaving the agent to infer usage from the tool name alone. No exclusions or preferred scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_smsBInspect
Send a single SMS message to a phone number in E.164 format (+212600000000).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number in E.164 format (+212600000000) | |
| message | Yes | Text content of the SMS | |
| sender_id | No | Optional approved custom Sender ID |
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 of disclosing behavioral traits. It only states that an SMS is sent and includes an E.164 format note, but it does not disclose side effects such as cost/balance deduction, delivery behavior, rate limits, sender_id approval requirements, or error outcomes.
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 a single sentence with no filler or redundancy. It front-loads the core operation and includes the key formatting constraint without wasting words.
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?
For a simple tool with fully described parameters, this description is minimally viable for invocation. However, without annotations or an output schema, it leaves gaps around return values, side effects, and alternatives, so it is not fully complete.
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?
Schema description coverage is 100%, so the parameters are already documented in the input schema. The description adds no meaningful information beyond what the schema provides; it only repeats the E.164 format for the 'to' parameter.
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 and resource: send a single SMS message to a phone number. The E.164 format is included, making the scope concrete. However, it does not explicitly differentiate from sibling tools like send_otp or send_bulk_sms beyond the word 'single'.
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 word 'single' implies this tool is for one-off SMS sending rather than bulk messaging, but there is no explicit guidance about when to use send_sms versus send_bulk_sms or send_otp. The usage context is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_otpAInspect
Verify an OTP passcode against a previously sent code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 6-digit OTP code to verify | |
| session_id | Yes | Session ID from send_otp |
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 of behavioral disclosure. It does not mention whether verification consumes/invalidates the code, what happens on failure, or whether the session must remain active. For a security-related operation, more side-effect transparency is expected.
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?
A single, front-loaded sentence with no filler. It communicates the essential action and flow relationship without wasted words.
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?
The description covers the tool's purpose and the core parameters, but omits success/failure semantics, return value, and side effects. Since there is no output schema, the agent is left without information about what the response will look like or how to interpret an unsuccessful verification.
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?
Schema description coverage is 100%, so the schema already documents both parameters well. The description adds the 'previously sent' temporal context but otherwise does not materially extend the parameter meaning beyond 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 uses a specific verb ('Verify') and a clear resource ('OTP passcode against a previously sent code'). It distinguishes verify_otp from its sibling send_otp by making the two-step flow explicit.
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 phrase 'previously sent code' clearly implies this tool is used after send_otp and requires a prior send. However, it does not explicitly name alternatives or state when not to use it, though the context is strong enough to infer the correct workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Send and schedule SMS and WhatsApp messages, manage contacts and templates, and track delivery.
Send and receive across email, SMS, WhatsApp, and voice. One API, one contract.
SMS Verify: SMS Verify API is a secure and easy-to-integrate service that sends verification codes.
Send WhatsApp, SMS and email for South African businesses: contacts, campaigns, templates, webhooks
Related MCP Servers
- AlicenseAqualityDmaintenanceVirtual phone number platform for AI agents — rent numbers across 200+ countries, receive SMS, and manage the full activation lifecycle.6564MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for provisioning dedicated real-SIM US phone numbers, receiving inbound SMS, and extracting OTP codes. Built for AI agents automating phone verification workflows.471MIT

SendAPI MCP Serverofficial
AlicenseAqualityBmaintenanceEnables any MCP-compatible AI agent to send WhatsApp messages, SMS, OTP codes, and email through a single REST API.18MIT- AlicenseAqualityAmaintenanceMCP server for SMS verification — get virtual phone numbers, receive OTP codes, and manage verifications for 500+ services across 50+ countries via the VirtualSMS API.181088MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Tools split into clear clusters: customer-facing send/verify/get tools and admin ops tools. The three ops_* tools could initially seem similar, but their descriptions distinguish operational alerts, business health, and route quality. Minor overlap exists between ops_monitoring and ops_pulse, but overall boundaries are clear.
The set uses consistent prefixes: get_, send_, verify_, and ops_. This creates a predictable pattern for agents. Minor deviation is that ops_pulse and ops_route_quality are noun-style rather than verb-noun, and 'pulse' is less descriptive than the others.
Eight tools is well-scoped for an SMS/OTP server, covering customer actions, pricing/balance, and admin oversight without bloat. Each tool has a clear role and the count feels appropriate for the domain.
Core flows are covered: balance lookup, pricing, sending SMS, OTP lifecycle, and admin monitoring. A notable gap is lack of per-message delivery status or send history, but agents can still complete the primary send-and-verify workflows. Minor gaps exist but are workable.