Integration

eSputnik integration

eSputnik (Yespo) is an omnichannel customer data and messaging platform. Create, update, search and delete contacts and their subscriptions, manage static segments and the unsubscribed list, import contacts in bulk or from a file, send email, SMS and Viber messages or a stored message to contacts, schedule broadcasts, manage stored Email, SMS, Viber, Mobile Push, App Inbox and Telegram messages with their language versions, send events and orders that start workflows and feed segmentation, and read balance, message history, contact activity and recommendations. Not exposed: the deprecated v1 event routes and bulk web push domain route, the bearer token route, the plain-text site script, two reads whose response the vendor does not document (promo code count, preprocessor file status), and the promo code list, which eSputnik answers as one undocumented JSON string. Authentication is HTTP Basic: any username and an API key (Settings, API, New key) as the password; the key's access rights decide which tools answer (403 otherwise).

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in eSputnik.Built from the 108 eSputnik tools below, on the connection you add once.

What you can do with eSputnik

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Email, 10 operations

  • create_email_messageCreate email messagePOSTCreates a base email message (not sent); template=true creates it as a template. Returns its id.
  • delete_email_messageDelete email messageDELETEDeletes a base email message.
  • delete_email_translationDelete email translationDELETEDeletes one language version (translation) of an email message.
  • get_contact_emailsGet contact emailsGETReturns the email addresses of contacts by their contact ids.
  • get_email_messageGet email messageGETReturns one email message: sender, subject, HTML and CSS separately, and language versions. Rate limit: 10 per second and 500 per hour.
  • list_email_messagesList email messagesGETSearches email messages by part of the name or a tag (at most 500 per call). Rate limit: 500 requests per hour, shared by the message-reading tools.
  • list_email_sendersList email sendersGETLists the email sender names and addresses (interfaces) configured in the account; use one as from when sending.
  • send_emailSend emailPOSTSends an email now to the listed addresses (creates unknown contacts). Prefer send_prepared_message for stored templates. Limit: 100 single emails per hour by default.
  • update_email_messageUpdate email messagePUTUpdates a base email message. name, from, subject and htmlText are required: read them with get_email_message and send them back with the change.
  • upsert_email_translationUpsert email translationPUTAdds or updates one language version of an email message (name, from, subject and htmlText required).

Sms, 9 operations

  • create_sms_messageCreate sms messagePOSTCreates a base SMS message (not sent). Returns its id.
  • delete_sms_messageDelete sms messageDELETEDeletes a base SMS message.
  • delete_sms_translationDelete sms translationDELETEDeletes one language version of an SMS message.
  • get_sms_messageGet sms messageGETReturns one SMS message (sender, text, language versions). Rate limit: 500 requests per hour, shared by the message-reading tools.
  • list_sms_messagesList sms messagesGETSearches SMS messages by part of the name or a tag (at most 500 per call). Rate limit: 500 requests per hour, shared by the message-reading tools.
  • list_sms_sendersList sms sendersGETLists the SMS sender alpha names (interfaces) configured in the account.
  • send_smsSend smsPOSTSends an SMS now to the listed phone numbers or to a segment (creates unknown contacts). Returns one result per recipient with a requestId for get_message_status.
  • update_sms_messageUpdate sms messagePUTUpdates a base SMS message. name, from and text are required: read them with get_sms_message and send them back with the change.
  • update_sms_translationUpdate sms translationPUTUpdates one language version of an SMS message (name, from and text required).

Contact, 8 operations

  • bulk_upsert_contactsBulk upsert contactsPOSTAdds or updates up to 3000 contacts in one asynchronous job. Returns asyncSessionId: check progress with get_contact_import_status.
  • delete_contactDelete contactDELETEDeletes a contact by its contact id. erase=true erases it permanently (limited to 13 calls per hour); otherwise it can be restored.
  • delete_contact_by_external_idDelete contact by external idDELETEDeletes a contact identified by externalCustomerId. erase=true erases it permanently (limited to 13 calls per hour); otherwise it can be restored.
  • get_contactGet contactGETReturns one contact by contact id: name, channels (email, sms, push...), address, additional fields, segments, language and time zone. No subscription status field is returned.
  • list_segment_contactsList segment contactsGETLists the contacts of a segment (at most 500 per call). For the latest additions set orderByTs=true and asc=false.
  • search_contactsSearch contactsGETSearches contacts by externalCustomerId, email, phone (sms), first or last name. Returns at most 500 per call (startindex, maxrows). Rate limit: 50 requests per second.
  • update_contactUpdate contactPUTUpdates a contact's data (not its id or segments; use add_contacts_to_segment for those). Updating a deleted contact restores it.
  • upsert_contactUpsert contactPOSTCreates a contact, or updates the matching one, in real time. Fields left out keep their saved value. Identical requests within one minute are refused as duplicates (409).

