# Klook MCP tools

> Every Klook MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/klook

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

10 tools for Klook on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own Klook account (a traveler account, no partner or supplier access needed)
- Integration page: https://cotlet.dev/integrations/klook-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `klook_search_activities` | read | Tours, tickets and experiences by keyword or destination, with price, rating and cancellation type. |
| `klook_get_activity` | read | Packages with prices, what is included, meeting point and cancellation policy of one activity. |
| `klook_check_availability` | read | Open dates and time slots for a package, with the price per unit (adult, child). |
| `klook_list_activity_reviews` | read | Traveler reviews of an activity with rating, date and text. |
| `klook_list_bookings` | read | Bookings on your account with Booking Reference ID, activity, date and status. |
| `klook_get_booking` | read | One booking with participants, cancellation policy, amend option and voucher link. |
| `klook_get_klookcash_balance` | read | KlookCash on your account with the expiry date of each part. |
| `klook_book_activity` | write | Book a package of an activity for a date. You see the total before anything is paid. |
| `klook_amend_booking` | write | Change the participation date or contact info of a booking that allows Amend booking. |
| `klook_cancel_booking` | write | Cancel a booking and apply for a refund, where it has free cancellation. |

## Search activities

MCP tool: `klook_search_activities`

Access: read.

Returns activities that match a keyword or destination, in the order set by sort. A date keeps only activities available that day. Each item has the lowest price, rating and review count, and the cancellation type: free, conditional or none. Use get_activity for packages and details.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `query` | string | yes | Keyword or destination, e.g. "Mount Fuji day tour" or "Bangkok". |
| `date` | date | no | Only activities available on this date. |
| `sort` | enum | no | popular, price_low, price_high or rating. Default: popular. |
| `currency` | string | no | ISO 4217 code, e.g. USD. Default: your account currency. |
| `limit` | integer | no | 1 to 50. Default: 20. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "klook_search_activities",
    "arguments": {
      "query": "Mount Fuji day tour"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "activities": [
      {
        "activity_id": "41528",
        "title": "Mount Fuji One Day Tour from Tokyo",
        "city": "Tokyo",
        "price_from": {
          "amount": 93.2,
          "currency": "USD"
        },
        "rating": 4.7,
        "reviews": 3120,
        "cancellation": "free"
      },
      {
        "activity_id": "30977",
        "title": "Mt. Fuji and Hakone Day Trip with Lake Cruise",
        "city": "Tokyo",
        "price_from": {
          "amount": 98.5,
          "currency": "USD"
        },
        "rating": 4.6,
        "reviews": 1844,
        "cancellation": "free"
      },
      {
        "activity_id": "52204",
        "title": "Private Mount Fuji Tour with English Driver",
        "city": "Tokyo",
        "price_from": {
          "amount": 112,
          "currency": "USD"
        },
        "rating": 4.8,
        "reviews": 402,
        "cancellation": "none"
      }
    ]
  },
  "isError": false
}
```

## Get activity

MCP tool: `klook_get_activity`

Access: read.

Returns one activity with its packages, each with its own package_id and lowest price. It also returns what is included, the meeting point and the cancellation policy shown on the activity page. Use package_id with check_availability and book_activity.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `activity_id` | string | yes | Activity ID from search_activities. |

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "activity_id": "41528",
    "title": "Mount Fuji One Day Tour from Tokyo",
    "packages": [
      {
        "package_id": "98731",
        "name": "Departure from Shinjuku, English guide",
        "price_from": {
          "adult": 93.2,
          "child": 80
        },
        "currency": "USD"
      },
      {
        "package_id": "98740",
        "name": "Departure from Tokyo Station, English guide",
        "price_from": {
          "adult": 96.5,
          "child": 83
        },
        "currency": "USD"
      }
    ],
    "includes": [
      "Round-trip bus",
      "English-speaking guide",
      "Lunch"
    ],
    "meeting_point": "Shinjuku Station West Exit",
    "cancellation": {
      "type": "free",
      "policy": "Free cancellation up to 24 hours before the start time"
    }
  },
  "isError": false
}
```

## Check availability

