Skip to content
Elaichi Elaichi

marketing_automation

Novu

Connect Novu to Elaichi and hand every teammate a governed MCP endpoint — 121 tools ready to call from Claude, Cursor, or any MCP client, clamped by roles, restrictions, and an audit log.

Novu

AI tools

Novu tools for your AI agents

121 tools are ready to mint as an MCP endpoint the moment you connect Novu — governed by the same roles, restrictions, and audit log as everything else in Elaichi.

create_a_novu_delivery_provider_activity_event

Track activity and engagement events for a specific novu delivery provider by forwarding an inbound webhook payload. This endpoint accepts provider-generated event data (such as delivery status and engagement notifications) and forwards it to novu for processing. Required: environment_id, integration_id.

create_a_novu_channel_connection

Create a new novu channel connection for a resource and integration. Only one connection is allowed per resource and integration combination. Returns: identifier.

delete_a_novu_channel_connection_by_id

Delete a specific novu channel connection by its unique identifier. Returns an empty 204 response on success. Required: id.

list_all_novu_channel_connections

List all novu channel connections for a resource. Returns: identifier.

get_single_novu_channel_connection_by_id

Retrieve a specific novu channel connection by its unique identifier. Returns: identifier. Required: id.

update_a_novu_channel_connection_by_id

Update an existing novu channel connection by its unique identifier. Returns: identifier. Required: id.

create_a_novu_channel_endpoint

Create a new channel endpoint in Novu for a resource. Returns: identifier.

delete_a_novu_channel_endpoint_by_id

Delete a specific novu channel endpoint by id. Returns an empty 204 response on success. Required: id.

list_all_novu_channel_endpoints

List all novu channel endpoints for a resource. Returns: identifier.

get_single_novu_channel_endpoint_by_id

Retrieve a specific novu channel endpoint by id. Returns: identifier. Required: id.

update_a_novu_channel_endpoint_by_id

Update an existing novu channel endpoint by id. Returns: identifier. Required: id.

create_a_novu_context

Create a new novu context with the specified type, id, and optional data. Returns the created context including its type, id, and data. Required: type, id. Returns 409 if a context with the same type and id already exists.

delete_a_novu_context_by_id

Delete a novu context by id. Returns an empty 204 response on success. Required: id. Returns 404 if the context does not exist.

list_all_novu_contexts

List all novu contexts, optionally filtered by type, id, or key pattern. Returns: type, id, data for each matching context. Filters type, id, and search are all optional.

get_single_novu_context_by_id

Retrieve a specific novu context by id. Returns: type, id, data. Required: id. Returns 404 if the context does not exist.

update_a_novu_context_by_id

Update the data of an existing novu context. Only the data field is modified; all other context fields remain unchanged. Returns: type, id, data. Required: id, data. Returns 404 if the context does not exist.

create_a_novu_domain

Register a new inbound-email domain in novu. Returns: id, name, records, data — including the DNS records that must be added at the DNS provider before the domain can receive mail. Required: name.

delete_a_novu_domain_by_id

Delete a novu domain by id, cascading deletion to all associated routes. Inbound mail for the domain stops being processed immediately. Returns an empty 204 response on success. Required: id.

list_all_novu_domains

List inbound-email domains in novu for the current environment. Supports a name-contains filter. Returns: id, name, records, data for each domain.

get_single_novu_domain_by_id

Retrieve a novu domain by id. Returns the domain configuration and DNS records that must be in place, including id, name, records, and data. To refresh the verification status call verify instead. Required: id.

update_a_novu_domain_by_id

Update optional fields of a novu domain by id. Providing data replaces the entire metadata object; omit it to leave metadata unchanged. Returns: id, name, records, data. Required: id.

novu_domains_verify

Verify the DNS configuration of a novu domain by id, refreshing its verification status against live DNS. Returns: id, name, records, data. Required: id.

novu_domains_diagnose

Diagnose DNS configuration issues for a novu domain by id. Returns: id, name, records, data. Required: id.

novu_domains_get_auto_configure

Get the auto-configuration state for a novu domain by id. Returns: id, name, records, data. Required: id.

novu_domains_start_auto_configure

Start the auto-configuration process for a novu domain by id. Returns: id, name, records, data. Required: id.

create_a_novu_route

Create a route in novu that forwards inbound mail addressed to a specific email on a domain to either a webhook or an agent. Returns: id, address, domain. Required: domain, address. Each address on a domain may have only one route.

delete_a_novu_route_by_id

Delete a novu route for a specific address on a domain. Removes the route so inbound mail to that address is no longer processed. Returns an empty 204 response on success. Required: domain, id.

update_a_novu_route_by_id

Update the destination of a novu route for a specific address on a domain. The address identity cannot be changed; delete and recreate the route to rename it. Returns: id, address, domain. Required: domain, id.

list_all_novu_domain_routes

List all routes attached to a Novu domain. Returns: id, address, domain. Required: domain.

get_single_novu_domain_route_by_id

Retrieve a single Novu domain route by its address. Returns: id, address, domain. Use `*` as the id to fetch the wildcard route for the domain. Required: domain, id.

create_a_novu_inbound_route

Test a novu inbound route by sending a synthetic email through the same production delivery path (outbound webhook for webhook routes, signed HTTP for agent routes). Use dryRun to preview the payload without actually delivering. Returns delivery results that vary by route type and cannot be enumerated statically. Required: domain, address.

create_a_novu_environment

Create a new novu environment for the current organization. Returns: _id, name, identifier, color, apiKeys. Required: name.

delete_a_novu_environment_by_id

Delete a novu environment by id. This action is irreversible and removes the environment and all associated data. Returns an empty 204 response on success. Required: id.

list_all_novu_environments

List all novu environments for the current organization, including each environment's configuration, API keys (if accessible), and metadata. Returns: _id, name, identifier, color, apiKeys.

update_a_novu_environment_by_id

Update a novu environment by id. Modify the environment's name, identifier, color, and other configuration settings. Returns: _id, name, identifier, color, apiKeys. Required: id.

novu_environments_compare

Compare workflows and other resources between two novu environments, returning detailed diff information. Returns: additions, modifications, deletions. Required: id (targetEnvironmentId).

novu_environments_publish

Publish changes from a novu environment, promoting updates to the target environment. Returns an empty 204 response on success. Required: id.

list_all_novu_environment_tags

List all unique tags used in workflows within the current novu environment. These tags can be used for filtering workflows. Returns: name.

create_a_novu_environment_variable

Create a new environment variable in novu for the specified environment. Keys must be uppercase letters and underscores only (e.g. BASE_URL); secret variables are encrypted at rest and masked in responses. Returns: key, value, isSecret, _environmentId. Required: environment_id, key.

delete_a_novu_environment_variable_by_id

Delete a novu environment variable by key from the specified environment. Returns an empty 204 response on success. Required: environment_id, id.

get_single_novu_environment_variable_by_id

Get usage information for a novu environment variable, showing where the variable is referenced within the specified environment. Returns: key. Required: environment_id, id.

list_all_novu_environment_variables

List all environment variables for a novu environment. Secret values are masked in responses. Returns: key, value, isSecret, _environmentId. Required: environment_id.

update_a_novu_environment_variable_by_id

Update an existing novu environment variable. Per-environment values provided in `values` are merged by _environmentId; environments absent from the request keep their stored value. Submitting the masked secret placeholder as a value is rejected. Returns: key, value, isSecret, _environmentId. Required: environment_id, id.

create_a_novu_event

Trigger a notification workflow event in novu for one or more specified subscribers. Returns: data object containing acknowledged, status, and transactionId. Required: name, to.

novu_events_bulk_create

Bulk trigger multiple notification workflow events in novu in a single request, avoiding repeated API calls. Returns: data array of trigger results each with acknowledged, status, and transactionId. Required: events. Limited to 100 events per request.

delete_a_novu_event_by_id

Cancel a previously triggered novu workflow event by its transactionId, stopping any active or pending steps such as digests or delays. Returns an empty 204 response on success. Required: id.

novu_events_broadcast

Trigger a broadcast notification workflow event in novu to all existing subscribers at once, useful for announcements and global notifications. Returns: data object containing acknowledged, status, and transactionId. Required: name.

update_a_novu_integration_by_id

Update an existing Novu integration by id. Returns the updated integration object including _id, providerId, channel, credentials, active, and primary. Required: id.

create_a_novu_integration

Create a new Novu integration for the current environment. Returns the created integration object including _id, providerId, channel, credentials, active, and primary. Required: providerId, channel, credentials.

delete_a_novu_integration_by_id

Delete a Novu integration by id. This action is irreversible. Returns an empty 204 response on success. Required: id.

list_all_novu_integrations

List all Novu integrations for the organization. Returns an array of integration objects, each including _id, providerId, channel, credentials, active, and primary.

novu_integrations_list_active

List all active Novu integrations for the organization. Returns an array of active integration objects, each including _id, providerId, channel, credentials, active, and primary.

novu_integrations_set_primary

Set a Novu integration as the primary integration for its channel by id. Returns the updated integration object including _id, providerId, channel, active, and primary. Required: id.

novu_integrations_oauth_url

Generate an OAuth authorization URL for a Novu integration. Returns: url. Required: provider_id, environment_id.

create_a_novu_layout

Create a new layout in novu. Returns: _id, name, identifier, content, isDefault, createdAt, updatedAt. Required: name, content.

delete_a_novu_layout_by_id

Delete a novu layout by id. Returns an empty 204 response on success. Required: id.

get_single_novu_layout_by_id

Get a single novu layout by id. Returns: _id, name, identifier, content, isDefault, createdAt, updatedAt. Required: id.

list_all_novu_layouts

List all novu layouts with optional filtering. Returns: _id, name, identifier, content, isDefault, createdAt, updatedAt per layout.

update_a_novu_layout_by_id

Update an existing novu layout by id. Returns: _id, name, identifier, content, isDefault, updatedAt. Required: id.

novu_layouts_duplicate

Duplicate an existing novu layout by id, creating a new copy. Returns: _id, name, identifier, content, isDefault, createdAt. Required: id.

novu_layouts_generate_preview

Generate a rendered preview of a novu layout by id. Returns: content, subject. Required: id.

novu_layouts_get_usage

Retrieve workflow usage information for a novu layout by id, returning all workflows that reference the layout. Returns: workflows. Required: id.

delete_a_novu_message_by_id

Delete a novu message by id. This action is irreversible and cannot be undone. Returns an empty 204 response on success. Required: id.

list_all_novu_messages

List all messages for the current novu environment. Returns: _id, channel, transactionId, and _subscriberId per message. Supports optional filtering by channel, subscriberId, and transactionId.

novu_messages_bulk_delete

Delete all novu messages associated with a specific transaction by transaction_id. Returns an empty 204 response on success. Required: transaction_id.

list_all_novu_notifications

List all novu notification events for the current environment. Returns event records including _id, status, and transactionId. Supports optional filtering by channels, templates, emails, subscriberIds, transactionId, topicKey, severity, and contextKeys.

get_single_novu_notification_by_id

Retrieve a single novu notification event by its notificationId (MongoDB ObjectId). Returns event details including _id, status, and transactionId. Required: id.

novu_notifications_bulk_update

Archive all read in-app (inbox) notifications for a novu subscriber, with optional context-based filtering. Returns an empty 204 response on success. Required: subscriber_id.

delete_a_novu_notification_by_id

Permanently delete a specific novu in-app (inbox) notification by its notificationId. Returns an empty 204 response on success. Required: subscriber_id, id.

update_a_novu_notification_by_id

Mark a specific novu in-app (inbox) notification as read by its notificationId. Returns the updated notification including _id and read. Required: subscriber_id, id.

novu_notifications_mark_all_read

Mark all in-app (inbox) notifications as read for a novu subscriber. Returns an empty 204 response on success. Required: subscriber_id.

novu_notifications_mark_seen

Mark in-app (inbox) notifications as seen for a novu subscriber. Returns an empty 204 response on success. Required: subscriber_id.

get_single_novu_topic_subscriber_by_id

Check if a subscriber belongs to a specific novu topic. Returns the subscriber-topic membership details including externalSubscriberId and topicKey. Required: topic_key, id.

create_a_novu_topic

Create a new novu topic, or update an existing one if it already exists (upsert). Returns: key, name. Required: key, name. Pass failIfExists=true to return an error instead of updating an existing topic.

delete_a_novu_topic_by_id

Delete a novu topic by its unique key identifier (topicKey). This action is irreversible and removes all subscriptions to the topic. Returns an empty 204 response on success. Required: id.

list_all_novu_topics

List all novu topics. Returns: key, name. Results can be filtered by key or name using the corresponding query parameters.

get_single_novu_topic_by_id

Retrieve a single novu topic by its unique key identifier (topicKey). Returns: key, name. Required: id.

update_a_novu_topic_by_id

Update a novu topic's name by its unique key identifier (topicKey). Returns: key, name. Required: id, name.

create_a_novu_topic_subscription

Create subscriptions in novu for one or more subscribers to a topic. If the topic does not exist, it will be created automatically. Returns: subscriberId, topicKey, name, preferences. Required: topic_key, subscriberIds.

delete_a_novu_topic_subscription_by_id

Delete subscriptions in novu for one or more subscribers from a topic. Returns an empty 204 response on success. Required: topic_key.

list_all_novu_topic_subscriptions

List all subscriptions for a novu topic. Returns subscription records including subscriberId, topicKey, name, and preferences. Required: topic_key.

get_single_novu_topic_subscription_by_id

Retrieve a single novu topic subscription by its identifier. Returns: subscriberId, topicKey, name, preferences. Required: topic_key, id.

update_a_novu_topic_subscription_by_id

Update the name and preferences of a novu topic subscription by its identifier. Returns: subscriberId, topicKey, name, preferences. Required: topic_key, id.

update_a_novu_subscriber_notification_by_id

Mark a specific novu subscriber message as read by its unique message id. Returns the updated message object including _id, read, seen, channel, templateIdentifier, content, and createdAt. Required: subscriber_id, id.

novu_subscriber_notifications_bulk_update

Bulk mark novu subscriber messages with a specified read or seen status. Returns updated message objects including _id, read, seen, channel, templateIdentifier, content, and createdAt. Required: subscriber_id, status, messageId.

novu_subscriber_notifications_bulk_delete

Permanently delete novu subscriber messages, optionally filtered by feed. Returns an empty 204 response on success. Required: subscriber_id.

list_all_novu_subscriber_notifications

List in-app notifications from the feed of a novu subscriber. Returns notification objects including _id, read, seen, channel, templateIdentifier, content, and createdAt. Required: subscriber_id.

novu_subscriber_notifications_count

Retrieve the count of unseen in-app notifications for a novu subscriber. Returns: data. Required: subscriber_id.

novu_subscribers_bulk_create

Bulk create up to 500 novu subscribers in a single request. Existing subscribers with matching subscriberIds will be updated. Returns: updated, created, failed. Required: subscribers. Maximum 500 subscribers per request.

create_a_novu_subscriber

Create a new novu subscriber, or update an existing one if the subscriberId already exists. Returns: subscriberId, firstName, lastName, email, phone, avatar, locale, data, channels, isOnline, createdAt. Required: subscriberId.

delete_a_novu_subscriber_by_id

Delete a novu subscriber and all their associated messages, preferences, and topic subscriptions. Returns an empty 204 response on success. Required: id.

get_single_novu_subscriber_by_id

Retrieve a single novu subscriber by subscriberId. Returns: subscriberId, firstName, lastName, email, phone, avatar, locale, data, channels, isOnline, lastOnlineAt, createdAt, updatedAt. Required: id.

list_all_novu_subscribers

Search novu subscribers by email, phone, subscriberId, or name. Returns per item: subscriberId, firstName, lastName, email, phone, isOnline, createdAt, updatedAt. Search is case sensitive.

update_a_novu_subscriber_by_id

Update an existing novu subscriber's attributes by subscriberId. Returns: subscriberId, firstName, lastName, email, phone, avatar, locale, data, channels, isOnline, updatedAt. Required: id.

novu_subscribers_patch_online_status

Update the online presence status of a novu subscriber. Returns: subscriberId, isOnline, lastOnlineAt, firstName, lastName, email, updatedAt. Required: id, isOnline.

novu_subscriber_preferences_bulk_update

Bulk update channel preferences for a novu subscriber across multiple workflows in a single request. Returns: level, enabled, channels, workflow. Required: subscriber_id.

update_a_novu_subscriber_preference_by_id

Update channel preferences for a novu subscriber. Provide workflowId to update a specific workflow's preferences; omit it to update global preferences instead. Returns: level, enabled, channels, workflow. Required: subscriber_id.

list_all_novu_subscriber_preferences

Retrieve all channel preferences for a novu subscriber, including global preferences and per-workflow preferences across all five channels (email, sms, in_app, chat, push). Returns: level, enabled, channels, workflow. Required: subscriber_id.

delete_a_novu_subscriber_credential_by_id

Delete provider credentials for a novu subscriber by providerId. This action is irreversible and permanently removes all credentials stored for the specified provider (e.g. slack, fcm) on that subscriber. Returns an empty 204 response on success. Required: subscriber_id, id.

update_a_novu_subscriber_credential_by_id

Update or fully replace provider credentials for a novu subscriber, such as Slack webhooks or FCM device tokens. Creates deviceTokens or replaces existing ones. Returns the updated subscriber object including _id, subscriberId, channels, createdAt, and updatedAt. Required: subscriber_id, providerId.

