Skip to main content
Every client uses the same URL:
Claude and ChatGPT use OAuth. For editors and CLIs, create a connection key in Developers → Agents. Replace the entire nj_sk_YOUR_KEY placeholder with your key. Merge these entries into existing configuration; keep your other servers. Use HTTP, not SSE.
Settings → Connectors → Add custom connector. Name it NinjaChat, paste the URL, and sign in. Enable NinjaChat in each chat or project where you want to use it. Your account or workspace must allow custom connectors.
Settings → Security and login → Developer mode, then Plugins+. Name it NinjaChat, paste the endpoint under Connection, and sign in. Add it from the tools menu in a new chat. Availability depends on your account and workspace. Official guide.
~/.cursor/mcp.json
Cursor Settings → MCP should show ninjachat with a green dot. If not, reload the window.
Verify with /mcp inside Claude Code. For one project, use --scope local and run from that project folder. Keep --header after the server name and URL. Official guide.
Listed as failed? Use --transport http (not sse) and keep the whole "Authorization: Bearer …" string as one shell argument.
~/.codex/config.toml
Start a new Codex session after saving. Official MCP configuration.
TOML is picky: [mcp_servers.ninjachat] with an underscore, and http_headers as an inline table.
.vscode/mcp.json
Click Start above the entry, enter your key when prompted, then enable NinjaChat in Copilot Chat agent mode. Keep the ${input:ninjachat-key} variable as written.
~/.hermes/config.yaml
Start a new session — the dashboard’s MCP panel shows the connection.
Run openclaw mcp probe ninjachat, then start a new agent session. OpenClaw headers use KEY=VALUE; the equals sign is required.
Review or disconnect OAuth agents anytime in Developers → Agents.

Building your own OAuth client

NinjaChat is a full OAuth 2.1 authorization server, so any MCP client that speaks the standard flow connects without an API key:
  • Discovery. An unauthenticated request to the endpoint returns 401 with a WWW-Authenticate challenge pointing at https://www.ninjachat.ai/.well-known/oauth-protected-resource/api/mcp; the authorization-server metadata is at https://www.ninjachat.ai/.well-known/oauth-authorization-server.
  • Registration. Open Dynamic Client Registration at https://www.ninjachat.ai/api/oauth/register. Clients are public — there is no client secret — and the redirect_uri you authorize with must be one you registered. A client unused for 90 days is garbage-collected.
  • Authorization. https://www.ninjachat.ai/oauth/authorize with code_challenge_method=S256. PKCE is mandatory and plain is rejected; authorization codes expire after 60 seconds. The only scope is mcp.
  • Tokens. https://www.ninjachat.ai/api/oauth/token supports authorization_code and refresh_token. Access tokens (nj_at_…) last 1 hour; refresh tokens (nj_rt_…) last 30 days and rotate on every use — replaying a rotated refresh token revokes the whole token family. Revoke either token at https://www.ninjachat.ai/api/oauth/revoke.

Test it

Free, and proves auth end to end:
Then make something:
Treat nj_sk_ keys like passwords — prefer user-level config over committed files, and revoke anything that leaks.

Troubleshooting