Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 15 additions & 14 deletions docs/providers/openai-compatible.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,29 +48,30 @@ You'll find these settings in the Roo Code settings panel (click the <Codicon na

---

## Native Tool Calling (OpenAI-Native Endpoint)
## Native Tool Calling

When you connect this provider directly to the official OpenAI API (or an endpoint that mirrors it exactly), Roo Code can use OpenAI's **native tool-calling** protocol instead of the XML-based tool format.
Roo Code uses the **native tool-calling** protocol exclusively. Models must support native tool calling to work with Roo Code.

At a high level:

- **Tool definitions** are sent to the model using OpenAI's native tools schema.
- **Tool definitions** are sent to the model using the native tools schema.
- **Tool calls** stream back as dedicated tool events, including the tool name, arguments, and metadata.
- **Tool arguments** are streamed incrementally, which reduces latency between the model deciding to use a tool and Roo Code executing it.

### When native tools are used
### Requirements

Roo Code uses native tool calling when **all** of the following are true:
For native tool calling to work, the following must be true:

1. The selected provider is configured for the OpenAI-native protocol (OpenAI or an OpenAI-compatible endpoint that fully supports native tools).
2. The active profile's tool protocol is set to allow native tools (or left at its default, which prefers native tools when supported).
3. The selected model supports native tool calling.
1. The provider endpoint fully supports native tool calling (OpenAI or an OpenAI-compatible endpoint that implements the tools API).
2. The selected model supports native tool calling.

If any of these conditions aren't met, Roo Code falls back to its XML-based tool protocol instead.
:::warning Model Compatibility
Models that do not support native tool calling **cannot be used with Roo Code**. There is no fallback protocol. If you see tool-related errors, verify that your model supports native function/tool calling and that your provider endpoint implements the tools API correctly.
:::

### Example: simple native tool flow

Here's a simplified example of how a file-reading tool might be exposed when using an OpenAI-native endpoint:
Here's a simplified example of how a file-reading tool might be exposed:

```json
{
Expand Down Expand Up @@ -102,11 +103,10 @@ When the model decides to use `read_file`, Roo Code surfaces **streamed tool eve

This gives you lower-latency feedback on which tools are being used and with what arguments.

### Settings and limitations
### Limitations

- **Tool protocol selector:** In advanced settings, you can choose which tool protocol Roo Code should prefer (XML vs native). If you disable native tools here, Roo Code will always use XML even if the provider supports native tools.
- **Model support:** Not all OpenAI-native or compatible models support tools. If a model doesn't support tools, Roo Code will not attempt to send tool definitions for it.
- **Provider quirks:** Some OpenAI-compatible providers only partially implement the native tools API. If Roo Code detects protocol errors, it may fall back to XML tools automatically.
- **Model support:** Not all models support native tool calling. If a model doesn't support tools, it cannot be used with Roo Code. Check your provider's documentation to confirm tool-calling support for your chosen model.
- **Provider quirks:** Some OpenAI-compatible providers only partially implement the native tools API. If you encounter tool-related errors, verify that your provider fully supports the native tools specification.

For a deeper overview of how tools work in Roo Code in general, see the [Tool Use Overview](/advanced-usage/available-tools/tool-use-overview).

Expand All @@ -117,6 +117,7 @@ For a deeper overview of how tools work in Roo Code in general, see the [Tool Us
* **"Invalid API Key":** Double-check that you've entered the API key correctly.
* **"Model Not Found":** Make sure you're using a valid model ID for your chosen provider.
* **Connection Errors:** Verify the Base URL is correct and that your provider's API is accessible.
* **Tool-calling errors:** Roo Code requires native tool calling. If your model does not support native tool calling, you must switch to a model that does. There is no XML or fallback tool protocol.
* **Unexpected Results:** If you're getting unexpected results, try a different model.

By using an OpenAI-compatible provider, you can leverage the flexibility of Roo Code with a wider range of AI models. Remember to always consult your provider's documentation for the most accurate and up-to-date information.