/Primitives

Primitives

Six primitives, one contract

Small, independent engines you can call alone or combine. Each has one door (app, API, MCP, CLI) and the same four parts.

  1. 1
    Constraints
    What can I configure?

    What a caller declares, as data: one config file per endpoint plus per-call options. One schema, read the same way whoever set it.

  2. 2
    Mechanism
    What always happens?

    What runs on every call no matter who asked. Enforced once, at the door, so an API key gets exactly what the app gets.

  3. 3
    Intelligence
    Who picks the values?

    You set them, or Letterstory derives them from your workspace. Both go through the same door.

  4. 4
    Verification
    Did it hold?

    After the run, each constraint is checked against the output and recorded. Failures are shown, never hidden.

The primitives

What every primitive shares

  • An endpoint with one config file. Read it, replace it, version it. Per-call options win over its defaults, field by field.
  • Runs, not requests. Long work is asynchronous: submit, get a run_id back, poll until it settles. Openers, the one fast primitive, answers inline.
  • Every run records the request and its verification.
  • One capability pair per primitive on your API key (:read and :write), and its own balance.