Capacity unit types (tracks) module — JetSetGo MCP reference
The tracks module manages two master-data primitives that define how capacity is counted across JetSetGo. A capacity unit type (inventory_tracks) is a kind of consumable capacity — seats, lane metres, checked-bag allowances — whose quantity decrements as bookings are made. A limit type (limit_types) is a check-only constraint such as a height ceiling: it is validated during booking but never consumed. Both live at the top of the data model with no upstream dependencies.
What the operator uses it for
Before any space can be modelled, the operator needs a shared vocabulary of what "capacity" means for their operation. This module is where that vocabulary is defined: each capacity unit type gets a name plus singular and plural descriptors (used wherever counters render, e.g. "1 seat" / "40 seats"), and each limit type gets a name plus singular and plural unit labels. Layout templates then attach these types to individual spaces with quantities, and consumption rule sets define how many units each fare item consumes per booking.
The split between the two primitives is deliberate and mechanical:
- Capacity unit types decrement on booking — they are inventory.
- Limit types are only checked against a value — they are constraints.
Where it sits
This is pure master data with no upstream foreign keys. Downstream, layout templates (blueprints) reference both vocabularies when attaching capacities and constraints to capacity units; consumption rule sets (behaviours) define per-fare-item consumption rates against specific capacity unit types; scheduling and pricing consume the resulting structures indirectly through those layers.
Key concepts
- Capacity unit type (
inventory_tracks) — a consumable kind; the unit of account for decrementing inventory. - Limit type (
limit_types) — a check-only constraint kind with its own unit labels. - Singular/plural descriptors —
descriptor_singular/descriptorfor tracks,units_singular/unitsfor limits; required so quantity displays read naturally. - Map name (
map_name) — optional link from a track to a named map surface. - Sort key (
sort_key) — display ordering among tracks. - Hidden flag — hides a track from routine surfaces without retiring it.
- Unrestricted Inventory — a protected hidden system track representing unlimited capacity; it exists so "no limit" can be expressed as a real track reference.
Tools
| Tool | Class | Purpose |
|---|---|---|
tracks_list_tracks |
Read | List capacity unit types; filter by name substring, status; include or exclude hidden. |
tracks_get_track |
Read | Fetch one capacity unit type by id. |
tracks_list_limits |
Read | List limit types; filter by name substring and status. |
tracks_get_limit |
Read | Fetch one limit type by id. |
tracks_save_track |
Guarded write | Create a capacity unit type or update an existing one (refuses the protected system track). |
tracks_save_limit |
Guarded write | Create a limit type or update an existing one. |
Rules worth knowing
- Retire, never delete. There is no delete tool for either primitive. Retirement is expressed by setting
statustoinactive; an update that sets status to inactive is recorded as a deactivation rather than a plain edit. - The Unrestricted Inventory system track is immutable. Updates targeting it are refused outright, regardless of which fields are being changed.
- Create-time requirements. A capacity unit type requires
name,descriptor_singular, anddescriptor; a limit type requiresname,units_singular, andunits. Names are unique per tenant. - Duplicate-name recheck. Create previews re-verify uniqueness immediately before execution, so a same-named record created between preview and confirm aborts the write instead of colliding.
- Server-derived identifiers. Each row's
keyis derived from its name by a database trigger and must never be written directly;sort_keydefaults to max-plus-one on create and is rewritten to a dense sequence on reorder. - Change detection via timestamps. An automatic trigger bumps
updated_aton every change; guarded writes fingerprint this so concurrent edits force re-preview. - Hidden is not inactive. The
hiddenflag suppresses display while keeping the track fully usable in structures; onlystatus=inactiveretires it. - Label resolution downstream. Layout templates must reference these names exactly; unknown labels fail template validation, which is why the blueprint module exposes its own read over this vocabulary.
Related modules
- Layout templates — attach these unit types and limit types to capacity-unit trees with quantities.
- Consumption rules — define how much of each capacity unit type a fare item consumes.
- Schedule — services instantiated from templates carry per-departure counts of these units.
