An agent sends the same state and questions with sysone_decide, or POST /v1/decide over HTTP.
MCP tool call for the default example
{
"tool": "sysone_decide",
"arguments": {
"state": {
"source": "Support reports excerpt: 6 of the reports received this week",
"reports": [
{
"id": "R-1041",
"platform": "iOS",
"version": "4.2.0",
"text": "Photo upload spins forever on hotel Wi-Fi. It works on mobile data."
},
{
"id": "R-1042",
"platform": "Android",
"version": "4.2.0",
"text": "The app closes when I tap Upload on a photo larger than 12 MB. Every time: open an album, pick a large photo, tap Upload."
},
{
"id": "R-1043",
"platform": "Android",
"version": "4.2.0",
"text": "Upload crashed the app twice today."
},
{
"id": "R-1044",
"platform": "Web",
"version": "4.2.0",
"text": "Love the new album layout!"
},
{
"id": "R-1045",
"platform": "Web",
"version": "4.2.0",
"text": "How do I change the email address on my invoices?"
},
{
"id": "R-1046",
"platform": "Android",
"version": "4.2.0",
"text": "After updating, big video uploads fail with 'file too large'."
}
]
},
"questions": {
"area": {
"type": "choice",
"instructions": "Which product area do the problems in these support reports mainly concern? Use only the report text. Choose none when the reports describe no problem.",
"criteria": {
"uploads": "Uploading photos or videos",
"billing": "Payments, plans, invoices or charges",
"performance": "Slowness or battery use without a failure",
"none": "The reports describe no problem"
}
},
"steps": {
"type": "boolean",
"instructions": "Does at least one report give steps that reproduce a problem? Steps name the actions taken and the failure they cause.",
"criteria": {
"true": "A report lists the actions taken and the failure they cause",
"false": "No report lists actions that reproduce a failure"
}
},
"impact": {
"type": "score",
"instructions": "How badly do the problems in these reports stop customers from using the app? Judge only what the reports say.",
"criteria": [
"No report describes a problem",
"Customers are slowed down but can finish what they started",
"Some customers cannot finish a core task, such as an upload",
"Customers lose money or data"
]
}
}
}
}HTTP and SDK
curl -sS "$SYSONE_URL/v1/decide" \
-H "Authorization: Bearer $SYSONE_TOKEN" \
-H "Content-Type: application/json" \
--data @request.json
import { createClient } from "sysone/client";
const engine = createClient({
url: process.env.SYSONE_URL!,
token: process.env.SYSONE_TOKEN!,
});
const result = await engine.run("decide", request); // request.json
// result.result.answers holds the typed answers; result.meta holds usage.Community projects inspired ideas here; this experiment is our own design and code.