MCP-Server

boulevard

io.usefulapi/boulevard
Business & Betrieb Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Manages Boulevard salon and wellness business data, including clients, appointments, staff, services, memberships, orders and schedules.

boulevard_add_tag
Apply a tag
Apply an existing tag (from boulevard_list_tags) to a taggable record such as a client or appointment. GraphQL: addTag.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['entity_id', 'tag_id'], 'properties': {'tag_id': {'type': 'string', 'minLength': 1, 'description': 'The Tag id, e.g. urn:blvd:Tag:<uuid>.'}, 'entity_id': {'type': 'string', 'minLength': 1, 'description': 'Global id of the record to tag, e.g. urn:blvd:Client:<uuid>.'}}}
boulevard_create_client
Create a client
Create a new client profile. Check boulevard_list_clients by email or phone first to avoid a duplicate. GraphQL: createClient.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'dob': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date of birth, YYYY-MM-DD.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address.'}, 'pronoun': {'type': 'string', 'description': 'Pronoun, e.g. she/her.'}, 'last_name': {'type': 'string', 'description': 'Last name.'}, 'first_name': {'type': 'string', 'description': 'First name.'}, 'external_id': {'type': 'string', 'description': 'Your own id for this client.'}, 'mobile_phone': {'type': 'string', 'description': 'Mobile phone in E.164 form, e.g. +15551234567.'}}}
boulevard_create_client_note
Add a client note
Add an internal note to a client's profile (visible to staff, e.g. formulas, preferences, allergies). GraphQL: createClientNote.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['client_id', 'text'], 'properties': {'text': {'type': 'string', 'minLength': 1, 'description': 'The note text.'}, 'client_id': {'type': 'string', 'minLength': 1, 'description': 'The Client id, e.g. urn:blvd:Client:<uuid>.'}}}
boulevard_create_timeblock
Block staff time
Block time on one staff member's calendar at a location (a break, meeting or personal time) so it cannot be booked. One-off only. GraphQL: createTimeblock.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['location_id', 'staff_id', 'start_time', 'duration'], 'properties': {'title': {'type': 'string', 'description': 'Title shown on the calendar.'}, 'reason': {'enum': ['BUSINESS', 'PERSONAL'], 'type': 'string', 'description': 'Why the time is blocked.'}, 'duration': {'type': 'integer', 'maximum': 1440, 'minimum': 1, 'description': 'Length in minutes.'}, 'staff_id': {'type': 'string', 'minLength': 1, 'description': 'The Staff id, e.g. urn:blvd:Staff:<uuid>.'}, 'start_time': {'type': 'string', 'minLength': 1, 'description': 'Start, ISO 8601 datetime with offset, e.g. 2026-10-02T13:00:00-07:00.'}, 'location_id': {'type': 'string', 'minLength': 1, 'description': 'Location id, e.g. urn:blvd:Location:<uuid> (from boulevard_list_locations).'}}}
boulevard_get_appointment
Get one appointment
Fetch one appointment by id — time, state, notes, client, each booked service with its staff and price (in cents), cancellation details and tags. GraphQL: appointment.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['appointment_id'], 'properties': {'appointment_id': {'type': 'string', 'minLength': 1, 'description': 'The Appointment id, e.g. urn:blvd:Appointment:<uuid>.'}}}
boulevard_get_business
Get the business
Fetch the Boulevard business the credentials act for — name, timezone, address, phone, website. A cheap way to confirm the setup works. GraphQL: business.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
boulevard_get_client
Get one client
Fetch one client by id, including contact details, appointment count, account balance (cents), scheduling alert, tags and notes. GraphQL: client.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['client_id'], 'properties': {'client_id': {'type': 'string', 'minLength': 1, 'description': 'The Client id, e.g. urn:blvd:Client:<uuid>.'}}}
boulevard_get_order
Get one order
Fetch one order by id with its totals and line items (services, products, gratuity, gift cards), amounts in cents. GraphQL: order.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['order_id'], 'properties': {'order_id': {'type': 'string', 'minLength': 1, 'description': 'The Order id, e.g. urn:blvd:Order:<uuid>.'}}}
boulevard_list_appointments
List appointments
List appointments at one location, optionally for one client and filtered by a query such as a date range or staff member. Each appointment includes its client, services, staff, state and cancellation. GraphQL: appointments.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['location_id'], 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}, 'query': {'type': 'string', 'description': 'Boulevard filter expression (QueryString) over: id, startAt, createdAt, cancelled, staffId. Comparisons joined with AND/OR, strings in single quotes, ISO 8601 datetimes, e.g. "startAt >= \'2026-10-01T00:00:00Z\' AND cancelled = false". Field names are case sensitive.'}, 'client_id': {'type': 'string', 'description': "Only this client's appointments (urn:blvd:Client:<uuid>)."}, 'location_id': {'type': 'string', 'minLength': 1, 'description': 'Location id, e.g. urn:blvd:Location:<uuid> (from boulevard_list_locations).'}}}
boulevard_list_clients
List or search clients
List the business's clients, or find them by email, id list, or a query (e.g. name = 'Jane Doe', mobilePhone = '+15551234567'). GraphQL: clients.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}, 'query': {'type': 'string', 'description': 'Boulevard filter expression (QueryString) over: id, email, name, mobilePhone, active, externalId, primaryLocation, createdAt, updatedAt. Comparisons joined with AND/OR, strings in single quotes, ISO 8601 datetimes, e.g. "startAt >= \'2026-10-01T00:00:00Z\' AND cancelled = false". Field names are case sensitive.'}, 'emails': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only clients with these email addresses.'}, 'client_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only these client ids.'}}}
boulevard_list_locations
List locations
List the business's locations with id, name, timezone and address. Most other tools need a location id from here. GraphQL: locations.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}}}
boulevard_list_memberships
List memberships
List client memberships sold by the business — status (ACTIVE, PAUSED, PAST_DUE, CANCELLED), client, price (cents), interval, term and next charge date. GraphQL: memberships.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}}}
boulevard_list_orders
List orders
List checkout orders at one location with totals (cents: subtotal, discount, tax, gratuity, total, refunds), optionally filtered e.g. by closedAt range or clientId. GraphQL: orders.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['location_id'], 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}, 'query': {'type': 'string', 'description': 'Boulevard filter expression (QueryString) over: id, clientId, closedAt, updatedAt, createdAt. Comparisons joined with AND/OR, strings in single quotes, ISO 8601 datetimes, e.g. "startAt >= \'2026-10-01T00:00:00Z\' AND cancelled = false". Field names are case sensitive.'}, 'location_id': {'type': 'string', 'minLength': 1, 'description': 'Location id, e.g. urn:blvd:Location:<uuid> (from boulevard_list_locations).'}}}
boulevard_list_products
List products
List retail products — brand, SKU, barcode, unit price and cost (cents), category. Set include_inactive to include retired products. GraphQL: products.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}, 'query': {'type': 'string', 'description': 'Boulevard filter expression (QueryString) over: id, categoryId, externalId. Comparisons joined with AND/OR, strings in single quotes, ISO 8601 datetimes, e.g. "startAt >= \'2026-10-01T00:00:00Z\' AND cancelled = false". Field names are case sensitive.'}, 'include_inactive': {'type': 'boolean', 'description': 'Also return inactive products.'}}}
boulevard_list_services
List services
List the service menu — name, category, default duration (minutes) and default price (cents), and whether it is an add-on. GraphQL: services.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}}}
boulevard_list_shifts
List staff shifts
List staff working shifts at one location for a date range — clock-in/out times, weekday, availability and recurrence. GraphQL: shifts.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['location_id', 'start_date', 'end_date'], 'properties': {'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Last date, YYYY-MM-DD.'}, 'staff_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only these staff ids.'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'First date, YYYY-MM-DD.'}, 'location_id': {'type': 'string', 'minLength': 1, 'description': 'Location id, e.g. urn:blvd:Location:<uuid> (from boulevard_list_locations).'}}}
boulevard_list_staff
List staff
List staff members with their role, locations, contact details and whether they are bookable online, optionally filtered by a query. GraphQL: staff.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}, 'query': {'type': 'string', 'description': 'Boulevard filter expression (QueryString) over: id, email, name, mobilePhone, active. Comparisons joined with AND/OR, strings in single quotes, ISO 8601 datetimes, e.g. "startAt >= \'2026-10-01T00:00:00Z\' AND cancelled = false". Field names are case sensitive.'}}}
boulevard_list_tags
List tags
List the tags defined for the business (ids to use with boulevard_add_tag). GraphQL: tags.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}}}
boulevard_list_timeblocks
List timeblocks
List blocked time on staff calendars at one location (breaks, meetings, personal time). GraphQL: timeblocks.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['location_id'], 'properties': {'after': {'type': 'string', 'description': 'Cursor: pageInfo.endCursor from the previous page. Omit for the first page.'}, 'first': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size, 1-100 (default 25).'}, 'query': {'type': 'string', 'description': 'Boulevard filter expression (QueryString) over: staffId, startAt, cancelled. Comparisons joined with AND/OR, strings in single quotes, ISO 8601 datetimes, e.g. "startAt >= \'2026-10-01T00:00:00Z\' AND cancelled = false". Field names are case sensitive.'}, 'location_id': {'type': 'string', 'minLength': 1, 'description': 'Location id, e.g. urn:blvd:Location:<uuid> (from boulevard_list_locations).'}}}
boulevard_update_appointment
Update an appointment
Replace an appointment's internal notes and/or move its state to BOOKED, CONFIRMED, ARRIVED or ACTIVE (e.g. confirm, or check the client in). Does not cancel or reschedule. GraphQL: updateAppointment.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['appointment_id'], 'properties': {'notes': {'type': 'string', 'description': 'New internal notes (replaces the existing notes).'}, 'state': {'enum': ['BOOKED', 'CONFIRMED', 'ARRIVED', 'ACTIVE'], 'type': 'string', 'description': 'New appointment state.'}, 'appointment_id': {'type': 'string', 'minLength': 1, 'description': 'The Appointment id, e.g. urn:blvd:Appointment:<uuid>.'}}}
boulevard_update_client
Update a client
Change a client's name, email, mobile phone, date of birth, pronoun or external id. Only the fields you pass change. GraphQL: updateClient.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['client_id'], 'properties': {'dob': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date of birth, YYYY-MM-DD.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': 'Email address.'}, 'pronoun': {'type': 'string', 'description': 'Pronoun, e.g. she/her.'}, 'client_id': {'type': 'string', 'minLength': 1, 'description': 'The Client id, e.g. urn:blvd:Client:<uuid>.'}, 'last_name': {'type': 'string', 'description': 'Last name.'}, 'first_name': {'type': 'string', 'description': 'First name.'}, 'external_id': {'type': 'string', 'description': 'Your own id for this client.'}, 'mobile_phone': {'type': 'string', 'description': 'Mobile phone in E.164 form, e.g. +15551234567.'}}}
Hinzugefügt
boulevard_add_tag
2. October 2026 02:40
Hinzugefügt
boulevard_create_timeblock
2. October 2026 02:40
Hinzugefügt
boulevard_update_appointment
2. October 2026 02:40
Hinzugefügt
boulevard_create_client_note
2. October 2026 02:40
Hinzugefügt
boulevard_update_client
2. October 2026 02:40
Hinzugefügt
boulevard_create_client
2. October 2026 02:40
Hinzugefügt
boulevard_list_tags
2. October 2026 02:40
Hinzugefügt
boulevard_list_memberships
2. October 2026 02:40
Hinzugefügt
boulevard_list_products
2. October 2026 02:40
Hinzugefügt
boulevard_get_order
2. October 2026 02:40
Hinzugefügt
boulevard_list_orders
2. October 2026 02:40
Hinzugefügt
boulevard_list_timeblocks
2. October 2026 02:40
Hinzugefügt
boulevard_list_shifts
2. October 2026 02:40
Hinzugefügt
boulevard_list_staff
2. October 2026 02:40
Hinzugefügt
boulevard_list_services
2. October 2026 02:40
Hinzugefügt
boulevard_get_client
2. October 2026 02:40
Hinzugefügt
boulevard_list_clients
2. October 2026 02:40
Hinzugefügt
boulevard_get_appointment
2. October 2026 02:40
Hinzugefügt
boulevard_list_appointments
2. October 2026 02:40
Hinzugefügt
boulevard_list_locations
2. October 2026 02:40
Hinzugefügt
boulevard_get_business
2. October 2026 02:40