Agent plugins
One plugin for every major coding agent: our MCP server, five skills, slash commands and a model-picker subagent. Same key, same balance.
The plugin lives at github.com/xavadao/xinf-plugin. One canonical bundle, with a manifest per client. It adds our MCP server and teaches your agent when and how to use it. The marketing overview is on /agents.
- Run the install for your client below.
- Sign in: your agent opens the browser (every terminal install below does it as its last step; Gemini asks you to press Enter first), you sign in, pick a daily spending cap and click Allow (
/xinf:loginwalks you through it; the exact step per client is below). No key to copy, and no wallet or private key on your computer. Prefer a key? SetXINF_API_KEYinstead. Without either, the catalog and pricing tools still work. - Try
/xinf:balanceor ask it for an image.
The plugin defaults to our production origin. Every install below already points at this deployment except Kimi's in-chat plugin, which gets an extra step (a clone of the plugin repo reads export XINF_BASE_URL=https://www.zinf.ai).
What is included
| part | name | what it does |
|---|---|---|
| skill | using-xinf | pick a model, OpenAI-compatible base URL, keys, balance, errors |
| skill | xinf-media | generate images, video and audio through the tools or /v1, and return the URLs |
| skill | xinf-x402 | what x402 is, for agents that already have a wallet provider with spending policies: quote, price, pay, the X-Buyback-Token header, budget rules |
| skill | xinf-models-and-pricing | list price vs Elite price, cost-effective choices |
| skill | xinf-buybacks | how an account's buyback token works, Reward Status, and $XINF |
| commands | /xinf:login /xinf:setup /xinf:models /xinf:balance /xinf:usage /xinf:generate-image | slash commands (Claude Code, Cursor, Kimi) |
| subagent | model-picker | recommends a model for a task by price and capability; read-only |
Spending limits
A signed-in agent spends your balance up to the daily cap you picked on the consent screen (default $5 a day); past it, requests are refused with 402 spending_cap_reached before anything runs. Change the cap or revoke the app in your dashboard under API keys, Connected apps. The device login (xinf-login) stores an API key for your account with the same cap in ~/.xinf/credentials, readable only by you; it is an account key you can revoke there, never a wallet key.
The plugin never asks you to create a wallet or keep a private key on your computer. x402 is only for agents that already have a wallet provider with spending policies.
Claude Code
Installs the plugin (the MCP server, five skills, /xinf commands and a model-picker subagent), then signs you in.
claude plugin marketplace add xavadao/xinf-plugin && claude plugin install xinf@xinf --config base_url=https://www.zinf.ai && claude mcp login plugin:xinf:xinf
Sign in: The command ends by opening your browser: sign in, pick a daily cap, Allow. Done. If Claude Code ever says the server needs authentication: /mcp, pick plugin:xinf:xinf, Authenticate.
claude mcp add --transport http xinf https://www.zinf.ai/mcp/account && claude mcp login xinf
claude mcp add --transport http xinf https://www.zinf.ai/mcp \ --header "Authorization: Bearer $XINF_API_KEY"
Claude Desktop
Claude Desktop, claude.ai and the Claude mobile apps: add a custom connector with this URL.
https://www.zinf.ai/mcp/account
Sign in: Click Connect: sign in in the browser, pick a daily cap, Allow. Team and Enterprise plans: an owner adds it under Organization settings > Connectors.
Codex
Installs the plugin in Codex (skills and the MCP server), then signs you in.
codex mcp add xinf --url https://www.zinf.ai/mcp/account
Sign in: The command ends by opening your browser: sign in, pick a daily cap, Allow. Done. To sign in again later: codex mcp login xinf.
codex mcp add xinf --url https://www.zinf.ai/mcp/account
[mcp_servers.xinf]
url = "https://www.zinf.ai/mcp/account"
env_http_headers = { "Authorization" = "XINF_AUTHORIZATION" }
# in your shell: export XINF_AUTHORIZATION="Bearer $XINF_API_KEY"[model_providers.xinf] name = "Xava Inference" base_url = "https://www.zinf.ai/v1" env_key = "XINF_API_KEY" wire_api = "responses" [profiles.xinf] model_provider = "xinf" model = "openai/gpt-5.4" # then: codex --profile xinf
Codex speaks the Responses API, which we serve for OpenAI models. A model provider needs a key: use the device login or a dashboard key.
Cursor
Adds the MCP server to Cursor (the app and the cursor-agent CLI), then signs you in.
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - cursor --base-url https://www.zinf.ai --login
Sign in: With the Cursor CLI installed, the command ends by opening your browser: sign in, pick a daily cap, Allow. Only the app: Settings > MCP, click "Needs login" next to xinf, then Allow. Later: cursor-agent mcp login xinf.
{
"mcpServers": {
"xinf": { "url": "https://www.zinf.ai/mcp/account" }
}
}cursor://anysphere.cursor-deeplink/mcp/install?name=xinf&config=eyJ1cmwiOiJodHRwczovL3d3dy56aW5mLmFpL21jcC9hY2NvdW50In0=
Override OpenAI Base URL: https://www.zinf.ai/v1 OpenAI API Key: xk_live_... Add model: anthropic/claude-sonnet-5
Gemini CLI
Installs the extension and starts Gemini CLI, which offers the browser sign-in right away.
gemini extensions install https://github.com/xavadao/xinf-plugin --consent && echo XINF_BASE_URL=https://www.zinf.ai >> ~/.gemini/extensions/xinf/.env && gemini
Sign in: Gemini asks "Authentication required for MCP Server: xinf ... Do you want to continue?": press Enter, sign in in the browser, pick a daily cap, Allow. Later: /mcp auth xinf.
gemini mcp add --transport http xinf https://www.zinf.ai/mcp/account
OpenCode
Installs the plugin globally, adds the MCP server to your OpenCode config, then signs you in.
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/install-opencode.sh | XINF_BASE_URL=https://www.zinf.ai sh && opencode mcp auth xinf
Sign in: The command ends by opening your browser (opencode mcp auth xinf): sign in, pick a daily cap, Allow.
{
"mcp": {
"xinf": {
"type": "remote",
"url": "https://www.zinf.ai/mcp/account",
"enabled": true
}
},
"provider": {
"xinf": {
"npm": "@ai-sdk/openai-compatible",
"name": "Xava Inference",
"options": { "baseURL": "https://www.zinf.ai/v1", "apiKey": "{env:XINF_API_KEY}" },
"models": { "anthropic/claude-sonnet-5": {}, "openai/gpt-5.4": {} }
}
}
}The model provider part needs a key in XINF_API_KEY (device login or dashboard); the MCP server signs in by itself.
Kimi
Installs the plugin in Kimi Code (choose Trust and install); it applies in a new session.
/plugins install https://github.com/xavadao/xinf-plugin
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - kimi --base-url https://www.zinf.ai
Sign in: Choose "Trust and install", run /new, then /mcp-config login plugin-xinf:xinf: sign in in the browser, pick a daily cap, Allow. Kimi Code must be signed in (its model runs the login).
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - kimi --base-url https://www.zinf.ai
Pi
Installs the Pi package (the skills plus the MCP server), then signs you in.
pi install git:github.com/xavadao/xinf-plugin@v0.1.1 && XINF_BASE_URL=https://www.zinf.ai pi "/mcp-auth xinf"
Sign in: The command ends by opening your browser (pi "/mcp-auth xinf"): sign in, pick a daily cap, Allow. Later, inside Pi: /mcp-auth xinf.
Cline
Paste into MCP Servers > Configure, then Authenticate: no key to paste.
{
"mcpServers": {
"xinf": {
"type": "streamableHttp",
"url": "https://www.zinf.ai/mcp/account"
}
}
}Sign in: In the MCP Servers panel, xinf shows Authenticate: click it, sign in in the browser, Allow (VS Code asks once to open the link back).
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - cline --base-url https://www.zinf.ai
Base URL: https://www.zinf.ai/v1 API Key: xk_live_... Model ID: anthropic/claude-sonnet-5
Windsurf
Merge into Cascade's MCP config (~/.codeium/windsurf/mcp_config.json; newer builds ~/.config/devin/mcp_config.json), or run the terminal line below.
{
"mcpServers": {
"xinf": {
"serverUrl": "https://www.zinf.ai/mcp/account"
}
}
}Sign in: Refresh the MCP servers in Cascade and sign in to xinf when it asks (browser, daily cap, Allow). If Windsurf offers no sign-in, use the device login and the key config below.
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - windsurf --base-url https://www.zinf.ai
curl -fsSLo xinf-login.mjs https://raw.githubusercontent.com/xavadao/xinf-plugin/main/bin/xinf-login.mjs node xinf-login.mjs export XINF_API_KEY="$(sed -n 's/^XINF_API_KEY=//p' ~/.xinf/credentials)"
{
"mcpServers": {
"xinf": {
"serverUrl": "https://www.zinf.ai/mcp/account",
"headers": { "Authorization": "Bearer ${env:XINF_API_KEY}" }
}
}
}Any OpenAI SDK
Two lines: every OpenAI-compatible SDK and framework picks these up.
OPENAI_BASE_URL=https://www.zinf.ai/v1 OPENAI_API_KEY=xk_live_...
Run your coding agent on our models
Claude Code, Codex and Gemini CLI can use us as their model API directly, with no plugin: point the agent's base URL here and give it your key (a dashboard key, or the one the device login saves in ~/.xinf/credentials). Streaming, tool use, images and PDFs, thinking and prompt caching work as they do natively; every request is billed at list price like any other.
| agent | native API we serve |
|---|---|
| Claude Code | Anthropic Messages (/v1/messages) |
| Codex | OpenAI Responses (/v1/responses) |
| Gemini CLI | Gemini API (/v1beta/models/...:generateContent) |
Claude Code
export ANTHROPIC_BASE_URL=https://www.zinf.ai export ANTHROPIC_AUTH_TOKEN=$XINF_API_KEY claude
Claude Code sends its usual model ids (claude-opus-..., claude-sonnet-..., claude-haiku-..., dated or -latest): each maps to the same model in our catalog, billed at list price. Pick one with ANTHROPIC_MODEL (and ANTHROPIC_DEFAULT_HAIKU_MODEL for background tasks), e.g. claude-haiku-4-5. ANTHROPIC_API_KEY works too.
Codex
[model_providers.xinf] name = "Xava Inference" base_url = "https://www.zinf.ai/v1" env_key = "XINF_API_KEY" wire_api = "responses" [profiles.xinf] model_provider = "xinf" model = "openai/gpt-5.4-mini" # then: codex --profile xinf
OpenAI models only on this API; bare ids such as gpt-5.4-mini work too.
Gemini CLI
export GOOGLE_GEMINI_BASE_URL=https://www.zinf.ai export GEMINI_API_KEY=$XINF_API_KEY gemini -m gemini-2.5-flash
Choose "Use Gemini API key" when Gemini CLI asks how to sign in. Gemini model ids map to our catalog; any other chat model works by its full id. Token counts are estimates; cached content and the file API are not supported.
Errors come back in each API's own shape (Anthropic's {"type":"error",...}, Google's {"error":{"code","status"}}), so the agents retry and report them as usual. Token-count endpoints (/v1/messages/count_tokens, :countTokens) return free estimates.