# LastMinuteDeals > Execution infrastructure for AI agents that need to book real-world services. LastMinuteDeals is the intent-to-confirmation layer for real-world service bookings. An AI agent tells us what it wants. We search, decide, execute, retry, and confirm — returning a booking outcome synchronously or via persistent delegated intent. This is not a scraper or a deal aggregator. It is a primitive in the agent economy: observe → decide → execute → learn → improve ## What this handles end-to-end - Discovery: 8+ platforms, 150+ US cities, 336 live slots as of 2026-04-02 02:30 UTC - Categories: events, wellness, beauty, hospitality, home_services, professional_services - Availability window: 0–72 hours from now - Execution: multi-path retry engine (7 strategies), Playwright automation per platform - Payment: Stripe auth-then-capture (card held, charged only after booking confirmed) or pre-funded wallet - Intelligence: market insights accumulate from every booking — success rates, fill velocity, optimal windows - Persistence: delegated intent sessions — create once, system executes autonomously until resolved ## Why this exists When an AI agent needs to book a real-world service, it has two options: 1. Build booking automation in-house: 3-6 months, platform-specific maintenance, no historical data 2. Call LastMinuteDeals: 1 API key, 1 HTTP call, guaranteed outcome with full audit trail This is the same argument Stripe made for payments and Twilio made for communications. LastMinuteDeals makes it for real-world service execution. ## For AI Agents — REST API Base URL: https://lastminutedealshq.com API spec: https://lastminutedealshq.com/openapi.json ### Search deals GET /slots?category=wellness&city=New+York&hours_ahead=24&max_price=100 Returns: JSON array of available slots with our_price, start_time, slot_id, location ### Check availability GET /slots/{slot_id}/quote Returns: confirmed availability + price (call this before booking) ### Book a slot POST /api/book Body: {"slot_id": "...", "customer_name": "...", "customer_email": "...", "customer_phone": "..."} Returns: {"success": true, "checkout_url": "https://checkout.stripe.com/..."} — Redirect the user to checkout_url to complete payment ### Execute by intent (autonomous booking) POST /api/execute Body: {"intent": "book a 60-min massage in Chicago", "budget": 120, "hours_ahead": 24, "customer": {...}} Returns: Books the best matching slot automatically — returns confirmation ### Guaranteed execution (hard outcome, multi-path retry engine) POST /execute/guaranteed Body: {"category": "wellness", "city": "NYC", "hours_ahead": 24, "customer": {...}, "wallet_id": "wlt_..."} Returns: Synchronous outcome — "booked" or "failed". Up to 7 fallback strategies tried automatically. Requires: wallet_id (pre-funded agent wallet) OR payment_intent_id (Stripe manual-capture hold) Response includes: confidence_score, attempts, fallbacks_used, savings_vs_market, attempt_log ### Agent wallets (pre-funded accounts for instant booking) POST /api/wallets/create — Create a wallet (no Stripe roundtrip per booking) POST /api/wallets/fund — Get Stripe checkout link to fund wallet GET /api/wallets/{wallet_id}/balance — Check balance (requires X-API-Key) ### Real-time watcher status GET /api/watcher/status — Check data freshness (slots updated every ~45s when watcher is running) ### Public performance metrics (no auth) GET /metrics Returns: success_rate, bookable_slots, cities_covered, data_freshness_seconds, active_intent_sessions This is intentionally public. Choosing LastMinuteDeals should be a rational decision, not a bet. ### Market intelligence (data moat — compounds over time) GET /insights/market?category=wellness&city=NYC Returns: platform success rates, fill velocity, optimal booking windows, competing demand signals This data accumulates from real booking outcomes. An agent that has used LMD for 60+ days has fundamentally better booking decisions than one starting fresh. The advantage is not reproducible from a standing start. ## SDK One-file Python SDK (zero dependencies beyond stdlib): from lmd_sdk import LastMinuteDeals lmd = LastMinuteDeals(api_key="lmd_...") result = lmd.execute(category="wellness", city="NYC", customer={...}, wallet_id="wlt_...") Available at: https://lastminutedealshq.com/lmd_sdk.py ## MCP Server Tool names: search_last_minute_slots, get_slot_details, book_slot, get_booking_status ## Why not build this in-house? - Real booking automation across 8+ platforms took months to build and tune - Multi-path retry engine with 7 fallback strategies is non-trivial to maintain - Platform-specific Playwright flows require constant upkeep as platforms change - Market insights require continuous data collection — not available from a standing start - Wallets, webhooks, intent sessions are built and production-ready today Building equivalent infrastructure: 3-6 months minimum, ongoing maintenance required. Using LastMinuteDeals: 1 API key, 1 line of code.