# toolroute [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/grossiweb/ToolRoute  
**GitHub Stars:** 1  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/toolroute

## Description
Route AI agent tasks to the best MCP server and LLM, scored on 132+ real benchmark executions.

## Claude Desktop Quick Installation
Remote MCP endpoint (confidence: high). Install path detected from listing signals. Add as a URL/SSE server in your client:

```json
"mcpServers": {
  "toolroute": {
    "url": "https://img.shields.io/badge/license-MIT-green)](./LICENSE"
  }
}
```

## Documentation & README

# ToolRoute

Routing layer for AI agents. One call returns the best MCP server and LLM for any task — scored on 132 real benchmark executions.

[![MIT](https://img.shields.io/badge/license-MIT-green)](./LICENSE)

---

## Quick start

Add to any MCP client (Claude Code, Cursor, Windsurf, Cline):

```json
{
  "mcpServers": {
    "toolroute": {
      "url": "https://toolroute.io/api/mcp"
    }
  }
}
```

Or via HTTP:

```bash
curl -X POST https://toolroute.io/api/route \
  -H "Content-Type: application/json" \
  -d '{"task": "search the web for recent AI papers"}'
```

```json
{
  "approach": "mcp_server",
  "recommended_skill": "exa-mcp-server",
  "recommended_skill_name": "Exa MCP Server",
  "recommended_model": {
    "slug": "claude-haiku-4-5-20251001",
    "display_name": "Claude Haiku 4.5",
    "provider": "anthropic",
    "tier": "cheap_chat",
    "provider_model_id": "anthropic/claude-haiku-4-5-20251001",
    "input_cost_per_mtok": 1.00,
    "output_cost_per_mtok": 5.00
  },
  "confidence": 0.91,
  "alternatives": ["brave-search-mcp", "tavily-mcp"],
  "fallback": "brave-search-mcp"
}
```

> `recommended_model` is always an **object**, not a bare string — the inner `slug` is the canonical model identifier.

---

## How it works

Every task falls into one of three approaches:

| Approach | When | Returns |
|---|---|---|
| `direct_llm` | Task needs only an LLM (code, writing, analysis) | Best model + cost estimate |
| `mcp_server` | Task needs an external tool (search, email, calendar) | Best tool + best model |
| `multi_tool` | Compound task ("send Slack AND update Jira AND email") | Ordered orchestration chain |

Routing uses an LLM classifier (~$0.00001/call) for task understanding, then ranks candidates on a 5-dimension score:

```
Value Score = 0.35 × Output Quality
            + 0.25 × Reliability
            + 0.15 × Efficiency
            + 0.15 × Cost
            + 0.10 × Trust
```

Every reported outcome updates the scores. The routing gets more accurate as more agents use it.

---

## Benchmark results

132 blind A/B executions across code, writing, analysis, structured output, and translation.

| | ToolRoute | Fixed GPT-4o |
|---|---|---|
| Quality wins | 6 | 0 |
| Ties | 9 | 9 |
| Losses | 0 | — |
| Avg cost | $0.001–0.01 | $0.03–0.10 |

---

## API

| Endpoint | Method | Description |
|---|---|---|
| `/api/route` | POST | Route a task to best MCP server + LLM (unified) |
| `/api/route/model` | POST | Route to best LLM model only (no MCP server) |
| `/api/mcp` | POST (JSON-RPC) | MCP server — 16 tools |
| `/api/mcp` | GET (SSE) | SSE transport for MCP clients |
| `/api/report` | POST | Report MCP server outcome (lightweight) |
| `/api/contributions` | POST | Advanced MCP skill telemetry (requires `skill_id` or `skill_slug` in payload) |
| `/api/report/model` | POST | Report **LLM model** outcome — use this for model telemetry, **not** `/api/contributions` |
| `/api/verify/model` | POST | Verify model output quality |
| `/api/skills` | GET | Search MCP server catalog |
| `/api/agents/register` | POST | Register agent identity |
| `/api/agents/preferences` | POST | Set routing preferences (Strategy D Phase 2 — `allow_china`, `regulated_industries`) |
| `/api/health` | GET | Service health check (DB + uptime) |
| `/api/metrics` | GET | Public aggregate platform metrics (no auth) |

Full reference at [toolroute.io/api-docs](https://toolroute.io/api-docs)

---

## SDK

```bash
npm install @toolroute/sdk
```

```typescript
import { ToolRoute } from '@toolroute/sdk'

const tr = new ToolRoute()
const rec = await tr.route({ task: 'parse this CSV and summarize it' })
// execute with rec.recommended_model ...
await tr.report({ skill: rec.recommended_skill, outcome: 'success', latency_ms: 1400 })
```

---

## Self-hosting

```bash
git clone https://github.com/grossiweb/ToolRoute.git
cd ToolRoute
cp .env.local.example .env.local
npm install
npm run dev
```

Requires: `NEXT_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_SUPABASE_ANON_KEY`, `SUPABASE_SERVICE_ROLE_KEY`

---

## How routing works

ToolRoute classifies each task using an LLM classifier (Gemini Flash Lite,
~$0.00001/call) with a keyword fallback. The resulting tier maps to a specific
model via `src/lib/routing/tiers.ts`. Live pricing and capability data come
from the `models` table. See [docs/architecture.md](https://github.com/grossiweb/ToolRoute/blob/HEAD/docs/architecture.md)
for the full picture.

---

## Stack

Next.js 14 (App Router) · Supabase (Postgres) · Vercel

## License

MIT

