> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xpander.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Model testing

> How xpander decides which models each harness offers, and how an admin checks a model with Test model.

Two tests decide which models Claude Code, Codex and OpenCode offer in the composer's **Harness and model** picker. xpander tests the catalog models. An admin tests a model with **Test model**.

| Test | Who runs it | Which models | What it decides |
| - | - | - | - |
| **xpander's harness test** | xpander | Catalog models from other vendors, per harness | Claude Code and Codex list another vendor's model only when the pair passed. OpenCode lists every catalog model unless the test showed the pair as broken |
| **Test model** | An admin, in **Models** | Any model of a connected provider | A model from your own provider is listed for a harness after its **Agent checks** for that harness are ready |

## xpander's harness test

xpander runs each harness against each catalog model from another vendor with four checks: a plain answer, a tool call and its result, a streamed answer in the harness's own format, and a long prompt. A harness always lists its own vendor's models. For the picker rules, see [Any model on any harness](https://docs.xpander.ai/run/llm-gateway.md#any-model-on-any-harness).

## Test model

Admins who may manage models open it in [Models](https://platform.xpander.ai/governance/model-access):

**1. Open the provider**

In **Platform > AI governance > Models**, open a connected provider.

**2. Open Test model**

In the model row's **⋯** menu, choose **Test model**.

**3. Run the agent checks**

On **Agent checks**, pick **Claude Code**, **Codex** or **OpenCode**, then choose **Run checks**.

| Tab | What it does |
| - | - |
| **Chat** | Sends your message to the model through the gateway as you. It shows in [Logs](https://platform.xpander.ai/governance/logs) as a model test |
| **Agent checks** | Replays real requests from the harness you pick through the gateway, and names the cause and the fix for any check that fails |
| **Raw request** | Sends a request body you write. **Replay in Test model** on a failed request in Logs fills it with that request |
| **History** | The last run for each harness, with its result |

### Agent checks

Each run checks that the model:

* Is reachable through the gateway
* Streams in the harness's own format
* Makes a function call and continues after the result
* Accepts the harness's system prompt layout
* Accepts the harness's thinking and effort settings
* Accepts the harness's full list of function definitions
* Reports a full context in the harness's own error. This check is **Skipped** when the model's context length is not known yet

Each check shows **Pass**, **Fixed**, **Fail** or **Skipped**. A **Fixed** check means the gateway now adjusts that request for the model, and the fix is saved to the [model's request settings](https://docs.xpander.ai/run/llm-gateway/providers-and-keys.md#how-the-gateway-adapts-requests-to-each-model) as **Learned by Test model**.

| Result | Meaning |
| - | - |
| **Ready for Claude Code.** | Every check passed or was skipped |
| **Ready for Claude Code, with the gateway adjusting some requests for this model.** | At least one check is **Fixed** |
| **Not ready for Claude Code: 1 fix needed.** | A check failed. The failed check names the cause and the fix, such as the vLLM `--tool-call-parser` flag |

![Test model panel for xpander\_ai\_vllm::muse-glimmer on the Agent checks tab with Claude Code selected and a Run checks button, six checks marked Pass, Reports a full context window in the client's own error shape marked Skipped because the model's context length is not known yet, and a Ready for Claude Code. card that ran 4d ago](https://mintcdn.com/xpanderai-099931d1/mMW-uZetfuiL18Az/images/run/llm-gateway/model-testing/test-model-agent-checks.png?fit=max\&auto=format\&n=mMW-uZetfuiL18Az\&q=85\&s=90c29bbe196a4e33c54ea62415f99b3b)

Agent checks for Claude Code on a vLLM model: six checks passed, the context check skipped, and the result card. Shown with sample data.

**Agent readiness** in the provider's **Keys and models…** shows each model's last result per harness.

## After the test

* A model from your own provider shows in the picker for each harness whose checks are ready.
* Every 2 minutes the gateway runs the same agent check on one model of each custom endpoint. See [Endpoint health checks](https://docs.xpander.ai/run/llm-gateway/providers-and-keys.md#endpoint-health-checks).

## Next steps

> [card] [Add your own provider](https://docs.xpander.ai/run/llm-gateway/providers-and-keys.md)
>
> Connect an endpoint and pick its models.

> [card] [Pick a harness and model](https://docs.xpander.ai/use/agents/create.md#harness-and-model)
>
> Choose what an agent runs on.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.