Viber, 8 operations

  • create_viber_messageCreate viber messagePOSTCreates a base Viber message (not sent), optionally with an SMS fallback or a carousel. Returns its id.
  • delete_viber_messageDelete viber messageDELETEDeletes a base Viber message.
  • delete_viber_translationDelete viber translationDELETEDeletes one language version of a Viber message.
  • get_viber_messageGet viber messageGETReturns one Viber message with its language versions. Rate limit: 500 requests per hour, shared by the message-reading tools.
  • list_viber_messagesList viber messagesGETSearches Viber messages by part of the name or a tag (at most 500 per call). Rate limit: 500 requests per hour, shared by the message-reading tools.
  • send_viberSend viberPOSTSends a Viber message now to the listed phone numbers or to a segment (creates unknown contacts). Supports a carousel of 2 to 5 items.
  • update_viber_messageUpdate viber messagePUTUpdates a base Viber message. name, from and text are required: read them with get_viber_message and send them back with the change.
  • update_viber_translationUpdate viber translationPUTUpdates one language version of a Viber message (name, from and text required).

Appinbox, 7 operations

  • create_app_inbox_messageCreate app inbox messagePOSTCreates a base App Inbox message (not sent). Returns its id.
  • delete_app_inbox_messageDelete app inbox messageDELETEDeletes a base App Inbox message.
  • delete_app_inbox_translationDelete app inbox translationDELETEDeletes one language version of an App Inbox message.
  • get_app_inbox_messageGet app inbox messageGETReturns one App Inbox message with its language versions. Rate limit: 500 requests per hour, shared by the message-reading tools.
  • list_app_inbox_messagesList app inbox messagesGETSearches App Inbox messages by part of the name or a tag (at most 500 per call). Rate limit: 500 requests per hour, shared by the message-reading tools.
  • update_app_inbox_messageUpdate app inbox messagePUTUpdates a base App Inbox message. name, title and text are required: read them with get_app_inbox_message and send them back with the change.
  • upsert_app_inbox_translationUpsert app inbox translationPUTAdds or updates one language version of an App Inbox message (name, title and text required).

Mobilepush, 7 operations

  • create_mobile_push_messageCreate mobile push messagePOSTCreates a base mobile push message (not sent). Returns its id.
  • delete_mobile_push_messageDelete mobile push messageDELETEDeletes a base mobile push message.
  • delete_mobile_push_translationDelete mobile push translationDELETEDeletes one language version of a mobile push message.
  • get_mobile_push_messageGet mobile push messageGETReturns one mobile push message with its language versions. Rate limit: 500 requests per hour, shared by the message-reading tools.
  • list_mobile_push_messagesList mobile push messagesGETSearches mobile push messages by part of the name or a tag (at most 500 per call). Rate limit: 500 requests per hour, shared by the message-reading tools.
  • update_mobile_push_messageUpdate mobile push messagePUTUpdates a base mobile push message. name, title and text are required: read them with get_mobile_push_message and send them back with the change.
  • upsert_mobile_push_translationUpsert mobile push translationPUTAdds or updates one language version of a mobile push message (name, title and text required).

Telegram, 7 operations

  • create_telegram_messageCreate telegram messagePOSTCreates a base Telegram bot message (not sent). Returns its id.
  • delete_telegram_messageDelete telegram messageDELETEDeletes a base Telegram bot message.
  • delete_telegram_translationDelete telegram translationDELETEDeletes one language version of a Telegram bot message.
  • get_telegram_messageGet telegram messageGETReturns one Telegram bot message with its language versions. Rate limit: 500 requests per hour, shared by the message-reading tools.
  • list_telegram_messagesList telegram messagesGETSearches Telegram bot messages by part of the name or a tag (at most 500 per call). Rate limit: 500 requests per hour, shared by the message-reading tools.
  • update_telegram_messageUpdate telegram messagePUTUpdates a base Telegram bot message. name is required: read the message with get_telegram_message and send the current values back with the change.
  • upsert_telegram_translationUpsert telegram translationPUTAdds or updates one language version of a Telegram bot message (name required).

