Boulevard API and MCP server Let your AI agent run the Boulevard front desk.

Appointments, waitlist, clients and reports for your Boulevard salon or spa. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Boulevard
Boulevard logo Boulevard Cloud Browser

15 tools Read and write

Inbox to report

What can you automate in Boulevard? Use an AI agent, a workflow or a script.

  • Book requests from texts and DMs

  • Fill cancellations from the waitlist

  • Move clients when a provider is out

  • Monday sales and cancellations

  • Save formulas and allergies as notes

  • Morning brief with client alerts

API on Enterprise only

Does Boulevard have an MCP server or an API? An API, yes, but only on the Enterprise plan.

Boulevard has GraphQL Admin and Client APIs and no MCP server, and its Support Center says Enterprise customers have API access (checked 31 Oct 2026). Below Enterprise there is no API key to get. Cotlet runs 15 Boulevard tools hosted, over MCP for agents and REST for scripts, in your own dashboard login on any plan.

  • Enterprise customers may build a custom app or hire a developer, and install it with an Application ID. Premier and Enterprise admins can turn integrations on and off.
  • Boulevard's Zapier app needs a Premier, Prestige or Enterprise plan, an Admin user and a Zapier account. Its examples tag clients, send data to Klaviyo, set time blocks and confirm by text.
  • AI Receptionist, in beta, answers inbound calls so callers can book, reschedule or cancel. It needs a Boulevard phone number, and from 1 Dec 2026 costs $125 a location for 200 minutes. Your own agent cannot give it work.
Boulevard API, Zapier, AI Receptionist and Cotlet compared
What you need Admin APIZapierAI ReceptionistCotlet
Plan you need Enterprise Premier or higher A Boulevard phone number Any plan
Your own AI agent can use it If a developer builds it Through Zapier steps No Yes, any MCP client
Book, move and cancel for you With custom code Only what the Zapier app lists For callers only Yes, after your OK
Read client notes and alerts Not confirmed Not confirmed No Yes, with your permission
Dashboard reports Not confirmed Not confirmed No Yes, by date range
What it costs on top Enterprise is a custom plan Zapier tasks $125 a location from Dec Credits per call

Checked 31 Oct 2026. Sources: Boulevard Developer Portal · Support Center: Connect Custom and Public Apps · Support Center: Zapier Integration · Support Center: AI Receptionist Beta Pricing

Set up once

How does Cotlet connect to Boulevard? One account, two ways to connect.

  1. 1Sign in to Boulevard

    Use your own account in its Cotlet Cloud Browser.

  2. 2Choose MCP or REST

    Connect your agent or create a Cotlet API key.

  3. 3Run your workflow

    Ask your agent or send an HTTP request.

We never keep your Boulevard password, and no booking, move, cancellation or waitlist booking is saved before you approve it. Who can see your session

Any MCP client

Connect Boulevard to your agent or workflow

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

  1. 1

    Log in to Boulevard as yourself. Make a Cotlet account, open Boulevard in its Cloud Browser, log in with your own Boulevard user, then press Enable for agents.

  2. 2

    Add the Cotlet address. Paste https://cotlet.dev/mcp/v1 into your agent as an MCP server or connector.

  3. 3

    Approve the connection. Chat apps send you to a Cotlet sign-in. Code editors, n8n and scripts take an API key from the console.

One address, https://cotlet.dev/mcp/v1, carries every app on your Cotlet account, Boulevard too. Enable Boulevard after the agent is connected and you need to refresh the connector before its tools show up.

Claude
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: boulevard_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: boulevard_write
Scripts and HTTP

How to use the Boulevard REST API

Create your Cotlet API key

Create a Cotlet API key with access to Boulevard and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.

Connect Boulevard in Cotlet and enable it for agents. Account access: Your own Boulevard dashboard user (an Admin, or a staff role with the permission for the task: client notes and reports have their own).

Make your first Boulevard API request

