Skip to main content

model.list

List available models across all enabled providers or filter by a specific provider.

Request

{"jsonrpc":"2.0","id":1,"method":"model.list","params":{}}

Parameters

provider
string
Optional provider filter: "openai", "openrouter", or "antigravity"

Response

providers
array
required
Array of enabled provider names
models
array
required
Array of available model objects. Each model includes:
  • id - Model identifier
  • name - Display name
  • provider - Provider name
  • thinking_levels - Supported thinking levels
  • Additional provider-specific metadata
selected_model
string
required
Currently selected model ID
selected_thinking
string
required
Currently selected thinking level: "low", "medium", "high", or "extended"
selected_provider
string
required
Currently selected provider
selected_openrouter_provider
string
Selected OpenRouter provider (if using OpenRouter)

Example

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "providers": ["openai", "openrouter"],
    "models": [
      {
        "id": "gpt-4o",
        "name": "GPT-4o",
        "provider": "openai",
        "thinking_levels": ["low", "medium", "high"],
        "context_window": 128000
      },
      {
        "id": "anthropic/claude-3.5-sonnet",
        "name": "Claude 3.5 Sonnet",
        "provider": "openrouter",
        "thinking_levels": ["low", "medium", "high"],
        "context_window": 200000
      }
    ],
    "selected_model": "gpt-4o",
    "selected_thinking": "medium",
    "selected_provider": "openai",
    "selected_openrouter_provider": null
  }
}

model.select

Select a model and thinking level for future conversations. Optionally compress an existing session.

Request

{"jsonrpc":"2.0","id":2,"method":"model.select","params":{"model_id":"gpt-4o","provider":"openai","thinking_level":"high"}}

Parameters

model_id
string
required
Model identifier (must exist in the provider’s catalog)
provider
string
required
Provider name: "openai", "openrouter", or "antigravity"
thinking_level
string
required
Thinking level: "low", "medium", "high", or "extended"
openrouter_provider
string
OpenRouter routing provider (only for OpenRouter models)
session_id
string
Session ID to compress (required if compress_immediately is true)
compress_immediately
boolean
default:false
If true, compress the specified session’s history to fit the new model’s context window

Response

selected_model
string
required
The selected model ID
selected_provider
string
required
The selected provider
selected_thinking
string
required
The selected thinking level (may be normalized for the model)
selected_openrouter_provider
string
The selected OpenRouter provider (if applicable)
compression
object
Compression details (if compress_immediately was true)
requested
boolean
required
Whether compression was requested
applied
boolean
required
Whether compression was actually applied
reason
string
required
Reason: "none", "auto", or "provider_switch"
estimated_tokens_before
number
required
Token count before compression
estimated_tokens_after
number
required
Token count after compression
model_context_window
number
required
Model’s context window size
target_limit
number
required
Target token limit for compression
anchor_event_index_before
number
required
History anchor index before compression
anchor_event_index_after
number
required
History anchor index after compression

Example (Basic)

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "selected_model": "gpt-4o",
    "selected_provider": "openai",
    "selected_thinking": "high",
    "selected_openrouter_provider": null,
    "compression": null
  }
}

Example (With Compression)

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "model.select",
  "params": {
    "model_id": "anthropic/claude-3.5-sonnet",
    "provider": "openrouter",
    "thinking_level": "medium",
    "session_id": "550e8400-e29b-41d4-a716-446655440000",
    "compress_immediately": true
  }
}
{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "selected_model": "anthropic/claude-3.5-sonnet",
    "selected_provider": "openrouter",
    "selected_thinking": "medium",
    "selected_openrouter_provider": "any",
    "compression": {
      "requested": true,
      "applied": true,
      "reason": "provider_switch",
      "estimated_tokens_before": 45000,
      "estimated_tokens_after": 12000,
      "model_context_window": 200000,
      "target_limit": 160000,
      "anchor_event_index_before": 42,
      "anchor_event_index_after": 38
    }
  }
}
Thinking levels may be automatically adjusted based on model capabilities. For example, if a model doesn’t support "extended" thinking, it will be normalized to "high".

model.openrouter.providers

List available routing providers for a specific OpenRouter model.

Request

{"jsonrpc":"2.0","id":4,"method":"model.openrouter.providers","params":{"model_id":"anthropic/claude-3.5-sonnet"}}

Parameters

model_id
string
required
OpenRouter model ID

Response

model_id
string
required
The model ID
providers
array
required
Array of provider names available for this model

Example

{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "model_id": "anthropic/claude-3.5-sonnet",
    "providers": ["anthropic", "aws", "gcp"]
  }
}
This method requires an OpenRouter API key to be configured via auth.set.openrouter_key.

limits.get

Retrieve usage limits and quotas from OAuth providers (OpenAI and Antigravity).

Request

{"jsonrpc":"2.0","id":5,"method":"limits.get","params":{}}

Parameters

No parameters required.

Response

openai
object
OpenAI usage snapshot (if authenticated)
ok
boolean
required
Whether the request succeeded
snapshot
object
Usage snapshot object (if ok=true)
message
string
Error message (if ok=false)
antigravity
object
Antigravity usage snapshot (if authenticated)
ok
boolean
required
Whether the request succeeded
snapshot
object
Usage snapshot object (if ok=true)
message
string
Error message (if ok=false)

Example

{
  "jsonrpc": "2.0",
  "id": 5,
  "result": {
    "openai": {
      "ok": true,
      "snapshot": {
        "account_id": "user-abc123",
        "plan": "plus",
        "usage": {
          "gpt4o": {
            "used": 42,
            "limit": 80,
            "reset_at": "2026-01-02T00:00:00.000Z"
          }
        }
      }
    },
    "antigravity": null
  }
}
This method requires at least one OAuth provider (OpenAI or Antigravity) to be authenticated. It will throw an error if neither is configured.

Build docs developers (and LLMs) love