quok-mcp - MCP tools

Server version 0.1.0 · 48 tools

JSONMarkdown

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-only

List 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.

ParameterTypeRequiredDescription
queryobjectno

post_chores

Create a chore definition

Create a chore definition. Served by the API.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
bodyobjectyes

get_chores_by_idread-only

Read a chore definition

Read a chore definition. Served by the API.

ParameterTypeRequiredDescription
paramsobjectyes

patch_chores_by_iddestructiveidempotent

Edit 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyunionyes

get_chore_occurrencesidempotent

List 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.

ParameterTypeRequiredDescription
queryobjectyes

get_routine_daysread-only

Read routine work for each local date in a window

Read routine work for each local date in a window. Served by the API.

ParameterTypeRequiredDescription
queryobjectyes

post_chores_by_id_complete_slotidempotent

Complete a routine slot on its scheduled date

Complete a routine slot on its scheduled date. Served by the API.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
bodyobjectyes

post_chores_by_id_override_slotidempotent

Override one upcoming routine date before it is generated

Override one upcoming routine date before it is generated. Served by the API.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
bodyobjectyes

get_chore_occurrences_by_idread-only

Read an occurrence and its snapshotted terms

Read an occurrence and its snapshotted terms. Served by the API.

ParameterTypeRequiredDescription
paramsobjectyes

patch_chore_occurrences_by_iddestructiveidempotent

Override a pending occurrence

Override a pending occurrence. Requires a quoted numeric If-Match for the path resource. Served by the API.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyobjectyes

post_chore_occurrences_by_id_completeidempotent

Complete 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyobjectyes

post_chore_occurrences_by_id_reviewidempotent

Approve 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyunionyes

post_chore_occurrences_by_id_skipdestructiveidempotent

Skip 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyobjectyes

post_chore_occurrences_by_id_reversedestructiveidempotent

Reverse 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyobjectyes

get_chore_occurrences_by_id_historyread-only

Read 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.

ParameterTypeRequiredDescription
paramsobjectyes
queryobjectno

get_chore_commands_by_idread-only

Recover a committed command for the authenticated actor

Recover a committed command for the authenticated actor. Served by the API.

ParameterTypeRequiredDescription
paramsobjectyes

get_task_board_itemsread-only

Page 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.

ParameterTypeRequiredDescription
queryobjectyes

get_rewardsread-only

Read 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.

ParameterTypeRequiredDescription
queryobjectno

post_rewards

Create a reward with explicit member eligibility

Create a reward with explicit member eligibility. Served by the API.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
bodyobjectyes

get_rewards_by_idread-only

Read a reward with server-calculated eligibility and actions

Read a reward with server-calculated eligibility and actions. Served by the API.

ParameterTypeRequiredDescription
paramsobjectyes
queryobjectno

patch_rewards_by_iddestructiveidempotent

Edit 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyunionyes

post_rewards_by_id_redeemdestructiveidempotent

Redeem 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyobjectyes

get_reward_redemptionsread-only

Read 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.

ParameterTypeRequiredDescription
queryobjectno

get_reward_redemptions_by_idread-only

Read a redemption and its historical terms

Read a redemption and its historical terms. Served by the API.

ParameterTypeRequiredDescription
paramsobjectyes

post_reward_redemptions_by_id_reversedestructiveidempotent

Undo 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.

ParameterTypeRequiredDescription
requestIdstringnoOpaque caller request id. Reuse only when retrying the same mutation.
paramsobjectyes
headersobjectyes
bodyobjectyes

get_members_by_id_pointsidempotent

Read 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.

ParameterTypeRequiredDescription
paramsobjectyes

get_members_by_id_point_entriesread-only

Read 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.

ParameterTypeRequiredDescription
paramsobjectyes
queryobjectno

server_inforead-only

Server 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-only

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