MCP tool: `klook_check_availability`

Access: read.

Returns the open dates and time slots of one package in a date range, with the price per unit type. Dates with no slots are left out. Run it before book_activity or amend_booking so you only ask for a slot that exists.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `activity_id` | string | yes | Activity ID from search_activities. |
| `package_id` | string | no | Package from get_activity. Default: all packages. |
| `from` | date | yes | First date to check. |
| `to` | date | no | Last date to check. Default: same as from. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "klook_check_availability",
    "arguments": {
      "activity_id": "activity_8c41d2",
      "from": "2026-10-01"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "activity_id": "41528",
    "package_id": "98731",
    "availability": [
      {
        "date": "2026-11-14",
        "slots": [
          "08:00",
          "09:30"
        ],
        "price": {
          "adult": 93.2,
          "child": 80
        },
        "currency": "USD"
      },
      {
        "date": "2026-11-15",
        "slots": [
          "08:00"
        ],
        "price": {
          "adult": 93.2,
          "child": 80
        },
        "currency": "USD"
      }
    ]
  },
  "isError": false
}
```

## List activity reviews

MCP tool: `klook_list_activity_reviews`

Access: read.

Returns reviews of one activity, newest first by default, each with the rating, date and text. Set sort to rating to see the best rated first. Use it to check what travelers say before you book.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `activity_id` | string | yes | Activity ID from search_activities. |
| `sort` | enum | no | recent or rating. Default: recent. |
| `limit` | integer | no | 1 to 50. Default: 20. |

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "activity_id": "41528",
    "reviews": [
      {
        "rating": 5,
        "date": "2026-10-02",
        "text": "Clear views of Fuji and a guide who kept to the schedule."
      },
      {
        "rating": 4,
        "date": "2026-09-28",
        "text": "Long day, but the lunch stop was good."
      }
    ],
    "next_cursor": null
  },
  "isError": false
}
```

## List bookings

MCP tool: `klook_list_bookings`

Access: read.

Returns the bookings shown on the Bookings page of your account, with the Booking Reference ID, activity, participation date and status. Filter by upcoming, completed or cancelled. Pass booking_ref to get_booking, amend_booking or cancel_booking.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `status` | enum | no | upcoming, completed, cancelled or all. Default: upcoming. |
| `limit` | integer | no | 1 to 100. Default: 20. |

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "bookings": [
      {
        "booking_ref": "KPR834512",
        "activity": "Mount Fuji One Day Tour from Tokyo",
        "date": "2026-11-14",
        "status": "upcoming"
      },
      {
        "booking_ref": "NJT204518",
        "activity": "Nami Island and Petite France Day Tour from Seoul",
        "date": "2026-11-21",
        "status": "upcoming"
      },
      {
        "booking_ref": "BKK771903",
        "activity": "Bangkok Street Food Evening Tour",
        "date": "2026-12-02",
        "status": "upcoming"
      }
    ]
  },
  "isError": false
}
```

## Get booking

MCP tool: `klook_get_booking`

Access: read.

Returns one booking with its date, time, participants and voucher link. The cancellation policy says whether the booking is free to cancel, conditional or not cancellable, and whether Amend booking is available. Check it before amend_booking or cancel_booking.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `booking_ref` | string | yes | Booking Reference ID from list_bookings, e.g. ABC123456. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "klook_get_booking",
    "arguments": {
      "booking_ref": "booking ref"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_ref": "BKK771903",
    "activity": "Bangkok Street Food Evening Tour",
    "date": "2026-12-02",
    "time": "17:30",
    "status": "upcoming",
    "units": {
      "adult": 2
    },
    "total": {
      "amount": 64,
      "currency": "USD"
    },
    "cancellation": {
      "type": "free",
      "policy": "Free cancellation up to 24 hours before the start time"
    },
    "can_amend": true,
    "voucher_url": "https://www.klook.com/en-US/bookings/"
  },
  "isError": false
}
```

## Get KlookCash balance

MCP tool: `klook_get_klookcash_balance`

Access: read.

