Passenger & vehicle types (fare items) module — JetSetGo MCP reference
The pattypes module manages JetSetGo's taxonomy of bookable people and things — internally called PATs (People And Things). It is a strictly two-level hierarchy: fare item types are the top-level categories (Passenger, Vehicle, Cabin, Equipment, …), and fare categories ("PAT sub-types") are the atomic kinds beneath them (Adult/Child under Passenger; Car/Truck under Vehicle). Fare categories are the unit everything downstream references — consumption rules, price rows, inventory allocation, and manifests all attach to categories, never to types.
What the operator uses it for
Operators maintain the shared vocabulary of booking. On a fare item type they set display labels (singular/plural descriptors), booking-flow phrasing (the question asked when adding one, the question shown for its sub-types, the "add another" button label, summary title), icons, an abbreviation, and operational flags: whether it issues tickets, appears on manifests, is staff-manageable, allows multiple per booking, and whether it is a gift-voucher type. A type can also link a custom field as its descriptor field.
On a fare category they set singular and plural names, icon, sort order within the parent type, an internal comment, and — when the parent type is a voucher type — the voucher value and currency.
Where it sits
Upstream: custom-field definitions (a type may reference one via its descriptor field). Downstream consumers of fare categories: consumption rule sets (behaviours) decide which categories are bookable per resource and their capacity cost; Pricing holds price rows per category; inventory allocates capacity against them; check-in surfaces them on manifests; and resources inherit eligibility through their bound rule set. Because categories carry operational weight, deletion is deliberately not exposed over MCP.
Key concepts
- Fare item / passenger-or-vehicle type ("PAT type") — top-level category carrying labels, phrasing, and operational flags.
- Fare category ("PAT sub-type") — atomic bookable kind under a type; the unit referenced by every other module.
- Booking-flow phrasing —
booking_question,pst_question,add_another_button,summary_title, and singular/plural descriptors that shape customer-facing copy. - Operational flags — issue tickets, show on manifest, staff-manageable, allow multiple per reservation.
- Voucher types — a type flagged
is_voucherwhose categories should carry a value and currency; used by gift vouchers. - Sort key — 1-indexed display order within the parent; user-visible.
Tools
Both write tools follow the two-phase guarded pattern (preview returns a previewToken; confirm executes).
| Tool | Class | Purpose |
|---|---|---|
pattypes_list |
Read | List fare-item types ordered by sort key; filters: name contains, status. |
pattypes_get |
Read | Fetch one fare-item type by id. |
pattypes_subtypes_list |
Read | List a type's fare categories ordered by sort key; optional status filter. |
pattypes_subtypes_get |
Read | Fetch one fare category by id (with parent type name where tracked). |
pattypes_save |
Guarded write | Create (requires name) or update a fare-item type; any subset of fields on update. |
pattypes_subtypes_save |
Guarded write | Create (requires name, plural name, parent type) or update a fare category. |
Rules worth knowing
- No delete tools exist. Deletion is handled outside the MCP with reference-integrity checks because categories are referenced by rule sets, pricing, and inventory; retire records instead with
status='inactive'through the save tools. - Two levels only. Types contain categories; there is no deeper nesting, and no cross-parent moves beyond supplying a new parent id on update.
- Create requirements differ by level. A type needs only a name; a category needs name + plural name + parent type id, and defaults to status
active. - Sort keys auto-assign on create. If omitted, a new category gets the parent's current count + 1; reorder by updating
sort_key. - Voucher validation. When supplied,
voucher_valuemust be greater than zero, andvoucher_currencyis uppercased and truncated to three characters. - Change detection uses full-row fingerprints. These tables expose no reliable last-updated column to the reads, so concurrent-modification checks compare complete row content rather than a timestamp.
- Status is an enum, not free text: only
'active'or'inactive'.
Related modules
- Behaviours — consumption rule sets choose which types/categories are bookable and define each category's capacity consumption.
- Pricing — holds price rows per fare category.
- Resources — sell fare items subject to their bound rule set's eligibility.
