URL: /code/mcp · Id: `page:/code/mcp`

# MCP: read here, act on the platform

> Two connect lines: read these docs keyless, then act on your Startup through the platform MCP, try mode first.

Two lines connect your agent. The first reads these docs without a key; the second acts on your [Startup](https://startupbuilder.dev/business/nouns/startup), and every write runs in try mode first.

```bash title="Connect your agent: read, then act"
claude mcp add --transport http salesbuilder-docs https://salesbuilder.dev/mcp
claude mcp add --transport http startup-builder https://api.sb/mcp
```


```text title="Act through MCP · Ask"
Pick three Plays for our hours and budget, and show me the first task, as a dry run.
```

```ts title="Act through MCP · SDK"
import { $ } from 'startup-builder'

await $.PlayMix.compile({ startup: 'leaseline.app' }, { mode: 'try' })
return await $.Task.next()   // the first Task
```

```json title="Act through MCP · Response · sample"
{
  "task": {
    "$id": "https://api.sb/leaseline.app/tasks/task_1",
    "$type": "Task",
    "status": "pending",
    "mode": "try"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/action_1",
    "operation": "Task.next",
    "status": "done"
  }
}
```

## MCP
| Tool on salesbuilder.dev/mcp | What it does | Input |
| --- | --- | --- |
| `search` | Finds pages, Plays and refusal codes on this site by keyword. | `{ query, limit }` |
| `fetch` | Returns one page as Markdown by its path, such as `/plays/instant-response`. | `{ id }` |
| `guides` | Returns the guides whose phrasings answer a task, with the calls each runs. | `{ phrase, limit }` |

```bash title="Read it keyless, from any shell"
curl -s https://salesbuilder.dev/mcp -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://salesbuilder.dev/mcp -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"guides","arguments":{"phrase":"my first cold email won’t go out","limit":1}}}'
```

GET and DELETE on it answer 405, and a notification answers 202. It reads; it never acts.

| Tool on `https://api.sb/mcp` | What it does | Input |
| --- | --- | --- |
| `search` | Finds records, Nouns, Verbs, and docs by keyword, meaning, or filter. | `{ query, limit }` |
| `fetch` | Returns one record, list, or definition by id or path; `/$.d.ts` returns the types of `$`. | `{ id }` |
| `do` | Runs a short TypeScript program with the typed `$` in scope, as one Action. | `{ code, mode }` |

To act, an agent sends one program to `do` as `{ code, mode: 'try' }` first: it waits for the result and stores nothing. The MCP tab of every Run it window on this site is that call.