Connect your agent
Every client talks to the same MCP endpoint, POST /mcp (streamable HTTP, stateless). Pick yours:
| Client | Transport | Auth | Page |
|---|---|---|---|
| Claude Code | HTTP | nxc_ key in a header (or OAuth) | Claude Code |
| Claude.ai, Claude Desktop, Claude mobile | HTTP from Anthropic's cloud | OAuth 2.1 (DCR + PKCE) | Claude.ai and Desktop |
| ChatGPT (developer mode) | HTTP from OpenAI's cloud | OAuth 2.1 | ChatGPT |
| Codex CLI | HTTP | bearer_token_env_var | Codex |
| Cursor (and Windsurf) | HTTP | header with ${env:NEXARA_KEY} | Cursor |
| Gemini CLI | HTTP (httpUrl) | header | Gemini CLI |
| Hermes | HTTP | header from ~/.hermes/.env | Hermes |
| Obsidian | git smart HTTP | nxg_ git token | Obsidian Git |
| stdio-only clients | nexara mcp-proxy | key | stdio clients |
Which credential
| Prefix | What | Accepted on |
|---|---|---|
nxc_ | Agent key, minted per agent in the app | /api/v1, /mcp |
nxa_ / nxr_ | OAuth access (1 hour) and refresh (30 days, rotating) tokens | /mcp (audience-bound), /api/v1 |
nxg_ | Git token, minted by an owner under Settings | /git only |
One agent per tool or machine is the right granularity: the audit log then tells you which one did what, and you can revoke one without touching the others.
The config snippets below are the same ones the app shows after you create an agent (web/src/lib/snippets.ts).