---
title: setup skill
description: How the looot plugin's setup skill connects the MCP server, checks the balance, and gets a top-up link.
sidebar:
  label: Setup
---

`setup` gets a workspace ready for its first paid run. It loads automatically when the looot
tools are missing or answer 401, when you ask to sign in, set up or connect looot, or before the
first paid run in a new workspace. It's also available as `/looot:setup` in Claude Code.

## What it does

1. **Sign in.** looot is one MCP server at `https://api.looot.ai/mcp`, sign-in is OAuth in the
   browser, and nobody copies a key. In Claude Code, the plugin adds the server as
   `plugin:looot:looot`; the skill tells you to run `/mcp`, pick it, and choose **Authenticate**.
   The browser opens looot.ai, you sign in, pick the organization to bill, and click **Connect**.
   In Codex, `codex mcp login <slug>` does the same. In Cursor, the sign-in starts the first time
   a looot tool is used. The skill never asks you to paste a token into the chat, and never
   writes one into a URL or a file. A header token is only for CI and headless agents, created in
   Settings on looot.ai.
2. **Check the connection**, with the free [`catalog_overview`](/mcp-tools/catalog-overview) call, which lists categories with
   endpoint counts.
3. **Check the balance**, with [`balance`](/mcp-tools/balance), reading `available`, `reserved`, and
   `topUpLink.minimumUsd`. A new workspace starts at $0; there's no trial credit. Searching,
   inspecting and the overview are free; runs are paid.
4. **Top up if short**, with [`top_up`](/mcp-tools/top-up), optionally passing `amountUsd`. Left out, looot suggests an
   amount, never below the minimum. The answer carries a Stripe `checkoutUrl` to show the user; the
   skill waits for confirmation of payment before calling `balance` again.
5. **Hand off to the first run**, usually a cheap one: verifying one email address, or turning one
   web page into markdown.

## Worked example

**User:** "Connect looot and get me ready to run something."

```json
{"tool": "catalog_overview", "input": {}}
```

```json
{"tool": "balance", "input": {}}
```

Balance comes back `available: 0`, `topUpLink.minimumUsd` set, `checkoutUrl` set.

```json
{"tool": "top_up", "input": {"amountUsd": 5}}
```

**Agent's answer:** "You're signed in and connected. The workspace balance is $0, so nothing can
run yet. Here's a top-up link: [checkoutUrl]. Pay it, then tell me and I'll check the balance
again before we run anything."

See [money](/plugin/skills/money) for how holds and charges work, and
[find-and-run](/plugin/skills/find-and-run) for the first paid run.

<Related />
