> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brelio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tools

> The tools Brelio's MCP server offers your assistant, generated from the catalogue.

Your assistant only sees the tools your Brelio permissions let you use. This page is generated from the operation catalogue: do not edit it by hand.

## `brelio_list_agenda`

**Agenda** · Read only

Reads the clinic's agenda: the appointments in a time window, with start and end, status, professional, service, patient and center.

**Needs:** permission `calendar.read` · data area `agenda` · REST `GET /v1/agenda`

**When to use:** To see which appointments fall on a day or week, or a professional's or center's. At most 31 days per call; it returns no notes or names.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |
| `from` | string | Start of the window, ISO 8601 (inclusive). |
| `to` | string | End of the window, ISO 8601. At most 31 days after `from`. |
| `professionalId` | string | Only this professional’s appointments. |
| `centerId` | string | Only this center’s appointments. |

### Example

```json theme={null}
{
  "from": "2026-11-09T00:00:00Z",
  "to": "2026-11-16T00:00:00Z",
  "limit": 50
}
```

## `brelio_list_api_keys`

**Organization API keys** · Read only

Lists the organization's API keys, without their secret.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `GET /v1/api-keys`

**When to use:** To manage access for the organization's programs (integrations, scripts) without a person's session.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |

### Example

```json theme={null}
{
  "limit": 100
}
```

## `brelio_revoke_api_keys`

**Revoke API key** · Asks before acting

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Revokes an organization API key. A key may revoke only itself; revoking others takes a person's session. It cannot be undone.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `POST /v1/api-keys/{id}/revoke`

**When to use:** To manage access for the organization's programs (integrations, scripts) without a person's session.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | |

### Example

```json theme={null}
{
  "id": "api_key_01EXAMPLEORG"
}
```

## `brelio_cancel_appointments`

**Cancel appointment** · Asks before acting

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Cancels a one-off appointment. It cannot be undone through the API.

**Needs:** permission `appointments.cancel` · data area `agenda` · REST `POST /v1/appointments/{id}/cancel`

**When to use:** Only when asked to cancel that appointment. Read it with appointments.get first and send its version as expectedVersion; if it changed meanwhile the answer is 409. Recurring appointments cannot be cancelled here.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | The id agenda.list returns, or the appointment series id. |
| `expectedVersion` | string | The `version` of the appointment as `appointments.get` returned it. Do not build it yourself. |
| `reason` | string \| null | Why it was cancelled, in administrative terms only. Never include clinical information. |

### Example

```json theme={null}
{
  "id": "6a1e4c2b-8d3f-4e5a-9b7c-0d1e2f3a4b5c",
  "expectedVersion": "1"
}
```

## `brelio_create_appointments`

**Create appointment** · Writes data

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Books a patient with a professional for a service, with the same rules as Brelio's agenda.

**Needs:** permission `appointments.create` · data area `agenda` · REST `POST /v1/appointments`

**When to use:** After choosing a time with availability.search. If the time is no longer free the answer is 409: search again.

### Arguments

| Name | Type | Description |
| - | - | - |
| `patientId` | string | |
| `professionalId` | string | |
| `serviceId` | string | |
| `start` | string | When it starts, ISO 8601. Take it from availability.search. |
| `durationMinutes` | integer | Defaults to the service’s duration. |
| `centerId` | string | Required when the organization has more than one center. |

### Example

```json theme={null}
{
  "patientId": "9e2d4c6b-1a3f-4b5d-8c7e-6f5a4b3c2d1e",
  "professionalId": "2c4e6a8b-0d1f-4a3c-9e5b-7d9f1b3d5f7a",
  "serviceId": "4d6f8b0c-2e4a-4c6e-8a0c-2e4a6c8e0a2c",
  "start": "2026-11-11T09:00:00Z"
}
```

## `brelio_get_appointments`

**Appointment** · Read only

Returns one appointment: when it is, its status, professional, service, patient, center and version.

**Needs:** permission `appointments.read` · data area `agenda` · REST `GET /v1/appointments/{id}`

**When to use:** Before rescheduling or cancelling an appointment, to read its current version; or to check its status.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | The id agenda.list returns, or the appointment series id. |

### Example

```json theme={null}
{
  "id": "6a1e4c2b-8d3f-4e5a-9b7c-0d1e2f3a4b5c"
}
```

## `brelio_reschedule_appointments`

