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.
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.