Skip to main content
Drex is NDI’s decision model. System One is the topology it runs in: one synchronous call in which Drex answers every question about a state, with no agent loop, job or workspace. The endpoint, SDK resource, CLI command and MCP tool are named systemone after it. systemone.evaluate answers typed questions about a state — text, or any JSON value — in one synchronous call. There is no workspace and no job: the answers are the response. Each question is keyed by a name you choose, and its answer comes back under the same name.

Evaluate a state

A noul question needs instructions or at least one criterion. A choice question lists its options as criteria keys; a null value means the option name says enough. A score question lists its levels lowest first. confidence is Drex’s average confidence in the answer. It tracks the highest probability but is a different number; do not derive one from the other. legend[Math.round(score)] names the level nearest the expected score, which is not always the most likely level; for that, take the highest entry in probabilities. Limits and input rules are on Drex (Decision Model). A refused request raises InvalidRequestError. Its body.detail.issues lists each problem by path, such as questions.risk.criteria. A missing or invalid API key raises AuthenticationError (401), and a deployment without a decision model answers 501 (NotImplementedByServerError). The SDK does not retry evaluate on its own: RateLimitError (429) and ServerError (503 upstream_unavailable, including a model that did not answer within 45 seconds) are safe to retry yourself, since nothing is stored.

Method signature

Parameters

Returns

A SystemOneResponse: answers keyed as the questions were, the model that answered, token usage, evaluation_time_ms, and request_id. An answer type newer than this SDK arrives as an UnknownAnswer carrying the raw answer in data.