ParameterTypeRequiredDescription
fromstringyesInclusive lower bound on start time (ISO 8601)
tostringyesExclusive upper bound on start time (ISO 8601)
typestringno
statusstringno

get_family_eventread-only

Get family event

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

ParameterTypeRequiredDescription
idstringyesEvent 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.). 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.

ParameterTypeRequiredDescription
titlestringyes
startsAtstringyesStart 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.
endsAtunionnoEnd 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.
allDaybooleanno
locationunionno
locationLatunionno
locationLonunionno
locationTimezoneunionno
locationPlaceRefunionno
locationDetailunionno
locationCountryCodeunionno
locationCategoryunionno
notesunionno
assigneeIdsarrayno
visibilitystringno
rruleunionno
timezoneunionnoIANA 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.
endTimezoneunionnoIANA 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.
reminderOffsetsarrayno
statusstringno
typestringyesEvent type - selects the shape of `data`.
dataobjectyesType-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_eventidempotent

Update 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.

ParameterTypeRequiredDescription
idstringyesEvent id
patchobjectyes
expectedVersionstringnoOptional optimistic-concurrency version (updatedAt) to guard against races

delete_family_eventdestructiveidempotent

Delete family event

Permanently delete an event from this Quok family's shared calendar.

ParameterTypeRequiredDescription
idstringyesEvent id
expectedVersionstringno

list_family_listsread-only

List family lists

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

ParameterTypeRequiredDescription
typestringno

list_family_itemsread-only

List family items

List the items on a specific list.

ParameterTypeRequiredDescription
listIdstringyesList id

get_family_itemread-only

Get family item

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

ParameterTypeRequiredDescription
idstringyesList item id

list_family_tasksread-only

List 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-only

List family shopping items

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

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. Tasks are chores underneath: when the family has chores and rewards enabled, use post_chores for a repeating task or one that earns Stars.

ParameterTypeRequiredDescription
textstringyes
checkedbooleanno
assigneeIdsarrayno
visibilitystringno
dueAtunionno
notesunionno
sourcestringno
listIdstringnoTarget 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.

ParameterTypeRequiredDescription
textstringyes
checkedbooleanno
assigneeIdsarrayno
visibilitystringno
dueAtunionno
quantityunionno
unitunionno
notesunionno
sourcestringno
listIdstringnoTarget shopping list id; defaults to the family shopping list

update_family_list_itemidempotent

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. A completed Star task keeps its members (the item lists them in `lockedFields`): untick it before changing `assigneeIds`; its other fields stay editable.

ParameterTypeRequiredDescription
listIdstringnoId of the list the item belongs to; omit to resolve the item by its id alone
itemIdstringyesList item id
patchobjectyes
expectedVersionstringnoOptional optimistic-concurrency version (updatedAt) to guard against races

complete_family_list_itemidempotent

Complete 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.

ParameterTypeRequiredDescription
listIdstringnoId of the list the item belongs to; omit to resolve the item by its id alone
itemIdstringyesList item id
checkedbooleannoTarget checked state; defaults to true (tick off). Pass false to untick.
expectedVersionstringno

delete_family_list_itemdestructiveidempotent

Delete family list item

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

ParameterTypeRequiredDescription
listIdstringnoId of the list the item belongs to; omit to resolve the item by its id alone
itemIdstringyesList item id
expectedVersionstringno

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.

ParameterTypeRequiredDescription
typestringyes
titlestringyes
eventIdunionno

rename_family_listidempotent

Rename family list

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

ParameterTypeRequiredDescription
idstringyesList id
patchobjectyes
expectedVersionstringno

delete_family_listdestructiveidempotent

Delete 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.

ParameterTypeRequiredDescription
idstringyesList id
expectedVersionstringno

search_familyread-only

Search 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.

ParameterTypeRequiredDescription
qstringyesFree-text search query
typesarraynoRestrict to these entity kinds (event, list, list_item, member); omit to search all
limitintegernoMaximum number of results to return (1–50, default 20)