# Tools · Bookings and Scheduling

> MCP tools for Bookings (rooms, desks and stations) and Scheduling (people's hours): finding what is free, booking with a cost in credits, rescheduling, canceling, no-shows, calendar invite, rooms, blocks, price bands and agenda approval. Minimum role and recipes.

The [Bookings](/espacos/reservas) module and [Scheduling](/espacos/agendamento) through the assistant: finding free rooms and times (with the cost in [credits](/monetizacao/creditos) and your balance), booking, rescheduling, canceling, marking a no-show, downloading the calendar invite, setting up rooms and desks, blocking times, setting prices and approving member agendas. Both modules use the same booking tools; the **Scheduling** ones are the last five.

Each tool carries a badge: <span class="tool-kind tool-kind-read">Read-only</span> changes nothing, <span class="tool-kind tool-kind-write">Changes</span> creates or changes something right away, and <span class="tool-kind tool-kind-confirm">Asks to confirm</span> only acts after your yes to a summary. See [Money and confirmation](/mcp/dinheiro-e-confirmacao).

## In short

| Tool | What it does | Minimum role | Type |
|---|---|---|---|
| [`search_booking_rooms`](#search-booking-rooms) | Finds what fits the request, with cost and balance | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`check_availability`](#check-availability) | The free and taken times of a day | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`list_booking_resources`](#list-booking-resources) | The rooms, desks, stations and agendas | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`list_booking_amenities`](#list-booking-amenities) | The amenities catalog | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_booking_resource`](#get-booking-resource) | One room with the rules already resolved | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_booking`](#create-booking) | Books for you and debits your credits | Any | <span class="tool-kind tool-kind-write">Changes</span> |
| [`create_booking_for_member`](#create-booking-for-member) | Books for a member, debiting their credits | Moderator (or finance) | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_my_bookings`](#list-my-bookings) | Your bookings (or the ones booked with you) | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`list_bookings`](#list-bookings) | All the community's bookings | Moderator (or finance) | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_booking`](#get-booking) | One booking | Booker, host and team | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`cancel_booking`](#cancel-booking) | Cancels and refunds according to the rule | Booker, host and team | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`reschedule_booking`](#reschedule-booking) | Changes the time and settles the credits | Booker, host and team | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`mark_booking_no_show`](#mark-booking-no-show) | Marks the no-show | Team and host | <span class="tool-kind tool-kind-write">Changes</span> |
| [`get_booking_ics`](#get-booking-ics) | The calendar invite (`.ics`) | Booker, host and team | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_booking_resource`](#create-booking-resource) | Creates a room, desk or agenda | Admin (rooms) | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_booking_resource`](#update-booking-resource) | Edits, replaces or removes the photo | Admin (rooms) | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_booking_resource`](#delete-booking-resource) | Deletes (canceling upcoming bookings) | Admin | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_availability_exceptions`](#list-availability-exceptions) | Blocks and extra hours | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_availability_exception`](#create-availability-exception) | Blocks or opens a period | Team (rooms) | <span class="tool-kind tool-kind-write">Changes</span> |
| [`cancel_bookings_for_closure`](#cancel-bookings-for-closure) | Blocks, canceling the period's bookings | Team (rooms) | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`delete_availability_exception`](#delete-availability-exception) | Removes a block or extra hours | Team (rooms) | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_price_rules`](#list-price-rules) | A room's price bands | Admin | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_price_rule`](#create-price-rule) | Creates a price band | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_price_rule`](#update-price-rule) | Edits a band | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_price_rule`](#delete-price-rule) | Removes a band | Admin | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_room_panels`](#list-room-panels) | The panels (tablet links) of a room | Team | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_room_panel`](#create-room-panel) | Creates a panel and shows the link only once | Moderator | <span class="tool-kind tool-kind-write">Changes</span> |
| [`revoke_room_panel`](#revoke-room-panel) | Revokes a panel's link | Moderator | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`check_in_booking`](#check-in-booking) | Starts a booking's meeting | Booking owner and moderator | <span class="tool-kind tool-kind-write">Changes</span> |
| [`get_scheduling_config`](#get-scheduling-config) | The Scheduling rules and your agendas | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`search_scheduling_hosts`](#search-scheduling-hosts) | People with free time | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_scheduling_host`](#get-scheduling-host) | A person's page, with the grid | Anyone who sees the space | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`list_pending_scheduling_offers`](#list-pending-scheduling-offers) | Agendas waiting for approval | Admin | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`set_booking_resource_listing`](#set-booking-resource-listing) | Approves or takes an agenda off the list | Admin | <span class="tool-kind tool-kind-write">Changes</span> |

In [Networking](/mcp/ferramentas-networking), `create_booking_resource` with `kind: "PERSON"` creates the host's schedule, `get_scheduling_host` shows the free times, and `cancel_booking` and `reschedule_booking` cancel and reschedule a session, always without credits.

"Team" is the owner, the admin, the moderator and finance. The roles are the routes' roles: the assistant never does more than the connected person could do on screen.

The spaces are created with [`create_space`](/mcp/ferramentas-comunidade#create-space) and `module: "bookings"` or `"scheduling"`; [`update_space`](/mcp/ferramentas-comunidade#update-space) changes only what you send. The `bookings` argument carries every room's defaults (`slot_minutes`, `min_duration_minutes`, `max_duration_minutes`, `min_notice_minutes`, `max_advance_days`, `show_booker_name` and `opening_hours`, with the keys `mon` to `sun` and `HH:MM` periods); `scheduling` carries the same plus `offerers` (`ADMINS`, `TEAM` or `MEMBERS`), `allow_paid_slots` and `require_listing_approval`. The `door_panel` of `bookings` (owner and admin) carries the door panel options: `release_on_no_check_in`, `grace_minutes` (1 to 120), `show_start_button`, `quick_durations` (1 to 6 values, 5 to 480), `show_booker_first_name` and `show_title`; only what you send changes.

**Times.** The times you send are always on the **community's clock** (`"2026-11-03T14:00"`, no suffix). **Costs.** Booking, rescheduling and canceling **touch the credits**: the assistant states the cost and the balance before booking. Without enough credits, the response carries `required`, `balance` and `shortfall`; with the time taken, it carries the next free times.

## Search and look up

### `search_booking_rooms`

<span class="tool-kind tool-kind-read">Read-only</span>

**What fits the request.** Give an exact start (`starts_at`) or a window in the day (`date` with `from` and `to`), plus duration, capacity and amenities. Returns only the resources that fit, with the free start times, the **cost in credits**, `canAfford` (which also counts your company's balance), `affordableWith` (`own`, `company` or none) and your balance, sorted by earliest and then by smallest capacity; when nothing fits, `next_slots` lists the next times for the same request.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | The Bookings or Scheduling space |
| `starts_at` | date and time | No | Exact start, local time |
| `date`, `from`, `to` | day `YYYY-MM-DD`, `HH:MM` | No | A search window |
| `duration_minutes` | number, 5 or more | No | Duration |
| `capacity` | number | No | How many people must fit |
| `amenities` | list of keys | No | All are required (from `list_booking_amenities`) |
| `kind` | `ROOM`, `DESK`, `STATION`, `OTHER` or `PERSON` | No | The type |
| `host_member_id` | id | No | Only this person's agendas |

**Ask like this:** *"I need a room for 6 people tomorrow from 2 to 4 PM, with a projector."*

### `check_availability`

<span class="tool-kind tool-kind-read">Read-only</span>

**Free and taken.** The times of a day (or of up to 7), calculated from the weekly hours, the blocks and the bookings, each free one with `creditCost` and `canAfford`. It never says who booked, unless the space shows the name.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | |
| `date` | `YYYY-MM-DD` | No | The day (default: today) |
| `days` | 1 to 7 | No | How many days |
| `resource_id`, `host_member_id` | id | No | Just one room, or just one person |
| `duration_minutes` | number | No | Default: the shortest booking |

### `list_booking_resources`

<span class="tool-kind tool-kind-read">Read-only</span>

**The rooms.** Rooms, desks, stations and agendas of the space. A member sees only the listed, active ones open for booking; the team sees them all. Parameters: `space` (required), `kind`, `host_member_id`, `page`, `limit`.

### `list_booking_amenities`

<span class="tool-kind tool-kind-read">Read-only</span>

**The amenities catalog** the community accepts (projector, TV, whiteboard, Wi-Fi…). A key outside the catalog is refused. No parameters.

### `get_booking_resource`

<span class="tool-kind tool-kind-read">Read-only</span>

**One room** with the effective rules already combined with the space's defaults (hours, slot, duration limits, notice, cancellation window). Parameter: `resource_id`.

## Book

### `create_booking`

<span class="tool-kind tool-kind-write">Changes</span>

**Book for yourself.** Books right away (already **confirmed**) and **debits your credits** in the same step. Before that, the assistant states the cost and the balance. To book for another member, use [`create_booking_for_member`](#create-booking-for-member). The **courtesy** (`waive_credits` with `waive_reason`) is only for the owner and the admin. The confirmation email with the calendar invite goes into the queue. Returns `creditCost` and `balanceAfter`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `resource_id` | id | Yes | From `list_booking_resources` or the search |
| `starts_at` | date and time | Yes | Local time, e.g. `2026-11-03T14:00` |
| `ends_at` or `duration_minutes` | date and time or number | One of the two | Default: the shortest booking |
| `attendee_count` | number | No | How many people |
| `title`, `notes` | text | No | Purpose and notes |
| `waive_credits`, `waive_reason` | true or false, text | No | Courtesy, owner and admin only |
| `pay_with` | `own` or `company` | No | Who pays: your balance (default) or your [company's](/membros/empresas#the-company-s-credits). With `company`, the answer says *"Paid with the credits of …"* and `creditPayer` carries the company |

**Ask like this:** *"Book Room 2 tomorrow from 2 to 4 PM for 6 people."* · *"Book Room 1 tomorrow at 10 AM with the company's credits."*

### `create_booking_for_member`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Book for a member.** Debits **their** credits (or is free as a courtesy, owner and admin only, with `waive_reason`) and they get the email with the invite. Before acting, it shows a summary with the member and **their balance** and only repeats the call after your yes. Same parameters and same responses as `create_booking`, plus `member_id` (with `pay_with: company`, the member's company wallet pays). *Minimum role: moderator (or finance).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `member_id` | id | Yes | The member (`list_members`) |

**Ask like this:** *"Book Room 1 on Friday at 10 AM for Maria."*

### `list_my_bookings`

<span class="tool-kind tool-kind-read">Read-only</span>

**Your bookings**, or, with `as_host`, the ones people made on the agenda you offer. Filters: `space`, `resource_id`, `status` (list, e.g. `CONFIRMED,NO_SHOW`), `from`, `to`, `order`, `page`, `limit`. Each one carries `canCancel`.

### `list_bookings`

<span class="tool-kind tool-kind-read">Read-only</span>

**All the community's bookings**, with the same filters. *Minimum role: moderator (or finance).*

### `get_booking`

<span class="tool-kind tool-kind-read">Read-only</span>

**One booking**: room, person, times, status, cost in credits, whether it was a courtesy or a late cancellation, and what whoever asks can do. Only the booker, the host and the team; anyone else gets `404`. Parameter: `booking_id`.

## Change a booking

### `cancel_booking`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Cancel.** When the booker cancels **after the window** (24 h by default), the cancellation is marked as **late** and may lose the credits; within the window, or when the team or the host cancels, the refund is in full, always to whoever paid (the person or the company). The person gets the email and the event is canceled in their calendar. A booking that has already started can't be canceled (use the no-show). Shows a summary and only acts after your yes.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `booking_id` | id | Yes | |
| `reason` | text | No | Goes in the email |

### `reschedule_booking`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Reschedule.** Changes the time in the same room (what you don't send stays, and the length is kept). **Touches the credits**: a pricier time debits the difference (without balance, the response carries `shortfall`), a cheaper one refunds, a courtesy doesn't touch the ledger. The invite is updated and the person gets an email. Shows the summary and returns `charged`, `refunded` and `balanceAfter`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `booking_id` | id | Yes | |
| `starts_at`, `ends_at`, `duration_minutes` | date and time, number | No | The new time |
| `attendee_count` | number | No | |
| `pay_with` | `own` or `company` | No | Switches who pays (can come alone): whoever paid gets everything back and the new payer pays the whole cost |

### `mark_booking_no_show`

<span class="tool-kind tool-kind-write">Changes</span>

**Mark the no-show.** Only for a confirmed booking that has already started. The community decides whether the credits are lost; the response says how many were refunded. *Team and host.* Parameter: `booking_id`.

### `get_booking_ics`

<span class="tool-kind tool-kind-read">Read-only</span>

**The calendar invite**, the same file as in the confirmation email, returned as text in `ics` with the file name (a canceled booking returns the cancellation). Parameter: `booking_id`.

## Rooms, blocks and prices

### `create_booking_resource`

<span class="tool-kind tool-kind-write">Changes</span>

**Create a room, desk or agenda.** `kind` is `ROOM`, `DESK`, `STATION` or `OTHER` (owner and admin); in Scheduling, `PERSON`: who can create a person's agenda is decided by the space's `offerers` (a member creates only their own). The type doesn't change later. With no price band, it's free.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | |
| `kind` | type | Yes | |
| `name` | text | Yes | How members see it |
| `description`, `capacity`, `units`, `amenities` | | No | `units`: simultaneous bookings (1 = exclusive) |
| `bookable`, `active`, `listed` | true or false | No | `listed` owner and admin only |
| `meeting_url` | link | No | Video call link |
| `opening_hours` | weekly hours | No | Keys `mon` to `sun`, `HH:MM` periods |
| `slot_minutes`, `min_duration_minutes`, `max_duration_minutes`, `buffer_minutes`, `min_notice_minutes`, `max_advance_days`, `cancellation_window_hours` | number | No | Empty, follows the space |
| `image_url` or `image_base64` | | No | The photo |
| `owner_member_id` | id | No | Scheduling, owner and admin: whose agenda it is |

### `update_booking_resource`

<span class="tool-kind tool-kind-write">Changes</span>

**Edit.** Changes only what you send; replaces the photo with `image_url` or `image_base64` and removes it with `remove_image`. Existing bookings **keep their price**. Parameter `resource_id` plus the fields above. In Scheduling, whoever offers edits their own agenda, except `listed`.

### `delete_booking_resource`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Delete.** With active upcoming bookings, the response is `409` listing them; with `cancel_bookings: true`, it cancels them all (full refund and an email to each person) and deletes. *Owner or admin.*

### `list_availability_exceptions`

<span class="tool-kind tool-kind-read">Read-only</span>

**Blocks (`CLOSED`) and extra hours (`OPEN`)** of a room from now on. Parameters: `resource_id`, `from`.

### `create_availability_exception`

<span class="tool-kind tool-kind-write">Changes</span>

**Block or open a period.** `kind` is `CLOSED` (default: maintenance, holiday) or `OPEN` (extra). A block with active bookings is refused with `409` listing them: to cancel them, use `cancel_bookings_for_closure`. Rooms: the team; people's agendas: whoever offers and the owner and the admin.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `resource_id` | id | Yes | |
| `starts_at`, `ends_at` | date and time | Yes | Local time |
| `kind` | `CLOSED` or `OPEN` | No | Default `CLOSED` |
| `reason` | text | No | Shown to those whose booking is canceled |

### `cancel_bookings_for_closure`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Block, canceling.** Blocks the period **and cancels** every active booking within it: each one is refunded in full, each person gets the email and the event is canceled in their calendar. Says how many were canceled. Use it after `create_availability_exception` answered `409` and the person agreed. Parameters: `resource_id`, `starts_at`, `ends_at`, `reason`.

### `delete_availability_exception`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Remove** a block or extra hours. Bookings the block already canceled **don't come back**. Parameters: `resource_id`, `exception_id`.

### `list_price_rules`

<span class="tool-kind tool-kind-read">Read-only</span>

**A room's price bands** (the only source of price; with no band, it's free). The first that fits wins: a specific date, then a weekday, then the default; the cost is per block, and each block uses the band it starts in. *Owner or admin.* Parameter: `resource_id`.

### `create_price_rule`

<span class="tool-kind tool-kind-write">Changes</span>

**Create a band.** For example, 3 credits per 30 minutes. Hours offered by a member are always free; in Scheduling, a paid band needs **Allow paid hours** in the space (`409`). Charging in money isn't done yet.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `resource_id` | id | Yes | |
| `mode` | `FREE` or `CREDITS` | Yes | |
| `block_minutes` | 5 to 1440 | With `CREDITS` | The block size |
| `credits` | integer | With `CREDITS` | Credits per block |
| `weekday` | 0 (Sunday) to 6 | No | Empty, every day |
| `specific_date` | `YYYY-MM-DD` | No | Wins over the weekday |
| `from_time`, `to_time` | `HH:MM` | No | The part of the day |

### `update_price_rule`

<span class="tool-kind tool-kind-write">Changes</span>

**Edit** a band (`resource_id`, `rule_id`, and only what changes). Bookings already made keep their price.

### `delete_price_rule`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Remove** a band. With none left, the room is free; bookings already made keep their price. Parameters: `resource_id`, `rule_id`.

## Door panel and starting the meeting

The [door panel](/espacos/reservas) is the tablet at the room's door, with one secret link per device. The assistant creates and revokes those links and starts meetings; the panel options (release the room nobody starts, grace period, button, durations, name and title) are changed with `update_space`, in the `bookings.door_panel` argument.

### `list_room_panels`

<span class="tool-kind tool-kind-read">Read-only</span>

**The panels (tablet links)** of a room, newest first: name, creation, last use and revocation. **It never returns the link.** *Team.* Parameter: `resource_id`.

### `create_room_panel`

<span class="tool-kind tool-kind-write">Changes</span>

**Creates the panel** and returns the link in `url`, **only once**: it is secret (whoever has it uses the panel) and doesn't appear again, so the assistant asks you to copy it and open it on the tablet. At most 10 active panels per room (`409`). *Owner, admin or moderator.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `resource_id` | id | Yes | The room |
| `name` | text, up to 80 | Yes | For example, *Room 1 tablet* |

### `revoke_room_panel`

<span class="tool-kind tool-kind-confirm">Asks for confirmation</span>

**Revokes the panel.** The link stops working at once (the tablet gets `401`). It shows the summary and **asks for your yes** first. *Owner, admin or moderator.* Parameters: `resource_id`, `panel_id` (from `list_room_panels`).

### `check_in_booking`

<span class="tool-kind tool-kind-write">Changes</span>

**Starts the meeting** of a **confirmed** booking, from 10 minutes before the start until the end (or until the end of the grace period, if the community releases rooms with no start). Whoever booked and the owner, admin and moderator; anyone else gets `404`. Repeating returns `alreadyCheckedIn: true`. Parameter: `booking_id`.

### Recipe: I lost the tablet's link

The link only appears at creation. To replace it:

| # | Tool | What it does |
|---|---|---|
| 1 | `list_room_panels` | Finds the tablet's panel by name |
| 2 | `revoke_room_panel` | Shows the summary and **asks for your yes**; the old link stops at once |
| 3 | `create_room_panel` | Creates another and shows the new link, once |

**Result:** the old link revoked and the new one to open on the tablet.

## Scheduling

### `get_scheduling_config`

<span class="tool-kind tool-kind-read">Read-only</span>

**The space's rules**: who offers (`offerers`), `allowPaidSlots`, `requireListingApproval`, whether you can offer now, your agendas and, for the owner and the admin, how many offers are waiting for approval. A member's hours are always free. Parameter: `space`.

### `search_scheduling_hosts`

<span class="tool-kind tool-kind-read">Read-only</span>

**People with free time.** Each one comes with their agendas, how many free times they have and the next 3 (free or the cost in credits, with `canAfford`) and your balance. When nobody has time, it suggests the nearest. To book, use [`create_booking`](#create-booking).

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | |
| `q` | text | No | Part of the name |
| `date`, `from`, `to` | | No | The day and the window; with no day, the next 14 |
| `duration_minutes`, `host_member_id`, `page`, `limit` | | No | |

### `get_scheduling_host`

<span class="tool-kind tool-kind-read">Read-only</span>

**A person's page**, with the grid of free times per day (1 to 7 days). A person with no listed agenda, who lost the role or from another community answers `404`. Parameters: `space`, `member_id`, `date`, `days`, `duration_minutes`.

### `list_pending_scheduling_offers`

<span class="tool-kind tool-kind-read">Read-only</span>

**Agendas waiting for approval**, each with its owner and whether they still meet the rule of who offers. *Owner or admin.* Parameter: `space`.

### `set_booking_resource_listing`

<span class="tool-kind tool-kind-write">Changes</span>

**Approve or take an agenda off the list.** `listed: true` approves (the agenda shows to members); `false` takes it off (it doesn't cancel any booking already made, it only prevents new ones). Reversible, no confirmation. *Owner or admin.* Parameters: `resource_id`, `listed`.

## Related

- [Bookings](/espacos/reservas)
- [Scheduling](/espacos/agendamento)
- [Tools · Credits](/mcp/ferramentas-creditos)
- [Tools](/mcp/ferramentas)
- [Money and confirmation](/mcp/dinheiro-e-confirmacao)
- [Recipes](/mcp/receitas)
