docs
docs

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.

  1. Run the install for your client below.
  2. 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:login walks 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? Set XINF_API_KEY instead. Without either, the catalog and pricing tools still work.
  3. Try /xinf:balance or ask it for an image.

What is included

partnamewhat it does
skillusing-xinfpick a model, OpenAI-compatible base URL, keys, balance, errors
skillxinf-mediagenerate images, video and audio through the tools or /v1, and return the URLs
skillxinf-x402what x402 is, for agents that already have a wallet provider with spending policies: quote, price, pay, the X-Buyback-Token header, budget rules
skillxinf-models-and-pricinglist price vs Elite price, cost-effective choices
skillxinf-buybackshow an account's buyback token works, Reward Status, and $XINF
commands/xinf:login /xinf:setup /xinf:models /xinf:balance /xinf:usage /xinf:generate-imageslash commands (Claude Code, Cursor, Kimi)
subagentmodel-pickerrecommends 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.

terminal
claude plugin marketplace add xavadao/xinf-plugin && claude plugin install xinf@xinf --config base_url=https://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.

or only the MCP server (the second command opens the browser sign-in)
claude mcp add --transport http xinf https://zinf.ai/mcp/account && claude mcp login xinf
or with an API key instead of signing in
claude mcp add --transport http xinf https://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.

Settings > Connectors > Add custom connector
https://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.

terminal
codex plugin marketplace add xavadao/xinf-plugin && codex plugin add xinf@xinf && codex mcp login xinf

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.

or only the MCP server (starts the sign-in by itself)
codex mcp add xinf --url https://zinf.ai/mcp/account
or with an API key (~/.codex/config.toml): the header is sent only when the variable is set
[mcp_servers.xinf]
url = "https://zinf.ai/mcp/account"
env_http_headers = { "Authorization" = "XINF_AUTHORIZATION" }

# in your shell: export XINF_AUTHORIZATION="Bearer $XINF_API_KEY"
~/.codex/config.toml (optional: run Codex itself on our models)
[model_providers.xinf]
name = "Xava Inference"
base_url = "https://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.

terminal
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - cursor --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.

or the full plugin (skills, commands, the MCP server) in Cursor chat, then Settings > MCP > Needs login
/add-plugin https://github.com/xavadao/xinf-plugin
or by hand (~/.cursor/mcp.json), then cursor-agent mcp login xinf
{
  "mcpServers": {
    "xinf": { "url": "https://zinf.ai/mcp/account" }
  }
}
or the one-click MCP install link (opens Cursor: Install, then Needs login)
cursor://anysphere.cursor-deeplink/mcp/install?name=xinf&config=eyJ1cmwiOiJodHRwczovL3ppbmYuYWkvbWNwL2FjY291bnQifQ==
chat models (Settings > Models)
Override OpenAI Base URL:  https://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.

terminal
gemini extensions install https://github.com/xavadao/xinf-plugin --consent && 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.

or only the MCP server, then /mcp auth xinf inside Gemini
gemini mcp add --transport http xinf https://zinf.ai/mcp/account

OpenCode

Installs the plugin globally, adds the MCP server to your OpenCode config, then signs you in.

terminal
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/install-opencode.sh | 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.

or by hand (opencode.json), then opencode mcp auth xinf
{
  "mcp": {
    "xinf": {
      "type": "remote",
      "url": "https://zinf.ai/mcp/account",
      "enabled": true
    }
  },
  "provider": {
    "xinf": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Xava Inference",
      "options": { "baseURL": "https://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.

in Kimi Code chat
/plugins install https://github.com/xavadao/xinf-plugin

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).

or only the MCP server (terminal), then /new and /mcp-config login xinf
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - kimi

Pi

Installs the Pi package (the skills plus the MCP server), then signs you in.

terminal
pi install git:github.com/xavadao/xinf-plugin@v0.1.1 && 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.

cline_mcp_settings.json
{
  "mcpServers": {
    "xinf": {
      "type": "streamableHttp",
      "url": "https://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).

or from a terminal (merges it into Cline's settings file in VS Code)
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - cline
chat models (API Provider: OpenAI Compatible)
Base URL:  https://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.

mcp_config.json
{
  "mcpServers": {
    "xinf": {
      "serverUrl": "https://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.

or from a terminal (merges it into the Windsurf config)
curl -fsSL https://raw.githubusercontent.com/xavadao/xinf-plugin/main/scripts/add-mcp.mjs | node --input-type=module - windsurf
no sign-in offered: the device login saves a connection key (then set XINF_API_KEY and restart Windsurf)
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)"
and the config with the key
{
  "mcpServers": {
    "xinf": {
      "serverUrl": "https://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.

.env
OPENAI_BASE_URL=https://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.

agentnative API we serve
Claude CodeAnthropic Messages (/v1/messages)
CodexOpenAI Responses (/v1/responses)
Gemini CLIGemini API (/v1beta/models/...:generateContent)

Claude Code

terminal (or your shell profile)
export ANTHROPIC_BASE_URL=https://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

~/.codex/config.toml
[model_providers.xinf]
name = "Xava Inference"
base_url = "https://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

terminal (or your shell profile)
export GOOGLE_GEMINI_BASE_URL=https://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.