Appointment Booking

Find real businesses and book appointments. Books via Cal.com; imports 12 platforms.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
81%
Qualität der Benennung
96%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
90%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'import_booking_url' suggests web access but openWorldHint=falsein import_booking_url

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~1,818Tokens (Tool-Definitionen)
~1.2 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.42% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "appointment-booking": {
      "url": "https://hatchloop.dev/mcp/appointment-booking"
    }
  }
}

Remote-Endpunkte

https://hatchloop.dev/mcp/appointment-bookingstreamable-http

Was es kann

Tool-Inventar

Tools (9)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢find_business(vertical, location, capability, price_band, availability_window, ...)

Given criteria (vertical, location, capability, price band, availability window), return ranked candidate businesses from our supply network. THE NETWORK IS SMALL AND STILL MOSTLY SAMPLE DATA: entries that are not real are named [DEMO] and flagged is_demo - check that field before acting on a result. [free, no key]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "vertical": {
      "type": "string",
      "enum": [
        "personal_services",
        "home_services",
        "professional_services"
      ]
    },
    "location": {
      "type": "object",
      "required": [
        "zip_or_city"
      ],
      "properties": {
        "zip_or_city": {
          "type": "string"
        },
        "radius_miles": {
          "type": "number",
          "minimum": 0,
          "description": "Accepted but NOT applied - no coordinates exist, so results are not restricted to this radius. Disclosed back as radius_miles_applied: false."
        }
      },
      "description": "Where to search. Matched against the business's city, state and ZIP as text -…"
    },
    "capability": {
      "type": "string",
      "description": "Specific service capability required, e.g. 'haircut', 'plumbing',…"
    },
    "price_band": {
      "type": "object",
      "properties": {
        "max_usd": {
          "type": "number"
        }
      }
    },
    "availability_window": {
      "type": "object",
      "properties": {
        "start_iso": {
          "type": "string",
          "format": "date-time"
        },
        "end_iso": {
          "type": "string",
          "format": "date-time"
        }
      },
      "description": "Accepted but NOT APPLIED - it does not narrow results. We do not hold live…"
    },
    "max_results": {
      "type": "integer",
      "default": 5,
      "maximum": 20,
      "minimum": 1
    }
  },
  "required": [
    "vertical",
    "location"
  ]
}
🟢verify_business(smb_id, capability_to_verify)

Look up what we know about a business in our supply network: its contact channels, capabilities, and when the record was last verified. This is a DIRECTORY LOOKUP - it does not contact the business. [free, no key]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "smb_id": {
      "type": "string"
    },
    "capability_to_verify": {
      "type": "string"
    }
  },
  "required": [
    "smb_id"
  ]
}
🔴schedule_appointment(smb_id, action, service, customer, requested_time, ...)

Check availability, book, or cancel via Cal.com. Only completes when the SMB's imported booking link is bound to this deployment's ONE connected Cal.com account; otherwise fails honestly (booking_destination_unmapped) with no charge. No working booking path exists yet for non-Cal.com platforms (voice AI, web form) — those SMBs fail honestly instead of a fabricated confirmation. [from $0.15/call, variable] [async→get_outcome]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "smb_id": {
      "type": "string"
    },
    "action": {
      "type": "string",
      "enum": [
        "book",
        "cancel",
        "check_availability"
      ]
    },
    "service": {
      "type": "string"
    },
    "customer": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "email": {
          "type": "string"
        }
      }
    },
    "requested_time": {
      "type": "object",
      "properties": {
        "preferred_iso": {
          "type": "string",
          "format": "date-time"
        },
        "window_start_iso": {
          "type": "string",
          "format": "date-time"
        },
        "window_end_iso": {
          "type": "string",
          "format": "date-time"
        },
        "duration_minutes": {
          "type": "integer"
        }
      }
    },
    "existing_appointment_id": {
      "type": "string",
      "description": "Required for cancel"
    },
    "notes": {
      "type": "string"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 128,
      "description": "Retry key: a 24h replay returns the original receipt, not re-run or charged."
    }
  },
  "required": [
    "smb_id",
    "action"
  ]
}
🟢get_status(operation_id)

Query the current state of any in-flight async operation by operation_id. [free, no key]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string"
    }
  },
  "required": [
    "operation_id"
  ]
}
🟢get_outcome(operation_id)

Retrieve the final OutcomeReceipt for a completed operation. [free, no key]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "operation_id": {
      "type": "string"
    }
  },
  "required": [
    "operation_id"
  ]
}
🟢preview_cost(operation, params)

Return an expected cost estimate, latency estimate, and success-probability estimate for a proposed call before execution. Returns the exact price when it is fixed, and a min/max range when the cost depends on channel or outcome. It does not promise an accuracy percentage - check cost_range. [free, no key]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string"
    },
    "params": {
      "type": "object",
      "description": "The same request body you would pass to the operation"
    }
  },
  "required": [
    "operation",
    "params"
  ]
}
🟢self_test

Service health probe: runs 6 internal checks and reports how many passed. Confirms the server is up and responding - it does NOT probe each tool individually. Use to verify connectivity before production use. [free, no key]

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
🟢check_booking_link(url)

Free, instant pre-flight check for a booking URL. Classifies which booking platform a URL belongs to and tells you whether import_booking_url will accept it, WITHOUT fetching the page or spending money. Returns the platform, the exact smb_id import_booking_url would assign, the channels the booking will route through, and the inferred country. Use it to de-risk a paid booking BEFORE calling import_booking_url + schedule_appointment. [free, no key]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Full http(s) URL to classify, e.g. 'https://cal.com/jane' or…"
    }
  },
  "required": [
    "url"
  ]
}
🟡import_booking_url(booking_url, business_name, vertical, country_code, contact_phone, ...)

Turn a public booking URL into a callable smb_id for send_message and capture_lead. But schedule_appointment only completes on Cal.com bound to our one connected account — the other 11 always fail schedule_appointment honestly, uncharged. Detects 12 platforms (Cal.com, Calendly, Doctolib, Booksy, Fresha, OpenTable, Setmore, Square, Acuity, Schedulista, Squarespace, BookMyCity). Idempotent — calling twice returns the same smb_id. [free, requires key]

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "booking_url": {
      "type": "string",
      "format": "uri",
      "description": "Full URL the user supplied. Must point at one of the 12 supported booking…"
    },
    "business_name": {
      "type": "string",
      "description": "If omitted, auto-extracted from the page's <title> or og:title."
    },
    "vertical": {
      "type": "string",
      "enum": [
        "personal_services",
        "home_services",
        "professional_services",
        "restaurants",
        "retail",
        "healthcare",
        "fitness"
      ],
      "description": "If omitted, inferred from the booking platform."
    },
    "country_code": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2 (e.g. 'US', 'FR'); routes compliance on later sends."
    },
    "contact_phone": {
      "type": "string",
      "description": "If omitted, the platform integration handles outreach."
    },
    "contact_email": {
      "type": "string"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Free-form capability tags (e.g., ['haircut','color','blowdry'])."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 128,
      "description": "Retry key: a 24h replay returns the original receipt, not re-run or charged."
    }
  },
  "required": [
    "booking_url"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet9 Tools
verifiziertVersion nicht aufgezeichnet9 Tools