REST
curl "https://cotlet.dev/api/v1/boulevard/appointments?location_id=loc_1&from=2026-11-02&to=2026-11-06" \
  -H "Authorization: Bearer $COTLET_API_KEY"

Read appointments and apply the operation limits

A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt
{
  "status": "success",
  "app": "boulevard",
  "tool": "list_appointments",
  "result": {
    "appointments": [
      {
        "appointment_id": "ap_903114",
        "client": {
          "client_id": "cl_48213",
          "name": "Jamie Doe"
        },
        "services": [
          {
            "name": "Signature Facial"
          }
        ],
        "provider": {
          "staff_id": "st_207",
          "name": "Alex"
        },
        "start": "2026-11-02T14:00:00-08:00",
        "end": "2026-11-02T15:00:00-08:00",
        "state": "confirmed"
      }
    ]
  }
}

Returns the appointments in a date range in start order, each with client, services, provider, start, end and state.

Canceled appointments are not on the calendar. Read them with list_cancelled_appointments.

Replace loc_1 with a location_id from list_locations; multi-location accounts need the correct location selection.

Keep the same selection when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.

Boulevard workflows for agents and automations

Boulevard workflows you configure
ToolConnect throughExample workflow
n8nHTTP RequestList the waitlist entries with client, requested provider and preferred time. Use list_waitlist in your configured business report.
MakeHTTP > Make a requestRead the Daily Summary report for a date range. Use get_report in your configured business report.
Python or Node.jsREST APIList the canceled appointments to find slots that opened up. Use list_cancelled_appointments in your configured business report.

Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads Boulevard; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.

The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.

8 read, 7 write

Boulevard API endpoints and MCP tools

Locations and calendar4

Each location has its own calendar and waitlist. Canceled appointments leave the calendar, so they have their own list.

  • list_locations Your business locations with name and address. read

    Returns every location the signed-in user can access. Use the location_id from each item in the other tools. Boulevard bills and configures each location separately, so a multi-location business gets several items.

    MCP callboulevard_read → list_locations

    REST endpointGET https://cotlet.dev/api/v1/boulevard/locations

    Parameters

    No parameters.

    Example response

    {
      "locations": [
        {
          "location_id": "loc_1",
          "name": "Downtown",
          "address": "412 Alder St, Portland, OR"
        }
      ]
    }
  • list_appointments Appointments on the calendar for a day or week with client, services, provider and status. read

    Returns the appointments in a date range in start order, each with client, services, provider, start, end and state. Filter by provider to read one calendar. Canceled appointments are not on the calendar, so read them with list_cancelled_appointments.

    MCP callboulevard_read → list_appointments

    REST endpointGET https://cotlet.dev/api/v1/boulevard/appointments

    Parameters

    Parameters: list_appointments
    NameTypeDescription
    location_id string string Location ID from list_locations. Default: your first location.
    from date required date First day, inclusive.
    to date date Last day, inclusive. Default: same as from.
    staff_id string string Only this provider.

    Example input

    {
      "from": "2026-10-01"
    }

    Example response

    {
      "appointments": [
        {
          "appointment_id": "ap_903114",
          "client": {
            "client_id": "cl_48213",
            "name": "Jamie Doe"
          },
          "services": [
            {
              "name": "Signature Facial"
            }
          ],
          "provider": {
            "staff_id": "st_207",
            "name": "Alex"
          },
          "start": "2026-11-02T14:00:00-08:00",
          "end": "2026-11-02T15:00:00-08:00",
          "state": "confirmed"
        }
      ]
    }
  • get_appointment One appointment with its services, notes and the Appointment Updates history. read

    Returns the appointment details as the preview window shows them: client, services with their times, provider, the appointment note and the Appointment Updates list, which records who rescheduled it and when. Use it before moving or canceling an appointment.

    MCP callboulevard_read → get_appointment

    REST endpointGET https://cotlet.dev/api/v1/boulevard/appointments/{appointment_id}

    Parameters

    Parameters: get_appointment
    NameTypeDescription
    appointment_id string required string Appointment ID from list_appointments.

    Example input

    {
      "appointment_id": "appointment_8c41d2"
    }

    Example response

    {
      "appointment_id": "ap_903114",
      "client": {
        "client_id": "cl_48213",
        "name": "Jamie Doe"
      },
      "services": [
        {
          "name": "Signature Facial",
          "start": "2026-11-02T14:00:00-08:00",
          "end": "2026-11-02T15:00:00-08:00"
        }
      ],
      "provider": {
        "staff_id": "st_207",
        "name": "Alex"
      },
      "state": "confirmed",
      "note": null,
      "updates": [
        {
          "action": "booked",
          "by": "Front desk",
          "at": "2026-10-29T09:12:00-07:00"
        }
      ]
    }
  • list_cancelled_appointments The Recent Cancellations list: canceled appointments with client, service and reason. read

    Returns the Cancelled Appointments List, newest first, with client, services, provider, the time that opened up and the cancellation reason. Boulevard has no separate cancellation report, so this list is the source. Restore one with restore_cancelled_appointment.

    MCP callboulevard_read → list_cancelled_appointments

    REST endpointGET https://cotlet.dev/api/v1/boulevard/cancelled-appointments

    Parameters

    Parameters: list_cancelled_appointments
    NameTypeDescription
    location_id string string Location ID from list_locations. Default: your first location.

    Example response

    {
      "cancellations": [
        {
          "appointment_id": "ap_903210",
          "client": {
            "client_id": "cl_50122",
            "name": "Dana Ruiz"
          },
          "services": [
            {
              "name": "Brow Shaping"
            }
          ],
          "provider": {
            "staff_id": "st_207",
            "name": "Alex"
          },
          "start": "2026-11-03T15:00:00-08:00",
          "reason": "client_late_canceled"
        }
      ]
    }

