Read Notifyre SMS, replies, faxes, numbers, prices and contacts; send SMS to up to 10 numbers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Group ids.
Contact ids.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| group_ids* | array | Group ids. |
| contact_ids* | array | Contact ids. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_ids",
"group_ids"
],
"properties": {
"group_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20,
"minItems": 1,
"description": "Group ids."
},
"contact_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 100,
"minItems": 1,
"description": "Contact ids."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| string | Email address. | |
| group_ids | array | Existing group ids to add the contact to. |
| last_name | string | Family name. |
| fax_number | string | Fax number, international format. |
| first_name | string | Given name. |
| group_name | string | Group name to add the contact to (created if missing). |
| organization | string | Organization or company. |
| mobile_number | string | Mobile number, international format. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"type": "string",
"maxLength": 254,
"description": "Email address."
},
"group_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 20,
"description": "Existing group ids to add the contact to."
},
"last_name": {
"type": "string",
"maxLength": 100,
"description": "Family name."
},
"fax_number": {
"type": "string",
"maxLength": 30,
"description": "Fax number, international format."
},
"first_name": {
"type": "string",
"maxLength": 100,
"description": "Given name."
},
"group_name": {
"type": "string",
"maxLength": 100,
"description": "Group name to add the contact to (created if missing)."
},
"organization": {
"type": "string",
"maxLength": 200,
"description": "Organization or company."
},
"mobile_number": {
"type": "string",
"maxLength": 30,
"description": "Mobile number, international format."
}
}
}WRITE: creates one address book group with the given name. Notifyre API: POST /addressbook/groups.
| Argument | Type | Description |
|---|---|---|
| name* | string | The group name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The group name."
}
}
}Get one contact: names, organization, email, fax and mobile number, groups, custom fields, unsubscribed flag. Notifyre API: GET /addressbook/contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| contact_id* | string | The contact id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"contact_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The contact 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}.
| Argument | Type | Description |
|---|---|---|
| message_id* | string | The SMS message id (not the friendly id). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id"
],
"properties": {
"message_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The SMS message id (not the friendly 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}.
| Argument | Type | Description |
|---|---|---|
| message_id* | string | The SMS message id. |
| recipient_id* | string | The recipient id from get_sent_sms. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"message_id",
"recipient_id"
],
"properties": {
"message_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The SMS message id."
},
"recipient_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The recipient id from get_sent_sms."
}
}
}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}.
| Argument | Type | Description |
|---|---|---|
| reply_id* | string | The reply id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"reply_id"
],
"properties": {
"reply_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The reply id."
}
}
}List the account's registered 10DLC brands (US SMS sender registration). Notifyre API: GET /numbers/brands.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the account's 10DLC campaigns (US SMS use-case registrations) and their status. Notifyre API: GET /numbers/campaigns.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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).
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 0 (default 0). |
| type | string | Only contacts that have this kind of number. |
| limit | integer | Page size, 1 to 100 (default 20). |
| sort_by | string | Sort field (default name). |
| sort_dir | string | asc or desc (default asc). |
| group_ids | array | Only contacts in these group ids. |
| search_query | string | Text in the contact's name. |
| include_unsubscribed | boolean | Also return contacts that unsubscribed (default false). |
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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the account's fax numbers (E.164, region, status). Notifyre API: GET /fax/numbers.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the price of sending a fax per destination country (country code, calling prefix, price, currency). Notifyre API: GET /fax/send/prices.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the address book groups with their contact counts. Notifyre API: GET /addressbook/groups.
| Argument | Type | Description |
|---|---|---|
| sort_by | string | Sort field (default name). |
| sort_dir | string | asc or desc (default asc). |
| search_query | string | Text in the group name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort_by": {
"enum": [
"name",
"date_created"
],
"type": "string",
"description": "Sort field (default name)."
},
"sort_dir": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc or desc (default asc)."
},
"search_query": {
"type": "string",
"maxLength": 200,
"description": "Text in the group name."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Records to skip (default 0). |
| sort | string | asc or desc by date (default desc). |
| limit | integer | Page size, 1 to 100 (default 20). |
| to_date | string | End, ISO 8601 date or date-time. Default: now. |
| from_date | string | Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date. |
| to_number | string | Only faxes received on this account fax number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (default 0)."
},
"sort": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc or desc by date (default desc)."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1 to 100 (default 20)."
},
"to_date": {
"type": "string",
"description": "End, ISO 8601 date or date-time. Default: now."
},
"from_date": {
"type": "string",
"description": "Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date."
},
"to_number": {
"type": "string",
"maxLength": 30,
"description": "Only faxes received on this account fax number."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Records to skip (default 0). |
| sort | string | asc or desc by date (default desc). |
| limit | integer | Page size, 1 to 100 (default 20). |
| search | string | Filter by fax id or reference. |
| status | string | Only faxes with this status. |
| to_date | string | End, ISO 8601 date or date-time. Default: now. |
| from_date | string | Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (default 0)."
},
"sort": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc or desc by date (default desc)."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1 to 100 (default 20)."
},
"search": {
"type": "string",
"maxLength": 100,
"description": "Filter by fax id or reference."
},
"status": {
"enum": [
"accepted",
"successful",
"in_progress",
"failed",
"queued"
],
"type": "string",
"description": "Only faxes with this status."
},
"to_date": {
"type": "string",
"description": "End, ISO 8601 date or date-time. Default: now."
},
"from_date": {
"type": "string",
"description": "Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Records to skip (default 0). |
| sort | string | asc or desc by date (default desc). |
| limit | integer | Page size, 1 to 100 (default 20). |
| search | string | Filter by message id or scheduled job id. |
| status | string | Only messages with this status. |
| to_date | string | End, ISO 8601 date (2026-10-31, to the end of that UTC day) or date-time. Default: now. |
| from_date | string | Start, ISO 8601 date (2026-10-01) or date-time with timezone. Default: 30 days before to_date. |
| to_number | string | Destination number the SMS was sent to. |
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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Records to skip (default 0). |
| sort | string | asc or desc by date (default desc). |
| limit | integer | Page size, 1 to 100 (default 20). |
| to_date | string | End, ISO 8601 date or date-time. Default: now. |
| from_date | string | Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date. |
| to_number | string | Account number that received the reply. Needs from_number as well. |
| from_number | string | Number the reply came from. Needs to_number as well. |
| recipient_id | string | Only replies to this SMS recipient id. |
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.
| Argument | Type | Description |
|---|---|---|
| to* | array | 1 to 10 mobile numbers in international format with country code and "+", e.g. +61412345678. |
| body* | string | The message text. |
| from | string | Optional sender: one of the account's SMS numbers or sender IDs (see notifyre_list_sms_numbers). Omit to use a Notifyre shared number. |
| campaign_name | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Page number, from 0 (default 0)."
},
"type": {
"enum": [
"FaxNumber",
"MobileNumber"
],
"type": "string",
"description": "Only contacts that have this kind of number."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1 to 100 (default 20)."
},
"sort_by": {
"type": "string",
"maxLength": 40,
"description": "Sort field (default name)."
},
"sort_dir": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc or desc (default asc)."
},
"group_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"description": "Only contacts in these group ids."
},
"search_query": {
"type": "string",
"maxLength": 200,
"description": "Text in the contact's name."
},
"include_unsubscribed": {
"type": "boolean",
"description": "Also return contacts that unsubscribed (default false)."
}
}
}| from_number |
| string |
| Number the SMS was sent from. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (default 0)."
},
"sort": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc or desc by date (default desc)."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1 to 100 (default 20)."
},
"search": {
"type": "string",
"maxLength": 100,
"description": "Filter by message id or scheduled job id."
},
"status": {
"enum": [
"processing",
"submitted",
"sent",
"failed"
],
"type": "string",
"description": "Only messages with this status."
},
"to_date": {
"type": "string",
"description": "End, ISO 8601 date (2026-10-31, to the end of that UTC day) or date-time. Default: now."
},
"from_date": {
"type": "string",
"description": "Start, ISO 8601 date (2026-10-01) or date-time with timezone. Default: 30 days before to_date."
},
"to_number": {
"type": "string",
"maxLength": 30,
"description": "Destination number the SMS was sent to."
},
"from_number": {
"type": "string",
"maxLength": 30,
"description": "Number the SMS was sent from."
}
}
}| include_reply_content |
| boolean |
| Include the reply texts (default false; limit is then capped at 20). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (default 0)."
},
"sort": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc or desc by date (default desc)."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, 1 to 100 (default 20)."
},
"to_date": {
"type": "string",
"description": "End, ISO 8601 date or date-time. Default: now."
},
"from_date": {
"type": "string",
"description": "Start, ISO 8601 date or date-time with timezone. Default: 30 days before to_date."
},
"to_number": {
"type": "string",
"maxLength": 30,
"description": "Account number that received the reply. Needs from_number as well."
},
"from_number": {
"type": "string",
"maxLength": 30,
"description": "Number the reply came from. Needs to_number as well."
},
"recipient_id": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Only replies to this SMS recipient id."
},
"include_reply_content": {
"type": "boolean",
"description": "Include the reply texts (default false; limit is then capped at 20)."
}
}
}| Optional reference name for this send. |
| add_unsubscribe_link | boolean | 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": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"to",
"body"
],
"properties": {
"to": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "1 to 10 mobile numbers in international format with country code and \"+\", e.g. +61412345678."
},
"body": {
"type": "string",
"maxLength": 640,
"minLength": 1,
"description": "The message text."
},
"from": {
"type": "string",
"maxLength": 20,
"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."
},
"campaign_name": {
"type": "string",
"maxLength": 100,
"description": "Optional reference name for this send."
},
"add_unsubscribe_link": {
"type": "boolean",
"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."
}
}
}