**Reschedule appointment** · Writes data

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Moves a one-off appointment to another time, with the same rules as Brelio's agenda. Recurring appointments are not supported.

**Needs:** permission `appointments.reschedule` · data area `agenda` · REST `POST /v1/appointments/{id}/reschedule`

**When to use:** Read the appointment with appointments.get first and send its version as expectedVersion; if it changed you get 409 VERSION\_CONFLICT. Pick the new time with availability.search; if it is no longer free, 409.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | The id agenda.list returns, or the appointment series id. |
| `expectedVersion` | string | The `version` of the appointment as appointments.get returned it. Do not build it yourself. |
| `start` | string | The new start, ISO 8601. Take it from availability.search. |
| `durationMinutes` | integer | The new duration. Defaults to the appointment’s current one. |

### Example

```json theme={null}
{
  "id": "6a1e4c2b-8d3f-4e5a-9b7c-0d1e2f3a4b5c",
  "expectedVersion": "1",
  "start": "2026-11-12T10:00:00Z"
}
```

## `brelio_search_availability`

**Free slots** · Read only

Finds free slots to book a patient with a professional for a service: up to 50 start times, with the same rules as Brelio's agenda.

**Needs:** permission `calendar.read` · data area `agenda` · REST `GET /v1/availability`

**When to use:** Before creating an appointment, to offer times that can be booked without a conflict. Windows up to 31 days.

### Arguments

| Name | Type | Description |
| - | - | - |
| `professionalId` | string | The professional to book. |
| `patientId` | string | The patient to book, when known; it does not change the slots, which are the professional’s time. |
| `serviceId` | string | The service to book; its duration is the default length. |
| `centerId` | string | Required when the organization has more than one center. |
| `from` | string | Start of the window, ISO 8601. |
| `to` | string | End of the window, ISO 8601. At most 31 days after `from`. |
| `durationMinutes` | integer | Length of the appointment. Defaults to the service’s duration. |

### Example

```json theme={null}
{
  "professionalId": "7d1f0c2e-5a3b-4c8d-9e6f-1a2b3c4d5e6f",
  "patientId": "5c2e8d1a-9b3f-4a6e-8d7c-2f1e0a9b8c7d",
  "serviceId": "3b9e7f1a-2c4d-4e6f-8a0b-1c2d3e4f5a6b",
  "from": "2026-11-09T00:00:00Z",
  "to": "2026-11-16T00:00:00Z"
}
```

## `brelio_list_centers`

**Centers** · Read only

Lists the organization's centers. The default center has isDefault.

**Needs:** permission `organization.centers.read` · data area `team` · REST `GET /v1/centers`

**When to use:** To know the clinic's locations, or to get a center id before filtering by it.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |

### Example

```json theme={null}
{
  "limit": 100
}
```

## `brelio_list_me_api_keys`

**My API keys** · Read only

Lists the person's API keys in this organization.

**Needs:** permission `self` · data area `integrations` · REST `GET /v1/me/api-keys`

**When to use:** For a person to manage their own keys and connections. An organization key cannot use it, and creating or revoking takes the person's own session.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |

### Example

```json theme={null}
{
  "limit": 100
}
```

## `brelio_list_me_connections`

**My connections** · Read only

Lists the apps and assistants the person authorized to act for them.

**Needs:** permission `self` · data area `integrations` · REST `GET /v1/me/connections`

**When to use:** For a person to manage their own keys and connections. An organization key cannot use it, and creating or revoking takes the person's own session.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |

### Example

```json theme={null}
{
  "limit": 100
}
```

## `brelio_list_partner_apps`

**Partner apps** · Read only

Lists the organization's partner (machine-to-machine) apps, without their secret.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `GET /v1/partner-apps`

**When to use:** To manage access for the organization's programs (integrations, scripts) without a person's session.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |

### Example

```json theme={null}
{
  "limit": 100
}
```

## `brelio_revoke_partner_apps`

**Revoke partner app** · Asks before acting

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Deletes a partner app; its tokens stop working. An app may delete only itself; deleting others takes a person's session. It cannot be undone.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `POST /v1/partner-apps/{id}/revoke`

**When to use:** To manage access for the organization's programs (integrations, scripts) without a person's session.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | |

### Example

```json theme={null}
{
  "id": "conn_app_01EXAMPLE"
}
```

