JESS MOVEDevelopers

Build on it

The rules are in the API,
not the documentation.

Everything the platform promises is enforced at a layer a client cannot route around: the publishing gate in the service, the privacy floor in the query planner, and the invariants as constraints inside PostgreSQL.

The envelope

Every response has the same shape.

Base path /api. Every response carries the signature line — the full line in meta.poweredBy, and an ASCII-safe rendering in the x-powered-by-jessmove header, because HTTP header values must be latin1.

POST /api/prescriptions/next200
{
  "data": {
    "held": true,
    "reason": "The user cannot move right now.",
    "blocks": ["driving"],
    "retryAfterSeconds": 900
  },
  "meta": { "poweredBy": "…" }
}

-- a hold is a 200, never an error

Reference

Endpoints.

MethodPathPurpose
GET/healthLiveness plus AI-gateway status.
GET/systemThe operating system’s invariants, machine-readable.
GET/ai/providersProvider configuration. Staff session required.
POST/ai/completeRaw gateway completion. Staff session required, and metered.
GET/movementsThe published library.
GET/movements/gateThe publishing contract, in full.
POST/movements/:id/checkDry-run the five-variant gate.
POST/movements/:id/publishAttempt publication. Fails closed.
POST/prescriptions/nextThe core call — the next best Snap, or an explicit hold.
POST/body/assessPathway and safety assessment. Can only narrow.
POST/body/planThe daily plan for the assessed pathway.
GET/body/pathwaysThe nine pathways and what each permits.
GET/body/scorecardThe weighting behind the four readings.
GET/body/agentsThe nineteen BodyCommand agents and their supervisor.
GET/acu/policyACU policy: what is metered, what never is, and how allowances work.
POST/acu/quotePrice an action before running it.
POST/acu/wallets/:id/spendCost Governor: bucket precedence, hard stop at zero.

The AI gateway

One interface. No model vendor in any call site.

Every model call in the platform goes through one gateway, which owns provider selection, the fallback chain, prompt redaction, the per-agent cost ceiling, the timeout and the decision log. A refusal on one provider walks to the next; when every provider fails, the caller falls back to the cached plan — a slow model must never produce a broken app.

What the gateway guarantees

  • Names, calendar titles, clinical notes and free text are redacted before any external call.
  • Every agent has a hard cost ceiling per invocation, enforced before the call is made.
  • Timing decisions are a contextual bandit, never a language model.
  • Model calls are logged with input hashes, not inputs.

Vendor independence

Which models sit behind the gateway is deployment configuration, not part of this contract, and can change without any client noticing. Swapping or adding a provider means implementing ModelProvider and registering it — no other call site in the platform changes.

Enforcement

Nine invariants the database rejects on your behalf.

The schema is not a passive record. Each of these is a CHECK constraint with a test that attempts the violating write and asserts the rejection.

CHECK 01

A Snap outside 90–300 seconds is rejected by the database.

CHECK 02

A prescription without a context decision cannot be written.

CHECK 03

A minor without a linked guardian cannot exist.

CHECK 04

A minor placed in an adult mode cannot exist.

CHECK 05

A movement published without review is rejected.

CHECK 06

A cohort report below k = 8 is rejected.

CHECK 07

An ACU debit priced below its own cost floor is rejected.

CHECK 08

Grace tokens outside 0–2 are rejected.

CHECK 09

A proxy action without a named acting person is rejected.

pnpm db:migrate && pnpm db:test — every rule proven to reject the write that violates it

Rules for clients

Things a client is not permitted to do.

  • Render a Snap without the contextDecisionId that authorised it.
  • Display a movement in fewer than its five published variants, or default to standing.
  • Surface any weight, BMI, calorie or appearance framing to a user under 18, in any mode, under any consent setting.
  • Exceed the mode’s daily nudge cap, or re-fire a prompt the engine held.
  • Send calendar titles, attendees or free-text health notes to any model. The redaction list is enforced gateway-side, but a client must not attempt it.
  • Present a composite “health score”. Four readings, separately, or none.

Integration access.

The API and its refusals are documented and public. An ordinary account is the fastest way to see what it returns.

Free to create. 150 AI credits a month for 2 months, then AI features need a plan — everything that is not AI carries on either way. Premium is £5.99 a month and cancels in one click. Under 18 a guardian confirms before the account opens.