SYSTEMONE

Documentation

1. Get a key

Sign in, wait for approval if your account needs it, open the dashboard and create a key. It is shown once; keep it in your secrets manager.

2. Call the API

One endpoint. Send the key as Authorization: Bearer <key> (what the TypeSafe SDKs do) or as X-API-Key.

curl -s https://systemone.dev.suite.qualesgroup.com/v1/systemone \
  -H "Authorization: Bearer $SYSTEMONE_KEY" \
  -H "content-type: application/json" \
  -d '{
    "state": "I was charged twice and never got my money back.",
    "model": "systemone-latest",
    "questions": {
      "team": {"type": "choice", "instructions": "Which team handles it?",
               "criteria": {"billing": "payments and refunds", "shipping": "deliveries", "technical": "errors"}},
      "urgent": {"type": "noul", "instructions": "Is it urgent?"},
      "anger": {"type": "score", "criteria": ["calm", "annoyed", "furious"]}
    }
  }'
{
  "model": "systemone-1.0",
  "answers": {
    "team": {"type": "choice", "choice": "billing", "confidence": 1.0,
             "probabilities": {"billing": 1.0, "shipping": 0.0, "technical": 0.0}},
    "urgent": {"type": "noul", "noul": 1.0},
    "anger": {"type": "score", "score": 1.0, "confidence": 1.0,
              "legend": {"0": "calm", "1": "annoyed", "2": "furious"},
              "probabilities": {"0": 0.0, "1": 1.0, "2": 0.0}}
  },
  "usage": {"input_tokens": 183, "output_tokens": 3}
}

3. The three primitives

  • · choice: One option from a map of criteria; the answer carries choice, probabilities and confidence.
  • · score: A level on a list of criteria, 0 being the first; the answer carries score, legend, probabilities and confidence.
  • · noul: Yes or no to an instruction; the answer is noul, 1.0 for yes and 0.0 for no.

The engine picks one option per question and does not measure its own doubt: probabilities are one-hot (1.0 on the choice, 0.0 elsewhere) and confidence is always 1.0.

4. With the official SDK

Point the TypeSafe SDK at this portal's URL with base_url; everything else is unchanged.

# pip install typesafe-sdk
from typesafe_sdk import Choice, TypeSafeClient

with TypeSafeClient(api_key=KEY, base_url="https://systemone.dev.suite.qualesgroup.com") as client:
    r = client.system_one("I was charged twice.", {
        "team": Choice(criteria={"billing": "payments and refunds", "shipping": "deliveries"}),
    })
    print(r.choices["team"].choice)

5. Models

GET /v1/models lists them. The aliases resolve to the current engine.

  • · systemone-1.0: the engine: classification by meaning, any language, a few hundred milliseconds.
  • · systemone-careful-1.0: the same engine checking each rule before it answers: for arithmetic or chained rules; slower and dearer.
  • · systemone-latest: alias of the current engine.
  • · jev-latest: alias of the current engine, the default of the TypeSafe SDKs.

6. Limits and errors

  • · 10,000 requests per UTC day across all your keys.
  • · X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset on every response.
  • · 401 missing, invalid or revoked key · 422 malformed request (body with detail) · 429 daily limit reached · 503 engine unavailable.
  • · x-typesafe-request-id on every response, for support.

7. For agents: MCP

The same decisions as an MCP tool, over streamable HTTP at /mcp with the same key in the same headers. Point any MCP client at it.

https://systemone.dev.suite.qualesgroup.com/mcp