Resources (sellable products) module — JetSetGo MCP reference
The resources module manages JetSetGo's sellable-product catalogue. A resource is anything a customer can book — a ferry service, guided tour, accommodation or cruise product, transfer, gift voucher, or an attachable add-on. The module exposes the resource row plus every sibling collection managed on it: fare-class variations, allowed capacity templates, add-on associations, checkout recommendations, bullet points, pickup/dropoff options, variation-to-add-on links, and image-gallery listing.
What the operator uses it for
Operators define and maintain each bookable product here: identity (name, description, imagery), classification (product type/sub-type), the consumption rule set binding, allowed capacity templates, fare classes, add-on availability, checkout recommendations, itinerary notes, pickup/dropoff locations, and an expected fill curve for revenue management.
A resource is not sellable until it has a consumption rule set, at least one allowed capacity template, at least one variation, and a price list (configured in Pricing). Creating a resource auto-creates one default variation via a database trigger. Two specialisations exist: is_addon resources are only sellable attached to a parent; is_package resources are composed onto by the Packaging module.
Two specialisations exist: a resource flagged as an add-on (is_addon) is only sellable attached to a parent product, and a resource flagged as a package root (is_package) is composed onto by the Packaging module.
Where it sits
Resources sit near the top of the catalogue. Upstream, a resource points at: a product type (required — NOT NULL), an optional sub-type, a consumption rule set, cancellation policy, allocation category, email/print templates, and its allowed capacity templates. Downstream, routes, timetabled services, price lists, inventory, packaging, and revenue management all key off the resource id; stop dwell/grace minutes feed route optimisation. Reads resolve foreign-key names (e.g. the product type's name, not just its id) wherever the tenant's schema tracks those relationships.
Key concepts
- Resource — the central sellable-product row; everything that routes, schedules, prices, packs, boards, or reports a journey references it.
- Product type / sub-type — broad classification used for filtering and reporting; it does not drive booking behaviour.
- Consumption rule set binding (
behaviour_id) — the single most important setting: decides which fare items are bookable, how much capacity each consumes, and whether the product is inventory-controlled or ticket-controlled. - Variation — a fare class (Standard/Premium/…) priced in Pricing; one default is auto-created on resource creation.
- Allowed capacity templates (layout/blueprint assignments) — which layout templates may be used; the actual one is chosen per scheduled service.
- Add-on association — a link row connecting an add-on-flagged resource to a parent resource.
- Checkout recommendation group / item — named groups of recommended resources surfaced during checkout.
- Booking curve configuration — a four-parameter expected-fill curve compared against actual sales; it does not change prices itself.
Tools
All writes are two-phase: call without confirm to preview (returns a previewToken and the exact payload), then call again with confirm: true plus the token to execute. Destructive calls also count toward a server-side consecutive-destructive cap.
| Tool | Class | Purpose |
|---|---|---|
resources_list |
Read | List resources; filters: name (contains), active, product type, is_addon. Resolves FK names where tracked. |
resources_get |
Read | Fetch one resource by id with the full field set. |
resources_list_blueprints |
Read | List the capacity-template catalogue available for assignment. |
resources_list_blueprint_assignments |
Read | List a resource's assigned capacity-template links. |
resources_list_recommendations |
Read | List a resource's checkout-recommendation groups with nested items. |
resources_list_variations |
Read | List a resource's fare-class variations. |
resources_list_addons |
Read | List the add-on catalogue (add-on-flagged resources). |
resources_list_addon_assignments |
Read | List add-ons linked to a specific resource. |
resources_list_bullet_points |
Read | List a resource's itinerary-note bullet points. |
resources_list_pickup_dropoff |
Read | List a resource's pickup/dropoff options (type, stop, default flag, order). |
resources_list_variation_addons |
Read | List a variation's add-on associations (included/bundled flag, requirement). |
resources_list_images |
Read | List gallery images eligible for attachment via resources_save. |
resources_save |
Guarded write | Create (omit id; product type required) or update the resource row; upserts custom-field values passed through to storage. |
resources_deactivate |
Guarded write (destructive) | Retire a resource by setting active=false (soft state; there is no hard delete). |
resources_save_variation |
Guarded write | Create or update a fare-class variation (name, cancellation policy, default flag, order, optional per-variation rule-set override). |
resources_remove_variation |
Guarded write (destructive) | Delete a variation. |
resources_save_blueprint |
Guarded write | Assign a capacity template to a resource. |
resources_remove_blueprint |
Guarded write (destructive) | Unassign a capacity-template link (template itself untouched). |
resources_save_addon |
Guarded write | Link an add-on resource to a parent resource. |
resources_remove_addon |
Guarded write (destructive) | Remove an add-on link row. |
resources_save_recommendation |
Guarded write | Create or update a checkout-recommendation group scoped to a resource. |
resources_save_recommendation_item |
Guarded write | Create or update a recommended-resource entry within a group. |
resources_remove_recommendation |
Guarded write (destructive) | Delete a recommendation group (its items go with it per the database relationship). |
resources_remove_recommendation_item |
Guarded write (destructive) | Delete a single recommended-resource entry. |
resources_save_bullet_point |
Guarded write | Create or update an itinerary bullet point. |
resources_remove_bullet_point |
Guarded write (destructive) | Delete a bullet point. |
resources_save_pickup_dropoff |
Guarded write | Create or update a pickup/dropoff option (pick_up or drop_off, stop, description, default, order). |
resources_remove_pickup_dropoff |
Guarded write (destructive) | Delete a pickup/dropoff option. |
resources_save_variation_addon |
Guarded write | Associate an add-on with a variation (bundled/included flag plus requirement descriptor). |
resources_remove_variation_addon |
Guarded write (destructive) | Remove a variation-to-add-on association. |
Out of scope: uploading image bytes (list images and attach one via resources_save instead), or creating capacity templates, rule sets, custom-field definitions, cancellation policies, templates, allocation categories, product types, or stops — those belong to their own modules; resources only reference them by id (or assign capacity templates/add-ons).
Rules worth knowing
- Soft-state lifecycle, not delete. Resources are retired with
active=false(resources_deactivate); there is no hard delete, and resources use anactiveboolean rather than a status string. - The rule-set binding is load-bearing. Changing
behaviour_idon a live resource alters bookability and capacity consumption for future bookings; prefer creating a new resource over re-binding a live one. - Product type is mandatory on create (NOT NULL column); the tool refuses a create without it.
- Optional-column gating. Several recently added columns (stop timing, hotel pickup stop, commuter-app visibility, team-lead descriptor, service-progression profile, pickup notification template) may be absent from a tenant's schema metadata. Reads and writes probe availability once per tenant; writes silently omit unavailable columns instead of failing.
- Image handling. Input
image_urlis stored as theimagecolumn and mirrored into the gallery by a trigger. Byte upload is not possible over MCP. - Booking curve is all-or-nothing.
booking_curve_configis either null or a complete six-key numeric object; partial curves are rejected. - Field validations. Stop wait/grace times are integers ≥ 0; team-lead descriptor caps at 50 characters; print-template ids must be UUID-formatted.
- Custom fields pass through unvalidated (v1 design gap). Mandatory/pattern rules from custom-field definitions are not enforced by the MCP today.
- No unique key. A timeout between execution and response could in rare cases duplicate a newly created resource — re-read before retrying a failed create.
Related modules
- Behaviours — the consumption rule set each resource binds to; governs bookability and capacity consumption.
- Product types — the classification referenced by every resource.
- Fare items (passenger & vehicle types) — the fare items a resource sells, constrained by its rule set.
- Pricing — owns price lists keyed by resource and variation; a resource without one is not sellable.
- Blueprints — owns the capacity templates a resource may assign.
