> ## Documentation Index
> Fetch the complete documentation index at: https://notifizz.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Your AI Tool to Notifizz

> Plug Claude — desktop, web or CLI — into the Notifizz MCP server: what you need, the one-time browser consent, and what the first connection actually does.

# Connect your AI tool

Notifizz runs an **MCP server** — MCP being the *Model Context Protocol*, the open standard an AI assistant uses to call tools outside its own context. Connecting your assistant to it turns Notifizz into something your editor can operate: set up the data contract from your code, build a campaign, work its implementation tasks, test it — without leaving the IDE.

**This page is for the Dev.** Marketing and Product/Ops never do this step; they work in the dashboard. But the connection is per person, so every developer on the team does it once, for themselves.

## TL;DR

* **No API key.** The connection is a one-time browser consent: you sign in, pick the organisation, approve. Your assistant gets a token; you never copy a secret.
* **Two supported surfaces**, both hitting the same remote server: **Claude Desktop** (app & web, via a custom connector) and **Claude CLI** (Claude Code, in your terminal or IDE).
* **One credential per person, per organisation.** Two organisations means two consents. The organisation is baked into the token — never a tool argument — so an assistant can only ever reach the organisation you authorised.
* **The token renews itself.** Access lasts 7 days and is refreshed silently; you re-authorise only after 90 days of not using it at all, or if someone revokes it.
* **Notifizz marks you connected on the first real call**, not when you finish the setup wizard. Until your assistant actually talks to the server, the dashboard keeps waiting.
* **Then run the quickstart** — it inventories your events, enrichers and link routes and lays down the data contract.

## Before you start

| What                                                               | Why                                                                                                                                                                                                                      |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| A Notifizz account, member of the organisation you want to work on | The consent screen grants access to **one** organisation — the one you pick while signing in                                                                                                                             |
| Claude Desktop / Claude web, **or** Claude Code                    | The two surfaces Notifizz supports today. Both use the same remote server; only the wiring differs                                                                                                                       |
| A browser on the machine doing the setup                           | The consent screen is a web page — that is where you sign in and choose the organisation                                                                                                                                 |
| The server URL from your dashboard                                 | *Settings → AI tools* shows the URL for your organisation. The reference URL is `https://api.notifizz.com/v1/mcp`; organisations served from another region get their own hostname, so copy the one your dashboard shows |

<Note>
  You do **not** need a key, a token, a `.env` entry or a secret in a config file. If a setup guide asks you to paste a Notifizz secret into your AI tool, it is not describing this flow.
</Note>

## Connect Claude Desktop (app & web)

Claude's desktop and web apps connect through a **custom connector**.