Booking and changes4

A booking takes the time off online booking. A move can notify the client or not, and a multi-service appointment stays on one day.

  • book_appointment Book one or more services for a client with a provider. writeasks first

    Adds an appointment to the calendar the way New Appointment does. The time must be free for the provider and the appointment takes it off online booking. No card is needed on file. Returns the appointment with start and end. By default you confirm each call; you can switch that off for this tool.

    MCP callboulevard_write → book_appointment

    REST endpointPOST https://cotlet.dev/api/v1/boulevard/clients/{client_id}/appointments

    Parameters

    Parameters: book_appointment
    NameTypeDescription
    client_id string required string Client ID from find_client.
    location_id string string Location ID from list_locations. Default: your first location.
    services string[] required string[] Service names exactly as the menu shows them.
    staff_id string required string Provider performing the services.
    start datetime required datetime ISO 8601 with time zone.
    note string string Appointment note.

    Example input

    {
      "client_id": "cl_48213",
      "location_id": "loc_1",
      "services": [
        "Signature Facial"
      ],
      "staff_id": "st_207",
      "start": "2026-11-06T14:00:00-08:00"
    }

    Example response

    {
      "appointment_id": "ap_903114",
      "status": "booked",
      "client": {
        "client_id": "cl_48213",
        "name": "Jamie Doe"
      },
      "services": [
        {
          "name": "Signature Facial"
        }
      ],
      "provider": {
        "staff_id": "st_207",
        "name": "Alex"
      },
      "start": "2026-11-06T14:00:00-08:00",
      "end": "2026-11-06T15:00:00-08:00"
    }
  • reschedule_appointment Move an appointment to a new time, day or provider. writeasks first

    Moves one appointment, as dragging it on the calendar does. Boulevard asks whether to notify the client, so notify_client decides whether the client hears about the move. Every service of a multi-service appointment must stay on the same day. The change is logged in Appointment Updates. By default you confirm each call; you can switch that off for this tool.

    MCP callboulevard_write → reschedule_appointment

    REST endpointPOST https://cotlet.dev/api/v1/boulevard/appointments/{appointment_id}/reschedule

    Parameters

    Parameters: reschedule_appointment
    NameTypeDescription
    appointment_id string required string Appointment ID from list_appointments.
    start datetime required datetime New start, ISO 8601 with time zone.
    staff_id string string New provider. Default: unchanged.
    notify_client boolean boolean Notify the client about the change. Default: false.

    Example input

    {
      "appointment_id": "appointment_8c41d2",
      "start": "2026-10-01T09:00:00Z"
    }

    Example response

    {
      "appointment_id": "ap_903114",
      "status": "rescheduled",
      "provider": {
        "staff_id": "st_207",
        "name": "Alex"
      },
      "start": "2026-11-03T11:00:00-08:00",
      "end": "2026-11-03T12:00:00-08:00",
      "client_notified": true
    }
  • cancel_appointment Cancel an appointment with one of the five Boulevard reasons. writeasks first

    Cancels one appointment with a reason: mistake_or_error, staff_canceled, client_canceled, client_late_canceled or client_no_show. notify_client sends or skips the cancellation email. The tool charges no cancellation fee; charging one stays in the dashboard. The appointment goes to the Cancelled Appointments List. By default you confirm each call; you can switch that off for this tool.

    MCP callboulevard_write → cancel_appointment

    REST endpointPOST https://cotlet.dev/api/v1/boulevard/appointments/{appointment_id}/cancel

    Parameters

    Parameters: cancel_appointment
    NameTypeDescription
    appointment_id string required string Appointment ID from list_appointments.
    reason enum required enum mistake_or_error, staff_canceled, client_canceled, client_late_canceled or client_no_show.
    notify_client boolean boolean Send the cancellation email to the client. Default: true.

    Example input

    {
      "appointment_id": "appointment_8c41d2",
      "reason": "mistake_or_error"
    }

    Example response

    {
      "appointment_id": "ap_903210",
      "status": "canceled",
      "reason": "client_late_canceled",
      "client_notified": true
    }
  • restore_cancelled_appointment Undo a cancellation from the Cancelled Appointments List. writeasks first

    Restores a canceled appointment to the calendar, as Restore does in the Cancelled Appointments List. The slot must still be free. Use it when an appointment was canceled by mistake. By default you confirm each call; you can switch that off for this tool.

    MCP callboulevard_write → restore_cancelled_appointment

    REST endpointPOST https://cotlet.dev/api/v1/boulevard/appointments/{appointment_id}/cancelled-appointment/restore

    Parameters

    Parameters: restore_cancelled_appointment
    NameTypeDescription
    appointment_id string required string Appointment ID from list_appointments.

    Example input

    {
      "appointment_id": "appointment_8c41d2"
    }

    Example response

    {
      "appointment_id": "ap_903210",
      "status": "restored",
      "start": "2026-11-03T15:00:00-08:00"
    }

