D7 Networks MCP by usefulapi

Read D7 Networks balance, SMS pricing and delivery status; look up numbers; send one SMS.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
87%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,142Tokens (tool definitions)
~1017 BTypical response size
Moderate attention impact (0.89% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "d7-networks": {
      "url": "https://d7-networks.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://d7-networks.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢d7_get_balance

Read the D7 account's remaining credit balance (free; no credit is spent). D7 REST: GET /messages/v1/balance.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢d7_get_sms_pricing(country_iso)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "country_iso": {
      "description": "Two-letter ISO country code, for example AE. Omit for all countries.",
      "type": "string",
      "pattern": "^[A-Za-z]{2}$"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢d7_get_message_status(request_id)

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}.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string",
      "minLength": 8,
      "description": "The request_id that d7_send_sms returned."
    }
  },
  "required": [
    "request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢d7_get_lookup_report(request_id)

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}.

Input Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string",
      "minLength": 8,
      "description": "The request_id that d7_lookup_number returned."
    }
  },
  "required": [
    "request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴d7_lookup_number(recipient)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "recipient": {
      "type": "string",
      "minLength": 7,
      "maxLength": 24,
      "description": "The phone number, international format with the country code, for example +971501234567."
    }
  },
  "required": [
    "recipient"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴d7_send_sms(originator, recipients, content, data_coding, tag)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "originator": {
      "type": "string",
      "minLength": 1,
      "maxLength": 16,
      "description": "Sender id shown on the phone: up to 11 letters/digits (alphanumeric) or a registered number. Must be allowed for the account."
    },
    "recipients": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 7,
        "maxLength": 24
      },
      "description": "1 to 10 phone numbers, each in international format with the country code, for example +971501234567."
    },
    "content": {
      "type": "string",
      "minLength": 1,
      "maxLength": 640,
      "description": "The message text, at most 640 characters."
    },
    "data_coding": {
      "description": "text = GSM 03.38 characters only, unicode = Arabic/Chinese/emoji etc., auto (default) = D7 decides from the content.",
      "type": "string",
      "enum": [
        "text",
        "unicode",
        "auto"
      ]
    },
    "tag": {
      "description": "Your own reference string, stored with the request.",
      "type": "string",
      "maxLength": 100
    }
  },
  "required": [
    "originator",
    "recipients",
    "content"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools