← All toolsLive tool · your own data

Jev Skill Router

Watch Jev send each task to the one tool that can actually do it — with the confidence behind every pick. The routing decision in front of your agent's tool loop, live. No key, just press route.

Tasks — one per line. Edit these or paste your agent's real ones.
Each task is one Jev decision — the single tool from the toolbox that can actually do it (or none), with the confidence behind the pick.
0/12routed
0.0selapsed
0/sdecisions/sec
Jev cost
TaskRouted toConfidence
What's the weather in Tokyo right now?
Compute the monthly payment on a $400,000 loan at 6.5% over 30 years.
Summarize the attached quarterly_report.pdf in three bullets.
How many users signed up in the last 7 days?
Email the design team that the launch is moved to Friday.
Book a 30-minute sync with Priya next Tuesday afternoon.
Generate a hero image of a fox reading a book, watercolor style.
Who won the 2022 World Cup?
Run this Python snippet and tell me what it prints.
What is 17 * 348 + 92?
Find the latest news about the new Claude model release.
Just say something encouraging — I had a rough day.

Tool routing is one Jev call in front of your agent's loop. Get an API key →

A live demo — the same typed choice returns a clean enum you switch on directly (no parsing, no malformed tool names) at $0.42/M input tokens.

Get an API key →Ready-made APIs
Build this with Jev

The same demo is one Jev call

  1. Take each incoming task
  2. Ask Jev which tool from your toolbox should handle it
  3. Route in parallel in front of your agent's tool loop
  4. Call the tool Jev picked — or just answer when it's 'none'
one call per task · parallel · a typed enum you switch on
const results = await Promise.all(items.map((item) =>  // items = user tasks
  fetch("https://jevtypesafeai.com/api/v1/decide", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.JEV_API_KEY}` },
    body: JSON.stringify({
      state: item,
      questions: {
        skill: { type: "choice", instructions: "Which tool should handle this?",
               criteria: { web_search:"search", run_code:"compute", read_file:"read doc",
                           sql_query:"query DB", send_email:"email", calendar:"schedule",
                           image_gen:"make image", none:"no tool" } },
      },
    }),
  }).then((r) => r.json())
));
call(results[i].answers.skill.choice, task);   // → "web_search"
See a real decision WEB_SEARCH · 196ms
State
Task from the user:
“What's the weather in Tokyo right now?”
Question choice · skill
web_search94%
none3%
run_code2%
latency 196mscost $0.000012

How it works

An agent with tools has to answer one question before it does anything: which tool should handle this request? Here every task is a single Jev call that returns a typed choice over a fixed toolbox — web_search, run_code, read_file, sql_query, send_email, calendar, image_gen, or none — plus a calibrated confidence and a clarity score, all streamed in parallel.

It's the routing decision that sits in front of an agent's tool loop, made visible: watch each task land on the tool that can actually carry it out, with the odds behind the pick.

Build it into your agent

With a hosted key the same Jev call becomes your tool router: a typed enum per request at $0.42/M input tokens, in milliseconds, that you switch on directly — no JSON parsing, no hallucinated tool names, no malformed arguments to catch. Route to the right tool the first time, fall back to plain chat when the answer is 'none', and gate the risky tools (send_email, run_code) behind a confidence threshold.

FAQ

Does Jev really pick a tool for each task?

Yes — every task is an independent Jev call returning a typed choice over the toolbox, with the probability behind the chosen tool. The batch runs in parallel and the routing decisions stream in live.

How is this different from an LLM's function calling?

A chat model returns free-form text you have to parse and can hallucinate a tool name or bad arguments. Jev returns a typed enum you switch on directly, with calibrated confidence — so you can gate low-confidence or high-risk routes instead of trusting a string.

Is it free? Can I route my own tasks?

Free, no key — a rate-limited call to the live Jev API on a sample task list. To route your agent's real traffic against your own toolbox, wire the same call in with a hosted key.

More: Model Router demo · Agent Loop Detector · All Jev tools · Jev API docs

Jev Skill Router — pick the right tool for an agent, live · Jev by TypeSafe AI