## `brelio_archive_patients`

**Archive patient** · Asks before acting

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Archives a patient: it no longer appears in lists or searches, but its history is kept. It is reversible on the web.

**Needs:** permission `patients.administrative.archive` · data area `patients` · REST `POST /v1/patients/{id}/archive`

**When to use:** When the clinic asks to retire a patient. Read the patient with patients.get first and send its version as expectedVersion; if it changed you get a 409.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | The patient id. |
| `expectedVersion` | string | The `version` of the patient as you read it. Do not build it yourself. |

### Example

```json theme={null}
{
  "id": "0f6c2a8e-4b1d-4c3a-9e57-2d8b1f0a6c41",
  "expectedVersion": "2026-01-15 10:00:00+00"
}
```

## `brelio_create_patients`

**Create patient** · Writes data

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Registers a new patient with their administrative details and links them to a center.

**Needs:** permission `patients.administrative.create` · data area `patients` · REST `POST /v1/patients`

**When to use:** When the patient does not exist yet: search with patients.list first so you do not create a duplicate.

### Arguments

| Name | Type | Description |
| - | - | - |
| `firstName` | string | |
| `lastName` | string | |
| `birthDate` | string | |
| `sex` | `male`, `female`, `other` | |
| `email` | string | |
| `phone` | string | |
| `centerId` | string | Center the patient belongs to. Defaults to the organization’s default center. |

### Example

```json theme={null}
{
  "firstName": "Laura",
  "lastName": "Serra",
  "birthDate": "1990-05-14",
  "email": "laura.serra@example.com",
  "phone": "+34 600 123 456"
}
```

## `brelio_get_patients`

**Patient** · Read only

Returns one patient's administrative details: name, contact, birth date and status.

**Needs:** permission `patients.administrative.read` · data area `patients` · REST `GET /v1/patients/{id}`

**When to use:** When you already have the patient's id and need their contact details or status.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | The patient id. |

### Example

```json theme={null}
{
  "id": "0f6c2a8e-4b1d-4c3a-9e57-2d8b1f0a6c41"
}
```

## `brelio_list_patients`

**Patients** · Read only

Lists the clinic's patients with their administrative details, sorted by last name.

**Needs:** permission `patients.administrative.read` · data area `patients` · REST `GET /v1/patients`

**When to use:** To find a patient by name, email or phone and get their id before reading their record or booking them.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |
| `search` | string | Matches name, email, phone, patient code, internal code or identification number, as the web search. |
| `status` | `active`, `inactive`, `discharged` | Only patients in this status. |

### Example

```json theme={null}
{
  "limit": 25
}
```

## `brelio_update_patients`

**Update patient** · Writes data

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Changes a patient's administrative details (name, contact, birth date). Only the fields sent change; null clears a field.

**Needs:** permission `patients.administrative.update` · data area `patients` · REST `PATCH /v1/patients/{id}`

**When to use:** When a patient's details must be corrected or completed. Read the patient with patients.get first and send its version as expectedVersion; if it changed meanwhile the answer is 409 and you must read it again.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | The patient id. |
| `expectedVersion` | string | The `version` of the patient as you read it. Do not build it yourself. |
| `firstName` | string | |
| `lastName` | string | Cannot be cleared, as on the web. |
| `birthDate` | string \| null | Send null to clear it. |
| `sex` | `male`, `female`, `other` \| null | Send null to clear it. |
| `email` | string \| null | Send null to clear it. |
| `phone` | string \| null | Send null to clear it. |

### Example

```json theme={null}
{
  "id": "0f6c2a8e-4b1d-4c3a-9e57-2d8b1f0a6c41",
  "expectedVersion": "2026-01-15 10:00:00+00",
  "phone": "+34 600 765 432"
}
```

## `brelio_list_platform_policy_decisions`

**Decision history** · Read only

History of decisions about the clinic's data, newest first: who, when and under which terms.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `GET /v1/platform-policy/decisions`

**When to use:** To audit who turned an area on or off, or who accepted patient data for a connection.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |
| `subjectType` | `organization`, `credential` | |
| `subjectId` | string | |

### Example

```json theme={null}
{
  "limit": 25
}
```

## `brelio_list_platform_policy`

**Data integrations may use** · Read only

Which data areas (schedule, team, patients, billing) the clinic allows assistants and integrations to use.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `GET /v1/platform-policy`

