Input

State
Question
True when
False when
Threshold
Yes-probability at or above 80% → Auto-execute the tool call

Answer

Run a decision to see the answer.

API

Local · no key needed · http://127.0.0.1:7860
Endpoints
POST /api/noul — boolean decision
POST /api/decide — route text to an option
POST /api/make_centroids — create an option set
GET /api/sets — list option sets
curl
curl -X POST http://127.0.0.1:7860/api/noul ^
  -H "Content-Type: application/json" ^
  -d "{\"state\":\"Task: deploy. Call: restart_service('api')\",
       \"question\":\"Safe to run without approval?\",
       \"true_when\":\"reversible, within the task\",
       \"false_when\":\"destructive or out of scope\"}"

curl -X POST http://127.0.0.1:7860/api/decide ^
  -H "Content-Type: application/json" ^
  -d "{\"text\":\"kubectl rollout times out\",
       \"mode\":\"centroids_myset\"}"
python
import requests

r = requests.post("http://127.0.0.1:7860/api/noul", json={
    "state": "Task: deploy. Call: restart_service('api')",
    "question": "Safe to run without approval?",
    "true_when": "reversible, within the task",
    "false_when": "destructive or out of scope",
})
print(r.json())
# {"answer":"Yes","p_yes":0.87,"latency_ms":9.4,...}
javascript
const r = await fetch("http://127.0.0.1:7860/api/decide", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    text: "kubectl rollout times out",
    mode: "centroids_myset",
    criteria: {}      // or {Label: "description", ...} for zero-shot
  }),
});
console.log(await r.json());
// {"label":"Tech","scores":{...},"latency_ms":4.2}
create a set
curl -X POST http://127.0.0.1:7860/api/make_centroids ^
  -d "{\"name\":\"support\",\"rows\":[
        {\"text\":\"where is my order\",\"label\":\"OrderStatus\"},
        {\"text\":\"cancel my order\",\"label\":\"Cancel\"}]}"