Server version 0.1.0 · 48 tools
Quok is a household organiser: one family's shared calendar, task lists, shopping lists, routines and chores, and the Stars members earn for them and spend on family rewards. Every tool here operates on the single family this connection is bound to, and on data the whole household shares - the events, lists, tasks, chores, rewards and shopping items they keep together in Quok, rather than any one member's private calendar or notes. Chore and reward tools require an authenticated active membership; the server derives the tenant and actor. Mutating chore and reward tools mint their own Idempotency-Key. Pass and reuse the optional requestId only when retrying the same call. Durable command replays recheck current permissions before returning the original result, then enforce versions for new commands.
get_choresread-onlyList visible chore definitions
List visible chore definitions. Cursor pagination uses stable time/UUID order, defaults to 50 rows and allows at most 250. Pass meta.nextCursor to continue while meta.hasMore is true. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | object | no |
post_choresCreate a chore definition
Create a chore definition. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
body | object | yes |
get_chores_by_idread-onlyRead a chore definition
Read a chore definition. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes |
patch_chores_by_iddestructiveidempotentEdit future work or archive a chore
Edit future work or archive a chore. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | union | yes |
get_chore_occurrencesidempotentList occurrences in a bounded local-date window
List occurrences in a bounded local-date window. This read returns persisted occurrences without changing them. Cursor pagination uses stable time/UUID order, defaults to 50 rows and allows at most 250. Pass meta.nextCursor to continue while meta.hasMore is true. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | object | yes |
get_routine_daysread-onlyRead routine work for each local date in a window
Read routine work for each local date in a window. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | object | yes |
post_chores_by_id_complete_slotidempotentComplete a routine slot on its scheduled date
Complete a routine slot on its scheduled date. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
body | object | yes |
post_chores_by_id_override_slotidempotentOverride one upcoming routine date before it is generated
Override one upcoming routine date before it is generated. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
body | object | yes |
get_chore_occurrences_by_idread-onlyRead an occurrence and its snapshotted terms
Read an occurrence and its snapshotted terms. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes |
patch_chore_occurrences_by_iddestructiveidempotentOverride a pending occurrence
Override a pending occurrence. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | object | yes |
post_chore_occurrences_by_id_completeidempotentComplete work; a manager releases its award in the same step
Complete work; a manager releases its award in the same step. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | object | yes |
post_chore_occurrences_by_id_reviewidempotentApprove or decline a pending award
Approve or decline a pending award. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | union | yes |
post_chore_occurrences_by_id_skipdestructiveidempotentSkip pending work without earning points
Skip pending work without earning points. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | object | yes |
post_chore_occurrences_by_id_reversedestructiveidempotentReverse completion if the balance covers the earning
Reverse completion if the balance covers the earning. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | object | yes |
get_chore_occurrences_by_id_historyread-onlyRead paginated occurrence action history
Read paginated occurrence action history. Cursor pagination uses stable time/UUID order, defaults to 50 rows and allows at most 250. Pass meta.nextCursor to continue while meta.hasMore is true. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes | |
query | object | no |
get_chore_commands_by_idread-onlyRecover a committed command for the authenticated actor
Recover a committed command for the authenticated actor. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes |
get_task_board_itemsread-onlyPage task items for the Tasks screen
Page task items for the Tasks screen. Open items are one-off tasks plus each routine at its next open occurrence, in list and position order; completed items are one-off tasks, newest first. Pass pageInfo.nextCursor while pageInfo.hasMore is true. countsByList totals the state by list across every page. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | object | yes |
get_rewardsread-onlyRead the visible reward catalog
Read the visible reward catalog. Cursor pagination uses stable time/UUID order, defaults to 50 rows and allows at most 250. Pass meta.nextCursor to continue while meta.hasMore is true. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | object | no |
post_rewardsCreate a reward with explicit member eligibility
Create a reward with explicit member eligibility. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
body | object | yes |
get_rewards_by_idread-onlyRead a reward with server-calculated eligibility and actions
Read a reward with server-calculated eligibility and actions. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes | |
query | object | no |
patch_rewards_by_iddestructiveidempotentEdit or archive a reward without changing redemption history
Edit or archive a reward without changing redemption history. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | union | yes |
post_rewards_by_id_redeemdestructiveidempotentRedeem for an active beneficiary as an organizer or adult
Redeem for an active beneficiary as an organizer or adult. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | object | yes |
get_reward_redemptionsread-onlyRead authorized redemption history, newest first, reversed rows included and marked
Read authorized redemption history, newest first, reversed rows included and marked. Cursor pagination uses stable time/UUID order, defaults to 50 rows and allows at most 250. Pass meta.nextCursor to continue while meta.hasMore is true. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | object | no |
get_reward_redemptions_by_idread-onlyRead a redemption and its historical terms
Read a redemption and its historical terms. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes |
post_reward_redemptions_by_id_reversedestructiveidempotentUndo a redemption once and refund its Stars
Undo a redemption once and refund its Stars. Requires a quoted numeric If-Match for the path resource. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | no | Opaque caller request id. Reuse only when retrying the same mutation. |
params | object | yes | |
headers | object | yes | |
body | object | yes |
get_members_by_id_pointsidempotentRead confirmed balance and pending earnings for an authorized member
Read confirmed balance and pending earnings for an authorized member. The first authorized read creates an empty point account if none exists. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes |
get_members_by_id_point_entriesread-onlyRead an authorized member ledger, newest first, with cursor pagination
Read an authorized member ledger, newest first, with cursor pagination. Cursor pagination uses stable time/UUID order, defaults to 50 rows and allows at most 250. Pass meta.nextCursor to continue while meta.hasMore is true. Served by the API.
| Parameter | Type | Required | Description |
|---|---|---|---|
params | object | yes | |
query | object | no |
server_inforead-onlyServer info
Returns Quok MCP server status, version, the family/member this connection is bound to, and how many members the family has. Use to verify connectivity and which environment (staging vs prod) you are hitting.
No parameters.
list_family_eventsread-onlyList family events
List this Quok family's shared calendar events (appointments, bills, chores, birthdays, etc.) within a time window. Recurring events are expanded: one entry per occurrence falling inside the window, each with its own `occurrenceStart` (the series may have started long before `from`), plus `seriesEventId` and `isException`. Use `occurrenceStart`, not `startsAt`, to date an occurrence. Returns only events the connected member can see. Includes both confirmed and `proposed` events (the latter staged by ingestion, pending review) - pass `status` to filter to one. Approve a proposal by calling update_family_event with status `confirmed`.
| 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_eventread-onlyGet family event
Fetch a single event from this Quok family's shared calendar by id, including its full details.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | Event id |
create_family_eventCreate family event
Create an event on this Quok family's shared calendar (a typed event: appointment, bill, chore, birthday, meal, lesson, flight, hotel, etc.). Defaults to `confirmed`; pass status `proposed` to stage it for review. Omit `reminderOffsets` to use the family's default reminder; send `[]` for no reminders. To end a repeating event, add `UNTIL=YYYYMMDDT235959Z` (the end of that day in the event's timezone) or `COUNT=n` to `rrule`; an UNTIL day before the start day is rejected.
| Parameter | Type | Required | Description |
|---|---|---|---|
title | string | yes | |
startsAt | string | yes | Start time as an ABSOLUTE INSTANT in ISO 8601: either UTC (`2026-07-18T05:20:00Z`) or a local time WITH its UTC offset (`2026-07-18T07:20:00+02:00`). Never append `Z` to a local wall-clock time - that shifts the event by the zone offset. For a flight, use the DEPARTURE airport local time with that airport offset. |
endsAt | union | no | End time as an absolute instant; same offset rules as `startsAt` (`null` = open-ended). For a flight, use the ARRIVAL airport local time with that airport offset. |
allDay | boolean | no | |
location | union | no | |
locationLat | union | no | |
locationLon | union | no | |
locationTimezone | union | no | |
locationPlaceRef | union | no | |
locationDetail | union | no | |
locationCountryCode | union | no | |
locationCategory | union | no | |
notes | union | no | |
assigneeIds | array | no | |
visibility | string | no | |
rrule | union | no | |
timezone | union | no | IANA timezone a RECURRING series expands against (e.g. "Europe/Warsaw"); omit/null for one-offs. Does NOT shift `startsAt`/`endsAt` - those must already be correct instants. |
endTimezone | union | no | IANA timezone for the `endsAt` wall clock (e.g. "Australia/Sydney" for a flight arrival). Omit/null to use `timezone`. Does NOT shift `endsAt` - it must already be the correct absolute instant. |
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_eventidempotentUpdate family event
Update fields on an existing event in this Quok family's shared 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). To end a repeating event, add `UNTIL=YYYYMMDDT235959Z` (the end of that day in the event's timezone) or `COUNT=n` to `rrule`; an UNTIL day before the start day is rejected.
| 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_eventdestructiveidempotentDelete family event
Permanently delete an event from this Quok family's shared calendar.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | Event id |
expectedVersion | string | no |
list_family_listsread-onlyList family lists
List the family's task and shopping lists, optionally filtered by type.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | no |
list_family_itemsread-onlyList family items
List the items on a specific list.
| Parameter | Type | Required | Description |
|---|---|---|---|
listId | string | yes | List id |
get_family_itemread-onlyGet family item
Fetch a single list item (task or shopping item) by id.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | List item id |
list_family_tasksread-onlyList family tasks
List the family's to-do items: items across all todo lists. Mirrors the app's "All tasks" view. Each task is a chore occurrence; when the family has chores and rewards enabled, get_chore_occurrences adds Stars and award state.
No parameters.
list_family_shoppingread-onlyList family shopping items
List the family's shopping items (items across all shopping and groceries lists).
No parameters.
add_family_taskAdd family task
Add a to-do item. Targets the given listId, or the family's default todo list when omitted. Tasks are chores underneath: when the family has chores and rewards enabled, use post_chores for a repeating task or one that earns Stars.
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | yes | |
checked | boolean | no | |
assigneeIds | array | no | |
visibility | string | no | |
dueAt | union | no | |
notes | union | no | |
source | string | no | |
listId | string | no | Target todo list id; defaults to the family todo list |
add_family_shopping_itemAdd 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 | |
assigneeIds | array | no | |
visibility | string | no | |
dueAt | union | no | |
quantity | union | no | |
unit | union | no | |
notes | union | no | |
source | string | no | |
listId | string | no | Target shopping list id; defaults to the family shopping list |
update_family_list_itemidempotentUpdate 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. A completed Star task keeps its members (the item lists them in `lockedFields`): untick it before changing `assigneeIds`; its other fields stay editable.
| 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_itemidempotentComplete family list item
Tick off a list item (or untick it by passing checked=false). A task is a chore occurrence with the same id; when the family has chores and rewards enabled, post_chore_occurrences_by_id_complete also lets an adult choose who earns its Stars.
| 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_itemdestructiveidempotentDelete family list item
Permanently delete a list item (task or shopping item).
| 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_listCreate 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_listidempotentRename 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_listdestructiveidempotentDelete family list
Permanently delete a Quok family list and all its items. A list that is its type's default cannot be deleted - it is where items land when no list is specified.
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | yes | List id |
expectedVersion | string | no |
search_familyread-onlySearch family
Full-text search across this Quok family's entities - calendar events, lists, list items (shopping/tasks), and members - ranked by relevance. Use this to find something by keyword when you don't know its id or exact location (e.g. "dentist", "milk", a person's name). Returns only entities the connected member can see. Pass `types` to restrict to certain kinds.
| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | yes | Free-text search query |
types | array | no | Restrict to these entity kinds (event, list, list_item, member); omit to search all |
limit | integer | no | Maximum number of results to return (1–50, default 20) |
create_family_invite_linkInvite a family member
Create a single-use link that lets someone join this Quok family, so a partner, co-parent, grandparent or older kid can share the calendar and lists from their own account. Offer it when the family has only one member (server_info says so), or when the user mentions a partner, kids, a co-parent or anyone else they plan with. Nothing is emailed: give the user the returned `message` to send themselves by text or chat. The link expires after 7 days and works once. Only organizers and adults can invite.
| Parameter | Type | Required | Description |
|---|---|---|---|
displayName | string | no | The invitee's name as the family will see it until they join, e.g. 'Anna'. Defaults to the role: 'Partner', 'Kid', 'Guest' or 'Carer'. |
role | string | no | Role granted on joining: 'adult' (default) for a partner or co-parent, 'kid' for a child with their own login, 'guest' for limited access, 'provider' for a carer (requires Quok Plus). |