{"name":"dev.hatchloop/appointment-booking","slug":"hatchloop-appointment-booking","title":"Appointment Booking","description":"Find real businesses and book appointments. Books via Cal.com; imports 12 platforms.","url":"https://mcp.market/server/hatchloop-appointment-booking","rating":null,"grade":"A","score":91,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":1,"downloads_week":null,"last_push_at":"2026-10-09T15:59:29.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T04:51:09.928Z","last_ok_at":"2026-11-04T04:51:09.928Z","latency_ms":194},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/basilalshukaili/agentbroker","website":"https://hatchloop.dev/agent-broker/","version":"0.2.13","remotes":[{"type":"streamable-http","url":"https://hatchloop.dev/mcp/appointment-booking"}],"packages":[],"tools":[{"name":"check_booking_link","description":"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]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","description":"Full http(s) URL to classify, e.g. 'https://cal.com/jane' or…"}},"required":["url"]}},{"name":"find_business","description":"Find real businesses near a place, sorted by distance (nearest of those examined; see result.search). Data: OpenStreetMap (ODbL, (c) OSM contributors); phone, website, hours only when mapped. Coverage varies; community-mapped, NOT verified by us; source=openstreetmap rows cannot be booked. Answers within about 5 s: status partial (search_in_progress) means repeat the call. If OSM is down: retriable 'temporarily unavailable', never invented rows. [free, no key] [beta]","write_action":false,"price_micros":0,"input_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","description":"Town, city, address or postal code, with the country if not US: 'Nizwa, Oman'. A bare 5-digit ZIP is a US ZIP; add the country for any other postal code."},"radius_miles":{"type":"number","minimum":0,"description":"Radius in miles (default 3.1, max 25); applies to OpenStreetMap results only."}},"description":"City/town or ZIP, optionally with country ('Nizwa, Oman'). Geocoded by OSM."},"capability":{"type":"string","description":"Kind of business: 'dentist', 'cafe', 'plumber'. Use it or vertical."},"price_band":{"type":"object","properties":{"max_usd":{"type":"number"}},"description":"Supply-network rows only (OpenStreetMap has no prices)."},"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 (no live calendars). The…"},"max_results":{"type":"integer","default":5,"maximum":20,"minimum":1},"city":{"type":"string","description":"Instead of location: a city, e.g. 'Muscat, Oman'."},"region":{"type":"string","description":"With city: a state or region."}},"required":["location"]}},{"name":"get_outcome","description":"Retrieve the final OutcomeReceipt for a completed operation. [free, no key]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"operation_id":{"type":"string"}},"required":["operation_id"]}},{"name":"get_status","description":"Query the current state of any in-flight async operation by operation_id. [free, no key]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"operation_id":{"type":"string"}},"required":["operation_id"]}},{"name":"import_booking_url","description":"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] [limited]","write_action":false,"price_micros":0,"input_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"]}},{"name":"preview_cost","description":"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]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"operation":{"type":"string"},"params":{"type":"object","description":"The same request body you would pass to the operation"}},"required":["operation","params"]}},{"name":"schedule_appointment","description":"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, not charged while no payment rail is on] [async→get_outcome] [limited]","write_action":false,"price_micros":0,"input_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"]}},{"name":"self_test","description":"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]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"verify_business","description":"Look up what we know about a business in our supply network: contact channels, capabilities, last verification. A DIRECTORY LOOKUP - it does not contact the business. Supply-network ids only, not osm:... ids. [free, no key] [limited]","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"smb_id":{"type":"string"},"capability_to_verify":{"type":"string"}},"required":["smb_id"]}}],"scan":{"score":91,"grade":"A","scanned_at":"2026-10-16T11:52:50.686Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-16T11:52:50.686Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 791ms"]},"poisoning":{"score":15,"max":15,"notes":["9 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 7 days ago"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[],"inputs":{"probes":[{"url":"https://hatchloop.dev/mcp/appointment-booking","reachable":true,"authRequired":false,"latencyMs":791,"serverInfo":{"name":"appointment-booking","version":"0.2.16"}}],"packages":[],"repo":{"found":true,"owner":"basilalshukaili","repo":"agentbroker","archived":false,"pushedAt":"2026-10-09T15:59:29Z","stars":0,"forks":1,"openIssues":12,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/189737461?v=4","ownerCreatedAt":"2024-11-26T11:57:49Z","license":"MIT"},"icon":{"url":"https://hatchloop.dev/icon.png?icon.03a62_e3b0jbn.png","source":"registry","width":512,"height":512},"presence":{"stars":0,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-10-09T15:59:29.000Z","score":23}}}},"grade_history":[],"reviews":[]}