Boulevard MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Look up appointments, clients, services, staff and orders, and update clients in Boulevard.
21 tools: 6 can delete or cancel things and 15 only read.
Scanned Oct 21, 2026
- Deletes or cancels6Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads15Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http boulevard https://boulevard.usefulapi.io/mcpFindings
Matches of fixed checks, with the text they matched.
The description mentions "credentials".
What this check looks forMatched text
description: "Fetch the Boulevard business the credentials act for — name, timezone, address, phon..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
21 tools
Deletes or cancels 6Claude Code: deny
boulevard_add_tagApply an existing tag (from boulevard_list_tags) to a taggable record such as a client or appointment.No findings
Why it is in this group
- The name "boulevard_add_tag" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Apply an existing tag (from boulevard_list_tags) to a taggable record such as a client or appointment. GraphQL: addTag.
Annotations the server declares
- title: Apply a tag
- destructiveHint: true
boulevard_create_clientCreate a new client profile.No findings
Why it is in this group
- The name "boulevard_create_client" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a new client profile. Check boulevard_list_clients by email or phone first to avoid a duplicate. GraphQL: createClient.
Annotations the server declares
- title: Create a client
- destructiveHint: true
boulevard_create_client_noteAdd an internal note to a client's profile (visible to staff, e.g.No findings
Why it is in this group
- The name "boulevard_create_client_note" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add an internal note to a client's profile (visible to staff, e.g. formulas, preferences, allergies). GraphQL: createClientNote.
Annotations the server declares
- title: Add a client note
- destructiveHint: true
boulevard_create_timeblockBlock time on one staff member's calendar at a location (a break, meeting or personal time) so it cannot be booked.No findings
Why it is in this group
- The name "boulevard_create_timeblock" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Block staff time
- destructiveHint: true
boulevard_update_appointmentReplace an appointment's internal notes and/or move its state to BOOKED, CONFIRMED, ARRIVED or ACTIVE (e.g.No findings
Why it is in this group
- The name "boulevard_update_appointment" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Update an appointment
- destructiveHint: true
boulevard_update_clientChange a client's name, email, mobile phone, date of birth, pronoun or external id.No findings
Why it is in this group
- The name "boulevard_update_client" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change a client's name, email, mobile phone, date of birth, pronoun or external id. Only the fields you pass change. GraphQL: updateClient.
Annotations the server declares
- title: Update a client
- destructiveHint: true
Only reads 15Claude Code: allow
boulevard_get_appointmentFetch one appointment by id — time, state, notes, client, each booked service with its staff and price (in cents), cancellation details and tags.No findings
Why it is in this group
- The name "boulevard_get_appointment" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get one appointment
- readOnlyHint: true
boulevard_get_businessFetch the Boulevard business the credentials act for — name, timezone, address, phone, website.1 finding
Why it is in this group
- The name "boulevard_get_business" says "get": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "Fetch the Boulevard business the credentials act for — name, timezone, address, phon..."
Description, as the server wrote it Fetch the Boulevard business the credentials act for — name, timezone, address, phone, website. A cheap way to confirm the setup works. GraphQL: business.
Annotations the server declares
- title: Get the business
- readOnlyHint: true
boulevard_get_clientFetch one client by id, including contact details, appointment count, account balance (cents), scheduling alert, tags and notes.No findings
Why it is in this group
- The name "boulevard_get_client" says "get": a word for reading.
Description, as the server wrote it Fetch one client by id, including contact details, appointment count, account balance (cents), scheduling alert, tags and notes. GraphQL: client.
Annotations the server declares
- title: Get one client
- readOnlyHint: true
boulevard_get_orderFetch one order by id with its totals and line items (services, products, gratuity, gift cards), amounts in cents.No findings
Why it is in this group
- The name "boulevard_get_order" says "get": a word for reading.
Description, as the server wrote it Fetch one order by id with its totals and line items (services, products, gratuity, gift cards), amounts in cents. GraphQL: order.
Annotations the server declares
- title: Get one order
- readOnlyHint: true
boulevard_list_appointmentsList appointments at one location, optionally for one client and filtered by a query such as a date range or staff member.No findings
Why it is in this group
- The name "boulevard_list_appointments" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List appointments
- readOnlyHint: true
boulevard_list_clientsList the business's clients, or find them by email, id list, or a query (e.g.No findings
Why it is in this group
- The name "boulevard_list_clients" says "list": a word for reading.
Description, as the server wrote it List the business's clients, or find them by email, id list, or a query (e.g. name = 'Jane Doe', mobilePhone = '+15551234567'). GraphQL: clients.
Annotations the server declares
- title: List or search clients
- readOnlyHint: true
boulevard_list_locationsList the business's locations with id, name, timezone and address.No findings
Why it is in this group
- The name "boulevard_list_locations" says "list": a word for reading.
Description, as the server wrote it List the business's locations with id, name, timezone and address. Most other tools need a location id from here. GraphQL: locations.
Annotations the server declares
- title: List locations
- readOnlyHint: true
boulevard_list_membershipsList client memberships sold by the business — status (ACTIVE, PAUSED, PAST_DUE, CANCELLED), client, price (cents), interval, term and next charge date.No findings
Why it is in this group
- The name "boulevard_list_memberships" says "list": a word for reading.
Description, as the server wrote it List client memberships sold by the business — status (ACTIVE, PAUSED, PAST_DUE, CANCELLED), client, price (cents), interval, term and next charge date. GraphQL: memberships.
Annotations the server declares
- title: List memberships
- readOnlyHint: true
boulevard_list_ordersList checkout orders at one location with totals (cents: subtotal, discount, tax, gratuity, total, refunds), optionally filtered e.g.No findings
Why it is in this group
- The name "boulevard_list_orders" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List orders
- readOnlyHint: true
boulevard_list_productsList retail products — brand, SKU, barcode, unit price and cost (cents), category.No findings
Why it is in this group
- The name "boulevard_list_products" says "list": a word for reading.
Description, as the server wrote it List retail products — brand, SKU, barcode, unit price and cost (cents), category. Set include_inactive to include retired products. GraphQL: products.
Annotations the server declares
- title: List products
- readOnlyHint: true
boulevard_list_servicesList the service menu — name, category, default duration (minutes) and default price (cents), and whether it is an add-on.No findings
Why it is in this group
- The name "boulevard_list_services" says "list": a word for reading.
Description, as the server wrote it List the service menu — name, category, default duration (minutes) and default price (cents), and whether it is an add-on. GraphQL: services.
Annotations the server declares
- title: List services
- readOnlyHint: true
boulevard_list_shiftsList staff working shifts at one location for a date range — clock-in/out times, weekday, availability and recurrence.No findings
Why it is in this group
- The name "boulevard_list_shifts" says "list": a word for reading.
Description, as the server wrote it List staff working shifts at one location for a date range — clock-in/out times, weekday, availability and recurrence. GraphQL: shifts.
Annotations the server declares
- title: List staff shifts
- readOnlyHint: true
boulevard_list_staffList staff members with their role, locations, contact details and whether they are bookable online, optionally filtered by a query.No findings
Why it is in this group
- The name "boulevard_list_staff" says "list": a word for reading.
Description, as the server wrote it List staff members with their role, locations, contact details and whether they are bookable online, optionally filtered by a query. GraphQL: staff.
Annotations the server declares
- title: List staff
- readOnlyHint: true
boulevard_list_tagsList the tags defined for the business (ids to use with boulevard_add_tag).No findings
Why it is in this group
- The name "boulevard_list_tags" says "list": a word for reading.
Description, as the server wrote it List the tags defined for the business (ids to use with boulevard_add_tag). GraphQL: tags.
Annotations the server declares
- title: List tags
- readOnlyHint: true
boulevard_list_timeblocksList blocked time on staff calendars at one location (breaks, meetings, personal time).No findings
Why it is in this group
- The name "boulevard_list_timeblocks" says "list": a word for reading.
Description, as the server wrote it List blocked time on staff calendars at one location (breaks, meetings, personal time). GraphQL: timeblocks.
Annotations the server declares
- title: List timeblocks
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http boulevard https://boulevard.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__boulevard__boulevard_get_business",
"mcp__boulevard__boulevard_list_locations",
"mcp__boulevard__boulevard_list_appointments",
"mcp__boulevard__boulevard_get_appointment",
"mcp__boulevard__boulevard_list_clients",
"mcp__boulevard__boulevard_get_client",
"mcp__boulevard__boulevard_list_services",
"mcp__boulevard__boulevard_list_staff",
"mcp__boulevard__boulevard_list_shifts",
"mcp__boulevard__boulevard_list_timeblocks",
"mcp__boulevard__boulevard_list_orders",
"mcp__boulevard__boulevard_get_order",
"mcp__boulevard__boulevard_list_products",
"mcp__boulevard__boulevard_list_memberships",
"mcp__boulevard__boulevard_list_tags"
],
"ask": [],
"deny": [
"mcp__boulevard__boulevard_create_client",
"mcp__boulevard__boulevard_update_client",
"mcp__boulevard__boulevard_create_client_note",
"mcp__boulevard__boulevard_update_appointment",
"mcp__boulevard__boulevard_create_timeblock",
"mcp__boulevard__boulevard_add_tag"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as boulevard. Review it before you use it.