Product types module — JetSetGo MCP reference
The producttypes module manages the product-type taxonomy: product types (broad categories such as Ferry, Tour, Bus, Accommodated Cruising) and their product sub-types (e.g. "Dinner Cruise" under a type). Every resource must carry a product type to exist; sub-types are an optional second level of classification.
What the operator uses it for
Operators curate the classification scheme the rest of the platform filters and reports by. A product type carries a name and a required icon identifier; a road_service flag (trace the planned route on roads) exists on newer deployments. Sub-types let operators group related products within a type — for reporting, filtering, and allocation-rule targeting in Pricing, Commissions, and GL rules — without changing booking behaviour.
Classification is deliberately inert: assigning a product type does not affect what can be booked or how capacity is consumed. Those decisions belong to the consumption rule set bound on each resource.
Where it sits
Downstream consumers: every resource references a product type id (required, NOT NULL) and optionally a sub-type id; pricing price lists, commissions, and GL rules reference types/sub-types in their allocation rules as grouping dimensions. Upstream: none — this is pure reference data at the top of the catalogue taxonomy.
Key concepts
- Product type — broad category (Ferry, Tour, Bus, …); name plus icon identifier.
- Product sub-type — optional refinement under a type ("Dinner Cruise" under Tour); parent id plus name.
- Icon class — required identifier for the type's display icon.
- Road-service flag — boolean indicating route tracing on roads; only present where the tenant's schema tracks it.
- Soft delete — both levels retire by setting
deleted=true; reversible, and listings exclude retired rows.
Tools
Write tools follow the two-phase guarded pattern (preview returns a previewToken; confirm executes).
| Tool | Class | Purpose |
|---|---|---|
producttypes_list |
Read | List non-deleted product types with their nested sub-types. |
producttypes_get |
Read | Fetch one product type by id, including nested sub-types. |
producttypes_list_subtypes |
Read | List one product type's sub-types (with parent name where tracked). |
producttypes_save_type |
Guarded write | Create (requires name + icon class) or update any subset of fields. |
producttypes_delete_type |
Guarded write (destructive) | Soft-delete a type (deleted=true, reversible). |
producttypes_save_subtype |
Guarded write | Create (requires parent type + name) or rename a sub-type. |
producttypes_delete_subtype |
Guarded write (destructive) | Soft-delete a sub-type (deleted=true, reversible). |
Rules worth knowing
- Name and icon class are mandatory on create and must be non-empty after trimming; updates accept any subset but reject empty-after-trim values.
- Sub-types cannot be reparented via update. The update path accepts a new name only; the parent type is fixed at creation.
- Deleting a type does not cascade. Its sub-types remain independent rows; soft-delete is per record.
road_serviceis availability-gated. The module probes once per tenant whether the column is tracked and includes it in reads/writes only where available; on create where available it defaults to false.- Reads always filter out soft-deleted rows, so retired types and sub-types disappear from list results rather than appearing with a status flag.
- No ordering guarantees beyond id are documented for lists; do not assume sort order when presenting results.
Related modules
- Resources — every resource references a product type (required) and optionally a sub-type.
- Pricing — uses types/sub-types as grouping dimensions in allocation rules.
- Fare items (passenger & vehicle types) — the separate bookable-entity taxonomy; product types classify products, fare items classify who/what is booked.
