> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ninjachat.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Client Setup

> One endpoint, eight clients. Pick yours.

Every client uses the same URL:

```text theme={null}
https://www.ninjachat.ai/api/mcp
```

Web clients sign in with OAuth — no key. Editor and CLI clients need an `nj_sk_` key from [Developers → Connections](https://www.ninjachat.ai/developers/connections?tab=apps).

<AccordionGroup>
  <Accordion title="Claude (claude.ai)" icon="comments">
    **Settings → Connectors → Add custom connector.** Name it `NinjaChat`, paste the URL, sign in when prompted. No API key.
  </Accordion>

  <Accordion title="ChatGPT" icon="comment-dots">
    **Settings → Connectors → Advanced → enable developer mode.** Then **Create** a connector, name it `NinjaChat`, paste the URL, and approve the OAuth sign-in. Enable it in the composer.
  </Accordion>

  <Accordion title="Cursor" icon="code">
    ```json ~/.cursor/mcp.json theme={null}
    {
      "mcpServers": {
        "ninjachat": {
          "url": "https://www.ninjachat.ai/api/mcp",
          "headers": {
            "Authorization": "Bearer nj_sk_YOUR_KEY"
          }
        }
      }
    }
    ```

    **Cursor Settings → MCP** should show `ninjachat` with a green dot. If not, reload the window.
  </Accordion>

  <Accordion title="Claude Code" icon="terminal">
    ```bash theme={null}
    claude mcp add --transport http ninjachat https://www.ninjachat.ai/api/mcp \
      --header "Authorization: Bearer nj_sk_YOUR_KEY"
    ```

    Verify with `/mcp`. Add `--scope user` to use it in every project.

    <Note>
      Listed as failed? Use `--transport http` (not `sse`) and keep the whole `"Authorization: Bearer …"` string as one shell argument.
    </Note>
  </Accordion>

  <Accordion title="Codex" icon="square-code">
    ```toml ~/.codex/config.toml theme={null}
    [mcp_servers.ninjachat]
    url = "https://www.ninjachat.ai/api/mcp"
    http_headers = { "Authorization" = "Bearer nj_sk_YOUR_KEY" }
    ```

    Restart the session — config loads at launch.

    <Note>
      TOML is picky: `[mcp_servers.ninjachat]` with an underscore, and `http_headers` as an inline table.
    </Note>
  </Accordion>

  <Accordion title="VS Code" icon="window">
    ```json .vscode/mcp.json theme={null}
    {
      "servers": {
        "ninjachat": {
          "type": "http",
          "url": "https://www.ninjachat.ai/api/mcp",
          "headers": {
            "Authorization": "Bearer nj_sk_YOUR_KEY"
          }
        }
      }
    }
    ```

    Click the **Start** code lens above the entry, then use it in Copilot Chat's agent mode.
  </Accordion>

  <Accordion title="Hermes" icon="wave-sine">
    ```yaml ~/.hermes/config.yaml theme={null}
    mcp_servers:
      ninjachat:
        url: "https://www.ninjachat.ai/api/mcp"
        headers:
          Authorization: "Bearer nj_sk_YOUR_KEY"
        enabled: true
    ```

    Start a new session — the dashboard's MCP panel shows the connection.
  </Accordion>

  <Accordion title="OpenClaw" icon="robot">
    ```bash theme={null}
    openclaw mcp add ninjachat \
      --url https://www.ninjachat.ai/api/mcp \
      --transport streamable-http \
      --header "Authorization: Bearer nj_sk_YOUR_KEY"
    ```

    Restart the gateway to load it.
  </Accordion>
</AccordionGroup>

## Test it

Free, and proves auth end to end:

```text theme={null}
Use NinjaChat to check my balance.
```

Then make something:

```text theme={null}
Use NinjaChat to generate a poster of a neon koi fish,
comparing 3 models under $0.25.
```

<Warning>
  Treat `nj_sk_` keys like passwords — prefer user-level config over committed files, and revoke anything that leaks.
</Warning>
