Skip to content

TOON Format

Tokens-Object-Oriented Notation. A compact typed shorthand designed for LLM context economy.

JSON is great for machines. It’s expensive for LLMs. Every quote, brace, and verbose field name costs tokens — and tokens cost money and context window.

pie title "Average ticket: token breakdown"
    "Field names" : 38
    "Punctuation (quotes, braces)" : 27
    "Whitespace" : 15
    "Actual values" : 20

TOON drops the field names down to 1–3 character aliases, kills the redundant quotes, and uses compact enum codes.

JSON~54 tokens
−46%
TOON format uses approximately 46% fewer tokens than JSON
TOON~29 tokens
TOON/1 T{id:myapp-001,t:"Fix auth bug",s:ip,p:h,typ:bug,lbl:[auth,security],ca:2024-01-15,ua:2024-01-15T10:00:00Z}
TOON/1 T{id:myapp-001,t:"Fix auth bug",s:ip,p:h,typ:bug,lbl:[auth,sec],ca:2024-01-15,ua:2024-01-15T10:00:00Z}

Reading it:

  • TOON/1 — version marker (always present)
  • T{...} — Ticket envelope
  • id: t: s: … — short field aliases
  • [auth,sec] — array literal, no quotes around bare strings
  • 2024-01-15 — bare ISO date for ca (created_at)
  • 2024-01-15T10:00:00Z — RFC3339 timestamp for ua (use as etag!)
FullTOONFullTOON
ididexec_modeem
titletexec_orderord
statussparent_idpar
prioritypchildrench
typetypdescriptiond
labelslblcommentscmt
assigneeaslinkslnk
created_atcaupdated_atua
DomainCodes
Statusbk backlog · td todo · ip in_progress · dn done · bl blocked · cl cancelled
Prioritycr critical · h high · m medium · l low
Typebug · ft feature · tsk task · ep epic · chr chore
ExecModepar parallel · seq sequential
LinkTypeblk blocks · rel relates · dup duplicates

Click a state to see which tools drive each transition:

bktdipbldncl

The two terminal states are dn (done) and cl (cancelled). Both can be archived (soft-deleted) once you’re done with them.

EnvelopeShapeUsed by
T{...}Single ticketticket_get, ticket_create, ticket_claim, ticket_update, ticket_comment
[T{...},T{...}]Array of ticketsticket_list, ticket_backlog, ticket_search, ticket_children
BOARD{bk:[...],td:[...],ip:[...],...}Status-grouped bucketsticket_board
C{a:author,t:"body",ts:timestamp}Comment (inside cmt array)ticket_get only
L{f:from,t:to,k:blk}Link (inside lnk array)ticket_get only
{ok:true}Success acknowledgmentticket_archive, ticket_link
ERR{code:X,msg:"..."}ErrorAll tools (on failure)
CodeCauseRecovery
not_foundTicket doesn’t exist or is archivedVerify the ID; try ticket_search
conflictEtag stale OR ticket already claimedticket_get → retry with fresh ua
seq_blockedSequential predecessor not doneComplete lower exec_order sibling first
invalidSchema violation (e.g. duplicate exec_order)Check parameters against the tool reference
internalServer errorRetry once; check /health if it persists