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

# Add SenderKit from your coding agent

> Install the SenderKit skills plugin so Claude Code, Codex, or Cursor can wire SenderKit into your app and operate it over MCP.

[SenderKit Skills](https://github.com/senderkit/senderkit-skills) is an open-source
plugin that teaches an AI coding agent how to work with SenderKit. Install it once and
your agent can add transactional email, SMS, push, and web-push to your codebase — and
send, inspect, and manage messages at runtime — without you spelling out the API every
time.

It's portable: the same plugin runs in [Claude Code](https://code.claude.com), OpenAI
[Codex](https://developers.openai.com/codex), [Cursor](https://cursor.com), and other
[Agent Skills](https://code.claude.com/docs/en/skills)-compatible assistants.

<Note>
  This is different from the two other AI integrations in these docs. The
  [MCP server](/mcp/overview) is the *connection* an agent calls SenderKit through;
  the [AI-agent guide](/guides/ai-agent) gives *your own app's* agent a send tool. The
  **skills plugin** is the layer that makes a *coding* agent good at both — it ships the
  know-how, and bundles the MCP server so runtime sends work out of the box.
</Note>

## The two skills

The plugin contains one `senderkit` plugin with two skills. They split along a single
line: **does the agent change your code, or operate SenderKit at runtime?**

<CardGroup cols={2}>
  <Card title="senderkit-integration" icon="code">
    **Writes SenderKit into your app.** Detects your stack, adds SenderKit behind a small
    local wrapper, migrates an existing provider (Resend, SendGrid, Postmark, Mailgun,
    SES, SMTP, Twilio, FCM, APNs, Expo) or routes through it, and verifies in test mode
    before live traffic.
  </Card>

  <Card title="senderkit-mcp-messaging-operations" icon="paper-plane">
    **Operates SenderKit at runtime over [MCP](/mcp/overview).** Sends templated or raw
    messages, lists and inspects [messages](/concepts/messages), drafts
    [templates](/concepts/templates), and cancels pending sends — without touching code.
  </Card>
</CardGroup>

You don't have to name the skills — they activate on everyday messaging requests.

| You ask                                                       | Skill that helps                     |
| ------------------------------------------------------------- | ------------------------------------ |
| "Add a welcome email when a user signs up"                    | `senderkit-integration`              |
| "Set up SMS OTP / verification codes"                         | `senderkit-integration`              |
| "Add push notifications to this project"                      | `senderkit-integration`              |
| "Switch my email provider to SenderKit (or route through it)" | `senderkit-integration`              |
| "Send a test email and check its delivery status"             | `senderkit-mcp-messaging-operations` |
| "Why did this message fail? Cancel that scheduled send"       | `senderkit-mcp-messaging-operations` |

## Install

<Tabs>
  <Tab title="Claude Code">
    Install from the marketplace:

    ```text theme={null}
    /plugin marketplace add senderkit/senderkit-skills
    /plugin install senderkit@senderkit-skills
    ```

    This loads both skills **and** the SenderKit MCP server from the repo's `.mcp.json`
    (OAuth — no key stored). Run `/mcp`, sign in, and pick a workspace and test/live mode.

    Developing against a local checkout instead:

    ```bash theme={null}
    claude --plugin-dir .
    ```

    **Check it works:** run `/mcp` — the `senderkit` server should be connected — or ask
    *"Use senderkit-integration to add a welcome email."*
  </Tab>

  <Tab title="Codex">
    Codex discovers skills from `.agents/skills/` directories. Vendor the skills into your
    user scope (every repo) or a single repo's scope:

    ```bash theme={null}
    git clone https://github.com/senderkit/senderkit-skills.git
    mkdir -p ~/.agents/skills
    cp -R senderkit-skills/skills/senderkit-integration ~/.agents/skills/
    cp -R senderkit-skills/skills/senderkit-mcp-messaging-operations ~/.agents/skills/
    # repo-scoped instead? copy into <your-repo>/.agents/skills/
    ```

    Restart Codex so it picks them up. Then connect MCP with an API key — set
    `SENDERKIT_API_KEY` (the `sk_live_` / `sk_test_` prefix selects mode), or run
    `senderkit mcp install --client codex`.

    **Check it works:** run `/skills` (the SenderKit skills should be listed) or invoke
    one explicitly with `$senderkit-integration`.
  </Tab>

  <Tab title="Cursor">
    Load the repo as a local plugin:

    ```bash theme={null}
    git clone https://github.com/senderkit/senderkit-skills.git
    ln -s "$(pwd)/senderkit-skills" ~/.cursor/plugins/local/senderkit
    ```

    Reload Cursor (**Developer: Reload Window**). Skills appear under **Settings → Rules &
    Skills**. Then connect MCP with an API key — set `SENDERKIT_API_KEY` (the `sk_live_` /
    `sk_test_` prefix selects mode), or run `senderkit mcp install --client cursor`, and
    toggle the server under **Settings → MCP**.

    **Check it works:** type `/senderkit-integration` in chat, or ask *"Send a test email
    and check its status via SenderKit MCP."*
  </Tab>
</Tabs>

<Note>
  Installing the plugin gives you the `senderkit_*` MCP tools, but auth differs by client:
  **Claude Code** uses OAuth (no key stored); **Codex** and **Cursor** use an API key via
  `SENDERKIT_API_KEY`. For every other client, manual config, and self-hosting, see
  [MCP installation](/mcp/installation). Start with an `sk_test_` key so a coding agent
  can't send to real people until you trust it.
</Note>

## What's next

<CardGroup cols={2}>
  <Card title="MCP Server" icon="robot" href="/mcp/overview">
    The connection the messaging-operations skill rides on — tools and modes.
  </Card>

  <Card title="MCP installation" icon="plug" href="/mcp/installation">
    Connect the MCP server in any client, including manual config.
  </Card>

  <Card title="Send from your AI agent" icon="robot" href="/guides/ai-agent">
    The other direction — give your app's own agent a send tool.
  </Card>

  <Card title="MCP tools" icon="screwdriver-wrench" href="/mcp/tools">
    Every tool the messaging-operations skill can call.
  </Card>
</CardGroup>
