Skip to content

Notti has a built-in MCP server. Once an assistant is connected, you can ask it things like "how did last week's campaigns perform?" or "send the Black Friday template to the iOS segment", and it works on your Notti data through a fixed set of tools.

Connect ​

  1. In your assistant, add a custom connector (or MCP server) and use this URL:

    text
    https://<your-notti-host>/mcp

    Use the same public address you open the dashboard on. Settings → Connected apps shows this URL with a copy button. On a self-hosted instance the address must be https; http only works on localhost.

  2. The assistant opens a Notti sign-in page. Sign in as you normally do.

  3. Choose the Company to connect and the permissions to grant, then approve. You are sent back to the assistant.

A connection belongs to one Company. To use the assistant with another Company, connect again and choose the other one.

Sign-in uses OAuth 2.1 with PKCE. The assistant never sees your password.

What the assistant can reach ​

The assistant acts as you: it reaches the Apps you can reach in the dashboard. An owner reaches every App of the Company; a member only the Apps they were granted. An App outside that is answered as app_not_found, the same as one that does not exist. If you leave the Company or lose access to an App, the assistant loses it too.

Permissions ​

You choose them on the consent screen. Read is always granted.

PermissionScopeWhat it allows
Read your datanotti:readSee Apps, labels, templates, segments, notifications, the App overview and usage.
Edit templates and segmentsnotti:writeCreate and change templates and segments. It cannot send anything by itself.
Send notificationsnotti:sendPrepare sends to your users, then confirm or cancel them.

Tools ​

ToolScopeWhat it does
list_appsreadLists the Apps the connection reaches.
list_labelsreadLists an App's labels.
get_usagereadShows monthly active devices against the plan limit, and today's MCP calls.
get_app_overviewreadDelivery and engagement numbers for a date range.
list_notifications, get_notificationreadNotification history, filterable by status, source, label and text, and one notification's content (including its custom data payload) and delivery summary.
list_templates, get_templatereadTemplates, with 30-day stats for those that were sent.
list_segments, get_segment, preview_segmentreadSegments and how many devices a rule set reaches. Values of rules on external user ID, email, phone and tags are shown as [hidden].
create_template, update_templatewriteCreate or change a template.
create_segment, update_segmentwriteCreate or change a segment.
prepare_sendsendShows exactly what would go out and to how many devices, without sending.
confirm_sendsendSends what prepare_send showed.
cancel_scheduled_sendsendCancels a scheduled send.

Sending is always two steps ​

prepare_send never sends. It returns a preview and a confirmation_token. Only confirm_send with that token creates the notification, and confirming the same token twice sends once. Review the preview before the assistant confirms. If the template of a send is edited or deleted between the two steps, confirm_send refuses it (content_changed) and the assistant has to prepare it again, so what goes out is what you saw. A template is rendered when the push goes out, so a scheduled send uses the template as it is at that time.

Notifications sent this way show MCP as their source in the push list and in the notification detail, and are recorded in the Company's audit log as made through the MCP.

Limits ​

  • Daily quota. Each plan allows a number of MCP tool calls per Company per UTC day (250 on Free, 500 on Start, 1,000 on Pro and 4,000 on Business). The Usage screen of an App shows today's calls, the plan's limit and when the counter resets. Past the limit, tool calls are refused until the reset. Self-hosted instances have no daily quota.
  • Rate. At most 60 tool calls per minute per connection.

Manage and revoke connections ​

Open Settings → Connected apps in the dashboard to see the assistants you connected, which Company and permissions each has and when it was last used. Revoking one ends it immediately.

For Company owners ​

Owners of a Company control MCP for everyone in it. Open Company settings → MCP and AI assistants (only owners see it):

  • Turn MCP off or on. MCP is on by default for every Company. While it is off, no member can approve a new connection, and every assistant already connected to the Company gets 401 until it is turned back on. Turning it off asks for confirmation first.
  • Turning it off suspends, it does not revoke. The connections stay stored, and when you turn MCP back on the ones that were not revoked can work again. Whether an assistant resumes by itself depends on the assistant: while MCP is off, a token refresh is refused with invalid_grant, and some clients treat that as a lost connection and discard their credentials. Then the member has to approve it again. Access tokens last one hour, so a short pause is the case most likely to resume without anyone doing anything.
  • See and revoke everyone's connections. The table lists every connection to the Company with who connected it, the assistant, the permissions and when it was last used. Revoking one ends it immediately and permanently: that member has to approve it again to reconnect, even if you turn MCP off and on.

Turning MCP off or on and revoking a member's connection are recorded in the audit log with the owner as the actor. The setting works the same on SaaS and self-hosted instances.

Data handling ​

  • Tool results are aggregated or descriptive. They do not include push tokens, device IDs, external user IDs or device attribute values. Segment rules are returned with the values of conditions on external user ID, email, phone and tags replaced by [hidden], and an assistant cannot save rules that contain that placeholder. Segment previews return counts only. Free rules on those fields cannot be previewed: save them as a segment and preview it by its ID, where a count under 5 is withheld and the split by platform and by group is left out, so a rule cannot be used to check whether one person is in an App. This is a barrier against casual reads, not against an assistant that is allowed to create segments and compares their counts. The audience size that prepare_send shows before a send is always the real one, because you confirm against it. The custom data payload of a notification is the exception: it is returned as you sent it, so keep personal data out of it if you do not want an assistant to read it.
  • What a tool returns, and what you write in templates and sends, is processed by the assistant provider you chose to connect. Before enabling this for a Company, check that provider's terms and your own data-protection obligations (for example LGPD) with your legal team.
  • Connect only assistants and clients you trust. Anyone using a connection can do what its permissions allow, as you.

Troubleshooting ​

SymptomLikely cause
The assistant cannot add the serverThe instance address is not https (or localhost), or /mcp is not reachable from the assistant.
The consent page says the request expiredIt was already answered, took too long or belongs to another account. Start the connection again from the assistant.
app_not_foundThe App does not exist, or this user cannot reach it.
subscription_inactiveThe Company's subscription is not active.
A tool is refused for lack of permissionThe connection was made without that scope. Connect again and grant it.
The assistant gets 401 after it worked, or the consent page lists a Company as unavailableAn owner turned MCP off for that Company. Ask an owner to turn it on in Company settings.