JSON commands
September 17, 2026 ยท View on GitHub
The CLI uses the offline lexical provider unless you select --provider typesafe.
Lexical scores test the mechanics; they do not interpret missing or conflicting evidence.
Save this as request.json:
{
"state": "The service works normally. The invoice contains a duplicate charge.",
"version": "1",
"questions": {
"team": {
"kind": "choice",
"instructions": "Which team should handle this? Use unknown if unclear.",
"options": ["billing", "technical", "unknown"],
"descriptions": {
"billing": "Charges or invoices",
"technical": "Broken software",
"unknown": "Missing evidence"
}
}
}
}
decido decide --input request.json
decido decide --input request.json --provider typesafe --max-provider-calls 1
cat request.json | decido decide --input -
Every question needs kind and instructions. Choice requires options and
accepts optional descriptions keyed by those labels. Binary accepts optional
evidence; ordinal requires ordered levels. Use choice when unknown must be
an explicit answer. Extra fields, duplicate keys, and nonfinite numbers are rejected.
Decision output includes complete probabilities, exact inputs, question version/hash,
provider identity, semantics, and request traces. --output reports/result.json
writes the same JSON to a file. It contains your source text.
For ranking, save this as candidates.json:
{
"state": {"goal": "Recover access after losing a second authentication factor"},
"objective": "Would this document help achieve the goal?",
"candidates": [
{"id": "survey", "text": "An industry survey of authentication tools"},
{"id": "recovery", "text": "Use a backup code and enroll a new device"}
]
}
decido rank --input candidates.json --provider typesafe --max-provider-calls 1
Rank output retains each candidate, its score, false/true probabilities, provenance, and traces. These are independent relevance estimates; scores across candidates do not sum to one. Stable ties keep input order.
Both commands accept --timeout 30 and --model jev-latest.
The input limit is 1,000,000 characters; the runtime also limits compiled requests.
Errors exit with status 2 and write diagnostics to stderr.