Messente MCP by usefulapi

Read Messente balance, prices, delivery status and statistics; send SMS to up to 10 numbers.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
91%
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,664Tokens (tool definitions)
~932 BTypical response size
Moderate attention impact (1.30% 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": {
    "messente": {
      "url": "https://messente.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://messente.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

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

Get the Messente account's remaining SMS credit balance (in EUR). Messente legacy API: GET /get_balance (api2.messente.com).

Input Schema

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

Get this account's price per SMS part for one country, per mobile network (use it to estimate what messente_send_sms will cost). Messente legacy API: GET /prices.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "ISO 3166-1 alpha-2 country code, e.g. EE or GB."
    }
  },
  "required": [
    "country"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢messente_get_delivery_status(omnimessage_id)

Get the delivery report of a sent message by its omnimessage id (returned by messente_send_sms): per-message status (DELIVRD, UNDELIV, FAILED, ...), error and the price charged. Messente asks not to poll this for every message at scale. Messente: GET /omnimessage/{omnimessage_id}/status.

Input Schema

{
  "type": "object",
  "properties": {
    "omnimessage_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The omnimessage_id returned when the message was sent."
    }
  },
  "required": [
    "omnimessage_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢messente_list_blacklist(limit, offset)

List the phone numbers on the account's blacklist (numbers Messente will not send to). Returns the total count and at most `limit` numbers. Messente: GET /phonebook/blacklist.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Maximum numbers to return (default 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 2000
    },
    "offset": {
      "description": "Skip this many numbers (to page through a long list).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢messente_check_blacklist(phone)

Check whether one phone number is on the account's blacklist. Messente: GET /phonebook/blacklist/{phone} (found = blacklisted, 404 = not).

Input Schema

{
  "type": "object",
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$",
      "description": "Phone number in E.164 format, e.g. +37251000000."
    }
  },
  "required": [
    "phone"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢messente_get_statistics(start_date, end_date, message_types)

Get total messages and total price per country for a date range, optionally for some message types. Messente: POST /statistics/reports (a read-only report).

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date, YYYY-MM-DD."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End date, YYYY-MM-DD."
    },
    "message_types": {
      "description": "Limit the report to these message types.",
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "sms",
          "viber",
          "whatsapp",
          "rcs",
          "hlr"
        ]
      }
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡messente_lookup_numbers(numbers)

Number lookup (HLR): is each number valid, ported, roaming, and which network it is on. COSTS CREDITS: Messente charges per number looked up (EUR 0.002 per number in its docs) and the Number Lookup service must be enabled on the account (a fixed monthly fee applies per Messente's docs). Up to 10 numbers per call. Messente: POST /hlr/sync.

Input Schema

{
  "type": "object",
  "properties": {
    "numbers": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\+[1-9]\\d{6,14}$"
      },
      "description": "Phone numbers in E.164 format (1-10)."
    }
  },
  "required": [
    "numbers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡messente_add_to_blacklist(phone_number)

WRITE: add one phone number to the account's blacklist, so Messente will no longer send messages to it. Adding a number already listed is harmless. Messente: POST /phonebook/blacklist.

Input Schema

{
  "type": "object",
  "properties": {
    "phone_number": {
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$",
      "description": "Phone number to blacklist, E.164 format, e.g. +37251000000."
    }
  },
  "required": [
    "phone_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴messente_send_sms(to, text, sender)

WRITE: SENDS REAL SMS TEXT MESSAGES to real people and SPENDS the account's Messente credit (each recipient is charged per SMS part, longer texts use several parts; use messente_get_prices to estimate). SMS only, at most 10 recipients per call, one message per recipient, never to a list. Send only to people who asked to receive it (Messente forbids unsolicited messages). Not undoable. Messente: POST /omnimessage with channel sms, once per recipient.

Input Schema

{
  "type": "object",
  "properties": {
    "to": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\+[1-9]\\d{6,14}$"
      },
      "description": "Recipient phone numbers in E.164 format (1-10)."
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1600,
      "description": "The message text."
    },
    "sender": {
      "description": "Sender name (alphanumeric, max 11 chars) or number; must be a sender verified on the account. Omit to use the account default.",
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "pattern": "^[A-Za-z0-9 .+_-]+$"
    }
  },
  "required": [
    "to",
    "text"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools