tools. Instead of routing by price alone, ARouter re-ranks providers using tool-calling quality signals — so the model that’s best at following tool schemas wins over the cheapest option.
How It Works
For tool-calling requests, ARouter scores providers on:- Schema adherence — Does the provider reliably return valid JSON matching the tool schema?
- Argument accuracy — Are the tool arguments factually correct and well-formed?
- Parallel tool calls — Does the provider correctly handle multi-tool responses?
- Call frequency — Does the provider invoke tools when it should (not under/over-calling)?
Behavior
| Request type | Routing strategy |
|---|---|
No tools | Price-weighted (default) |
With tools | Auto Exacto (quality-ranked) |
With tools + provider.sort: price | Price-weighted (you opted out) |
With tools + model suffix :floor | Price-weighted (you opted out) |
Example
tools present, Auto Exacto is active. ARouter picks the provider endpoint with the highest tool-calling quality score for this model, not necessarily the cheapest one.
Opting Out
Three ways to disable Auto Exacto and fall back to price-based routing: 1. Explicit price sort::floor variant:
Related
:exactoModel Variant — Explicitly enable quality-ranked routing for any request (not just tool calls)- Provider Routing — Full
providerobject reference - Tool Calling — Tool calling guide