Skip to content

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.

Deletes · 6

21 tools: 6 can delete or cancel things and 15 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

1 info

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".

      Matched text

      description: "Fetch the Boulevard business the credentials act for — name, timezone, address, phon..."

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.