Waitlist2

Online entries are first-available requests and ignore closures and the requested provider, so the agent checks the day before it books.

  • list_waitlist Waitlist entries with client, phone, requested provider, services and preferred time. read

    Returns the entries of the location waitlist as the Waitlist screen shows them: client name, phone, requested provider, services, preferred time and note. Entries made online are first-available requests and ignore closures and the requested provider. A booked entry leaves the list.

    MCP callboulevard_read → list_waitlist

    REST endpointGET https://cotlet.dev/api/v1/boulevard/waitlists

    Parameters

    Parameters: list_waitlist
    NameTypeDescription
    location_id string string Location ID from list_locations. Default: your first location.
    date date date Only entries for this requested day. Default: all entries.

    Example response

    {
      "entries": [
        {
          "entry_id": "wl_2207",
          "client": {
            "client_id": "cl_51007",
            "name": "Priya Shah"
          },
          "phone": "+15035550188",
          "provider": "Alex",
          "services": [
            "Signature Facial"
          ],
          "preferred": "Tue 3 Nov, afternoon",
          "note": "Added by front desk",
          "source": "staff"
        }
      ]
    }
  • book_from_waitlist Book a waitlist entry into an open time. writeasks first

    Books the entry the way Book does on the waitlist: the client gets the appointment and the entry leaves the list. The provider must be free at the start time. By default you confirm each call; you can switch that off for this tool.

    MCP callboulevard_write → book_from_waitlist

    REST endpointPOST https://cotlet.dev/api/v1/boulevard/entries/{entry_id}/waitlists

    Parameters

    Parameters: book_from_waitlist
    NameTypeDescription
    entry_id string required string Waitlist entry ID from list_waitlist.
    start datetime required datetime ISO 8601 with time zone.
    staff_id string string Provider. Default: the one the entry asked for.

    Example input

    {
      "entry_id": "entry_8c41d2",
      "start": "2026-10-01T09:00:00Z"
    }

    Example response

    {
      "entry_id": "wl_2207",
      "status": "booked",
      "appointment_id": "ap_903377",
      "client": {
        "client_id": "cl_51007",
        "name": "Priya Shah"
      },
      "provider": {
        "staff_id": "st_207",
        "name": "Alex"
      },
      "start": "2026-11-03T15:00:00-08:00"
    }

