DSAIL Quickstarts Guides Compare REST MCP tools Errors

REST API reference

Every route of the hosted DSAIL service, rendered from its published OpenAPI document, so an agent can read the contract before connecting.

Base URL: https://agents.jaxon.ai. Every request and response is JSON. Every error is one envelope — {ok: false, error: {code, message, docs, ...}, versions} — and error.docs is the page on this site that resolves it (see Errors).

Authentication: the header x-jaxon-credential. Obtain an evaluation credential with no sign-up from POST /v1/credentials/evaluation; the response's credential field is the token, shown once. Evaluation credentials are scoped to compile, check and the prompt pack, and capped; a full credential is issued by Jaxon.

The document below is rendered from the published OpenAPI specification. The specification itself is GET https://agents.jaxon.ai/openapi.json, and a copy ships inside the dsail Python package as dsail.contract.openapi().

GET /health

Health

Response 200:

GET /v1/account

Entitlement and usage position (permissive stub in this release)

Response 200:

POST /v1/approvals

Save under a name and bind a human approval to an exact ruleset hash

Request body:

Response 200:

Response 400: the error envelope.

Response 404: the error envelope.

Response 413: the error envelope.

POST /v1/check

Validate a claim dictionary and solve it, in one call

Request body:

Response 200:

Every rule in the ruleset with every assertion's own result, and nothing combined on top of them. Pure over its inputs: no timestamps, no durations, no request id, so the same ruleset and claim dictionary always produce the same bytes — through either door.

Response 400: the error envelope.

Response 404: the error envelope.

Response 413: the error envelope.

Response 422: the error envelope.

Response 500: the error envelope.

POST /v1/compile

Compile a ruleset; get its hash, manifest and validation contract

Request body:

Response 200:

Response 400: the error envelope.

Response 413: the error envelope.

Response 422: the error envelope.

POST /v1/credentials/evaluation

Obtain an evaluation credential: no sign-up, scoped to compile and check, capped, expiring (TJP-621)

Request body:

Response 200:

An evaluation credential, minted on request with no human gate (TJP-621). The token is shown here and nowhere else — the service stores only its hash. Send it as the x-jaxon-credential header. It is scoped to compile, check and the prompt pack, capped per day and over its lifetime, and expires; every response it produces carries x-jaxon-credential-grade: evaluation.

Response 400: the error envelope.

Response 429: the error envelope.

GET /v1/flags

This deployment's own feature flags (not the platform's)

Response 200:

POST /v1/prompt-pack

Prompt pack for source you have not compiled yet

Request body:

Response 200:

Response 400: the error envelope.

Response 404: the error envelope.

Response 413: the error envelope.

Response 422: the error envelope.

GET /v1/prompt-pack/{ruleset_hash}

Extraction prompts, claim schema and validation contract for a ruleset

Response 200:

Response 400: the error envelope.

Response 404: the error envelope.

Response 422: the error envelope.

GET /v1/rulesets

List named rulesets, with what each one decides

Response 200:

Every named ruleset saved for this connection, with enough per row to render a library without a second call.

POST /v1/rulesets

Store a named revision of a ruleset

Request body:

Response 200:

Response 400: the error envelope.

Response 404: the error envelope.

Response 413: the error envelope.

Response 422: the error envelope.

GET /v1/rulesets/{name}

Load a named ruleset with its full contract, revision chain and approvals

Response 200:

A stored ruleset, in the shape a compile of it would return plus what the store knows about it. This is how a saved ruleset is SHOWN — re-compiling remembered source produces a different object the moment the two disagree, and an approval follows the stored bytes.

Response 400: the error envelope.

Response 404: the error envelope.

Response 422: the error envelope.

GET /v1/units

Which unit standards are loaded and what this project added

Response 200:

GET /v1/units/bridge

Whether one unit converts to another, and by what factor

Response 200:

Response 400: the error envelope.

POST /v1/units/converters

Add a converter to this project's unit library

Request body:

Response 200:

Response 400: the error envelope.

Response 413: the error envelope.

GET /v1/vocabulary

The application-domain vocabulary: level one, level-two terms with provenance, version history, K and the promotion rule (TJP-642)

Response 200:

The application-domain vocabulary as a machine-readable, versioned document. Level one is closed and published in full; level two lists every term that is currently in the vocabulary, with its provenance (seeded for cold start, or promoted by K distinct external accounts). Unpromoted proposals are not here — they are counts, not vocabulary.

GET /version

Version

Response 200: