# Connecting

The server speaks **HTTP** transport at `https://0bull.net/mcp` and authenticates with
**OAuth**. Every client below follows the same shape: you give it the URL, it discovers the
OAuth endpoints, and a browser window asks you to authorize with your
[0bull.net](https://0bull.net) account. **There is no token to copy or paste.**

You authorize as yourself, so the tools see exactly the accounts and phones your own
account can reach — no more.

## Claude Code

```bash
claude mcp add --transport http 0bull https://0bull.net/mcp
```

Then, inside Claude Code:

```
/mcp
```

Pick `0bull` and authenticate. A browser opens for the OAuth flow; once you approve, the
24 tools are available.

Add `--scope user` to make the server available across all your projects rather than only
the current one (the default scope is `local`).

## Claude Desktop

Edit your `claude_desktop_config.json`:

- macOS — `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows — `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "0bull": {
      "type": "http",
      "url": "https://0bull.net/mcp"
    }
  }
}
```

Restart Claude Desktop. It will prompt you to authenticate on first use.

## Cursor

Edit `.cursor/mcp.json` in your project (or `~/.cursor/mcp.json` for every project):

```json
{
  "mcpServers": {
    "0bull": {
      "type": "http",
      "url": "https://0bull.net/mcp"
    }
  }
}
```

Cursor picks the server up and prompts for OAuth in **Settings → MCP**.

## Codex

```bash
codex mcp add 0bull --url https://0bull.net/mcp
```

That one command is all it takes — Codex detects OAuth support and starts the flow itself:

```
Added global MCP server '0bull'.
Detected OAuth support. Starting OAuth flow…
Authorize `0bull` by opening this URL in your browser: <url>
```

Open the URL and approve. There is no separate login command to run afterwards.

The server is written to `~/.codex/config.toml`:

```
[mcp_servers.0bull]
url = "https://0bull.net/mcp"
```

Run `codex mcp list` to check it — the **Auth** column tells you whether you are logged in.
If authorization ever lapses, `codex mcp login 0bull` re-runs the flow without re-adding
the server.

## OpenCode

Add the server to `opencode.json` in your project root:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "0bull": {
      "type": "remote",
      "url": "https://0bull.net/mcp",
      "enabled": true
    }
  }
}
```

`type` and `url` are all the server needs — OpenCode auto-detects OAuth and prompts you to
authorize on first use. OpenCode also reads a global config file if you would rather have
the server in every project; see its configuration docs for the location.

## Verifying

Ask your client to list the tools. You should see 24, starting with `list-accounts-tool`.
A quick end-to-end check that touches no phone:

> List my posting accounts.

That calls `list-accounts-tool`, which is a synchronous read — it answers immediately and
returns every platform merged, TikTok, Instagram and YouTube alike. If you get an empty
list rather than an error, you are connected and authorized.

## Troubleshooting

**The browser never opens / authorization fails.** Check that you used the full
`https://0bull.net/mcp` path and not the bare host — the trailing `/mcp` is what your
client discovers the OAuth endpoints from. If the browser opens but authorization fails,
sign in at [0bull.net](https://0bull.net) first, then retry.

**Tools return "not found" for records you know exist.** That is scoping, not a bug — you
are authenticated as a user without access to them. See
[scoping](/mcp/overview#scoping).

**Calls start failing in bursts.** The rate limit is 60/min.