Domain, 5 operations

  • add_domainAdd domainPOSTRegisters the organisation's domain for web tracking and widgets. Only one domain can be registered per organisation.
  • add_web_push_domainAdd web push domainPOSTRegisters one domain for web push notifications with its service worker name, path and scope.
  • delete_web_push_domainDelete web push domainDELETERemoves a domain from web push notifications.
  • get_domainGet domainGETReturns the organisation's web tracking domain; empty when none is registered.
  • list_web_push_domainsList web push domainsGETLists the domains registered for web push notifications.

Broadcast, 4 operations

  • cancel_broadcastCancel broadcastDELETECancels a scheduled broadcast that has not started yet.
  • create_broadcastCreate broadcastPOSTCreates (schedules) a broadcast of an existing message to segments on Email, SMS, Mobile Push, Web Push, Viber or Telegram. It sends at startDate; cancel it with cancel_broadcast before then.
  • get_broadcastGet broadcastGETReturns one broadcast: title, message, segment, start date and sending speed.
  • list_broadcastsList broadcastsGETLists the account's broadcasts (paginated with startindex and maxrows).

Past event, 3 operations

  • delete_eventsDelete eventsDELETEDeletes the events that occurred between from and to. Rate limit: 5 requests per second.
  • import_past_eventsImport past eventsPOSTImports up to 500 past events for segmentation; no workflow starts. Events up to 366 days old; the event type must exist with segmentation enabled.
  • import_past_events_v2Import past events v2POSTImports up to 500 past events (no workflow starts); v2 shape: params as name/value pairs. Prefer import_past_events (flat params). Events up to 366 days old.

Subscription, 3 operations

  • get_contact_subscriptionsGet contact subscriptionsGETReturns the subscription categories a contact is subscribed to.
  • list_subscription_categoriesList subscription categoriesGETLists the organisation's subscription categories (keys used by update_contact_subscriptions and message subscriptionsKeys).
  • update_contact_subscriptionsUpdate contact subscriptionsPUTReplaces the subscription categories of a contact with the list sent (keys from list_subscription_categories).

Activated, 2 operations

  • get_mobile_token_statusGet mobile token statusGETReturns whether a mobile push token is active.
  • set_mobile_token_statusSet mobile token statusPUTActivates or deactivates a mobile push token.

Config, 2 operations

  • configure_product_feedsConfigure product feedsPOSTSets the product feeds (URL, language, default flag) the account reads products from.
  • get_product_feeds_configGet product feeds configGETReturns the product feed configuration: each feed's URL, language and whether it is the default.

Event, 2 operations

  • generate_eventGenerate eventPOSTSends an event that can start workflows and feed segmentation, with params as one flat object (contact identifiers plus event fields). Max 20 KB. Rate limit: 350 per second.
  • generate_event_v2Generate event v2POSTSends an event that can start workflows and feed segmentation; v2 shape: params is a list of name/value pairs. Prefer generate_event (flat params). Max 20 KB.

Order, 2 operations

  • add_ordersAdd ordersPOSTTransfers orders to eSputnik for segmentation and workflows. Re-sending an externalOrderId updates that order. Orders cannot be read back through the API.
  • delete_ordersDelete ordersDELETESchedules an asynchronous deletion of orders: by externalOrderId (one order), or every order whose date falls between from and to.

Status, 2 operations

  • get_message_statusGet message statusGETReturns the delivery status of single messages by the requestId values returned when they were sent (comma-separated ids).
  • update_interaction_statusUpdate interaction statusPUTReports a message status (delivered, read, clicked...) for the interaction id that eSputnik sent along with the message (es_interaction_id in a mobile push payload).

Upload, 2 operations

  • import_contacts_from_fileImport contacts from filePOSTImports or updates contacts from a file at a public URL (link), asynchronously. Returns asyncSessionId: check progress with get_contact_import_status.
  • upload_preprocessor_fileUpload preprocessor filePOSTUploads a preprocessor data file (JSON) from a public URL, used to personalise messages. Returns the fileId to pass to update_preprocessor_file.

Activity, 1 operation

  • list_contacts_activityList contacts activityGETReturns message activity records (DELIVERED, UNDELIVERED, READ, CLICKED, UNSUBSCRIBED, SUBSCRIPTION_CHANGED, SPAM) between dateFrom and dateTo. Enabled on request by eSputnik support; kept 90 days.

