deCloud
MA CHAIN · 20260131
← All models

TypeSafe: Jev 1.13

Origin
typesafe/jev-1.13

Jev is a structured decision model from TypeSafe, and the first of its System One models. System One models make fast, structured decisions for software, returning a typed choice rather...

Pricing
Billed at actual usage

Billing follows the provider's own reported cost. The unit prices here are for reference; a model marked "billed at actual usage" has no reliable pre-call price, so your usage page is the record of what you paid.

Capabilities

Vision

Not a chat model

It takes no messages and returns no text, so the OpenAI-compatible endpoints — /v1/chat/completions, /v1/messages, /v1/responses — cannot be used with it and will reject the request. It answers only on POST /v1/decisions, where both sides are structured: you send some material plus a set of typed questions, and it answers each one with a probability.

Call it

A request has two parts: state is the material being judged (a string or an object), and questions maps each question's own ID to its definition. Every question carries a type, instructions and criteria. The response's answers are keyed by those same IDs. Up to 32 questions per call, all evaluated against the same state in parallel — so classification and routing usually fit in one call rather than one call per question.

curl https://macdecloud.com/v1/decisions \
  -H "Authorization: Bearer dcld-sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "typesafe/jev-1.13",
    "state": "Customer wrote: my card was charged twice for order #4471.",
    "questions": {
      "urgent": {
        "type": "noul",
        "instructions": "Does this need a reply today?",
        "criteria": {
          "true": "money has already left the customer account",
          "false": "nothing has been charged yet, or the charge is pending"
        }
      },
      "team": {
        "type": "choice",
        "instructions": "Which team should handle this?",
        "criteria": {
          "billing": "payments, refunds, double charges",
          "support": "how-to and account questions",
          "abuse": "policy violations"
        }
      }
    }
  }'

The three question types

The three types want criteria in three different shapes, which is the easiest thing here to get wrong. noul is a yes/no question: criteria is an object carrying both a true and a false key, and the answer looks like {"type":"noul","noul":0.89} — the probability that it holds. choice is single-select: criteria is an object whose keys are the options and whose values describe them; the answer gives the chosen key, a probabilities map over every option, and a confidence. score is a rubric: criteria is an array of level descriptions, and the answer carries a score weighted by probability over those indices, plus a legend (index to description), probabilities and confidence.

Answers carry confidence

All three types answer with a probability, not just a verdict — which is the difference between this and asking a chat model for JSON. You can threshold on confidence and route anything below it to a human, instead of accepting a verdict that never says how sure it is.

Python

The OpenAI SDK has no method for this — the endpoint is not part of its protocol. POST with httpx.

import httpx

resp = httpx.post(
    "https://macdecloud.com/v1/decisions",
    headers={"Authorization": "Bearer dcld-sk-..."},
    json={
        "model": "typesafe/jev-1.13",
        "state": "Customer wrote: my card was charged twice for order #4471.",
        "questions": {
            "urgent": {
                "type": "noul",
                "instructions": "Does this need a reply today?",
                "criteria": {
                    "true": "money has already left the customer account",
                    "false": "nothing has been charged yet, or the charge is pending",
                },
            },
            "team": {
                "type": "choice",
                "instructions": "Which team should handle this?",
                "criteria": {
                    "billing": "payments, refunds, double charges",
                    "support": "how-to and account questions",
                    "abuse": "policy violations",
                },
            },
        },
    },
    timeout=120,
)
for qid, answer in resp.json()["answers"].items():
    print(qid, answer)
TypeSafe: Jev 1.13 (ORIGIN) · deCloud