MCP App Store
by KeenEthics
Soprano Connect icon

Soprano Connect

By Soprano Design

Get New App Alerts

Overview

Send and track messages across SMS, WhatsApp, RCS, Email, Voice, Viber and Push notifications using your Soprano Connect API account. Also lists approved WhatsApp templates and manages WhatsApp media. Requires an existing Soprano Design Connect API account with the relevant channels provisioned - built for teams already using Soprano Connect who want to trigger messages conversationally instead of through the Connect portal.

Tools

delete_whatsapp_media

ChatGPT
Delete previously uploaded WhatsApp media from Facebook. Maps to DELETE {domain_url}/cgpapi/waba/media/{media_id}.

get_batch_status

ChatGPT
Query the status of multiple messages at once. Maps to POST {domain_url}/cgpapi/batch/messages/status. Each item is {"id": <message id>, "message_type": "SMS"} (currently only SMS is supported by this Connect API endpoint).

get_message_status

ChatGPT
Query the status of a single previously-sent message. Maps to GET {domain_url}/cgpapi/messages/{channel}/{message_id}.

list_contacts

ChatGPT
Look up stored contacts, to get the ids to use as type: 1 endpoints in send_broadcast. Maps to GET {domain_url}/rest/contacts. Each item is {id, name, mobile, email} with mobile and email omitted when the contact has none. Prefer filtering over paging through everything: combine first_name/last_name/mobile/email to narrow the result (all given filters must match). Returns {items, page, limit, total, has_more}; an empty items means no matching contact. To get the next page call again with page + 1 while has_more is true. total is only known on page 1. limit defaults to 25 (max 100).

list_groups

ChatGPT
Look up stored contact groups, to get the ids to use as type: 2 endpoints in send_broadcast. Maps to GET {domain_url}/rest/groups. Each item is {id, name}. Prefer filtering by name over paging through everything. Returns {items, page, limit, total, has_more}; to get the next page call again with page + 1 while has_more is true. total is only known on page 1. limit defaults to 25 (max 100). Group names are not unique, so use the id.

list_lists

ChatGPT
Look up stored recipient lists, to get the ids to use as type: 3 endpoints in send_broadcast. Maps to GET {domain_url}/rest/lists. Each item is {id, name}. Prefer filtering by name over paging through everything. Returns {items, page, limit, total, has_more}; to get the next page call again with page + 1 while has_more is true. total is only known on page 1 and is null whenever a name filter is used. limit defaults to 25 (max 100). List names are not unique, so use the id.

list_whatsapp_templates

ChatGPT
List approved WhatsApp Business (WABA) message templates. Maps to GET {domain_url}/cgpapi/waba/templates. Templates with the same name but different languages appear as separate objects (name, language, languageName, category, components, status). Auth outlier: unlike every other tool, this endpoint requires a portal session (not one of the 4 standard auth methods), configured server-side out-of-band - never via tool arguments. Returns a clear auth error if the caller's connection wasn't configured for it.

send_broadcast

ChatGPT
Send a broadcast SMS order to stored lists, contacts and/or groups. Maps to POST {domain_url}/cgpapi/broadcast/sms. endpoints is a list of {"type": <1|2|3>, "id": <int>} references to objects already stored in the Soprano account: type 1 = contact, 2 = group, 3 = list. Raw phone numbers or other ad-hoc recipient lists are not accepted.

send_message

ChatGPT
Send a single real-time message to ONE recipient via the Soprano Connect API. Maps to POST {domain_url}/cgpapi/messages/{channel}. Returns the created message summary (id, destination, status). destination must be exactly one recipient (an MSISDN or email address); comma/semicolon/whitespace separated lists are rejected - send one message per recipient. For multiple recipients use send_broadcast against stored lists/contacts/ groups. Either text, template_name, or one of the channel-specific rich content objects below must be provided. - rcs: RCS-only. Provide exactly one of text, media, rich_card ({"rich_card": {"cards": [{"title": ..., "media": {"file_url": ...}, "suggestions": [{"text": ..., "postback_data": ...}]}]}}). Overrides text/template_name when present. - whatsapp: {"type": "image"|"video"|"document"|"audio", "image": {"url": ..., "caption": ...}} for media; {"type": "text", "text": {"body": ...}}; {"type": "interactive", "interactive": {"type": "button"|"list", "body": {"text": ...}, "action": {...}}}; {"type": "template", "template": {"name": ..., "language": ...}}; {"type": "location"|"reaction"|"context", ...}. - voice: {"text2voice": {"password": ..., "language": "en-AU", ...}}, or {"call_control_object": {"id": ...}}, or {"audio": {"url": ...}}. - push_notification: {"notification": {"title": ..., "body": ...}}.

upload_whatsapp_media

ChatGPT
Upload media to Facebook for use in WhatsApp messages. Maps to POST {domain_url}/cgpapi/waba/media/{source} (multipart upload). source is the WhatsApp sender number the media is uploaded against. file_content_base64 is the file's raw bytes, base64-encoded. Uses the connection's normal auth method (no session cookie needed here - that's only required by list_whatsapp_templates).

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps