Skip to main content
Glama

Last Minute Deals HQ

Smithery lastminutedeals-api MCP server

MCP 服务器,提供实时最后一分钟旅游和活动库存。通过 OCTO 开放标准 从生产预订系统中实时获取,涵盖 15 个国家/地区 28 个城市的 20 家供应商,拥有 7,000 多个可预订时段。库存每 4 小时刷新一次。

搜索可用时段并创建 Stripe 结账会话——客户在我们的页面上付款,供应商自动确认。

安装

Claude Desktop

npx -y @smithery/cli install @johnanleitner1/Last_Minute_Deals_HQ --client claude

Claude Code

npx -y @smithery/cli install @johnanleitner1/Last_Minute_Deals_HQ --client claude-code

Cursor

npx -y @smithery/cli install @johnanleitner1/Last_Minute_Deals_HQ --client cursor

Windsurf

npx -y @smithery/cli install @johnanleitner1/Last_Minute_Deals_HQ --client windsurf

其他 MCP 客户端

npx -y @smithery/cli install @johnanleitner1/Last_Minute_Deals_HQ --client <client-name>

或者直接连接到远程 MCP 端点:

https://api.lastminutedealshq.com/mcp

Related MCP server: Flights MCP

工具

工具

描述

search_slots

搜索可用的旅游和活动。按城市、类别、hours_ahead(提前小时数)窗口和 max_price(最高价格)进行筛选。返回按紧急程度排序(最先开始的优先)的实时库存。

book_slot

为客户预订时段。审批模式(默认)返回 Stripe 结账 URL 供客户付款。自主模式从预充值钱包中扣款并直接返回确认号。支持团体预订的人数设置。

get_booking_status

通过 booking_id 检查预订状态。返回状态、确认号、结账 URL(如果丢失可恢复)、服务详情和付款状态。

get_supplier_info

返回完整的供应商网络——目的地、体验类型、预订平台和确认速度。在搜索前使用以了解有哪些库存可用。

示例

“本周末罗马有哪些 50 美元以下的旅游项目?”

search_slots(city="Rome", hours_ahead=72, max_price=50)
[
  {
    "service_name": "E-Bike Tour of Ancient Rome & Appian Way",
    "business_name": "Bicycle Roma",
    "start_time": "2026-04-19T09:00:00+00:00",
    "price": 42.00,
    "currency": "EUR",
    "location_city": "Rome",
    "hours_until_start": 26.5,
    "slot_id": "a1b2c3..."
  },
  {
    "service_name": "Castelli Romani Wine & Food E-Bike Tour",
    "business_name": "Bicycle Roma",
    "start_time": "2026-04-19T13:00:00+00:00",
    "price": 48.50,
    "currency": "EUR",
    "location_city": "Rome",
    "hours_until_start": 30.5,
    "slot_id": "d4e5f6..."
  }
]

“为 Jane Smith 预订电动自行车之旅”

book_slot(
  slot_id="a1b2c3...",
  customer_name="Jane Smith",
  customer_email="jane@example.com",
  customer_phone="+15550001234"
)
{
  "booking_id": "bk_a1b2c3_x9y8z7",
  "status": "pending_payment",
  "checkout_url": "https://checkout.stripe.com/c/pay/...",
  "message": "Customer should complete payment at checkout_url"
}

“她付款了吗?”

get_booking_status(booking_id="bk_a1b2c3_x9y8z7")
{
  "status": "booked",
  "confirmation_number": "BR-20260419-001",
  "service_name": "E-Bike Tour of Ancient Rome & Appian Way",
  "start_time": "2026-04-19T09:00:00+00:00",
  "payment_status": "captured"
}

供应商

20 家活跃供应商。实时库存覆盖冰岛、意大利、墨西哥、摩洛哥、葡萄牙、日本、坦桑尼亚、芬兰、黑山、罗马尼亚、埃及、土耳其、美国、英国和中国。

供应商

目的地

体验

Arctic Adventures

雷克雅未克、胡萨费德尔、斯卡夫塔费德尔,冰岛

冰川徒步、冰洞、雪地摩托、极光之旅、观鲸、潜水

Bicycle Roma

罗马、阿皮亚安提卡、卡斯特利罗马尼

电动自行车之旅、美食之旅、城市导览、自行车租赁

Boka Bliss

科托尔,黑山

游船之旅、海洞、沿海体验

EgyExcursions

开罗,埃及

金字塔、文化之旅、一日游

Hillborn Experiences

阿鲁沙、塞伦盖蒂、桑给巴尔、乞力马扎罗

私人游猎、乞力马扎罗攀登、超豪华野生动物之旅

Íshestar Riding Tours

塞尔福斯,冰岛

骑马、冰川骑行、维京之旅

Marvel Egypt Tours

开罗、卢克索、阿斯旺

金字塔、尼罗河游船、寺庙之旅

O Turista Tours

里斯本、波尔图、辛特拉、法蒂玛、纳扎雷

私人旅游、一日游、葡萄酒体验

Pure Morocco Experience

马拉喀什、撒哈拉沙漠

沙漠之旅、多日游、文化体验

Ramen Factory Kyoto

京都,日本

烹饪课程、拉面工作坊

REDRIB Experience

赫尔辛基,芬兰

快艇之旅、群岛体验

TourTransfer Bucharest

布加勒斯特,罗马尼亚

城市之旅、德古拉城堡、佩莱斯城堡

Tours El Chiquiz

巴亚尔塔港,墨西哥

龙舌兰酒品鉴、徒步、夜生活之旅、植物园

Trivanzo Holidays

开罗、卢克索、红海,埃及

尼罗河游船、文化之旅、沙漠之旅

TUTU VIEW Ltd

上海、西安、北京、成都、杭州

多日游、丝绸之路、美食之旅、自然之旅

Vakare Travel Service

安塔利亚,土耳其

游船之旅、吉普车游猎、文化短途旅行

All Washington View

华盛顿特区

城市之旅、观光、纪念碑、全景视图

Zestro Bizlinks

日本

体验

Adi Tours - Nuba travel

开罗,埃及

金字塔、文化之旅、尼罗河短途旅行、沙漠之旅、一日游

The Photo Experience

伦敦,英国

摄影之旅、摄影漫步、城市摄影体验

类别

experiences(体验) · wellness(健康) · beauty(美容) · hospitality(酒店服务)

API 密钥

免费。无需信用卡。预订操作需要密钥——搜索功能无需密钥即可使用。

curl -X POST https://api.lastminutedealshq.com/api/keys/register \
  -H "Content-Type: application/json" \
  -d '{"name": "MyAgent", "email": "agent@example.com"}'
{"api_key": "lmd_..."}

在配置 MCP 服务器时或作为 REST 调用的 X-API-Key 请求头传入密钥。

REST API

基础 URL: https://api.lastminutedealshq.com

端点

方法

描述

/api/slots

GET

搜索时段 — citycategoryhours_aheadmax_price

/api/book

POST

为时段创建 Stripe 结账

/api/book/direct

POST

使用预充值钱包预订(自主代理)

/bookings/{id}

GET

检查预订状态

/api/keys/register

POST

获取免费 API 密钥

/api/wallets/create

POST

创建预充值代理钱包

/api/wallets/fund

POST

获取 Stripe 链接以充值钱包

/health

GET

系统健康检查

/metrics

GET

实时系统指标

预订模式

审批(默认) — 返回 Stripe 结账 URL。客户访问链接并付款后,预订会自动与供应商确认。最适合有人参与的流程。

自主 — 需要预充值钱包。系统会立即从钱包中扣款并与供应商确认。无需重定向,无延迟。最适合完全自主的代理。

book_slot(
  slot_id="...",
  customer_name="Jane Smith",
  customer_email="jane@example.com",
  mode="autonomous",
  wallet_id="wlt_..."
)

工作原理

Every 4 hours:
  fetch_octo_slots.py   →  Pull availability from 18 suppliers via OCTO API
  aggregate_slots.py    →  Deduplicate, filter, sort by urgency
  compute_pricing.py    →  Dynamic commission-based pricing
  sync_to_supabase.py   →  Upsert to production database

MCP/REST requests:
  Agent calls search_slots  →  Supabase query  →  Live results
  Agent calls book_slot     →  Stripe checkout  →  OCTO booking  →  Supplier confirmed

状态

  • 实时时段: 5,000+

  • 供应商: 17

  • 国家/地区: 15

  • 刷新间隔: 每 4 小时

  • 正常运行时间: 托管在 Railway 上 (24/7)

  • 支付: Stripe(先授权后扣款 — 客户绝不会因预订失败而被扣款)

Available Tools

4 tools
book_slotAInspect
Book a last-minute slot for a customer. Two modes:

APPROVAL MODE (default — no wallet_id):
    Creates a Stripe Checkout Session and returns a checkout_url.
    You MUST share this URL with the customer immediately — do not summarise it,
    do not wait, show it directly so they can complete payment.
    The booking is confirmed with the supplier after payment succeeds.
    The session expires in 24 hours.

AUTONOMOUS MODE (wallet_id + execution_mode='autonomous'):
    The booking completes immediately using a pre-funded agent wallet.
    Returns a confirmation_number directly — no checkout step, no human action needed.
    Use this when your application manages payment on behalf of the customer.

Args:
    slot_id:        Slot ID from search_slots results.
    customer_name:  Full name of the person attending.
    customer_email: Email address for booking confirmation.
    customer_phone: Phone number including country code (e.g. +15550001234).
    quantity:       Number of people (default 1). Price is per-person × quantity.
    wallet_id:      Pre-funded agent wallet ID (format: wlt_...). Enables autonomous mode.
    execution_mode: Set to 'autonomous' when providing a wallet_id.

Returns:
    Approval mode:   { success: true, checkout_url, booking_id, expires_at, action_required }
    Autonomous mode: { success: true, confirmation_number, booking_id, status: 'booked' }
    On error:        { success: false, error }
ParametersJSON Schema
NameRequiredDescriptionDefault
slot_idYes
customer_nameYes
customer_emailYes
customer_phoneYes
quantityNo
wallet_idNo
execution_modeNo

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does an excellent job disclosing behavioral traits: it explains the two distinct modes, payment flow differences (Stripe Checkout vs. pre-funded wallet), session expiration (24 hours), and immediate action requirements (sharing URL directly). It doesn't cover rate limits or error handling specifics, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sectioning (two modes, args, returns), uses bullet points for readability, and every sentence earns its place by providing essential operational guidance. It's appropriately sized for a complex tool with multiple modes and avoids redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, two distinct modes, payment integration) and absence of both annotations and output schema, the description provides complete context: it explains both operational modes, documents all parameters, specifies return formats for both success cases and errors, and provides necessary implementation guidance. No significant gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all 7 parameters: it clarifies slot_id's source (search_slots results), provides format examples for customer_phone, explains quantity's effect on pricing, and crucially details the interaction between wallet_id and execution_mode that triggers autonomous mode. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Book a last-minute slot for a customer') and distinguishes it from siblings by focusing on booking functionality rather than searching (search_slots), checking status (get_booking_status), or retrieving supplier info (get_supplier_info). The two operational modes further clarify the specific actions involved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each mode: approval mode (default, no wallet_id) for customer-facing payment flows, and autonomous mode (wallet_id + execution_mode='autonomous') for automated payment scenarios. It clearly distinguishes between the two alternatives and specifies the conditions for each.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_booking_statusAInspect
Check the status of a booking.

Args:
    booking_id: The booking_id returned by book_slot.

Returns:
    Booking record with status, confirmation_number, service details, and checkout_url.
    Status values:
      pending_payment — awaiting customer checkout
      fulfilling      — payment received, confirming with supplier (up to 45s)
      booked          — confirmed by supplier; confirmation_number is set
      failed          — fulfillment failed; payment hold cancelled
      cancelled       — booking cancelled and refunded
ParametersJSON Schema
NameRequiredDescriptionDefault
booking_idYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool as a read-only status check (implied by 'Check'), and details the possible status values with explanations, including time estimates (e.g., 'up to 45s' for fulfilling) and outcomes (e.g., 'payment hold cancelled' for failed). This adds valuable context beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose. Each sentence earns its place: the first states the action, the second explains the parameter, the third describes the return, and the list details status values without redundancy. It is efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is complete. It covers the purpose, parameter semantics, return values, and status details, providing all necessary information for an agent to use the tool correctly without gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that booking_id is 'returned by book_slot', clarifying its origin and purpose. This compensates fully for the schema's lack of documentation, providing essential context for the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Check') and resource ('status of a booking'), and distinguishes it from siblings like book_slot (which creates bookings) and search_slots (which finds available slots). It directly addresses what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by referencing book_slot as the source for booking_id, implying this tool should be used after a booking is created. However, it does not explicitly state when not to use it or mention alternatives like get_supplier_info for supplier details, which could help avoid misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supplier_infoAInspect
Returns information about the supplier network and available inventory.

Use this to understand what destinations and experience types are available
before calling search_slots.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the tool as returning information, which implies a read-only operation, but doesn't explicitly state whether it's safe, whether it requires authentication, or any rate limits. The description adds some context about what information is returned (destinations and experience types) but lacks detailed behavioral traits. This is adequate but has clear gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose followed by usage guidance. Every sentence earns its place by adding clear value, with zero waste or redundancy. It's appropriately sized for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is complete enough. It explains what the tool does and when to use it, which covers the essential context. However, it could benefit from more detail on return values or behavioral aspects, but for a read-only info tool, this is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (though empty). The description doesn't need to add parameter semantics, so it naturally compensates by focusing on usage. Baseline for 0 parameters is 4, as the description provides value without parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Returns information about the supplier network and available inventory.' It specifies both the resource ('supplier network and available inventory') and the action ('returns information'), though it doesn't explicitly distinguish from siblings beyond mentioning one alternative. The purpose is clear but sibling differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use this to understand what destinations and experience types are available before calling search_slots.' It clearly states when to use this tool (before search_slots) and names a specific alternative (search_slots), which meets the criteria for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_slotsAInspect
Search for last-minute available tours and activities.

Returns real production inventory from 19 suppliers (Adi Tours - Nuba travel, All Washington View,
Arctic Adventures, Bicycle Roma, Boka Bliss, EgyExcursions, Hillborn Experiences,
Íshestar Riding Tours, Marvel Egypt Tours, O Turista Tours, Pure Morocco Experience,
REDRIB Experience, Ramen Factory Kyoto, TourTransfer Bucharest, Tours El Chiquiz,
Trivanzo Holidays, TUTU VIEW Ltd, Vakare Travel Service, Zestro Bizlinks) sourced live via the OCTO open booking protocol.
Slots are sorted by urgency (soonest first).

Args:
    city:        City or country filter, partial match (e.g. "Reykjavik", "Rome", "Iceland").
                 Leave empty to search all locations.
    category:    Category filter. Use "experiences" for tours/activities.
                 Leave empty for all categories.
    hours_ahead: Return slots starting within this many hours (default: 72).
    max_price:   Maximum price in USD. Set to 0 to return all prices.
    limit:       Max results to return (default 50). Results are sorted by urgency
                 so the most time-sensitive slots come first. Increase for broader
                 browsing (e.g. limit=500). Use city/category filters to narrow
                 results instead of raising the limit when possible.

Returns:
    List of available slot dicts sorted by hours_until_start (soonest first).
ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo
categoryNo
hours_aheadNo
max_priceNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it returns 'real production inventory' from 19 specific suppliers, uses 'live' sourcing via OCTO protocol, sorts by urgency (soonest first), and explains result sorting logic. It doesn't mention rate limits or authentication requirements, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with purpose statement, supplier list, sorting explanation, parameter documentation, and return format - all in appropriate detail. Every sentence adds value, and it's well-organized with clear sections for Args and Returns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no annotations, but has output schema), the description is remarkably complete. It covers purpose, behavioral context, detailed parameter semantics, and explains the return format. With an output schema present, it appropriately doesn't need to detail return value structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed semantics for all 5 parameters: explains city accepts partial matches and can be empty, specifies category should be 'experiences' for tours/activities, clarifies hours_ahead default and meaning, explains max_price=0 means all prices, and provides nuanced guidance on limit usage with sorting implications.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for 'last-minute available tours and activities' with specific details about real inventory from 19 suppliers via OCTO protocol. It distinguishes from siblings like book_slot (booking) and get_booking_status (status checking) by focusing on search functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (searching for last-minute tours/activities) and includes practical guidance like 'Use city/category filters to narrow results instead of raising the limit when possible.' However, it doesn't explicitly state when NOT to use it or mention alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.1
    • Addedbook_slot
    • Addedget_booking_status
    • Addedget_supplier_info
    • Addedsearch_slots
  2. 4 tool updatesv0.1.0
    • Removedbook_slot
    • Removedget_booking_status
    • Removedget_supplier_info
    • Removedsearch_slots
  3. 4 tool updates
    • First observedbook_slot
    • First observedget_booking_status
    • First observedget_supplier_info
    • First observedsearch_slots

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool serves a clearly distinct stage of the booking workflow: supplier discovery, slot search, booking creation, and status lookup. There is no meaningful overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: get_booking_status, get_supplier_info, search_slots, book_slot. The naming is predictable and makes each tool's purpose immediately obvious.

Tool Count5/5

Four tools is well-scoped for a last-minute deals booking API: it covers the essential user journey without unnecessary duplication. The count fits comfortably within the ideal 3–15 range.

Completeness4/5

The core lifecycle is covered: search supplier info, search slots, book, and check booking status. However, there is no cancel or list-bookings operation, and the status enum includes cancelled without providing a way to trigger it, leaving a minor lifecycle gap.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Hotel booking MCP server — the first transaction-complete hotel booking integration for AI agents. Search 300K+ properties in 140+ countries, get live rates and room details, and generate secure checkout URLs. No payment in the AI conversation — guests complete booking at a hosted checkout page and receive a real hotel confirmation number. Set your own booking fee via Stripe Connect.
    8
    5 npm
    3
    -