Clients and notes4

Notes, allergies and the scheduling alert are internal. Reading and writing them follow your Boulevard permissions.

  • find_client Search clients by name, phone or email. read

    Searches the client list and returns every match with contact details. Boulevard warns about duplicates by first and last name, email or phone, so two matches are possible; pass the chosen client_id to the other client tools.

    MCP callboulevard_read → find_client

    REST endpointGET https://cotlet.dev/api/v1/boulevard/clients/find

    Parameters

    Parameters: find_client
    NameTypeDescription
    query string required string Name, phone number or email.

    Example input

    {
      "query": "query"
    }

    Example response

    {
      "clients": [
        {
          "client_id": "cl_48213",
          "name": "Jamie Doe",
          "email": "client@example.com",
          "phone": "+15035550142"
        }
      ]
    }
  • get_client_profile A client profile: visit metrics, scheduling alert, client notes and allergies. read

    Returns the Overview of one client profile: Appointments, Show Rate, Average Revisit and Average Revisit Value, the Scheduling Alert and the internal client notes and allergies. Notes need the View Client Notes permission; without it the notes are left out and the rest still returns.

    MCP callboulevard_read → get_client_profile

    REST endpointGET https://cotlet.dev/api/v1/boulevard/clients/{client_id}/profile

    Parameters

    Parameters: get_client_profile
    NameTypeDescription
    client_id string required string Client ID from find_client.

    Example input

    {
      "client_id": "client_8c41d2"
    }

    Example response

    {
      "client_id": "cl_48213",
      "name": "Jamie Doe",
      "metrics": {
        "appointments": 14,
        "show_rate": "93%",
        "average_revisit_days": 38,
        "average_revisit_value": 142
      },
      "scheduling_alert": "Prefers fragrance-free products",
      "notes": [
        {
          "tab": "note",
          "text": "Color formula 6N with 20 volume, 35 minutes",
          "added": "2026-09-14"
        }
      ],
      "allergies": [
        {
          "text": "Lavender oil",
          "added": "2026-06-02"
        }
      ]
    }
  • add_client_note Add a private note or an allergy to a client profile. write

    Adds text to the Client Notes of a profile, on the NOTE tab or the ALLERGIES tab. Notes are internal and only staff with access to client profiles see them. Needs the Create and Modify Client Notes permission. A note reaches no one and you can delete it in the profile, so add_client_note runs without asking first.

    MCP callboulevard_write → add_client_note

    REST endpointPOST https://cotlet.dev/api/v1/boulevard/clients/{client_id}/note

    Parameters

    Parameters: add_client_note
    NameTypeDescription
    client_id string required string Client ID from find_client.
    text string required string Note text. Internal, never shown to the client.
    tab enum enum note or allergies. Default: note.

    Example input

    {
      "client_id": "client_8c41d2",
      "text": "text"
    }

    Example response

    {
      "client_id": "cl_51007",
      "tab": "note",
      "status": "added",
      "text": "Formula 6N with 20 volume, 35 minutes. Wants it a shade warmer next time."
    }
  • set_scheduling_alert Set the one Scheduling Alert on a client profile. write

    Writes the private Scheduling Alert that shows as a red banner when staff create an appointment for the client and in the appointment preview. A profile holds one alert, so this replaces the old text; read it first with get_client_profile. It reaches no one and you can edit it again at any time, so set_scheduling_alert runs without asking first.

    MCP callboulevard_write → set_scheduling_alert

    REST endpointPUT https://cotlet.dev/api/v1/boulevard/clients/{client_id}/scheduling-alert

    Parameters

    Parameters: set_scheduling_alert
    NameTypeDescription
    client_id string required string Client ID from find_client.
    text string required string Alert text. Replaces the current alert.

    Example input

    {
      "client_id": "client_8c41d2",
      "text": "text"
    }

    Example response

    {
      "client_id": "cl_48213",
      "status": "saved",
      "scheduling_alert": "Deposit card expired, ask for a new one at booking"
    }

