@gojinko/plugin 1.1.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/skills/book-trip/SKILL.md +1 -1
- package/skills/cli/SKILL.md +9 -5
- package/skills/manage-booking/SKILL.md +3 -3
- package/skills/search-flights/SKILL.md +30 -5
- package/skills/search-hotels/SKILL.md +21 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jinko",
|
|
3
3
|
"description": "Search flights, book trips, and manage bookings with the Jinko Travel API. Connects to the Jinko MCP server for live flight pricing, trip management, and payment.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.2.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jinko",
|
|
7
7
|
"url": "https://gojinko.com"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jinko",
|
|
3
3
|
"description": "Search flights, book trips, and manage bookings with the Jinko Travel API. Connects to the Jinko MCP server for live flight pricing, trip management, and payment.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.2.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Jinko",
|
|
7
7
|
"url": "https://gojinko.com"
|
package/package.json
CHANGED
|
@@ -136,7 +136,7 @@ Categories: `BAGGAGE`, `SEAT`, `MEAL`, etc.
|
|
|
136
136
|
}
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
Single synchronous call. The BFF schedules the quote, polls until it completes, schedules fulfillment, and returns a
|
|
139
|
+
Single synchronous call. The BFF schedules the quote, polls until it completes, schedules fulfillment, and returns a canonical Jinko-hosted checkout URL of the form `https://app.gojinko.com/checkout?sid=<cart_id>`. The user opens this URL in a browser; the Jinko `/checkout` page collects any remaining info and triggers the right Stripe flow (embedded Elements or Hosted Checkout) at Pay-button click. Stripe webhooks finalize the booking automatically — no client-side confirm step is required.
|
|
140
140
|
|
|
141
141
|
**Response includes:** `checkout_url`, `session_id`, `total_amount`, `items`.
|
|
142
142
|
|
package/skills/cli/SKILL.md
CHANGED
|
@@ -35,11 +35,12 @@ Auth alternatives:
|
|
|
35
35
|
| `flight-search` | Live pricing — direct search by route + dates, or `--offer-token` price-check (returns bookable `trip_item_token`) |
|
|
36
36
|
| `find-flight` | **Legacy.** Cached route + dates search. Kept for backwards compat; prefer `flight-search` for new work. |
|
|
37
37
|
| `hotel-search` | Live hotel search by city/query/geo/hotel-ids |
|
|
38
|
+
| `hotel-details` | Rich metadata (gallery, facilities, policies, per-room details) for a single hotel |
|
|
38
39
|
| `trip` | Create / update a trip: add items, remove items, set travelers + contact |
|
|
39
40
|
| `select-ancillaries` | Add baggage / seats / meals to a trip item |
|
|
40
41
|
| `book` | Schedule checkout → returns Stripe payment URL |
|
|
41
42
|
| `trip-status` | Full status: cart, quote, fulfillment, bookings |
|
|
42
|
-
| `
|
|
43
|
+
| `get-booking` | Retrieve a booking by `JNK-*` ref + last name (guest access). Old name `lookup-booking` is kept as a hidden deprecated alias. |
|
|
43
44
|
| `refund check / commit / status` | Voluntary refund flow |
|
|
44
45
|
| `schema <command>` | Print request/response schema for a command |
|
|
45
46
|
| `config` | Read/write CLI config |
|
|
@@ -61,9 +62,12 @@ jinko trip --trip-id tr_ABC \
|
|
|
61
62
|
--travelers '[{"type":"ADT","first_name":"John","last_name":"Doe","date_of_birth":"1990-01-15"}]' \
|
|
62
63
|
--contact '{"email":"john@example.com","phone":"+33612345678"}'
|
|
63
64
|
|
|
64
|
-
# 4. Schedule checkout — returns
|
|
65
|
+
# 4. Schedule checkout — returns canonical Jinko-hosted URL
|
|
65
66
|
jinko book --trip-id tr_ABC
|
|
66
|
-
# → { checkout_url: "https://
|
|
67
|
+
# → { checkout_url: "https://app.gojinko.com/checkout?sid=12345" }
|
|
68
|
+
# The /checkout page renders the cart, collects any remaining info,
|
|
69
|
+
# and triggers the right Stripe flow (embedded Elements or Hosted
|
|
70
|
+
# Checkout) on Pay-button click.
|
|
67
71
|
|
|
68
72
|
# 5. User pays in browser (or open the URL programmatically)
|
|
69
73
|
# 6. Poll status
|
|
@@ -105,8 +109,8 @@ jinko trip --trip-id tr_ABC --remove-item-id it_123 --trip-item-token "offer_new
|
|
|
105
109
|
## Post-booking
|
|
106
110
|
|
|
107
111
|
```bash
|
|
108
|
-
#
|
|
109
|
-
jinko
|
|
112
|
+
# Retrieve a booking (guest access — no auth needed beyond ref + last name)
|
|
113
|
+
jinko get-booking --ref JNK-A7B3X9 --last-name Doe
|
|
110
114
|
|
|
111
115
|
# Refund
|
|
112
116
|
jinko refund check --ref JNK-A7B3X9 --last-name Doe
|
|
@@ -7,9 +7,9 @@ description: Look up bookings and manage post-booking operations (refunds, cance
|
|
|
7
7
|
|
|
8
8
|
Post-booking operations using Jinko MCP tools.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Get a booking
|
|
11
11
|
|
|
12
|
-
Use `
|
|
12
|
+
Use `get_booking` to retrieve a booking by its Jinko reference and the traveler's last name. No login required. (Previously named `lookup_booking`; the old name is kept as a deprecated alias on the SDK and CLI.)
|
|
13
13
|
|
|
14
14
|
```json
|
|
15
15
|
{
|
|
@@ -29,7 +29,7 @@ Use `lookup_booking` to find a booking by its Jinko reference and the traveler's
|
|
|
29
29
|
|
|
30
30
|
`flight_refund` supports two auth modes — pick exactly one per call:
|
|
31
31
|
|
|
32
|
-
- **Guest auth** (default for end-users): `booking_ref` + `last_name`. Works without any DevPlatform credential — the server resolves the booking via `/bookings/
|
|
32
|
+
- **Guest auth** (default for end-users): `booking_ref` + `last_name`. Works without any DevPlatform credential — the server resolves the booking via `/bookings/get`.
|
|
33
33
|
- **Authenticated** (DevPlatform OAuth / `jnk_*` API keys): `order_id`. Skips the guest resolver.
|
|
34
34
|
|
|
35
35
|
Do NOT mix the two modes in one call. The BFF rejects mixed combinations up front.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: search-flights
|
|
3
|
-
description: Search for flights, explore destinations,
|
|
3
|
+
description: Search for flights, explore destinations, compare prices across dates, and monitor a fixed route over time using the Jinko Travel API. Use when the user wants to find flights, discover where they can fly, compare prices, or track price changes on a specific route.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Flight Search
|
|
7
7
|
|
|
8
|
-
You have access to
|
|
8
|
+
You have access to Jinko MCP tools for flight discovery. Pick the right one based on what the user knows AND what they want to do:
|
|
9
9
|
|
|
10
10
|
## Tool Selection
|
|
11
11
|
|
|
@@ -13,7 +13,8 @@ You have access to three Jinko MCP tools for flight discovery. Pick the right on
|
|
|
13
13
|
|-----------|-------------|
|
|
14
14
|
| Nothing in mind — wants inspiration | `find_destination` |
|
|
15
15
|
| Route known, flexible on dates | `flight_calendar` |
|
|
16
|
-
| Route + dates, wants live pricing + bookable token | `flight_search` (see the `book-trip` skill) |
|
|
16
|
+
| Route + exact dates, wants live pricing + bookable token | `flight_search` (see the `book-trip` skill) |
|
|
17
|
+
| Route + exact dates, **wants to track price over time** | `price_monitoring` |
|
|
17
18
|
|
|
18
19
|
> `find_flight` (cached search by route + dates) still exists for backwards compatibility but is no longer recommended — `flight_search` returns live prices and a `trip_item_token` in a single step.
|
|
19
20
|
|
|
@@ -59,9 +60,33 @@ Show cheapest prices across a date range for a specific route. Great for "what's
|
|
|
59
60
|
|
|
60
61
|
Cached flight search by route + dates. Still callable for backwards compatibility with older ChatGPT App versions, but not recommended for new integrations. Use `flight_search` (in the `book-trip` skill) for the same inputs plus live pricing + a bookable `trip_item_token` in one step.
|
|
61
62
|
|
|
63
|
+
## price_monitoring
|
|
64
|
+
|
|
65
|
+
Track the price of a specific route + exact dates over time. **Cache-only** — never triggers a live call. Designed for scheduled polling (cron / scheduled job) so you can act on a price drop.
|
|
66
|
+
|
|
67
|
+
**Required params:**
|
|
68
|
+
- `origin`: IATA code (e.g. `"PAR"`)
|
|
69
|
+
- `destination`: IATA code (e.g. `"NYC"`)
|
|
70
|
+
- `departure_date`: YYYY-MM-DD
|
|
71
|
+
- `return_date`: YYYY-MM-DD (omit for one-way)
|
|
72
|
+
|
|
73
|
+
**Optional filters** (use the SAME set between polls — switching filters mid-poll means you're monitoring a different route, not the same one cheaper):
|
|
74
|
+
- `direct_only`, `cabin_class`, `max_price`
|
|
75
|
+
- `include_carriers` / `exclude_carriers` (IATA 2-letter codes)
|
|
76
|
+
- `currency`, `locale`
|
|
77
|
+
|
|
78
|
+
**Response:**
|
|
79
|
+
- `status: "ok"` with a `flight` block (cheapest cached itinerary matching the filters), OR
|
|
80
|
+
- `status: "stale"` when the cache had no matching itinerary — retry later. **Do NOT silently fall back to `flight_search`** on stale; that's a different intent. Only call `flight_search` if the user is ready to book RIGHT NOW.
|
|
81
|
+
|
|
82
|
+
**`offer_token`** in the response is re-shoppable via `flight_search` (price_check mode) when the user decides to act.
|
|
83
|
+
|
|
84
|
+
**Cadence:** poll no faster than the cache refresh interval (typically a few hours). Polling faster is wasted work.
|
|
85
|
+
|
|
62
86
|
## Important notes
|
|
63
87
|
|
|
64
88
|
- **Airport codes**: Use 3-letter IATA codes (PAR, NYC, JFK, CDG)
|
|
65
89
|
- **Dates**: YYYY-MM-DD format
|
|
66
|
-
- **Cached vs Live**: `find_destination` and `
|
|
67
|
-
-
|
|
90
|
+
- **Cached vs Live**: `find_destination`, `flight_calendar`, and `price_monitoring` use cached data — great for exploration and tracking. For live pricing + a bookable token, use `flight_search` (see the `book-trip` skill).
|
|
91
|
+
- **`price_monitoring` is cache-only** — unlike the others, it never falls back to live data. `status: "stale"` is the correct response when the cache is cold; surface it to the user instead of retrying immediately or switching to `flight_search`.
|
|
92
|
+
- The tools support `format: "json"` for structured output or `format: "text"` for readable summaries
|
|
@@ -74,6 +74,27 @@ Two rooms with kids:
|
|
|
74
74
|
- `total_amount` + `currency`: total price for the stay
|
|
75
75
|
- `is_refundable` + `free_cancellation_until`
|
|
76
76
|
|
|
77
|
+
## hotel_details
|
|
78
|
+
|
|
79
|
+
Optional follow-up to `hotel_search`. Returns rich metadata for a single hotel — gallery, full facilities list, policies, per-room metadata (bed types, size, amenities, views). Use when the user wants more info on a specific result before booking.
|
|
80
|
+
|
|
81
|
+
**Required params:**
|
|
82
|
+
- `hotel_id`: the hotel ID from a prior `hotel_search` result
|
|
83
|
+
|
|
84
|
+
**Optional params:**
|
|
85
|
+
- `checkin` / `checkout`: YYYY-MM-DD. Accepted for future cache-key alignment; currently ignored by the BFF but callers are encouraged to pass them when known.
|
|
86
|
+
|
|
87
|
+
**Example:**
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"hotel_id": "HID_12345",
|
|
91
|
+
"checkin": "2026-07-15",
|
|
92
|
+
"checkout": "2026-07-18"
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Response:** `{ hotel: { id, name, description, star_rating, address, coords, images[], facilities[], policies[], checkin_time, checkout_time }, rooms?: [{ id, name, description, amenities[], bed_types[], max_occupancy, size_sqm, views[], images[] }] }`
|
|
97
|
+
|
|
77
98
|
## Booking flow
|
|
78
99
|
|
|
79
100
|
Hotels use the same cart as flights — multi-domain trips supported:
|