Book, reschedule and cancel appointments at any business on the BookingMaven marketplace.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Reserve an appointment slot at a service business. Provide a unique idempotency_key to safely retry without double-booking. Get service_id from get_business and start_time/end_time from get_availability.
ISO 8601 datetime for the appointment end (from get_availability)
The service ID from get_business results
ISO 8601 datetime for the appointment start (from get_availability)
The business slug from search_businesses results
Customer full name
Customer email address
Unique key to prevent duplicate bookings (e.g. UUID). Reuse the same key to safely retry.
Any special requests or notes for the business
Staff member ID (from get_business). Omit to auto-assign.
Customer phone number (optional)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Reserve an appointment slot at a service business. Provide a unique idempotency_key to safely retry without double-booking. Get service_id from get_business and start_time/end_time from get_availability.
| Argument | Type | Description |
|---|---|---|
| notes | string | Any special requests or notes for the business |
| end_time* | string | ISO 8601 datetime for the appointment end (from get_availability) |
| staff_id | string | Staff member ID (from get_business). Omit to auto-assign. |
| service_id* | string | The service ID from get_business results |
| start_time* | string | ISO 8601 datetime for the appointment start (from get_availability) |
| business_slug* | string | The business slug from search_businesses results |
| customer_name* | string | Customer full name |
| customer_email* | string | Customer email address |
| customer_phone | string | Customer phone number (optional) |
| idempotency_key* | string | Unique key to prevent duplicate bookings (e.g. UUID). Reuse the same key to safely retry. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"business_slug",
"service_id",
"start_time",
"end_time",
"customer_name",
"customer_email",
"idempotency_key"
],
"properties": {
"notes": {
"type": "string",
"description": "Any special requests or notes for the business"
},
"end_time": {
"type": "string",
"description": "ISO 8601 datetime for the appointment end (from get_availability)"
},
"staff_id": {
"type": "string",
"description": "Staff member ID (from get_business). Omit to auto-assign."
},
"service_id": {
"type": "string",
"description": "The service ID from get_business results"
},
"start_time": {
"type": "string",
"description": "ISO 8601 datetime for the appointment start (from get_availability)"
},
"business_slug": {
"type": "string",
"description": "The business slug from search_businesses results"
},
"customer_name": {
"type": "string",
"description": "Customer full name"
},
"customer_email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Customer email address"
},
"customer_phone": {
"type": "string",
"description": "Customer phone number (optional)"
},
"idempotency_key": {
"type": "string",
"description": "Unique key to prevent duplicate bookings (e.g. UUID). Reuse the same key to safely retry."
}
}
}Cancel a booking you made. Requires booking_id and the lookup_token from book_appointment. Safe to retry (idempotent). No account needed.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string | The booking_id returned from book_appointment |
| lookup_token* | string | The lookup_token returned from book_appointment for this booking |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"booking_id",
"lookup_token"
],
"properties": {
"booking_id": {
"type": "string",
"description": "The booking_id returned from book_appointment"
},
"lookup_token": {
"type": "string",
"description": "The lookup_token returned from book_appointment for this booking"
}
}
}Get a BookingMaven signup link pre-filled with the customer's details. The customer visits the link to set their password and activate their account, which links their past bookings.
| Argument | Type | Description |
|---|---|---|
| name* | string | Customer full name |
| email* | string | Customer email (use the same email used for booking) |
| phone | string | Customer phone number (optional) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Customer full name"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Customer email (use the same email used for booking)"
},
"phone": {
"type": "string",
"description": "Customer phone number (optional)"
}
}
}Get open appointment slots for a business on a specific date. Returns ISO timestamps for each available slot. Use these start_time/end_time values when calling book_appointment.
| Argument | Type | Description |
|---|---|---|
| date* | string | Date to check in YYYY-MM-DD format |
| staff_id | string | Specific staff member ID (from get_business). Omit to check any available staff. |
| timezone | string | IANA timezone string (e.g. 'America/New_York'). Defaults to business local time. |
| business_slug* | string | The business slug from search_businesses results |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"business_slug",
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date to check in YYYY-MM-DD format"
},
"staff_id": {
"type": "string",
"description": "Specific staff member ID (from get_business). Omit to check any available staff."
},
"timezone": {
"type": "string",
"description": "IANA timezone string (e.g. 'America/New_York'). Defaults to business local time."
},
"business_slug": {
"type": "string",
"description": "The business slug from search_businesses results"
}
}
}Look up the current status/time of a booking you made. Requires the booking_id and the lookup_token that book_appointment returned. No account needed.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string | The booking_id returned from book_appointment |
| lookup_token* | string | The lookup_token returned from book_appointment for this booking |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"booking_id",
"lookup_token"
],
"properties": {
"booking_id": {
"type": "string",
"description": "The booking_id returned from book_appointment"
},
"lookup_token": {
"type": "string",
"description": "The lookup_token returned from book_appointment for this booking"
}
}
}Get full details for a business including services (with IDs and prices), staff, and hours. You need service_id and optionally staff_id before calling book_appointment.
| Argument | Type | Description |
|---|---|---|
| slug | string | The business slug from search_businesses results |
| business_slug | string | Alias for slug — the business slug from search_businesses results |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"description": "The business slug from search_businesses results"
},
"business_slug": {
"type": "string",
"description": "Alias for slug — the business slug from search_businesses results"
}
}
}Link the guest bookings you made with your email to your signed-in account so you can manage them from your account. Requires signing in (OAuth) with a verified email.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}List all appointments booked with your email address. Requires signing in (OAuth) — your AI must be connected with an authenticated account that has a verified email. Returns your upcoming and past bookings.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Move a booking you made to a new time. Requires booking_id, the lookup_token from book_appointment, and new_start_time/new_end_time (ISO 8601, from get_availability). The new slot is checked for conflicts. No account needed.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string | The booking_id returned from book_appointment |
| lookup_token* | string | The lookup_token returned from book_appointment for this booking |
| new_end_time* | string | ISO 8601 datetime for the new appointment end (from get_availability) |
| new_start_time* | string | ISO 8601 datetime for the new appointment start (from get_availability) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"booking_id",
"lookup_token",
"new_start_time",
"new_end_time"
],
"properties": {
"booking_id": {
"type": "string",
"description": "The booking_id returned from book_appointment"
},
"lookup_token": {
"type": "string",
"description": "The lookup_token returned from book_appointment for this booking"
},
"new_end_time": {
"type": "string",
"description": "ISO 8601 datetime for the new appointment end (from get_availability)"
},
"new_start_time": {
"type": "string",
"description": "ISO 8601 datetime for the new appointment start (from get_availability)"
}
}
}Search for service businesses by location. Returns businesses with their booking URLs, ratings, and descriptions. Use get_business to see services and get_availability to check open slots.
| Argument | Type | Description |
|---|---|---|
| limit | number | Max results (default 10) |
| category | string | Filter by business type |
| location* | string | City, city+state, or zip code. E.g. 'Brooklyn NY', 'Austin, TX', '90210' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"location"
],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Max results (default 10)"
},
"category": {
"enum": [
"barbershop",
"hair_salon",
"tattoo_piercing",
"nail_salon",
"mobile_services",
"fitness_training",
"car_detailing",
"spa_wellness",
"yoga",
"personal_trainer"
],
"type": "string",
"description": "Filter by business type"
},
"location": {
"type": "string",
"description": "City, city+state, or zip code. E.g. 'Brooklyn NY', 'Austin, TX', '90210'"
}
}
}Get a link for a business owner to sign up and list their business on BookingMaven. Returns a URL with optional pre-filled details.
| Argument | Type | Description |
|---|---|---|
| string | Business owner email | |
| category | string | Type of business |
| business_name | string | Name of the business |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Business owner email"
},
"category": {
"enum": [
"barbershop",
"hair_salon",
"tattoo_piercing",
"nail_salon",
"mobile_services",
"fitness_training",
"car_detailing",
"spa_wellness",
"yoga",
"personal_trainer"
],
"type": "string",
"description": "Type of business"
},
"business_name": {
"type": "string",
"description": "Name of the business"
}
}
}