# book

Unified tool for booking a trip. Actions are determined by which object you provide. SCHEMA: { create?: { // Initiate booking trip_id: string, // Required: ID of the trip to book buyer_contact?: { // Optional: buyer contact info email: string, phone?: string } }, status?: { // Check booking status booking_id: string // Required: ID of the booking to check }, idempotency_key?: string // Prevent duplicate processing } ACTIONS: 1. CREATE BOOKING (create object): Quotes the trip and returns a Stripe Checkout URL for payment authorization. { "create": { "trip_id": "trip_xxx" } } Returns: { "checkout_session": { "id": "cs_xxx", "url": "https://checkout.stripe.com/...", // Open this URL for payment "expires_at": "2026-01-08T15:30:00Z" // quote deadline — payment is refused past it, not re-priced. Not a price hold. Absent if the quote names none }, "pending_booking": { "id": "bkg_xxx", "status": "awaiting_payment", "trip_id": "trip_xxx" } } 2. CHECK STATUS (status object): Retrieves booking status. If payment is authorized but fulfillment hasn't started, automatically triggers fulfillment. { "status": { "booking_id": "bkg_xxx" } } Returns: Full booking object with status, items, passengers, totals, payment info. PREREQUISITES: • Trip must have at least one item (use trip tool with add_item) • Trip must have travelers assigned (use trip tool with upsert_travelers) • Trip must pass validation WORKFLOW (flights): 1. flight_calendar → offer_token 2. flight_search → trip_item_token 3. trip(add_item) → trip created 4. trip(upsert_travelers) → travelers set 5. book(create={trip_id}) → checkout URL WORKFLOW (hotels): 1. hotel_search → htl_* offer_id 2. trip(add_item, trip_item_token=htl_*) → trip created 3. trip(upsert_travelers) → travelers set 4. book(create={trip_id}) → checkout URL Flights and hotels can be in the same trip (single checkout). After book(create), poll with book(status={booking_id}) for confirmation. EXAMPLES: 1. Create booking: { "create": { "trip_id": "trip_xyz789" } } 2. Create booking with buyer contact: { "create": { "trip_id": "trip_xyz789", "buyer_contact": { "email": "john@example.com", "phone": "+1-555-123-4567" } } } 3. Check booking status: { "status": { "booking_id": "bkg_xxx" } } Cost: 1 credit per call.

Agent View of the PolicyLayer registry record for `book`. HTML page: https://policylayer.com/tools/com-gojinko-mcp-jinko/book

## Facts

- Tool: `book`
- Server: Jinko MCP (`https://mcp.gojinko.com`) — https://policylayer.com/tools/com-gojinko-mcp-jinko.md
- Homepage: https://github.com/https://mcp.gojinko.com
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server CORS policy: *
- Server rate-limited: no
- Parameters: 4
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `create` | object | no | Initiate booking for a trip. Quotes the trip and returns a Stripe Checkout URL for payment. Mutually exclusive with `status` — provide exactly one action per ca |
| `status` | object | no | Check the status of an existing booking. If payment is authorized, triggers fulfillment automatically. Mutually exclusive with `create` — provide exactly one ac |
| `user_intent` | string | no | A concise summary of what the user is trying to accomplish, derived from their message or the conversation context that triggered this tool call. This is used t |
| `idempotency_key` | string | no | Idempotency key to prevent duplicate processing |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "book",
    "arguments": {}
  }
}
```

## Why book is rated Medium

An AI agent can call book faster than any human can review: one bad instruction and it creates or modifies resources in Jinko MCP by the hundred, each call as confident as the last.

## Use case

AI agents use book to create or update resources in Jinko MCP, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Jinko MCP environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Jinko MCP:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "book": {
      "limits": [
        {
          "counter": "book_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Jinko MCP (6)

- `trip` — Destructive — https://policylayer.com/tools/com-gojinko-mcp-jinko/trip.md
- `find_destination` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/find-destination.md
- `flight_search` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/flight-search.md
- `hotel_details` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/hotel-details.md
- `hotel_search` — Read — https://policylayer.com/tools/com-gojinko-mcp-jinko/hotel-search.md
- `flight_calendar` — Write — https://policylayer.com/tools/com-gojinko-mcp-jinko/flight-calendar.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-gojinko-mcp-jinko · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-gojinko-mcp-jinko
