<!-- Generated by `pnpm -F @family/api mcp:docs` — do not edit by hand. -->

# quok-mcp — MCP tools

Server version `0.1.0`. 20 tools.

> Quok is the family's shared household calendar and lists. When the user mentions Quok, "the family", "the household", or "our" calendar/events/lists/tasks/shopping, use these tools — not a personal Google Calendar or another calendar/list connector. The event and list tools here operate on this one family's shared data.

| Tool | Summary | Hints |
| --- | --- | --- |
| [`server_info`](#server_info) | Returns Quok MCP server status, version, and the family/member this connection is bound to. Use to verify connectivity and which environment (staging vs prod) you are hitting. | read-only |
| [`list_family_events`](#list_family_events) | List this Quok family's shared calendar events (appointments, bills, chores, birthdays, etc.) within a time window. Not a personal Google Calendar. Returns only events the connected member can see. | read-only |
| [`get_family_event`](#get_family_event) | Fetch a single event from this Quok family's shared calendar by id, including its full details. Not a personal Google Calendar. | read-only |
| [`create_family_event`](#create_family_event) | Create an event on this Quok family's shared calendar (a typed event: appointment, bill, chore, birthday, meal, lesson, flight, hotel, etc.). This is the Quok household calendar, not a personal Google Calendar. Defaults to `confirmed`; pass status `proposed` to stage it for review. | — |
| [`update_family_event`](#update_family_event) | Update fields on an existing event in this Quok family's shared calendar (not a personal Google Calendar). Provide only the fields to change in "patch". Patch `status` to transition the event (e.g. confirm a proposed event, or re-propose a confirmed one). | — |
| [`delete_family_event`](#delete_family_event) | Permanently delete an event from this Quok family's shared calendar. Not a personal Google Calendar. | destructive, idempotent |
| [`list_family_lists`](#list_family_lists) | List the family's task and shopping lists, optionally filtered by type. | read-only |
| [`list_family_items`](#list_family_items) | List the items on a specific list. | read-only |
| [`get_family_item`](#get_family_item) | Fetch a single list item (task or shopping item) by id. | read-only |
| [`list_family_tasks`](#list_family_tasks) | List the family's to-do items: items across all todo lists. Mirrors the app's "All tasks" view. | read-only |
| [`list_family_shopping`](#list_family_shopping) | List the family's shopping items (items across all shopping and groceries lists). | read-only |
| [`add_family_task`](#add_family_task) | Add a to-do item. Targets the given listId, or the family's default todo list when omitted. | — |
| [`add_family_shopping_item`](#add_family_shopping_item) | Add a shopping item. Targets the given listId, or the family's default shopping list when omitted. | — |
| [`update_family_list_item`](#update_family_list_item) | Update fields on a Quok list item (task or shopping item). Provide only the fields to change in "patch"; set `checked` to tick/untick it, or `listId` to move it to another list. | — |
| [`complete_family_list_item`](#complete_family_list_item) | Tick off a list item (or untick it by passing checked=false). | idempotent |
| [`delete_family_list_item`](#delete_family_list_item) | Permanently delete a list item (task or shopping item). | destructive, idempotent |
| [`create_family_list`](#create_family_list) | Create a new Quok family list (a todo, shopping, groceries, or packing list). Returns the new list including its id. | — |
| [`rename_family_list`](#rename_family_list) | Rename a Quok family list. Provide only the fields to change in "patch". | — |
| [`delete_family_list`](#delete_family_list) | Permanently delete a Quok family list and all its items. The seeded default list cannot be deleted. | destructive, idempotent |
| [`set_default_family_list`](#set_default_family_list) | Make a list the family's default for its type, so add_family_task / add_family_shopping_item route to it when no listId is given. Clears any prior default of the same type. | idempotent |

## server_info

**Server info**

Returns Quok MCP server status, version, and the family/member this connection is bound to. Use to verify connectivity and which environment (staging vs prod) you are hitting.

Hints: read-only.

No parameters.

## list_family_events

**List family events**

List this Quok family's shared calendar events (appointments, bills, chores, birthdays, etc.) within a time window. Not a personal Google Calendar. Returns only events the connected member can see.

Hints: read-only.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `from` | string | yes | Inclusive lower bound on start time (ISO 8601) |
| `to` | string | yes | Exclusive upper bound on start time (ISO 8601) |
| `type` | string | no |  |
| `status` | string | no |  |

## get_family_event

**Get family event**

Fetch a single event from this Quok family's shared calendar by id, including its full details. Not a personal Google Calendar.

Hints: read-only.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | Event id |

## create_family_event

**Create family event**

Create an event on this Quok family's shared calendar (a typed event: appointment, bill, chore, birthday, meal, lesson, flight, hotel, etc.). This is the Quok household calendar, not a personal Google Calendar. Defaults to `confirmed`; pass status `proposed` to stage it for review.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `title` | string | yes |  |
| `startsAt` | string | yes |  |
| `endsAt` | union | no |  |
| `allDay` | boolean | no |  |
| `location` | union | no |  |
| `notes` | union | no |  |
| `assigneeIds` | array | no |  |
| `visibility` | string | no |  |
| `rrule` | union | no |  |
| `timezone` | union | no |  |
| `reminderOffsets` | array | no |  |
| `status` | string | no |  |
| `type` | string | yes | Event type — selects the shape of `data`. |
| `data` | object | yes | Type-specific fields, validated against `type` (appointment, chore, birthday, anniversary, meal, bill, lesson, flight, hotel, activity). Pass {} when the type carries no extra data. |

## update_family_event

**Update family event**

Update fields on an existing event in this Quok family's shared calendar (not a personal Google Calendar). Provide only the fields to change in "patch". Patch `status` to transition the event (e.g. confirm a proposed event, or re-propose a confirmed one).

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | Event id |
| `patch` | object | yes |  |
| `expectedVersion` | string | no | Optional optimistic-concurrency version (updatedAt) to guard against races |

## delete_family_event

**Delete family event**

Permanently delete an event from this Quok family's shared calendar. Not a personal Google Calendar.

Hints: destructive, idempotent.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | Event id |
| `expectedVersion` | string | no |  |

## list_family_lists

**List family lists**

List the family's task and shopping lists, optionally filtered by type.

Hints: read-only.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `type` | string | no |  |

## list_family_items

**List family items**

List the items on a specific list.

Hints: read-only.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `listId` | string | yes | List id |

## get_family_item

**Get family item**

Fetch a single list item (task or shopping item) by id.

Hints: read-only.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | List item id |

## list_family_tasks

**List family tasks**

List the family's to-do items: items across all todo lists. Mirrors the app's "All tasks" view.

Hints: read-only.

No parameters.

## list_family_shopping

**List family shopping items**

List the family's shopping items (items across all shopping and groceries lists).

Hints: read-only.

No parameters.

## add_family_task

**Add family task**

Add a to-do item. Targets the given listId, or the family's default todo list when omitted.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `text` | string | yes |  |
| `checked` | boolean | no |  |
| `position` | integer | no |  |
| `assigneeIds` | array | no |  |
| `listId` | string | no | Target todo list id; defaults to the family todo list |

## add_family_shopping_item

**Add family shopping item**

Add a shopping item. Targets the given listId, or the family's default shopping list when omitted.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `text` | string | yes |  |
| `checked` | boolean | no |  |
| `position` | integer | no |  |
| `assigneeIds` | array | no |  |
| `listId` | string | no | Target shopping list id; defaults to the family shopping list |

## update_family_list_item

**Update family list item**

Update fields on a Quok list item (task or shopping item). Provide only the fields to change in "patch"; set `checked` to tick/untick it, or `listId` to move it to another list.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `listId` | string | no | Id of the list the item belongs to; omit to resolve the item by its id alone |
| `itemId` | string | yes | List item id |
| `patch` | object | yes |  |
| `expectedVersion` | string | no | Optional optimistic-concurrency version (updatedAt) to guard against races |

## complete_family_list_item

**Complete family list item**

Tick off a list item (or untick it by passing checked=false).

Hints: idempotent.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `listId` | string | no | Id of the list the item belongs to; omit to resolve the item by its id alone |
| `itemId` | string | yes | List item id |
| `checked` | boolean | no | Target checked state; defaults to true (tick off). Pass false to untick. |
| `expectedVersion` | string | no |  |

## delete_family_list_item

**Delete family list item**

Permanently delete a list item (task or shopping item).

Hints: destructive, idempotent.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `listId` | string | no | Id of the list the item belongs to; omit to resolve the item by its id alone |
| `itemId` | string | yes | List item id |
| `expectedVersion` | string | no |  |

## create_family_list

**Create family list**

Create a new Quok family list (a todo, shopping, groceries, or packing list). Returns the new list including its id.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `type` | string | yes |  |
| `title` | string | yes |  |
| `eventId` | union | no |  |

## rename_family_list

**Rename family list**

Rename a Quok family list. Provide only the fields to change in "patch".

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | List id |
| `patch` | object | yes |  |
| `expectedVersion` | string | no |  |

## delete_family_list

**Delete family list**

Permanently delete a Quok family list and all its items. The seeded default list cannot be deleted.

Hints: destructive, idempotent.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | List id |
| `expectedVersion` | string | no |  |

## set_default_family_list

**Set default family list**

Make a list the family's default for its type, so add_family_task / add_family_shopping_item route to it when no listId is given. Clears any prior default of the same type.

Hints: idempotent.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | List id |
| `expectedVersion` | string | no |  |

