Connectors · Email & messaging
Novu MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Novu and the rest of your systems. It gives your agent 146 Novu actions (50 reads, 73 writes and 23 that wait for a confirmation) and holds the Novu credential itself, so the agent never does. It paces Novu's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "novu.subscribers.list", intent: "check which Novu account is connected"}# Search subscribers · read · 1 upstream call- 146actionsin one signed file
- 50readlook, never change
- 73writecreate and update
- 23wait for a yesdestructive, confirmed first
Set up
Connect Novu in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Novu.
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
api_keyNovu secret key (Novu dashboard > Developer > API Keys > Secret Key) for the environment you want to act onhostWhere your Novu lives: your host
account { op: "connections.requirements", service: "novu" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "novu.subscribers.list" }# search subscribers · read · 1 upstream callcheck { action: "novu.events.trigger", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Novu at a glance
- Sign-in
- API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
api_key- Setup fields
host- Limits we pace to
- 20 calls a second, per connection
- API covered
- Novu API (OpenAPI 3.0.0, 3.19.2), at your Novu instance's API base URL, which you enter when connecting
- Built from
- Novu's documentation, read 23 October 2026api.novu.codocs.novu.co
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 35 of 50 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 2, so ask can line Novu up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Novu.
146 actions in 27 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 50readlook, never change
- 73writecreate and update
- 23destructivewait for a confirmation
Subscriber notifications
184 read · 12 write · 2 destructive
Delete a notification · Retrieve subscriber notifications · Retrieve subscriber notifications · Archive a notification
Integrations
132 read · 10 write · 1 destructive
Create an integration · Issue a short-lived mobile setup link for an existing integration · Generate chat OAuth URL · Generate OAuth URL for a workspace/tenant connection
Domains
94 read · 4 write · 1 destructive
Create a domain · Diagnose inbound DNS for a domain · List domains for an environment · Retrieve a domain by name
Layouts
84 read · 3 write · 1 destructive
Create a layout · Duplicate a layout · List all layouts · Generate layout preview
Agents
72 read · 4 write · 1 destructive
Create an agent · List all agents · Send an agent reply · Retrieve an agent
Environments
73 read · 3 write · 1 destructive
List all environments · Create an environment · Update an environment · Delete an environment
Subscribers
72 read · 4 write · 1 destructive
Search subscribers · Retrieve a subscriber · Update a subscriber · Create a subscriber
Workflows
72 read · 4 write · 1 destructive
List all workflows · Create a workflow · Retrieve a workflow · Update a workflow
19 more areas · 70 actions
- Domain routes 6
- Environment variables 6
- Channel connections 5
- Channel endpoints 5
- Contexts 5
- Topic subscriptions 5
- Topics 5
- Translations 5
- Agent integrations 4
- Events 4
- Messages 3
- Subscriber credentials 3
- Subscriber messages 3
- Subscriber preferences 3
- Notifications 2
- Translation groups 2
- Workflow steps 2
- Subscriber topics 1
- Topic subscribers 1
Top actions
The Novu API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 22 of Novu's 23 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
novu.subscribers.listSearch subscribers | Search subscribers. | read | comm.audience_member.list23 connectors |
novu.subscribers.getRetrieve a subscriber | Retrieve a subscriber. | read | comm.audience_member.get17 connectors |
novu.topics.listList all topics | List all topics. | read | comm.subscription_topic.list4 connectors |
novu.notifications.listList all events | List all events. | read | comm.notification.list19 connectors |
novu.events.triggerTrigger event | Trigger event. | write | comm.notification.send16 connectors |
novu.workflows.listList all workflows | List all workflows. | read | automation.workflow.list51 connectors |
novu.workflows.createCreate a workflow | Create a workflow. | write | automation.workflow.create38 connectors |
novu.workflows.deleteDelete a workflow | Delete a workflow. | destructive | automation.workflow.delete40 connectors |
novu.environments.listList all environments | List all environments. | read | devops.environment.list24 connectors |
novu.environments.createCreate an environment | Create an environment. | write | devops.environment.create18 connectors |
novu.topics.getRetrieve a topic | Retrieve a topic. | read | comm.subscription_topic.get2 connectors |
novu.agents.listList all agents | List all agents. | read | this connector |
Try it
Prompts to paste into Claude.
Each one names the Novu actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Search subscribers in Novu and tell me what stands out.
calls
novu.subscribers.list - Writewrite
Trigger event in Novu. Show me exactly what you will send before you save it.
calls
novu.events.trigger
Governance for Novu
Destructive actions wait for a yes.
23 Novu actions are destructive. These are all of them:
- Delete a workflow
novu.workflows.delete - Delete a notification
novu.subscriber_notifications.delete - Delete a topic
novu.topics.delete - Delete an environment
novu.environments.delete - Delete an agent
novu.agents.delete - Delete a domain
novu.domains.delete - Delete a layout
novu.layouts.delete - Delete a context
novu.contexts.delete - Delete a message
novu.messages.delete - Delete a subscriber
novu.subscribers.delete - Delete an integration
novu.integrations.delete - Delete a route
novu.domain_routes.delete - Delete a channel endpoint
novu.channel_endpoints.delete - Delete an agent integration
novu.agent_integrations.delete - Delete a translation group
novu.translation_groups.delete - Delete a channel connection
novu.channel_connections.delete - Delete topic subscriptions
novu.topic_subscriptions.delete - Delete environment variable
novu.environment_variables.delete - Delete provider credentials
novu.subscriber_credentials.delete - Delete messages by transactionId
novu.messages.delete_by_transaction - Delete all notifications
novu.subscriber_notifications.delete_all - Delete a translation
novu.translations.delete - Cancel triggered event
novu.events.cancel
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete a workflow?
intent: the user asked me to delete a workflow
account { op: "keys.create", name: "novu-agent", allowed_actions: ["novu.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "novu.workflows.delete", approver: "[email protected]" }, { match: "novu.subscriber_notifications.delete", approver: "[email protected]" }, { match: "novu.topics.delete", approver: "[email protected]" } ]}Cost
What Novu costs on actionlake.
Every Novu action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Novu refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 146 Novu actions
- 146actions pageeach page of a long list is one call
- 35reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Novu action.
146 actions by area: the id your agent calls, what it does, and its effect.
Subscriber notifications18
novu.subscriber_notifications.archiveArchive a notificationwritenovu.subscriber_notifications.archive_allArchive all notificationswritenovu.subscriber_notifications.archive_all_readArchive all read notificationswritenovu.subscriber_notifications.complete_actionComplete a notification actionwritenovu.subscriber_notifications.countRetrieve subscriber notifications countreadnovu.subscriber_notifications.deleteDelete a notificationdestructivenovu.subscriber_notifications.delete_allDelete all notificationsdestructivenovu.subscriber_notifications.feedRetrieve subscriber notificationsreadnovu.subscriber_notifications.listRetrieve subscriber notificationsreadnovu.subscriber_notifications.mark_all_readMark all notifications as readwritenovu.subscriber_notifications.mark_readMark a notification as readwritenovu.subscriber_notifications.mark_seenMark notifications as seenwritenovu.subscriber_notifications.mark_unreadMark a notification as unreadwritenovu.subscriber_notifications.revert_actionRevert a notification actionwritenovu.subscriber_notifications.snoozeSnooze a notificationwritenovu.subscriber_notifications.unarchiveUnarchive a notificationwritenovu.subscriber_notifications.unseen_countRetrieve unseen notifications countreadnovu.subscriber_notifications.unsnoozeUnsnooze a notificationwrite
Integrations13
novu.integrations.auto_configureAuto-configure an integration for inbound webhookswritenovu.integrations.configure_webhookConfigure a chat integration webhookwritenovu.integrations.createCreate an integrationwritenovu.integrations.create_mobile_linkIssue a short-lived mobile setup link for an existing integrationwritenovu.integrations.deleteDelete an integrationdestructivenovu.integrations.generate_chat_oauth_urlGenerate chat OAuth URLwritenovu.integrations.generate_connect_oauth_urlGenerate OAuth URL for a workspace/tenant connectionwritenovu.integrations.generate_link_user_oauth_urlGenerate OAuth URL to link a subscriber user identitywritenovu.integrations.link_channel_endpointIssue a URL to link a subscriber chat identitywritenovu.integrations.listList all integrationsreadnovu.integrations.list_activeList active integrationsreadnovu.integrations.set_primaryUpdate integration as primarywritenovu.integrations.updateUpdate an integrationwrite
Domains9
novu.domains.createCreate a domainwritenovu.domains.deleteDelete a domaindestructivenovu.domains.diagnoseDiagnose inbound DNS for a domainreadnovu.domains.getRetrieve a domain by namereadnovu.domains.get_auto_configureRetrieve auto-configuration availabilityreadnovu.domains.listList domains for an environmentreadnovu.domains.start_auto_configureStart DNS auto-configurationwritenovu.domains.updateUpdate a domainwritenovu.domains.verifyVerify a domainwrite
Layouts8
novu.layouts.createCreate a layoutwritenovu.layouts.deleteDelete a layoutdestructivenovu.layouts.duplicateDuplicate a layoutwritenovu.layouts.getRetrieve a layoutreadnovu.layouts.get_usageGet layout usagereadnovu.layouts.listList all layoutsreadnovu.layouts.previewGenerate layout previewreadnovu.layouts.updateUpdate a layoutwrite
Agents7
novu.agents.createCreate an agentwritenovu.agents.deleteDelete an agentdestructivenovu.agents.getRetrieve an agentreadnovu.agents.listList all agentsreadnovu.agents.send_replySend an agent replywritenovu.agents.updateUpdate an agentwritenovu.agents.update_bridgeUpdate an agent bridgewrite
Environments7
novu.environments.createCreate an environmentwritenovu.environments.deleteDelete an environmentdestructivenovu.environments.diffCompare resources between environmentsreadnovu.environments.listList all environmentsreadnovu.environments.list_tagsList environment tagsreadnovu.environments.publishPublish resources to target environmentwritenovu.environments.updateUpdate an environmentwrite
Subscribers7
novu.subscribers.createCreate a subscriberwritenovu.subscribers.create_bulkBulk create subscriberswritenovu.subscribers.deleteDelete a subscriberdestructivenovu.subscribers.getRetrieve a subscriberreadnovu.subscribers.listSearch subscribersreadnovu.subscribers.updateUpdate a subscriberwritenovu.subscribers.update_online_statusUpdate subscriber online statuswrite
Workflows7
novu.workflows.createCreate a workflowwritenovu.workflows.deleteDelete a workflowdestructivenovu.workflows.getRetrieve a workflowreadnovu.workflows.listList all workflowsreadnovu.workflows.patchUpdate a workflowwritenovu.workflows.syncSync a workflowwritenovu.workflows.updateUpdate a workflowwrite
Domain routes6
novu.domain_routes.createCreate a routewritenovu.domain_routes.deleteDelete a routedestructivenovu.domain_routes.getRetrieve a route by addressreadnovu.domain_routes.listList routes for a domainreadnovu.domain_routes.testTest an inbound routewritenovu.domain_routes.updateUpdate a routewrite
Environment variables6
novu.environment_variables.createCreate a variablewritenovu.environment_variables.deleteDelete environment variabledestructivenovu.environment_variables.getGet environment variablereadnovu.environment_variables.get_usageRetrieve a variable usagereadnovu.environment_variables.listList all variablesreadnovu.environment_variables.updateUpdate a variablewrite
Channel connections5
novu.channel_connections.createCreate a channel connectionwritenovu.channel_connections.deleteDelete a channel connectiondestructivenovu.channel_connections.getRetrieve a channel connectionreadnovu.channel_connections.listList all channel connectionsreadnovu.channel_connections.updateUpdate a channel connectionwrite
Channel endpoints5
novu.channel_endpoints.createCreate a channel endpointwritenovu.channel_endpoints.deleteDelete a channel endpointdestructivenovu.channel_endpoints.getRetrieve a channel endpointreadnovu.channel_endpoints.listList all channel endpointsreadnovu.channel_endpoints.updateUpdate a channel endpointwrite
Contexts5
novu.contexts.createCreate a contextwritenovu.contexts.deleteDelete a contextdestructivenovu.contexts.getRetrieve a contextreadnovu.contexts.listList all contextsreadnovu.contexts.updateUpdate a contextwrite
Topic subscriptions5
novu.topic_subscriptions.createCreate topic subscriptionswritenovu.topic_subscriptions.deleteDelete topic subscriptionsdestructivenovu.topic_subscriptions.getRetrieve a topic subscriptionreadnovu.topic_subscriptions.listList topic subscriptionsreadnovu.topic_subscriptions.updateUpdate a topic subscriptionwrite
Topics5
novu.topics.deleteDelete a topicdestructivenovu.topics.getRetrieve a topicreadnovu.topics.listList all topicsreadnovu.topics.updateUpdate a topicwritenovu.topics.upsertCreate a topicwrite
Translations5
novu.translations.createCreate a translationwritenovu.translations.deleteDelete a translationdestructivenovu.translations.getRetrieve a translationreadnovu.translations.get_master_jsonRetrieve master translations JSONreadnovu.translations.import_master_jsonImport master translations JSONwrite
Agent integrations4
novu.agent_integrations.createCreate an agent integrationwritenovu.agent_integrations.deleteDelete an agent integrationdestructivenovu.agent_integrations.listList agent integrationsreadnovu.agent_integrations.updateUpdate an agent integrationwrite
Events4
novu.events.cancelCancel triggered eventdestructivenovu.events.triggerTrigger eventwritenovu.events.trigger_broadcastBroadcast event to allwritenovu.events.trigger_bulkBulk trigger eventwrite
Messages3
novu.messages.deleteDelete a messagedestructivenovu.messages.delete_by_transactionDelete messages by transactionIddestructivenovu.messages.listList all messagesread
Subscriber credentials3
novu.subscriber_credentials.appendUpsert provider credentialswritenovu.subscriber_credentials.deleteDelete provider credentialsdestructivenovu.subscriber_credentials.updateUpdate provider credentialswrite
Subscriber messages3
novu.subscriber_messages.mark_allUpdate all notifications statewritenovu.subscriber_messages.mark_asUpdate notifications statewritenovu.subscriber_messages.update_actionUpdate notification action statuswrite
Subscriber preferences3
novu.subscriber_preferences.bulk_updateBulk update subscriber preferenceswritenovu.subscriber_preferences.listRetrieve subscriber preferencesreadnovu.subscriber_preferences.updateUpdate subscriber preferenceswrite
Notifications2
novu.notifications.getRetrieve an eventreadnovu.notifications.listList all eventsread
Translation groups2
novu.translation_groups.deleteDelete a translation groupdestructivenovu.translation_groups.getRetrieve a translation groupread
Workflow steps2
novu.workflow_steps.getRetrieve workflow stepreadnovu.workflow_steps.previewGenerate a step previewread
Subscriber topics1
novu.subscriber_topics.listRetrieve subscriber subscriptionsread
Topic subscribers1
novu.topic_subscribers.getCheck topic subscriberread
Questions
The Novu MCP server, answered.
Is there a Novu MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 146 Novu actions across subscriber notifications, integrations, domains and layouts, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Novu.
What do I need to connect Novu?
Novu secret key (Novu dashboard > Developer > API Keys > Secret Key) for the environment you want to act on. Plus your host. The free call account { op: "connections.requirements", service: "novu" } lists exactly what to paste.
Can an AI agent delete or change things in Novu?
Only if its key allows it, and only with an explicit confirmation. 23 Novu actions are destructive, including delete a workflow, delete a notification and delete a topic. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Novu API limit?
actionlake paces every call to the limits in the Novu service file: 20 calls a second per connection. Repeated reads are answered from cache (35 Novu actions can be), which never reaches Novu.
What does a Novu action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (146 Novu actions page). Cache hits, searches, dry runs and calls Novu refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Novu API does it cover?
The Novu API (OpenAPI 3.0.0, 3.19.2) at your Novu instance's API base URL, which you enter when connecting. It is built from Novu's documentation as read on 23 October 2026. 146 actions in 27 areas, each one in the signed service file (version 1.0.0).
Does actionlake keep my Novu data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Novu credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Novu today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.