DSAIL Quickstarts Guides Compare REST MCP tools Errors

VALIDATION_REJECTED

The claim dictionary did not satisfy the ruleset's validation contract. HTTP 422. Every failing field is named at once.

The values you submitted to a check do not match what the ruleset declared. Nothing was solved; the response names every failing field, not the first one, so one corrected resubmission converges.

The envelope

{"ok": false,
 "error": {"code": "VALIDATION_REJECTED",
           "message": "2 fields failed validation",
           "docs": "https://docs.agents.jaxon.ai/errors/validation-rejected.md",
           "failure_count": 2,
           "failures": [
             {"field": "amount", "expected": "a number, optionally with a unit convertible to USD",
              "received": "\"lots\""},
             {"field": "has_receipt", "expected": "a boolean (true/false, yes/no) or \"unknown\"",
              "received": "missing"}]},
 "versions": {"...": "..."}}

field is the claim name, or the assertion name for a cross-claim failure. expected and received are written for a model to act on directly.

Common causes and the fix

Converging in one hop

Fetch the prompt pack for the hash (GET /v1/prompt-pack/{ruleset_hash}); it states the exact validation rules per claim. Correct every field named in failures, then resubmit once. The dsail Python client's check_with_repair does this loop for you.

See also: Error codes.