1. In Claude: **Settings → Connectors → Add custom connector**.
2. Paste the Notifizz server URL from *Settings → AI tools*.
3. Approve the one-time consent that opens in your browser (see [what happens on the first connection](#what-happens-on-the-first-connection)).

Then ask Claude, in plain language, to set Notifizz up. The dashboard hands you an editable checklist message to paste — trim the lines that don't apply to your project:

```text theme={null}
Set up Notifizz on my project from my code. For each step, show me the plan before
implementing, and skip anything that doesn't fit my project (tell me why):
- Events & enrichers (the data contract — the foundation)
- Notification Center
```

<Note>
  **Why a sentence and not a slash command here.** A remote connector exposes a server's *tools* to the model, not its *prompts*. So in the app and on the web you ask in natural language, and the model calls the `quickstart` tool itself. In the CLI you get the slash command instead — same guided plan, different entry point.
</Note>

## Connect Claude CLI (Claude Code)

Three commands, run at the root of the project you want Notifizz to read:

```bash theme={null}
# 1. Register the server (writes it to the project config, shareable with the team)
claude mcp add --transport http notifizz https://api.notifizz.com/v1/mcp --scope project

# 2. Authenticate — opens the consent page in your browser
claude mcp login notifizz

# 3. Check it took
claude mcp list
```

`--scope project` records the **URL** in the project configuration, so the whole team inherits the wiring and each developer authenticates on their own side. Nothing secret is written to disk, and nothing secret is committed.

Then start the guided setup:

```text theme={null}
/mcp__notifizz__quickstart
```

And, when you want to bring your existing emails across:

```text theme={null}
/mcp__notifizz__email_templates_migration
```

## What happens on the first connection

You will see a browser tab open, a sign-in, an organisation picker and an approval button. Underneath, this is a standard OAuth 2.1 authorisation-code flow with PKCE, and it runs itself:

```mermaid theme={null}
sequenceDiagram
    participant Tool as Your AI tool
    participant Notifizz
    participant You as You (browser)

    Tool->>Notifizz: First call, no credential
    Notifizz-->>Tool: 401 + where to authenticate
    Tool->>Notifizz: Discover endpoints, register itself
    Tool->>You: Open the consent page
    You->>Notifizz: Sign in, pick the organisation, approve
    Notifizz-->>Tool: One-time code
    Tool->>Notifizz: Exchange the code
    Notifizz-->>Tool: Access token (7 days) + refresh token
```

Four properties of that flow are worth knowing, because they explain most of what you'll ever see go wrong:

* **The consent page names the client and the organisation** — *"… is requesting access to your Notifizz organisation …"*, with the requesting tool's name and your organisation's name filled in, and the redirect URI and client id available under **Technical details**. Read the organisation name before approving; a **Deny** button sits next to **Authorize**, and denying sends your tool a clean refusal rather than a hang.
* **The authorisation request expires after 10 minutes.** Leave the consent tab open over lunch and it becomes invalid — restart the connection from your AI tool to get a fresh one.
* **The code is single-use and bound to PKCE.** It works exactly once, only for the tool that asked for it. An intercepted code is worthless on its own.
* **Access tokens expire after 7 days** and your tool refreshes them silently in the background. Each refresh mints a brand-new pair and burns the old one, so a leaked refresh token is usable at most once. Ninety days without any use and the chain lapses — you simply consent again.

### Signed in, but no organisation?

If your account has no active organisation when you land on the consent page, you get an organisation picker before the approval step. Pick the one the assistant should work on. Approving grants access to **that** organisation only.

### Wrong organisation, or a second one

Access is granted per organisation. To work on another one, switch organisation and authorise again — the consent page carries an organisation switcher at the bottom for exactly this. Your tool then holds a credential per organisation you approved.

## How you know it worked

Open *Settings → AI tools*. The page shows a two-step progress line — **Connect**, then **Integration** — and it advances on its own, no refresh needed:

| Step            | Turns green when                                                                                                                                        |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connect**     | Notifizz has seen a **real MCP call** from your credential. Finishing the setup wizard is not enough — the assistant has to actually talk to the server |
| **Integration** | Your data contract holds at least one event, i.e. the quickstart has actually produced something                                                        |

That first-call rule is deliberate. "A credential exists" and "the developer's agent is working" are different facts, and only the second one is worth a green tick.

## What the assistant can do once connected

Everything the server exposes, grouped by intent, is in the [MCP tools reference](/docs/ai/mcp-tools). In one line: define the data contract from your code, configure the delivery channels, build a campaign with the AI copilot, work the [implementation tasks](/docs/concepts/orchestrator) the orchestrator raises, promote it to Review and test it.

Three things stay human, on purpose:

1. **Approving a proposed flow** — the assistant shows it, you approve it.
2. **Confirming an archive** — destructive, so it asks first and refuses to guess.
3. **Publishing Live** — there is deliberately **no MCP tool** for it. Going live happens in the dashboard, by a person.

## Disconnecting

Remove the Notifizz connector — the custom connector in Claude Desktop, the server entry in Claude Code — and your tool stops presenting the credential. Notifizz also implements standard token revocation, which is what a tool calls when it drops a connection: a revoked token is refused on the very next call, with no grace window. Reconnecting is the same one-time consent as the first time.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Claude says Unknown command when I type the slash prompt">
    You are in the app or on the web, where a remote connector exposes tools but not prompts. Ask in natural language instead — *"Run the Notifizz quickstart on this project"* — and the model calls the same guided plan. The slash form works in Claude Code.
  </Accordion>

  <Accordion title="Authorization request invalid">
    The request expired (10 minutes) or was already used. Start the connection again from your AI tool; each attempt mints a fresh request.
  </Accordion>

  <Accordion title="The dashboard still says Waiting for the connection">
    The step flips on the first real call, not at the end of the wizard. Ask your assistant to do something with Notifizz — running the quickstart is the natural candidate — and the page updates on its own within a few seconds.
  </Accordion>

  <Accordion title="A tool answered insufficient_scope">
    Your credential does not carry the permission that tool needs. Credentials issued through the browser consent carry all three; a deliberately narrowed one does not. The refusal names the missing scope — see [scopes and audit](/docs/ai/scopes-and-audit).
  </Accordion>

  <Accordion title="A setup tool asked me which environment to use">
    Your organisation has more than one non-production environment, and the tools refuse to guess between them — the convention is one personal dev environment per developer, so that each of you has your own keys and no cross-talk. Tell the assistant which one, and it re-calls with the name. See [environments](/docs/environments/overview).
  </Accordion>

  <Accordion title="Can I connect an editor that only speaks stdio?">
    The supported path is the remote server with browser consent — it is the only one that needs no secret on disk. A local stdio package exists for hosts that cannot speak HTTP, but it covers the setup half of the surface only (no campaign journey) and it authenticates with an organisation key rather than a consent. If your host is in that situation, talk to your Notifizz contact rather than improvising.
  </Accordion>

  <Accordion title="Is my code sent to Notifizz?">
    No. The assistant reads your codebase locally and sends Notifizz only what you confirm: event and enricher declarations, business vocabulary, link routes, campaign content. The tools are built around explicit gates for that reason — the quickstart stops and asks before persisting anything. Notifizz holds no end-customer data either; see [privacy friendly](/docs/concepts/privacy-friendly).
  </Accordion>
</AccordionGroup>

## See also

<CardGroup cols={2}>
  <Card title="MCP tools" icon="screwdriver-wrench" href="/docs/ai/mcp-tools">
    Every tool the server exposes, grouped by what you are trying to do.
  </Card>

  <Card title="Scopes & audit" icon="shield-halved" href="/docs/ai/scopes-and-audit">
    What a credential is allowed to do, and what gets recorded.
  </Card>

  <Card title="Orchestrator" icon="robot" href="/docs/concepts/orchestrator">
    Implementation tasks — the work your assistant executes in your codebase.
  </Card>

  <Card title="Backend quickstart" icon="rocket" href="/docs/quickstart/backend">
    Wiring the SDK the data contract describes.
  </Card>
</CardGroup>
