D7 Networks MCP by usefulapi
Server Details
Read D7 Networks balance, SMS pricing and delivery status; look up numbers; send one SMS.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin โ Test Profile.
- Status
- Unhealthy
- Uptime
- 99.6% over 21 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 6 tools
Each tool targets a distinct resource/action pair: balance, SMS pricing, number lookup, lookup report, SMS send, and message status. The read/write pairs (d7_lookup_number vs d7_get_lookup_report, d7_send_sms vs d7_get_message_status) are clearly differentiated by cost, verb, and whether they take a request_id.
All tools use a uniform d7_ prefix followed by a verb_noun pattern (get_balance, get_lookup_report, get_message_status, get_sms_pricing, lookup_number, send_sms). No mixing of conventions or verb styles.
Six tools is a reasonable, well-scoped set for a messaging/HLR API. It leans slightly thin (no history listing or sender-id management), but each tool earns its place and none is redundant.
The surface covers the core workflow: check balance, estimate cost via pricing, perform a lookup, read its report, send an SMS, and poll status. Minor gaps exist (no sender-id registration, no request/message history, no bulk/campaign support), but these are partly intentional per the descriptions.
Available Tools
6 toolsd7_get_balanceGet credit balanceARead-onlyInspect
Read the D7 account's remaining credit balance (free; no credit is spent). D7 REST: GET /messages/v1/balance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds genuine behavioral value beyond that by disclosing the cost trait ('free; no credit is spent') and the underlying REST call, which tells an agent it can call this freely without consuming account credits.
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?
Two short sentences, front-loaded with the core action and followed by the cost note and endpoint reference. Every clause carries information; there is no 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 zero-parameter read tool, the definition is essentially complete: what it reads, that it is free, and the endpoint. With no output schema, it could optionally state what the returned balance looks like (units/currency), which is the only minor 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 tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool applies, and nothing in the description misleads about inputs.
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?
States a specific verb ('Read') and resource ('the D7 account's remaining credit balance'), which is clearly distinct from siblings like d7_get_sms_pricing and d7_get_lookup_report. It does not explicitly contrast itself with any sibling, but the resource is unambiguous on its own.
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 parenthetical '(free; no credit is spent)' implies this is a safe, cost-free call, which is useful usage context, but there is no explicit when-to-use, when-not-to-use, or named alternative among the siblings. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
d7_get_lookup_reportGet number lookup reportARead-onlyInspect
Read the stored result of an earlier number lookup by its request_id (free; no credit is spent). D7 REST: GET /hlr/v1/report/{request_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | The request_id that d7_lookup_number returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint already declares this as a safe read, so the bar is lower; the description adds genuinely useful behavioral context by disclosing that the call is free and consumes no credits, plus the underlying REST route. It does not disclose behavior for edge cases such as a report that is not yet ready or an invalid request_id.
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?
Two compact sentences, front-loaded with the purpose and the cost fact, with the REST endpoint appended as secondary reference. Nothing is redundant or padded.
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?
There is no output schema, so the description carries the burden of describing what a 'lookup report' contains (e.g., carrier/network, ported status, timestamps) and what a not-yet-complete report looks like. It explains how to obtain the input but not what comes back, leaving a notable gap for the only retrieval tool in the group.
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 single request_id parameter is already documented as coming from d7_lookup_number, so the description adds no format or constraint detail beyond the schema. Baseline 3 is appropriate when the schema 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?
States a specific verb and resource ('Read the stored result of an earlier number lookup by its request_id') and the retrieval-by-key relationship implicitly separates it from d7_lookup_number, which initiates the lookup. An agent can distinguish this from every sibling 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?
Establishes clear context: this is the follow-up read step for a lookup previously started, keyed by the id that d7_lookup_number returned. It does not name an explicit alternative or state exclusions (e.g., what to do if no lookup was performed), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
d7_get_message_statusGet SMS delivery statusARead-onlyInspect
Read the delivery status of an SMS request: per recipient the status (delivered, sent, scheduled, un_delivered, not_reachable, spam_content, insufficient_credit), message parts and cost (free). D7 REST: GET /report/v1/message-log/{request_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | The request_id that d7_send_sms returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers the safety profile, and the description adds real value on top: the full set of possible per-recipient statuses, the fact that parts and cost are returned, and the 'free' cost note. It still omits whether statuses are eventually consistent (i.e. whether polling is expected), which matters for a delivery-report 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?
Two sentences, front-loaded with the operation and its return shape, followed by the underlying REST mapping. The status enumeration is dense but directly useful and nothing is padded.
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?
With no output schema, the description carries the return-value burden and does so reasonably by listing statuses, parts, and cost. It falls short only on error/timeout behavior and whether a pending status should be re-polled after a delay.
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 single request_id parameter is fully documented in the schema itself. The description adds return-value context but no additional syntax, format, or constraint information beyond what the schema already provides, so the baseline 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?
States a specific verb and resource ('Read the delivery status of an SMS request') and enumerates the exact status values the caller should expect. It is cleanly distinguished from siblings like d7_get_balance, d7_get_sms_pricing, and d7_send_sms, which deal with pricing, balance, or sending rather than post-send delivery reporting.
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 makes the usage context clear (checking delivery of an already-submitted SMS request) and the schema ties request_id to d7_send_sms's return value, establishing the natural call order. It does not, however, state explicit exclusions or name an alternative tool for overlapping reporting needs such as d7_get_lookup_report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
d7_get_sms_pricingGet SMS pricingARead-onlyInspect
Read the account's price per SMS part, for one country or for all countries (free; no credit is spent). Use it to estimate the cost before d7_send_sms. D7 REST: GET /messages/v1/sms/pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| country_iso | No | Two-letter ISO country code, for example AE. Omit for all countries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered, and the description adds genuinely new behavioral context: the call is free and consumes no credit, and the included REST path (GET /messages/v1/sms/pricing) confirms a non-mutating read. It does not describe the response shape or unit detail beyond 'price per SMS part,' which is the only remaining gap.
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?
Two compact sentences: the first front-loads what the tool returns and its cost profile, the second front-loads when to use it, with the endpoint appended as supporting detail. No 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 single-optional-parameter read tool with no output schema, the description covers purpose, cost behavior, and the sibling it feeds into. It could say slightly more about the returned value's structure (e.g., per-country list vs. scalar), but nothing essential for correct invocation is missing.
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% and the single parameter already documents the two-letter ISO code and the 'omit for all countries' behavior. The description restates the same one-or-all-countries distinction but adds no format, casing, or error-condition 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?
States a specific verb and resource ('Read the account's price per SMS part') with explicit scope (one country or all countries), which is clearly distinct from the sibling tools such as d7_send_sms and d7_get_balance. An agent can identify what this returns 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?
Gives a direct routing instruction: 'Use it to estimate the cost before d7_send_sms,' naming the sibling it precedes and the condition that motivates the call. Combined with the read-only, free nature, the agent knows exactly when this is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
d7_lookup_numberLook up a phone number (costs credits)ADestructiveInspect
WRITE (spends credits): look up ONE phone number's carrier data (country, network, MCC/MNC, ported, reachable, mobile or fixed). Each lookup is billed to the D7 account's credit balance (the cost is returned by d7_get_lookup_report as number_lookup_cost) and the account must have lookup routing enabled. It does not message the number. D7 REST: POST /hlr/v1/lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| recipient | Yes | The phone number, international format with the country code, for example +971501234567. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-idempotent, destructive write, and the description reconciles that by disclosing the actual cost model: each lookup is billed against the D7 credit balance and requires routing to be enabled. It also clarifies the non-effect (no message is sent) and the underlying REST endpoint, which annotations cannot convey.
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?
Front-loads the operation type and cost warning ('WRITE (spends credits)') in the first clause, then packs prerequisites, non-effects, and the endpoint into compact clauses with no 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 one-parameter tool with no output schema, the description covers the safety/billing profile, the routing prerequisite, what is not done, and the backing endpoint. Nothing an agent needs to invoke it correctly is missing.
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 single parameter's format (international, with country code, example) is already documented in the schema. The description adds only the emphasis that lookup is for ONE number, which is marginal value over 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?
States a specific verb and resource (look up one phone number) and enumerates exactly what is returned: country, network, MCC/MNC, ported, reachable, mobile vs fixed. It also differentiates from d7_send_sms by explicitly stating it does not message the number.
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?
Gives clear preconditions for use (credits are spent, lookup routing must be enabled) and points at d7_get_lookup_report to find the cost, which routes the agent between siblings. It does not, however, state when to prefer a different sibling over this one (e.g., bulk vs single lookup), so it falls short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
d7_send_smsSend an SMS (spends credits)ADestructiveInspect
WRITE (sends real text messages and spends credits): send ONE text message to 1-10 recipients (never a list or campaign). Each recipient costs the per-country price for every message part (about 160 GSM characters or 70 unicode characters per part; see d7_get_sms_pricing), taken from the D7 credit balance, and a sent SMS cannot be recalled. Free trial accounts may only use D7's demo sender id; other sender ids must be registered with D7. Send only messages the recipients expect, as unsolicited SMS violates D7's terms. Returns a request_id for d7_get_message_status. D7 REST: POST /messages/v1/send.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Your own reference string, stored with the request. | |
| content | Yes | The message text, at most 640 characters. | |
| originator | Yes | Sender id shown on the phone: up to 11 letters/digits (alphanumeric) or a registered number. Must be allowed for the account. | |
| recipients | Yes | 1 to 10 phone numbers, each in international format with the country code, for example +971501234567. | |
| data_coding | No | text = GSM 03.38 characters only, unicode = Arabic/Chinese/emoji etc., auto (default) = D7 decides from the content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover destructive/non-idempotent/write semantics, yet the description still adds substantial context the annotations cannot: credit spend drawn from the D7 balance, per-country per-message-part pricing, no recall after send, trial-account sender-id restrictions, and terms-of-service consequences for unsolicited SMS.
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?
Front-loads the WRITE/cost warning, then layers scope, pricing model, irreversibility, account constraints, compliance, and return value in tight clauses. Dense but no filler sentences; every clause carries operational 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?
No output schema exists, and the description compensates by naming the returned request_id and the sibling tool that consumes it. Combined with the cost, sender-id, and compliance caveats, an agent has everything needed to invoke this correctly and safely.
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, but the description goes beyond the schema by explaining the cost consequences of recipients and the ~160 GSM / 70 unicode character part segmentation behind content and data_coding. It adds meaning about parameter impact rather than merely restating field definitions.
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?
States a specific verb and resource ('send ONE text message') and immediately bounds the scope ('1-10 recipients, never a list or campaign'), which separates it cleanly from any bulk/campaign sibling. The REST endpoint (POST /messages/v1/send) confirms the operation unambiguously.
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?
Gives explicit when-to-use ('send ONE text message to 1-10 recipients'), a when-not ('never a list or campaign'), and routes to siblings by name: d7_get_sms_pricing for cost and d7_get_message_status for the returned request_id. It also states the compliance condition for when sending is permitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Related MCP Connectors
Read Voodoo SMS credits, reports, inbox and lists; send one SMS; manage the opt-out blacklist.
Read Messente balance, prices, delivery status and statistics; send SMS to up to 10 numbers.
Read BulkSMS messages, replies, profile and webhooks; send SMS to up to 10 numbers.
Read Africa's Talking balance, incoming SMS, transactions; send SMS, airtime, data and voice calls.
Related MCP Servers
- AlicenseBqualityAmaintenanceEnables agents to manage D1Jiema SMS workflows, including balance checks, number acquisition, SMS retrieval, releases, blocking, sending, and history queries through the D1Jiema API.12MIT
- AlicenseAqualityDmaintenanceExposes the Hellio Messaging API as MCP tools for SMS, OTP, voice, HLR lookup, email verification, balance, pricing, webhooks, and USSD operations.287 npmMIT
- AlicenseBqualityCmaintenanceEnables management of Crazytel telephony and SMS services, including balance checks, DIDs, SIP trunks, verified caller IDs, SMS sending/bulk/scheduling, and SMS Center conversations, contacts, lists, opt-outs, and stats.42MIT
- AlicenseAqualityFmaintenanceEnables sending SMS messages and checking delivery status and credit balance via the web2sms.ro Romanian SMS gateway.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.