Notifyre MCP by usefulapi
Read Notifyre SMS, replies, faxes, numbers, prices and contacts; send SMS to up to 10 numbers.
Should I use this
Quality & Safety
Findings (1)
- LOWin notifyre_add_contacts_to_groups
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"notifyre": {
"url": "https://notifyre.usefulapi.io/mcp"
}
}
}Remote endpoints
https://notifyre.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (21)
🟢notifyre_list_sent_sms(from_date, to_date, status, to_number, from_number, ...)
List SMS messages sent from the account, newest first by default, with recipient, status and cost. Without from_date the window is the last 30 days. Filter by status (processing, submitted, sent, failed), numbers, or a message id in search. Page with skip = next_skip. Notifyre API: GET /sms/send.
Input Schema
{
"type": "object",
"properties": {
"from_date": {
"description": "Start, ISO 8601 date (2026-10-01) or date-time with timezone. Default: 30 days before to_date.",
"type": "string"
},
"to_date": {
"description": "End, ISO 8601 date (2026-10-31, to the end of that UTC day) or date-time. Default: now.",
"type": "string"
},
"status": {
"description": "Only messages with this status.",
"type": "string",
"enum": [
"processing",
"submitted",
"sent",
"failed"
]
},
"to_number": {
"description": "Destination number the SMS was sent to.",
"type": "string",
"maxLength": 30
},
"from_number": {
"description": "Number the SMS was sent from.",
"type": "string",
"maxLength": 30
},
"search": {
"description": "Filter by message id or scheduled job id.",
"type": "string",
"maxLength": 100
},
"sort": {
"description": "asc or desc by date (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Page size, 1 to 100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to skip (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_get_sent_sms(message_id)
Get one sent SMS message with every recipient: status, delivery status, message parts, cost. Use the id from notifyre_list_sent_sms or notifyre_send_sms. Notifyre API: GET /sms/send/{id}.
Input Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The SMS message id (not the friendly id)."
}
},
"required": [
"message_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_get_sms_recipient(message_id, recipient_id)
Get the text and delivery details of one recipient of a sent SMS (status, parts, cost). Notifyre API: GET /sms/send/{messageId}/recipients/{recipientId}.
Input Schema
{
"type": "object",
"properties": {
"message_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The SMS message id."
},
"recipient_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The recipient id from get_sent_sms."
}
},
"required": [
"message_id",
"recipient_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_sms_replies(from_date, to_date, from_number, to_number, recipient_id, ...)
List SMS replies received on the account's numbers. Without from_date the window is the last 30 days. from_number and to_number must be given together. include_reply_content adds the reply texts (then at most 20 per page). Page with skip = next_skip. Notifyre API: GET /sms/received.
Input Schema
{
"type": "object",
"properties": {
"from_date": {
"description": "Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date.",
"type": "string"
},
"to_date": {
"description": "End, ISO 8601 date or date-time. Default: now.",
"type": "string"
},
"from_number": {
"description": "Number the reply came from. Needs to_number as well.",
"type": "string",
"maxLength": 30
},
"to_number": {
"description": "Account number that received the reply. Needs from_number as well.",
"type": "string",
"maxLength": 30
},
"recipient_id": {
"description": "Only replies to this SMS recipient id.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"include_reply_content": {
"description": "Include the reply texts (default false; limit is then capped at 20).",
"type": "boolean"
},
"sort": {
"description": "asc or desc by date (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Page size, 1 to 100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to skip (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_get_sms_reply(reply_id)
Get one received SMS reply with its text, sender and receiving number. Use the replyID from notifyre_list_sms_replies. Notifyre API: GET /sms/received/{id}.
Input Schema
{
"type": "object",
"properties": {
"reply_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The reply id."
}
},
"required": [
"reply_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_sms_numbers
List the account's SMS numbers (E.164, status, 10DLC campaign) and approved alphanumeric sender IDs. Use one of them as `from` when sending. Notifyre API: GET /sms/numbers.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_sms_prices
List the price of one SMS per destination country (country code, calling prefix, price, currency). Check it before sending: the cost of a send is price x message parts x recipients. Notifyre API: GET /sms/send/prices.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_sent_faxes(from_date, to_date, status, search, sort, ...)
List faxes sent from the account (recipient, pages, quality, status, failure reason). Without from_date the window is the last 30 days. Filter by status (accepted, successful, in_progress, failed, queued). Page with skip = next_skip. Notifyre API: GET /fax/send.
Input Schema
{
"type": "object",
"properties": {
"from_date": {
"description": "Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date.",
"type": "string"
},
"to_date": {
"description": "End, ISO 8601 date or date-time. Default: now.",
"type": "string"
},
"status": {
"description": "Only faxes with this status.",
"type": "string",
"enum": [
"accepted",
"successful",
"in_progress",
"failed",
"queued"
]
},
"search": {
"description": "Filter by fax id or reference.",
"type": "string",
"maxLength": 100
},
"sort": {
"description": "asc or desc by date (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Page size, 1 to 100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to skip (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_received_faxes(from_date, to_date, to_number, sort, limit, ...)
List faxes received on the account's fax numbers (sender, number, time, pages, duration, read flag). The fax documents are not downloaded. Without from_date the window is the last 30 days. Page with skip = next_skip. Notifyre API: GET /fax/received.
Input Schema
{
"type": "object",
"properties": {
"from_date": {
"description": "Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date.",
"type": "string"
},
"to_date": {
"description": "End, ISO 8601 date or date-time. Default: now.",
"type": "string"
},
"to_number": {
"description": "Only faxes received on this account fax number.",
"type": "string",
"maxLength": 30
},
"sort": {
"description": "asc or desc by date (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Page size, 1 to 100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"skip": {
"description": "Records to skip (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_fax_numbers
List the account's fax numbers (E.164, region, status). Notifyre API: GET /fax/numbers.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_fax_prices
List the price of sending a fax per destination country (country code, calling prefix, price, currency). Notifyre API: GET /fax/send/prices.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_fax_cover_pages
List the fax cover page templates of the account (name and whether it is the default). The HTML of each template is left out. Notifyre API: GET /fax/coverpages.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_contacts(search_query, type, group_ids, sort_by, sort_dir, ...)
Search the address book. search_query matches the name; type FaxNumber or MobileNumber keeps contacts that have that number; group_ids limits to groups. Page numbers start at 0. Contacts that unsubscribed are left out unless include_unsubscribed is true. The unsubscribe key of a contact is never shown. Notifyre API: POST /addressbook/contacts/search (a read).
Input Schema
{
"type": "object",
"properties": {
"search_query": {
"description": "Text in the contact's name.",
"type": "string",
"maxLength": 200
},
"type": {
"description": "Only contacts that have this kind of number.",
"type": "string",
"enum": [
"FaxNumber",
"MobileNumber"
]
},
"group_ids": {
"description": "Only contacts in these group ids.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"sort_by": {
"description": "Sort field (default name).",
"type": "string",
"maxLength": 40
},
"sort_dir": {
"description": "asc or desc (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"include_unsubscribed": {
"description": "Also return contacts that unsubscribed (default false).",
"type": "boolean"
},
"page": {
"description": "Page number, from 0 (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"limit": {
"description": "Page size, 1 to 100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_get_contact(contact_id)
Get one contact: names, organization, email, fax and mobile number, groups, custom fields, unsubscribed flag. Notifyre API: GET /addressbook/contacts/{id}.
Input Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The contact id."
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_groups(search_query, sort_by, sort_dir)
List the address book groups with their contact counts. Notifyre API: GET /addressbook/groups.
Input Schema
{
"type": "object",
"properties": {
"search_query": {
"description": "Text in the group name.",
"type": "string",
"maxLength": 200
},
"sort_by": {
"description": "Sort field (default name).",
"type": "string",
"enum": [
"name",
"date_created"
]
},
"sort_dir": {
"description": "asc or desc (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_brands
List the account's registered 10DLC brands (US SMS sender registration). Notifyre API: GET /numbers/brands.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢notifyre_list_campaigns
List the account's 10DLC campaigns (US SMS use-case registrations) and their status. Notifyre API: GET /numbers/campaigns.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴notifyre_send_sms(to, body, from, add_unsubscribe_link, campaign_name)
WRITE: SENDS REAL SMS to real people and SPENDS the prepaid balance of the user's Notifyre account; it cannot be undone or recalled and is never retried. One text to 1 to 10 mobile numbers in international format with "+" (e.g. +61412345678); no contacts, no groups, no scheduling. Cost = price per message part (see notifyre_list_sms_prices; it depends on the destination country) x number of parts x number of recipients; the text may be up to 640 characters (160 per part, 70 with emoji or non-GSM characters, a little less per part when it is longer). Only send what the user explicitly asked for: confirm the exact text, the recipients and the sender first. Recipients must have agreed to receive messages. A commercial SMS needs an opt-out (Australia: Spam Act 2003; Notifyre Terms and Conditions 13.5): set add_unsubscribe_link true to append Notifyre's opt-out link, or put your own opt-out instruction in the text. The default is false, so the requirement is yours to meet. US numbers need a registered 10DLC campaign. Omit `from` to send from a Notifyre shared number. An unclear result (timeout, HTTP 5xx) means the message may still have been sent: check notifyre_list_sent_sms before trying again. Notifyre API: POST /sms/send.
Input Schema
{
"type": "object",
"properties": {
"to": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "1 to 10 mobile numbers in international format with country code and \"+\", e.g. +61412345678."
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 640,
"description": "The message text."
},
"from": {
"description": "Optional sender: one of the account's SMS numbers or sender IDs (see notifyre_list_sms_numbers). Omit to use a Notifyre shared number.",
"type": "string",
"maxLength": 20
},
"add_unsubscribe_link": {
"description": "Append Notifyre's opt-out link to the text (default false). A commercial SMS needs an opt-out: set true, or write your own opt-out line. Adds characters, so it can add a part.",
"type": "boolean"
},
"campaign_name": {
"description": "Optional reference name for this send.",
"type": "string",
"maxLength": 100
}
},
"required": [
"to",
"body"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡notifyre_create_contact(first_name, last_name, organization, email, mobile_number, ...)
WRITE: adds one contact to the Notifyre address book. Give at least a name or a number. Numbers in international format (e.g. +61412345678). groups takes existing group ids; group_name puts the contact in that group and CREATES the group if it does not exist. Creating the same contact twice may make a duplicate. Notifyre API: POST /addressbook/contacts.
Input Schema
{
"type": "object",
"properties": {
"first_name": {
"description": "Given name.",
"type": "string",
"maxLength": 100
},
"last_name": {
"description": "Family name.",
"type": "string",
"maxLength": 100
},
"organization": {
"description": "Organization or company.",
"type": "string",
"maxLength": 200
},
"email": {
"description": "Email address.",
"type": "string",
"maxLength": 254
},
"mobile_number": {
"description": "Mobile number, international format.",
"type": "string",
"maxLength": 30
},
"fax_number": {
"description": "Fax number, international format.",
"type": "string",
"maxLength": 30
},
"group_ids": {
"description": "Existing group ids to add the contact to.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"group_name": {
"description": "Group name to add the contact to (created if missing).",
"type": "string",
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡notifyre_create_group(name)
WRITE: creates one address book group with the given name. Notifyre API: POST /addressbook/groups.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The group name."
}
},
"required": [
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡notifyre_add_contacts_to_groups(contact_ids, group_ids)
WRITE: adds existing contacts to existing groups (up to 100 contacts and 20 groups). Contacts keep their other groups. Adding a contact to a group does not send anything, but a later send to that group reaches it. Notifyre API: POST /addressbook/groups/contacts.
Input Schema
{
"type": "object",
"properties": {
"contact_ids": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": "Contact ids."
},
"group_ids": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": "Group ids."
}
},
"required": [
"contact_ids",
"group_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence