# One line in your agent. A program in your account.

Connect Claude Code, Codex or Cursor to mcp.kaab.ist. Your agent opens a real Kaabist browser, works through the site with you, and what it does becomes a program: versioned, linted, and tested with a dry run before it ever submits anything.

## Connect once

The server speaks Streamable HTTP and signs your agent in with OAuth on your Kaabist account. You decide what it may do. It starts in test mode, on drafts, with a credit cap.

```
claude mcp add --transport http kaab https://mcp.kaab.ist/mcp
```

## A real browser, not a guess

The agent drives a browser on Kaabist's own pool and reads a condensed view of the page: forms, lists, landmarks, and ranked locator candidates for every element. You can watch it work in the panel, or take over at any moment.

```
› browser_open https://portal.example.test/login
› browser_page_view
  forms: login (#email, #password, button "Sign in")
› browser_fill e12 "{{inputs.email}}"
› browser_click e15
```

## From session to program

browser_to_program turns what the agent did into a draft program. lint_program checks it. test_program runs it as a dry run that stops before the first step that submits anything. You approve before it is published.

```
› browser_to_program  → draft prg_4Rb v1 (7 steps)
› lint_program        → 0 errors, 1 warning
› test_program        → dry run stopped before click Renew
```

## Questions

### Which agents work with it?

Any MCP client that speaks Streamable HTTP and OAuth, Claude Code, Codex and Cursor among them.

### Can the agent run live jobs or publish on its own?

Only with the scopes you grant. By default it works in test mode on drafts; publishing and steps that submit need scopes you approve.

### Where do secrets go?

Never into the program. The program reads them as inputs at run time, and password fields are never shown back to the agent.