Returns your KlookCash balance and the entries it is made of, each with its expiry date, like the Klookcash page in your profile. Klook lets you use KlookCash only with at least 10 KlookCash, which usable shows. It takes no parameters.

### Parameters

No parameters.

### tools/call

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

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "klookcash": 1850,
    "usable": true,
    "entries": [
      {
        "amount": 300,
        "expires_on": "2026-11-30"
      },
      {
        "amount": 1550,
        "expires_on": "2027-06-12"
      }
    ]
  },
  "isError": false
}
```

## Book activity

MCP tool: `klook_book_activity`

Access: write. Confirm: waits for the user's OK before it runs.

Books one package for a date and time slot through Klook checkout and returns the Booking Reference ID. With use_klookcash set, it ticks KlookCash in the Discount section, which works only with at least 10 KlookCash and not on Klook Passes, e-Gift Cards, Travel Insurance, Stay+ packages or selected events. If checkout asks for extra authentication, the call stops and returns a link for you to finish it. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `activity_id` | string | yes | Activity ID from search_activities. |
| `package_id` | string | yes | Package from get_activity. |
| `date` | date | yes | Participation date. |
| `time_slot` | string | no | Time from check_availability, if the package has slots. |
| `units` | object | yes | Quantity per unit type, e.g. { "adult": 2, "child": 1 }. |
| `use_klookcash` | boolean | no | Apply KlookCash at checkout where Klook allows it. Default: false. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "klook_book_activity",
    "arguments": {
      "activity_id": "41528",
      "package_id": "98731",
      "date": "2026-11-14",
      "time_slot": "08:00",
      "units": {
        "adult": 2
      },
      "use_klookcash": true
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_ref": "KPR834512",
    "status": "confirmed",
    "activity": "Mount Fuji One Day Tour from Tokyo",
    "date": "2026-11-14",
    "time_slot": "08:00",
    "units": {
      "adult": 2
    },
    "subtotal": {
      "amount": 186.4,
      "currency": "USD"
    },
    "klookcash_discount": {
      "amount": 12,
      "currency": "USD"
    },
    "total_paid": {
      "amount": 174.4,
      "currency": "USD"
    }
  },
  "isError": false
}
```

## Amend booking

MCP tool: `klook_amend_booking`

Access: write. Confirm: waits for the user's OK before it runs.

Changes the participation date, the traveler contact info or both. It works only on bookings where Klook offers Amend booking: not with a No cancellation or Conditional cancellation policy, and not for vouchers whose codes do not begin with KLK. Klook then emails a booking change confirmation and an updated voucher. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `booking_ref` | string | yes | Booking Reference ID from list_bookings, e.g. ABC123456. |
| `date` | date | no | New participation date. |
| `contact` | object | no | Traveler contact info to change, as the Amend booking form shows it. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "klook_amend_booking",
    "arguments": {
      "booking_ref": "NJT204518",
      "date": "2026-11-22"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_ref": "NJT204518",
    "status": "amended",
    "activity": "Nami Island and Petite France Day Tour from Seoul",
    "old_date": "2026-11-21",
    "date": "2026-11-22"
  },
  "isError": false
}
```

## Cancel booking

MCP tool: `klook_cancel_booking`

Access: write. Confirm: waits for the user's OK before it runs.

Applies for a refund on a booking within the free cancellation period stated on the booking, for all units or for the quantity you set. Klook emails a cancellation confirmation, and the previous voucher can no longer be used. For conditional cancellation Klook asks you to contact Klook Customer Support, and the tool stops and says so; with No cancellation there is no refund. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `booking_ref` | string | yes | Booking Reference ID from list_bookings, e.g. ABC123456. |
| `quantity` | integer | no | Units to cancel. Default: all. |
| `reason` | string | no | Reason for the refund form. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "klook_cancel_booking",
    "arguments": {
      "booking_ref": "BKK771903",
      "quantity": 1,
      "reason": "Change of plans"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "booking_ref": "BKK771903",
    "status": "refund_requested",
    "quantity_cancelled": 2,
    "reason": "Change of plans",
    "refund": {
      "amount": 64,
      "currency": "USD"
    }
  },
  "isError": false
}
```
