# 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> |
| [`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> |

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

**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` 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_profile_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_profile_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_profile_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 |

**Ask like this:** *"Book Room 2 tomorrow from 2 to 4 PM for 6 people."*

### `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 `profile_id`. *Minimum role: moderator (or finance).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `profile_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. 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 | |

### `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_profile_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`.

## 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_profile_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`, `profile_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)