**When to use:** When an operation answers DATA\_AREA\_OFF, to see what is off and tell the person.

### Arguments

No arguments.

### Example

```json theme={null}
{}
```

## `brelio_list_professionals`

**Professionals** · Read only

Lists the clinic team's professionals and their status.

**Needs:** permission `professionals.read` · data area `team` · REST `GET /v1/professionals`

**When to use:** To know who works at the clinic, or to get a professional's id before reading their agenda.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |
| `status` | `pending`, `active`, `inactive` | Only professionals in this status. |

### Example

```json theme={null}
{
  "limit": 25
}
```

## `brelio_list_services`

**Services** · Read only

Lists the clinic's services: name, duration, status and price.

**Needs:** permission `services.read` · data area `team` · REST `GET /v1/services`

**When to use:** To know what can be booked, how long it takes or what it costs, or to get a service id.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |
| `status` | `active`, `inactive` | Only records whose status equals this value. |
| `eligiblePlanId` | string | Only records whose package equals this value. |
| `activePackageAssignments` | `has`, `none` | Only records whose active assignments equals this value. |
| `search` | string | Text matched against the service's searchable fields. |

### Example

```json theme={null}
{
  "limit": 25
}
```

## `brelio_delete_webhooks`

**Delete webhook** · Asks before acting

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Deletes a webhook and its delivery log; it stops receiving notices at once.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `POST /v1/webhooks/{id}/delete`

**When to use:** When a system should no longer receive the clinic's notices.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | Webhook endpoint id. |
| `expectedVersion` | integer | The `version` you read. The call fails with 409 if the endpoint changed since, and never overwrites. |

### Example

```json theme={null}
{
  "id": "0b9a4a1e-6a4c-4d43-9a39-4c1f3a0d2b11",
  "expectedVersion": 1
}
```

## `brelio_list_webhook_event_types`

**Webhook event types** · Read only

Lists the events a webhook can subscribe to.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `GET /v1/webhook-event-types`

**When to use:** Before creating a webhook, to choose its events.

### Arguments

No arguments.

### Example

```json theme={null}
{}
```

## `brelio_get_webhooks`

**Webhook** · Read only

Shows a webhook with its latest deliveries: response, attempts and next retry.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `GET /v1/webhooks/{id}`

**When to use:** To diagnose why a system is not receiving notices.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | Webhook endpoint id. |

### Example

```json theme={null}
{
  "id": "0b9a4a1e-6a4c-4d43-9a39-4c1f3a0d2b11"
}
```

## `brelio_list_webhooks`

**Webhooks** · Read only

Lists the organization's webhooks, their status and since when they fail.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `GET /v1/webhooks`

**When to use:** To review which systems receive notices or to find a webhook id.

### Arguments

| Name | Type | Description |
| - | - | - |
| `cursor` | string | `next_cursor` of the previous page. Omit it for the first page. |
| `limit` | integer | Page size, 1 to 100. |

### Example

```json theme={null}
{
  "limit": 25
}
```

## `brelio_redeliver_webhooks`

**Redeliver** · Writes data

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Sends a delivery again now, with the same webhook-id so the receiver does not process it twice.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `POST /v1/webhooks/{id}/redeliver`

**When to use:** After fixing the failing server, instead of waiting for the next retry.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | Webhook endpoint id. |
| `deliveryId` | string | A delivery from `recentDeliveries`. |

### Example

```json theme={null}
{
  "id": "0b9a4a1e-6a4c-4d43-9a39-4c1f3a0d2b11",
  "deliveryId": "5c2f8b7e-1d3a-4e6f-8a9b-0c1d2e3f4a5b"
}
```

## `brelio_test_webhooks`

**Test webhook** · Writes data

> [!WARNING]
>
> Not offered over MCP yet: in this version the MCP server only registers read tools. Call the REST endpoint.

Sends a signed test notice to the webhook, whatever it subscribes to.

**Needs:** permission `integrations.keys.manage` · data area `integrations` · REST `POST /v1/webhooks/{id}/test`

**When to use:** To check that the server receives and verifies notices.

### Arguments

| Name | Type | Description |
| - | - | - |
| `id` | string | Webhook endpoint id. |

### Example

```json theme={null}
{
  "id": "0b9a4a1e-6a4c-4d43-9a39-4c1f3a0d2b11"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.