nj_sk_ key from Developers → Keys. MCP calls are billable, so a key marked read-only is rejected — mint a full-access key.
Claude (claude.ai)
Claude (claude.ai)
Settings → Connectors → Add custom connector. Name it
NinjaChat, paste the URL, sign in when prompted. No API key.ChatGPT
ChatGPT
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.Cursor
Cursor
~/.cursor/mcp.json
ninjachat with a green dot. If not, reload the window.Claude Code
Claude Code
/mcp. Add --scope user to use it in every project.Listed as failed? Use
--transport http (not sse) and keep the whole "Authorization: Bearer …" string as one shell argument.Codex
Codex
~/.codex/config.toml
TOML is picky:
[mcp_servers.ninjachat] with an underscore, and http_headers as an inline table.VS Code
VS Code
.vscode/mcp.json
Hermes
Hermes
~/.hermes/config.yaml
OpenClaw
OpenClaw
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
401with aWWW-Authenticatechallenge pointing athttps://www.ninjachat.ai/.well-known/oauth-protected-resource/api/mcp; the authorization-server metadata is athttps://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 theredirect_uriyou authorize with must be one you registered. A client unused for 90 days is garbage-collected. - Authorization.
https://www.ninjachat.ai/oauth/authorizewithcode_challenge_method=S256. PKCE is mandatory andplainis rejected; authorization codes expire after 60 seconds. The only scope ismcp. - Tokens.
https://www.ninjachat.ai/api/oauth/tokensupportsauthorization_codeandrefresh_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 athttps://www.ninjachat.ai/api/oauth/revoke.