# Usual Subagent

**Usual Subagent** is how your own AI agent runs your subscriptions: an MCP server built into Usual. Connect Claude, Cursor or any MCP client and your agent can look up subscriptions, explain what happened, handle a customer's cancel request, fix failed payments, and make changes, each one previewed first and recorded.

| | |
|---|---|
| **Address** | `https://regular-subs.fly.dev/mcp` (Streamable HTTP) |
| **Sign-in** | An **Agent** key from **Usual → Developers**, sent as `Authorization: Bearer <key>` |

Use an *Agent* key rather than an *API key*: agent keys always get a plan first, must say why, and need a person's approval for riskier or bigger changes (see [Approvals](/docs/concepts/changes#approvals)). Give it only the permissions the job needs.

## Claude Code

```bash
claude mcp add --transport http usual https://regular-subs.fly.dev/mcp \
  --header "Authorization: Bearer $USUAL_KEY"
```

## Cursor

In `~/.cursor/mcp.json` (or `.cursor/mcp.json` in a project):

```json
{
  "mcpServers": {
    "usual": {
      "url": "https://regular-subs.fly.dev/mcp",
      "headers": { "Authorization": "Bearer usk_..." }
    }
  }
}
```

## VS Code

In `.vscode/mcp.json`:

```json
{
  "servers": {
    "usual": {
      "type": "http",
      "url": "https://regular-subs.fly.dev/mcp",
      "headers": { "Authorization": "Bearer ${input:usual-key}" }
    }
  },
  "inputs": [{ "id": "usual-key", "type": "promptString", "description": "Usual agent key", "password": true }]
}
```

## Claude Desktop and other clients

Clients that only run local servers can connect through [`mcp-remote`](https://www.npmjs.com/package/mcp-remote):

```json
{
  "mcpServers": {
    "usual": {
      "command": "npx",
      "args": ["mcp-remote", "https://regular-subs.fly.dev/mcp", "--header", "Authorization: Bearer ${USUAL_KEY}"],
      "env": { "USUAL_KEY": "usk_..." }
    }
  }
}
```

Connecting from Claude.ai or ChatGPT with a "sign in to your store" button is coming soon.

## What your agent sees

The server tells the agent how to work when it connects, so you don't need to explain it. In short:

1. **Look things up** with `get_overview`, `find_subscriptions` and `get_subscription`.
2. **See what it may change** with `list_commands`: every command its key allows, with the input schema, risk and whether it can be undone.
3. **Preview** with `plan_change`. Nothing changes yet. The plan says exactly what would change.
4. **Apply** with `apply_plan`, after showing you the plan if you're there. If it needs approval, it tells you and waits; you approve it in **Usual → Activity**.
5. **Explain or reverse** with `list_activity` and `undo_change`.

All the tools are listed in [MCP tools](/docs/reference/mcp-tools).

## Try asking

- "How are subscriptions doing this month? Anything broken?"
- "Which payments are failing, and why? Send card-update emails to the ones with expired cards."
- "Maria wants to cancel because she has too much coffee. What can we offer her?"
- "Pause every subscription for the Cold Brew Pack until the new batch arrives."
- "What changed yesterday, and who did it?"
- "We're moving from Recharge. Walk me through it."