novu_subscriber_credentials_partial_update

Partially update provider credentials for a novu subscriber without replacing the entire credential record. Only the fields supplied in the request body are modified. Returns the updated subscriber object including _id, subscriberId, channels, createdAt, and updatedAt. Required: subscriber_id, providerId.

list_all_novu_subscriber_subscriptions

List topic subscriptions for a novu subscriber, returning individual subscription records. Returns: topicKey, topicName, subscribed. Required: subscriber_id.

update_a_novu_subscriber_message_by_id

Mark all novu in-app (inbox) notifications for a given subscriber as read, unread, seen, or unseen. Returns an empty 204 response on success. Required:id, markAs.

update_a_novu_notification_action_by_id

Update the action status of an in-app (inbox) notification in novu for a specific subscriber and message. The action type id must be either 'primary' or 'secondary'. Returns: _id, status, channel. Required: subscriber_id, message_id, id, status.

create_a_novu_translation

Create (or update if it already exists) a Novu translation for a specific resource and locale. Returns: resourceType, resourceId, locale, translations. Required: resourceType, resourceId, locale, translations.

delete_a_novu_translation_by_id

Delete a specific Novu translation by resource type, resource ID, and locale. Returns an empty 204 response on success. Required: resource_type, resource_id, id (locale).

get_single_novu_translation_by_id

Retrieve a specific Novu translation by resource type, resource ID, and locale. Returns: resourceType, resourceId, locale, translations. Required: resource_type, resource_id, id (locale).

novu_translations_import_master

Import master translation JSON into Novu to define the reference locale's key-value translation pairs. Returns: translations. Required: translations.

novu_translations_get_master

Retrieve the Novu master translation JSON that defines the reference locale's key-value pairs used as the translation source. Returns: translations.

novu_translations_upload_master

Upload a master translation JSON file to Novu via multipart form to set the reference locale translations. Returns an empty 204 response on success. Required: file.

novu_translations_upload

Upload a translation file to Novu via multipart form to bulk-import locale translations. Returns an empty 204 response on success. Required: file.

delete_a_novu_translation_group_by_id

Delete a novu translation group and all its associated translations by id. Returns an empty 204 response on success. Required: id.

get_single_novu_translation_group_by_id

Retrieve a single novu translation group by id. Returns: id, resourceType, resourceId. The resourceType indicates the associated novu resource kind (workflow or layout) and resourceId is the corresponding resource identifier. Required: id.

create_a_novu_workflow

Create a new workflow in the Novu Cloud environment. Returns the created workflow object including workflowId, name, active, status, steps, createdAt, and updatedAt. Required: name.

delete_a_novu_workflow_by_id

Delete a Novu workflow by id. Returns an empty 204 response on success. Required: id.

list_all_novu_workflows

List all workflows in the Novu Cloud environment with optional filtering. Returns an array of workflow objects each including workflowId, name, active, status, steps, createdAt, and updatedAt.

get_single_novu_workflow_by_id

Retrieve a specific Novu workflow by id. Returns the full workflow object including workflowId, name, description, active, status, origin, steps, preferences, createdAt, and updatedAt. Required: id.

update_a_novu_workflow_by_id

Update an existing Novu workflow by id. Returns the updated workflow object including workflowId, name, active, status, steps, createdAt, and updatedAt. Required: id.

novu_workflows_sync

Synchronize a Novu workflow to a target environment by id. Returns the synced workflow object including workflowId, name, active, status, origin, and updatedAt. Required: id, targetEnvironmentId.

create_a_novu_workflow_step

Generate a preview for a specific step in a novu workflow. Returns: result (the rendered step preview output). Required: workflow_id, step_id.

get_single_novu_workflow_step_by_id

Retrieve data for a specific step in a novu workflow by step id. Returns: id, attributes (step-type-specific configuration). Required: workflow_id, id.

How it works

From Novu account to governed MCP endpoint

Connect

Link a Novu account through Elaichi's hosted connect flow. Credentials are vaulted — nobody, including the AI, ever sees them.

Compose

The connection becomes a toolbox instantly. Curate which Novu tools are exposed, rename them, or freeze arguments.

Mint

Mint a personal MCP endpoint on that toolbox and paste it into Claude, Cursor, or any MCP client — governed by roles, restrictions, and audit logs.

Give every teammate a governed MCP server

Start a 14-day Gold trial — connect a product, curate a toolbox, and paste an endpoint into Claude or Cursor in minutes.