Launch offerup to +40% credits on every packends inClaim →
jagent.
Get a free key

Live routing tool

Jev agent router playground

Choose which agent, tool or model tier should handle a request. Define your routes, run a real Jev Choice decision, then test a confidence policy before wiring it into your application.

Define your routing decision

Routing inputs

Uses the same allowance as the playground: three anonymous runs, then sign in. Signed-in runs use credits. Your draft is saved in this browser for one day. Requests are sent to the model provider. Do not enter secrets.

Route or request review

Changing the threshold rechecks the existing answer without another model call. Calibrate this policy on your own labelled requests; 0.70 is an example.

Ready to test

Run a request to see the chosen route, probabilities and measured latency.

Export current configuration

Send only request to /api/v1/systemone with your jev-agent.com key. Apply policy in your application before invoking a downstream agent or model.

{
  "request": {
    "state": "I was charged twice for my subscription. Please refund the duplicate payment.",
    "questions": {
      "route": {
        "type": "choice",
        "instructions": "Choose the agent best equipped to handle this request.",
        "criteria": {
          "billing": "Payments, invoices, subscription changes and refunds",
          "technical": "Software bugs, outages, authentication and integrations",
          "sales": "New purchases, pricing questions and enterprise plans"
        }
      }
    }
  },
  "policy": {
    "minimumConfidence": 0.7,
    "fallback": "human_review"
  }
}
API authentication and request example →

How does a Jev agent router send requests between agents?

A Jev agent router is one Choice question whose options are your destinations. Give each destination a unique ID and describe when it should be selected. Jev returns a Choice over those destinations. This tool shows that choice, its probabilities, confidence and live latency. Your application uses the result to call the selected agent. This playground stops at the decision and never executes a downstream tool.

Recorded live result

On October 6, 2026 (Asia/Shanghai), the Support agents preset routed “I was charged twice for my subscription. Please refund the duplicate payment.” to billing with displayed confidence 1.00. The live API returned 360 input tokens and 1,218 ms latency. This single observation verifies the workflow; it does not establish accuracy or typical latency.

Jev agent router presets: agents, model tiers and tools

The Support agents preset sends a customer message to billing, technical or sales, the shape most help desks start with. Model tiers asks for the least expensive tier that can still do the job well, so a short extraction lands on fast and a migration plan on deep. Agent tools picks between a private database, web search and a calculator, the decision an agent makes before it writes any tool arguments. Each preset is only a starting point: rename the routes, rewrite the descriptions and keep up to eight.

In a Jev agent router the descriptions do most of the work. Jev compares the request with what you wrote for each route, so two routes described in overlapping words split the probability between them, and the confidence drops. When a request lands on the wrong route, rewrite the description of the route it should have reached before you touch the threshold.

Can I use this as a model router?

Yes: choose the Model tiers preset and replace the route IDs and descriptions with your own model policy. The fast, balanced and deep options are example capability tiers, not measured recommendations for specific models. Evaluate both routing quality and the downstream answer quality on your own workload.

This is separate from TypeSafe’s Jev Router on OpenRouter, which routes and generates a chat completion. The link below explains that product and our measured results.

How do I handle uncertain routing decisions?

The threshold is a local policy, not a model parameter. Missing confidence or an unknown route always goes to human review. Increasing the threshold does not change the original prediction. Validate the tradeoff between automatic routing and review volume on labelled examples before deploying.

A worked example from this tool's own test: a request that mixed a paid upgrade with an API-quota problem came back as billing at confidence 0.61, with billing 0.74 and technical 0.26. At a threshold of 0.70 it went to human review; at 0.50 the same answer routed to billing without a second call. That is the trade in one request: a lower bar routes more on its own and sends more mixed requests to a single desk.

Which decision model should power the agent router?

This playground asks Jev. The model field in the exported request can name any decision model this site serves, and routing is where their differences show. Solar Decide takes at most 26 options and Solar Decide Flash takes at most 26 options and Tev1 4B Experimental takes at most 20 options, which is plenty for eight routes but not for a full intent catalogue. With 59 and 77 options in our 2026-10-08 test, Clef Flash picked the right one 92% of the time, Jev 79%. For a router on the request path, latency counts too: the fastest medians from US East were Tev1 4B Experimental 136 ms, GPT-6 Luna Decisions 138 ms, Jev 1.13 184 ms.

The full comparison is on Decisions API vs Jev, and each model's limits are on the decision models page. Whatever you pick, route a few hundred of your own labelled requests through it before trusting the threshold.

javascript
// Save the exported configuration as configuration.json.
// Save this script as route.mjs; run: node route.mjs
// Set JEV_AGENT_KEY to a key issued by jev-agent.com.
import { readFileSync } from "node:fs";
const config = JSON.parse(readFileSync("configuration.json", "utf8"));
if (!process.env.JEV_AGENT_KEY) throw new Error("Set JEV_AGENT_KEY first");
const res = await fetch("https://jev-agent.com/api/v1/systemone", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.JEV_AGENT_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify(config.request)
});
const response = await res.json();
if (!res.ok) throw new Error(response.error || "Routing request failed");
const decision = response.answers.route;
const allowedRoutes = new Set(Object.keys(config.request.questions.route.criteria));
const confidence = decision?.confidence;
const route = allowedRoutes.has(decision?.choice)
  && Number.isFinite(confidence)
  && confidence >= config.policy.minimumConfidence
  && confidence <= 1
    ? decision.choice
    : config.policy.fallback;
console.log({ route, decision });
// Your application dispatches to route only after this check.