Reports1

Daily Summary, Appointments and Client Waitlist, if the new reporting experience has reached your account and you have the permission.

  • get_report One of the dashboard reports for a date range, as rows. read

    Returns a report from the reporting section as rows. daily_summary rolls up sales, refunds and discounts by day; appointments lists each appointment with its state and forecasted and final net sale; client_waitlist lists every waitlist entry, removed ones included. Needs the matching Data & Reporting permission and the new reporting experience on the account.

    MCP callboulevard_read → get_report

    REST endpointGET https://cotlet.dev/api/v1/boulevard/report

    Parameters

    Parameters: get_report
    NameTypeDescription
    report enum required enum daily_summary, appointments or client_waitlist.
    from date required date First day, inclusive.
    to date required date Last day, inclusive.
    location_ids string[] string[] Locations to include. Default: all you can access.

    Example input

    {
      "report": "daily_summary",
      "from": "2026-10-01",
      "to": "2026-10-01"
    }

    Example response

    {
      "report": "daily_summary",
      "from": "2026-10-26",
      "to": "2026-10-28",
      "currency": "USD",
      "rows": [
        {
          "date": "2026-10-26",
          "net_sales": 3120,
          "refunds": 45
        },
        {
          "date": "2026-10-27",
          "net_sales": 3480,
          "refunds": 0
        },
        {
          "date": "2026-10-28",
          "net_sales": 2960,
          "refunds": 90
        }
      ]
    }
Encrypted, revocable

Who can see my Boulevard session, and how do I revoke it?

  • What we store

    Your logged-in Boulevard profile, AES-256-GCM encrypted, in Finland. Never the password.

  • What your agent gets

    15 Boulevard tools. No cookie, no login.

  • What the session sees

    What your Boulevard user may see: client notes and reports only with their permissions.

  • What no tool touches

    Checkout, cards on file, cancellation fees, refunds, memberships, payroll and account settings.

  • If Boulevard asks for a code

    You type it in yourself. We never do.

  • How to cut access

    Disable for agents, reset the browser or delete the key. The next call fails.

Boulevard sells a med spa bundle with HIPAA-ready tools. Cotlet signs no BAA and makes no HIPAA claim, and client notes and allergies can hold health details, so a med spa decides whether to enable get_client_profile. The Cotlet site has A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results); we have no SOC 2 report or third-party pentest yet.

Terms not read

Is it against Boulevard's terms? Account safety We could not read them, so read yours.

Boulevard's terms of service sit behind a Cloudflare check that blocked our fetch on 31 Oct 2026, so we quote nothing from them and make no claim about what they allow. An AI agent working in your login is automation of a dashboard, and Boulevard's own route for automation is the Enterprise API. Read the agreement your business signed, then decide. In our searches we found no public case of a salon losing Boulevard over automation (31 Oct 2026), which is not proof that none exists.

