# Agents

Hand Rasket to an AI agent and it can set up your account the way a person would: a key, a domain and its DNS, a first send, and on to campaigns and automations. There is one recipe of twelve steps, written once — this page, the skill, the rules file and the MCP server all read the same one.

## Install it in your agent

### Claude Code

The skill is a folder: `SKILL.md` with the recipe and its rules, three small Node scripts and the `fetch` client they share, and three references. Put it in the project and ask the agent to set Rasket up.

Installing the skill:

```text
mkdir -p .claude/skills
cp -r rasket-setup .claude/skills/
```

[Download SKILL.md](https://www.rasket.com/skills/rasket-setup/SKILL.md); its `scripts/` and `references/` sit beside it under `/skills/rasket-setup/`.

### Cursor

Save the [rules file](https://www.rasket.com/skills/rasket-setup/rules/rasket.mdc) as `.cursor/rules/rasket.mdc`. It carries the same recipe as REST calls, with the rules for calling the API directly: the SDK is not published yet, so the file tells the agent to use `fetch` rather than install it.

### Windsurf

The same file, saved as `.windsurf/rules/rasket.mdc`.

### Or connect over MCP

An MCP client needs no key: it signs in with OAuth and holds only the scopes you approve. The `toolset` parameter below narrows the server to the tools setting up and sending need; leave it out for the full tool catalogue.

Adding the server to Claude Code:

```text
claude mcp add --transport http rasket "https://api.rasket.com/mcp?toolset=setup,send"
```

The Cursor configuration:

```text
{
  "mcpServers": {
    "rasket": {
      "url": "https://api.rasket.com/mcp?toolset=setup,send"
    }
  }
}
```

> Every script, sample and file here reads the key from `RASKET_API_KEY`. Export it in the agent's shell; never paste a key into a chat or a file.

The [MCP server](https://www.rasket.com/docs/mcp) page covers the boundary, the budgets and every tool.

## The recipe

Twelve steps, in order. Each names its call on every surface and what it needs: a scope for an MCP client, otherwise a key permission. What “done” looks like and the failure each step most often meets are in the skill.

| # | Step | REST | Node SDK (soon) | MCP tool | Needs |
| --- | --- | --- | --- | --- | --- |
| 1 | Create an API key | `POST /api-keys` | `apiKeys.create` | — | a `full_access` key |
| 2 | Add a domain | `POST /domains` | `domains.create` | `create_domain` | `domains:write` |
| 3 | Publish its DNS records | `GET /domains/{domain_id}` | `domains.get` | `get_domain_records` | `domains:read` |
| 4 | Verify the domain | `POST /domains/{domain_id}/verify` | `domains.verify` | `verify_domain` | `domains:write` |
| 5 | Set the sender identity | `PATCH /team` | `team.update` | `update_team` | `team:write` |
| 6 | Send an email | `POST /emails` | `emails.send` | `send_email` | `emails:send` |
| 7 | Add a webhook and check its signature | `POST /webhooks` | `webhooks.create` | `create_webhook` | `webhooks:write` |
| 8 | Create and publish a template | `POST /templates/{id}/publish` | `templates.publish` | `publish_template` | `templates:write` |
| 9 | Add a contact | `POST /contacts` | `contacts.create` | `create_contact` | `contacts:write` |
| 10 | Create a segment | `POST /segments` | `segments.create` | `create_segment` | `segments:write` |
| 11 | Send a broadcast | `POST /broadcasts/{id}/send` | `broadcasts.send` | `send_broadcast` | `broadcasts:write` |
| 12 | Create an automation | `POST /automations` | `automations.create` | `create_automation` | `automations:write` |

The Python client names every method the same way in snake_case — `api_keys.create` for `apiKeys.create`. A step marked “not yet” names something still on its way; an agent skips it and says so.

## Where an agent reads the docs

| Address | What it is |
| --- | --- |
| `/openapi.json` | The whole API as an OpenAPI document. |
| `/llms.txt` | An index of every docs page, written for a model to read. |
| `/llms-full.txt` | Every docs page, one after another, in one file. |
| `/docs/<page>.md` | Any docs page as Markdown — or request the page itself with `Accept: text/markdown`. |
| `/skills/rasket-setup/` | The skill and the rules file on this page, as files. |
| `/.well-known/mcp.json` | Where the MCP server is, the transport it speaks and how it signs in. |
| `/.well-known/agent-skills/index.json` | The Agent Skills this site publishes. |

All of these are served by this site, not the API origin. The API serves the same OpenAPI document at `/openapi.json` on its own host too.

## The SDKs

> Coming soon: the rasket package is not published yet.

Until the Node and Python clients are published, an agent uses the REST column above, the skill's scripts or MCP. The [Node SDK](https://www.rasket.com/docs/sdk/node) page describes the client that is on its way.
