Skip to content
Docs / Introduction

Send us the JSON you send Jev

In minutes, get your own 1 MB model: a model for a decision you make over and over, like routing a ticket, approving a refund, flagging a transaction or picking an NPC's next move. No data needed. You send the request you already send Jev, TypeSafe's System One API; we send back a model that answers the same questions in the same shape, with your rules enforced on every decision. It's under 1 MB, and it runs on our servers or yours, even offline.

Then you use it: change the URL and the model, and keep sending the same JSON. For games and rule-based decisions, it beats Jev from day one. For text, it beats Jev clearly once it learns from your decisions: answer a few cases it was unsure about, or send your history, and retrain in a minute.

For coding agents

These docs are also plain Markdown. llms.txt indexes every page, llms-full.txt has all of them in one file, and adding .md to any docs URL gives that page. The API describes every endpoint and field at api.canonopylabs.com/openapi.json. Claude Code, Cursor and Codex can also use it directly through an MCP server: see Use with coding agents.

Against Jev

The game players were built automatically by POST /v1/build from only what Jev is given (the state, the questions and the rules), with no past cases and no recorded play:

Your modelJev
Doom, zero data, 13 games at the same decision rate45 kills, 2 deaths, won 7 of 1339 kills, 5 deaths (default style)
Doom, against Jev's aggressive style45 kills, 2 deaths, won 12 of 1321 kills, 11 deaths
Snake, zero data, 20 games, food at equal steps42.0, never died, ahead in 12 of 2040.0, 1 crash (default strategy)
Bank support, 3,080 real messages, day one with no data85.5% (10 automatic builds, 84.6–86.8%)86.6% few-shot, 83.9% zero-shot
Bank support, after about 400 reviewed cases91.7%86.6% few-shot
Bank support, with the bank's historyabout 95%86.6% few-shot
Consumer complaints (CFPB), with history77.7%65.0% few-shot, 62.9% zero-shot

On text, then: close to Jev on day one for short messages; give it past cases or answer a few reviews to pull clearly ahead. The numbers, how they were measured and every step are in the cookbooks: Doom, Snake and bank support.

What you get

  • Your own model, no data needed to start. Built from the JSON you send Jev, in minutes. Each question has to agree with your instructions and rules at least 95% of the time on fresh situations before it serves.
  • Rules you can count on. Rules on your fields are enforced in code on every decision, and every answer says which rules blocked which actions. Rules on what a message is about are enforced whenever there's a real chance they apply, and unsure cases go to review. See Decisions and rules.
  • Calibrated confidence. When it says 90%, it's right about 90% of the time. Route the unsure ones to a person.
  • Small and fast. Under 1 MB per decision model; text models share one 34 MB reader. Up to 12× faster than Jev in Doom (Jev's times include its network). Download it and run it on your own servers or offline.
  • Better with your decisions. Answer the cases it was unsure about, or send your history: your past cases become the main examples, rules found in your history are proposed for you to confirm, and your model is measured on your own held-back cases. Every retrain is your call and takes about a minute.
  • Flat price. A 5-day free trial that starts when you first use it (your first model or first decision), no card. Then $20 a month per workspace, flat, with unlimited decision models, decisions and retraining and up to 30 builds a month. No tokens, no per-call bill. See Errors and limits.
  • Yours to keep. Every version can be downloaded at any time, even after the trial or if you cancel, and a downloaded model keeps working offline.
  • Every decision on record. A searchable decision log in the console and the API: what was decided, why, which rules applied, and the outcome. See the decision log.

Each decision you set up is a decision model. In the API it's called a domain (/v1/domains), and its name is what you pass as model, for example refunds@latest.

Canonopy and Jev

Jev is a general model that reads your question and answers it, with no setup. We answer the same questions with a model built for your decision. The trade:

JevCanonopy Decisions
Setupnonesend the JSON you send Jev, ready in minutes; add history when you have it
Accuracy on your decisionsgood from the first callgames and rule-based decisions: beats Jev from day one (Doom, Snake); text: close to Jev on day one, clearly ahead once it learns from your decisions (91.7% after about 400 reviewed cases, about 95% with history, vs 86.6% in the bank test)
Calibration error (bank test)0.044–0.0630.006 with history
Hard rulesyours to enforce in codeenforced on every decision, reported in the answer
Where it runstheir cloudour endpoint, or your own machines, even offline
Priceper token$20 a month per workspace, flat (unlimited decision models and decisions, up to 30 builds a month), after a 5-day free trial

Where Jev is better

Jev needs no setup, so it wins on one-off questions nobody will ask twice. On text with no data, Jev is about as accurate on short messages and clearly better on long ones (complaint narratives), and it reads some messages more carefully: in the bank test it was better on messages about lost cards, refunds and disputes. Your rules on what a message is about are enforced whenever there's a real chance they apply, and unsure cases go to review; your history closes the gap. While a model is being built, or for a question it doesn't have yet, your own Jev key can answer in the same shape in day-one mode.

How it works

  1. Send the JSON you send Jev to POST /v1/build, or paste it in the console: one real example of your state, your questions as they are, and your rules in plain words if you like. No past decisions or answers needed; a few examples of what you send Jev make it better (5-20 more real states in examples). See Start with no data.
  2. Wait for ready. Your model is built and checked in a few minutes, with nothing to do in between. Review how it decides any time (optional): about 20 situations with the answer it gives, and why. Correct any and retrain in a minute.
  3. Use it. Change the base URL and the model, and keep sending the same JSON.
  4. Make it better when you like. Add your history, or answer the cases it was unsure about, and retrain in about a minute: see Make it better with your history and Improve your model.

Prefer to describe the decision in plain words instead? The set-up agent does that: see Training and reports.