How we keep your account looking like you

  • Your own Boulevard user, typed in by you, never shared
  • One Cloud Browser with a steady IP and cookies, like the desk computer
  • Bookings, moves, cancellations and waitlist bookings wait for your OK
  • No tool touches checkout, cards, cancellation fees or settings
  • If Boulevard objects, we pause the Boulevard tools for everyone within 24 h

When a whole day is moved, let the agent go one appointment at a time, so each client notice matches the final time.

Tested every 12 h

What happens when Boulevard changes? We fix the tool; your prompts stay.

between tests of the Boulevard calendar, waitlist and client reads
12 h
between tests of bookings and moves a client would hear about
24 h
for a call to a Boulevard tool paused for a fix
$0

Boulevard keeps changing its dashboard: a new reporting experience is rolling out to accounts over time, and its API moves to version 2026-06 for new apps from 17 Aug 2026. When a screen moves, we repair the tool and the tool name stays the same. status.cotlet.dev checks the site, console and API every 3 minutes.

5 tools ask first

Approvals, undo and mistakes Nothing reaches a client before you approve.

  1. 01 Matches the sender By the phone or email the text came from, then by name. Two matches stop the run.
  2. 02 Reads the profile The scheduling alert, allergies and notes come back with the match and show next to the booking.
  3. 03 Waits for your OK The booking waits in your Cotlet console, with the alert shown next to it.
  4. 04 Reports the result Appointment ID, provider, start and end, and the request saved in the appointment note.
Which Boulevard actions can be undone
ActionUndo
Book an appointmentCancel it with the reason mistake or error; the client is not charged
Reschedule an appointmentMove it back; with notify_client on, the client hears twice
Cancel an appointmentRestore it from the Cancelled Appointments List with restore_cancelled_appointment
Book from the waitlistCancel the appointment; the entry leaves the list and does not return by itself
Add a client noteDelete it in the client profile; Boulevard asks to confirm and a delete cannot be undone
Set a scheduling alertEdit the text again; a profile holds one alert

5 of the 7 write tools ask first. add_client_note and set_scheduling_alert run at once, because they are internal and reach nobody. Reads run at once too. For a scheduled run you can switch the wait off per tool.

Boulevard charges a cancellation fee only when you choose to, and only for a late cancellation or a no-show. cancel_appointment charges none; the fee stays in the dashboard.

MCP call
{
  "name": "book_appointment",
  "arguments": {
    "client_id": "cl_48213",
    "location_id": "loc_1",
    "services": [
      "Signature Facial"
    ],
    "staff_id": "st_207",
    "start": "2026-11-06T14:00:00-08:00"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/boulevard/clients/cl_48213/appointments \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"location_id":"loc_1","services":["Signature Facial"],"staff_id":"st_207","start":"2026-11-06T14:00:00-08:00"}'
Response
{
  "appointment_id": "ap_903114",
  "status": "booked",
  "client": {
    "client_id": "cl_48213",
    "name": "Jamie Doe"
  },
  "services": [
    {
      "name": "Signature Facial"
    }
  ],
  "provider": {
    "staff_id": "st_207",
    "name": "Alex"
  },
  "start": "2026-11-06T14:00:00-08:00",
  "end": "2026-11-06T15:00:00-08:00"
}

A cron job, a sheet or the shared booking inbox can call the same tools over REST at /api/v1/boulevard, with one key and one price. A user without report access gets an error from get_report, and a failed call costs nothing. Each tool row above shows its REST path.

Pay per call

How much does the Boulevard MCP server cost?

About $46 a monthfor one salon or spa location with about 8 providers, 7,860 credits. You keep paying Boulevard for your plan.

A month of Boulevard jobs for one location, in credits
JobCallsCredits
Book requests from texts and DMs4 × 602,400
Morning brief with alerts and allergies8 × 221,760
Fill cancellations from the waitlist4 × 22880
Formula or allergy note after a visit2 × 501,000
Monday sales and cancellations report3 × 4120
A provider out, 7 clients moved10 × 2200
Cloud Browser, 30 days1,500
Total7,860
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • No Enterprise plan, API key or phone number needed

The month is our example: one location, about 60 booking requests and 50 notes, a morning brief and a cancellation sweep each weekday, four Monday reports and two days with a provider out. Boulevard publishes no typical size, and its plan prices are not on a page we could read, so we state none. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
Credits Price, one time Calls at 10 credits Per 1,000 credits
5,000 $29 500 $5.80
15,000 $79 1,500 $5.27
32,000 $149 3,200 $4.66
60,000 $249 6,000 $4.15

Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.

Other options

Boulevard MCP server on GitHub, Zapier or hosted: which to use The one on GitHub needs an Enterprise key.

Other Boulevard tools, checked 31 Oct 2026
OptionWhat it doesWhere it stops
austinntowns/blvd-mcpAn MCP server for locations, staff, shift utilization, calendar blocks, appointment queries and turning services on and off. 0 stars, last push 27 Mar 2026.No license, no books or moves for clients, and it needs an Admin API key, so Enterprise.
Boulevard's Zapier appTriggers and actions for Premier, Prestige and Enterprise, run by an Admin user.Built from the actions the app lists; your own agent has no way in.
Boulevard AI ReceptionistAnswers inbound calls and books, reschedules or cancels for the caller. Free minutes to 30 Nov 2026, then $125 a location for 200 minutes.Works for callers, not for your own requests, and needs a Boulevard phone number.

If calls go unanswered, the AI Receptionist is Boulevard's own answer. If you are on Enterprise and have a developer, the Admin API is the official route. If your own agent should book, fill the waitlist, write notes and pull reports on a plan below Enterprise, Cotlet does that hosted.

EU company, since 2019

Who runs Cotlet A company you can look up.

Cotlet belongs to Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273) and working since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Boulevard tools go to contact@cotlet.dev.