Add, 1 operation

  • add_unsubscribed_emailsAdd unsubscribed emailsPOSTAdds email addresses to the unsubscribed list: those contacts stop receiving email.

Additionalfield, 1 operation

  • list_additional_fieldsList additional fieldsGETLists the contact additional (custom) fields grouped into lists, with field ids, keys, types, allowed values and validation rules. Use the ids in a contact's fields.

Addressbook, 1 operation

  • list_address_booksList address booksGETLists the catalogs (address books): each holds the additional fields available for contacts in the organisation.

Attach, 1 operation

  • add_contacts_to_segmentAdd contacts to segmentPOSTAdds contacts to a static segment, by contact ids or external customer ids.

Balance, 1 operation

  • get_balanceGet balanceGETReturns the account balance (currency, current balance, credit and bonus amounts).

Contact id, 1 operation

  • get_contact_id_by_tokenGet contact id by tokenGETReturns the id of the contact that owns a mobile push token.

Delete, 1 operation

  • remove_unsubscribed_emailsRemove unsubscribed emailsPOSTRemoves email addresses from the unsubscribed list, so those contacts can receive email again.

Detach, 1 operation

  • remove_contacts_from_segmentRemove contacts from segmentPOSTRemoves contacts from a static segment by contact ids or external customer ids. Sending neither list removes EVERY contact from the segment.

File, 1 operation

  • update_preprocessor_fileUpdate preprocessor filePOSTReplaces the data of a preprocessor file from a new public URL; id is the fileId returned by upload_preprocessor_file.

Group, 1 operation

  • list_segmentsList segmentsGETLists segments (id, name, type), optionally filtered by name.

History, 1 operation

  • list_balance_historyList balance historyGETReturns the account billing history between dateFrom and dateTo (default: from the beginning of today until now).

Importstatus, 1 operation

  • get_contact_import_statusGet contact import statusGETReturns the status of a contact import started by bulk_upsert_contacts or import_contacts_from_file (pass its asyncSessionId).

Info, 1 operation

  • get_account_infoGet account infoGETReturns the eSputnik account (organisation) name.

Message, 1 operation

  • list_contact_message_historyList contact message historyGETReturns one contact's message history (Email, SMS, Viber, Mobile Push, Web Push, App Inbox, Telegram) between dateFrom and dateTo; dateFrom at most one year back. Rate limit: 10 per second.

Mute, 1 operation

  • mute_app_tokenMute app tokenPOSTMutes notifications to the Telegram user holding a token, for duration seconds, or permanently when duration is left out.

Promocode, 1 operation

  • upload_promo_codesUpload promo codesPOSTUploads promo codes as a JSON list with their discount and expiration date. Existing codes are updated.

Recom, 1 operation

  • get_contact_recommendationsGet contact recommendationsGETReturns product recommendations for one contact from web tracking, using a recommendation data source id.

Script, 1 operation

  • get_web_push_scriptGet web push scriptGETReturns the web push script to install on a registered domain.

Smartsend, 1 operation

  • send_prepared_messageSend prepared messagePOSTSends a stored message (by its message id) now to one or many contacts, with per-contact substitution values. Results: one per recipient, with a requestId for get_message_status.

Subscribe, 1 operation

  • subscribe_contactSubscribe contactPOSTSubscribes a contact from a subscription form: creates it with an unconfirmed email if new, else updates its fields (existing channels are kept). Can add it to segments and subscription categories.

Token, 1 operation

  • add_app_tokensAdd app tokensPOSTAdds Telegram application tokens (up to 3000 per call), each linked to a contact by contactId, externalCustomerId, phone or email.

Unmute, 1 operation

  • unmute_app_tokenUnmute app tokenPOSTUnmutes notifications to the Telegram user holding a token.

View link, 1 operation

  • get_email_message_view_linkGet email message view linkGETReturns a link to view an email message in a browser. Rate limit: 500 requests per hour, shared by the message-reading tools.

Workflow, 1 operation

  • list_workflowsList workflowsGETLists workflows (automations), optionally filtered by name.

Use eSputnik from Claude Code, Cursor or Codex

Connect eSputnik in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its eSputnik operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect eSputnik

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect eSputnik once

    Add your eSputnik connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

eSputnik integration FAQ

What can you do with the eSputnik integration?

LiveContext exposes 108 operations on eSputnik, covering email, sms, contact and viber.

Popular integrations

Browse the whole catalog