# Tools and agents

The Set up page composes these with your address and a permitted model whose connection supports the tool's format. Copy exact provider/model IDs from the catalog. A configured connection is not evidence every client feature works; verify the tools your team uses.

## Codex CLI

```toml
# ~/.codex/config.toml
model = "<model id>"
model_provider = "jatevo"

[model_providers.jatevo]
name = "jatevo"
base_url = "https://jatevo.ai/v1"
wire_api = "responses"
env_key = "JATEVO_API_KEY"
```

```bash
export JATEVO_API_KEY=<your key>
codex
```

## Claude Code

Claude Code speaks the Anthropic format. Use a Claude API connection or a compatible adapter and name its exact provider/model ID. Gateway credentials use the configured provider account; they do not turn a Claude subscription into shared API credits.

```bash
export ANTHROPIC_BASE_URL=https://jatevo.ai
export ANTHROPIC_AUTH_TOKEN=<your key>
export ANTHROPIC_MODEL=<model id>
claude
```

## Cursor

Settings, Models, OpenAI API key: paste the key, tick **Override OpenAI Base URL** and enter `https://jatevo.ai/v1`. Cursor verifies the address from its own servers, so the console needs a public hostname with TLS; a `127.0.0.1` address does not pass its check.

## OpenAI SDK

```python
from openai import OpenAI
client = OpenAI(base_url="https://jatevo.ai/v1", api_key="<your key>")
r = client.chat.completions.create(model="<model id>", messages=[{"role": "user", "content": "hello"}])
print(r.choices[0].message.content)
```

```javascript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://jatevo.ai/v1", apiKey: "<your key>" });
const r = await client.chat.completions.create({ model: "<model id>", messages: [{ role: "user", content: "hello" }] });
console.log(r.choices[0].message.content);
```

## Anthropic SDK

```python
import anthropic
client = anthropic.Anthropic(base_url="https://jatevo.ai", api_key="<your key>")
m = client.messages.create(model="<model id>", max_tokens=256, messages=[{"role": "user", "content": "hello"}])
print(m.content[0].text)
```

## Gemini format

```python
from google import genai
client = genai.Client(api_key="<your key>", http_options={"base_url": "https://jatevo.ai"})
r = client.models.generate_content(model="<model id>", contents="hello")
print(r.text)
```

## OpenClaw

See [OpenClaw](openclaw.md).

## Anything else

Tools accepting an OpenAI-compatible base URL can use `https://jatevo.ai/v1` with a compatible connection. Anthropic-format tools can use `https://jatevo.ai` with a Messages-compatible connection. The [API](api.md) page lists formats and limits. Persistent WebSockets are currently refused; use HTTP/SSE. Antigravity currently documents no custom endpoint support.