Boulevard API and MCP: questions

How do I get access?

Sign up free at https://cotlet.dev, open Boulevard under Integrations in the console and log in to Boulevard in its Cloud Browser. The trial starts with your first app and asks for no card.

How do I connect Boulevard to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Boulevard once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Boulevard account through Cotlet, in their phone apps too.

What can ChatGPT do in Boulevard?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Boulevard: reschedule appointments when a provider is out; fill cancellations from the waitlist; book an appointment from a text or DM. You ask in plain words, and anything that reaches other people waits for your OK first.

Is there an official ChatGPT or Claude app for Boulevard?

No. Boulevard has no ChatGPT or Claude connector of its own (checked 8 Nov 2026). Cotlet is an independent one that works in ChatGPT, Claude, Cursor and any MCP client, on your signed-in account.

Can ChatGPT book an appointment in Boulevard?

Yes, with Cotlet. ChatGPT finds the client, checks the provider's day and books the appointment in your Boulevard account. Booking waits for your OK by default, which you can switch off per tool.

Can ChatGPT fill cancellations from the waitlist in Boulevard?

Yes, with Cotlet. ChatGPT checks the waitlist against the cancelled appointments and books a waiting client into the open slot. Each booking waits for your OK by default.

Do I need the Enterprise plan or a Boulevard API key?

No. Cotlet works in your own Boulevard dashboard login on any plan. Boulevard gives its GraphQL APIs only to Enterprise customers, and its Zapier app needs Premier, Prestige or Enterprise plus an Admin user.

Which Boulevard permissions does the agent need?

The ones your own user has. Reading client notes needs View Client Notes and adding one needs Create and Modify Client Notes. The reports need the matching Data & Reporting permission, and the new reporting experience reaches accounts over time.

Does the agent take payments or check clients out?

No. No tool opens checkout, charges a card, refunds or adds a cancellation fee. Those stay at the front desk.

Is the MCP server different from the REST API?

Only the way in differs. Both carry the same 15 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and sheets use REST.

Is Cotlet affiliated with Boulevard?

No. Cotlet is independent and not affiliated with Boulevard.

Can I use the Boulevard API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

Give your agent access to Boulevard.

Free 7-day trial with 2,000 credits, no card needed.