{
  "serverInfo": {
    "name": "quok-mcp",
    "version": "0.1.0"
  },
  "instructions": "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.",
  "tools": [
    {
      "name": "server_info",
      "title": "Server info",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "list_family_events",
      "title": "List family events",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "format": "date-time",
            "description": "Inclusive lower bound on start time (ISO 8601)"
          },
          "to": {
            "type": "string",
            "format": "date-time",
            "description": "Exclusive upper bound on start time (ISO 8601)"
          },
          "type": {
            "type": "string",
            "enum": [
              "appointment",
              "chore",
              "birthday",
              "anniversary",
              "meal",
              "bill",
              "lesson",
              "flight",
              "hotel",
              "activity"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "proposed",
              "confirmed"
            ]
          }
        },
        "required": [
          "from",
          "to"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "get_family_event",
      "title": "Get family event",
      "description": "Fetch a single event from this Quok family's shared calendar by id, including its full details. Not a personal Google Calendar.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Event id"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "create_family_event",
      "title": "Create family event",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "startsAt": {
            "type": "string",
            "format": "date-time"
          },
          "endsAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "allDay": {
            "type": "boolean",
            "default": false
          },
          "location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "notes": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2000
              },
              {
                "type": "null"
              }
            ]
          },
          "assigneeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "visibility": {
            "type": "string",
            "enum": [
              "family",
              "private"
            ],
            "default": "family"
          },
          "rrule": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "reminderOffsets": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0
            },
            "maxItems": 5,
            "default": []
          },
          "status": {
            "type": "string",
            "enum": [
              "proposed",
              "confirmed"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "appointment",
              "chore",
              "birthday",
              "anniversary",
              "meal",
              "bill",
              "lesson",
              "flight",
              "hotel",
              "activity"
            ],
            "description": "Event type — selects the shape of `data`."
          },
          "data": {
            "type": "object",
            "additionalProperties": {},
            "description": "Type-specific fields, validated against `type` (appointment, chore, birthday, anniversary, meal, bill, lesson, flight, hotel, activity). Pass {} when the type carries no extra data."
          }
        },
        "required": [
          "title",
          "startsAt",
          "type",
          "data"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false
      }
    },
    {
      "name": "update_family_event",
      "title": "Update family event",
      "description": "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).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Event id"
          },
          "patch": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "startsAt": {
                "type": "string",
                "format": "date-time"
              },
              "endsAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "allDay": {
                "type": "boolean",
                "default": false
              },
              "location": {
                "anyOf": [
                  {
                    "type": "string",
                    "maxLength": 200
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "notes": {
                "anyOf": [
                  {
                    "type": "string",
                    "maxLength": 2000
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "assigneeIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "visibility": {
                "type": "string",
                "enum": [
                  "family",
                  "private"
                ],
                "default": "family"
              },
              "rrule": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "timezone": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "reminderOffsets": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0
                },
                "maxItems": 5,
                "default": []
              },
              "status": {
                "type": "string",
                "enum": [
                  "proposed",
                  "confirmed"
                ]
              },
              "type": {
                "type": "string",
                "enum": [
                  "appointment",
                  "chore",
                  "birthday",
                  "anniversary",
                  "meal",
                  "bill",
                  "lesson",
                  "flight",
                  "hotel",
                  "activity"
                ]
              },
              "data": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "additionalProperties": false
          },
          "expectedVersion": {
            "type": "string",
            "description": "Optional optimistic-concurrency version (updatedAt) to guard against races"
          }
        },
        "required": [
          "id",
          "patch"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false
      }
    },
    {
      "name": "delete_family_event",
      "title": "Delete family event",
      "description": "Permanently delete an event from this Quok family's shared calendar. Not a personal Google Calendar.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Event id"
          },
          "expectedVersion": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true
      }
    },
    {
      "name": "list_family_lists",
      "title": "List family lists",
      "description": "List the family's task and shopping lists, optionally filtered by type.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "packing",
              "shopping",
              "todo",
              "groceries"
            ]
          }
        },
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "list_family_items",
      "title": "List family items",
      "description": "List the items on a specific list.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "listId": {
            "type": "string",
            "format": "uuid",
            "description": "List id"
          }
        },
        "required": [
          "listId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "get_family_item",
      "title": "Get family item",
      "description": "Fetch a single list item (task or shopping item) by id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "List item id"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "list_family_tasks",
      "title": "List family tasks",
      "description": "List the family's to-do items: items across all todo lists. Mirrors the app's \"All tasks\" view.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "list_family_shopping",
      "title": "List family shopping items",
      "description": "List the family's shopping items (items across all shopping and groceries lists).",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": true
      }
    },
    {
      "name": "add_family_task",
      "title": "Add family task",
      "description": "Add a to-do item. Targets the given listId, or the family's default todo list when omitted.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "checked": {
            "type": "boolean",
            "default": false
          },
          "position": {
            "type": "integer",
            "minimum": 0
          },
          "assigneeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "listId": {
            "type": "string",
            "format": "uuid",
            "description": "Target todo list id; defaults to the family todo list"
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false
      }
    },
    {
      "name": "add_family_shopping_item",
      "title": "Add family shopping item",
      "description": "Add a shopping item. Targets the given listId, or the family's default shopping list when omitted.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "checked": {
            "type": "boolean",
            "default": false
          },
          "position": {
            "type": "integer",
            "minimum": 0
          },
          "assigneeIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "listId": {
            "type": "string",
            "format": "uuid",
            "description": "Target shopping list id; defaults to the family shopping list"
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false
      }
    },
    {
      "name": "update_family_list_item",
      "title": "Update family list item",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "listId": {
            "type": "string",
            "format": "uuid",
            "description": "Id of the list the item belongs to; omit to resolve the item by its id alone"
          },
          "itemId": {
            "type": "string",
            "format": "uuid",
            "description": "List item id"
          },
          "patch": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              "checked": {
                "type": "boolean",
                "default": false
              },
              "position": {
                "type": "integer",
                "minimum": 0
              },
              "assigneeIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "listId": {
                "type": "string",
                "format": "uuid"
              }
            },
            "additionalProperties": false
          },
          "expectedVersion": {
            "type": "string",
            "description": "Optional optimistic-concurrency version (updatedAt) to guard against races"
          }
        },
        "required": [
          "itemId",
          "patch"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false
      }
    },
    {
      "name": "complete_family_list_item",
      "title": "Complete family list item",
      "description": "Tick off a list item (or untick it by passing checked=false).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "listId": {
            "type": "string",
            "format": "uuid",
            "description": "Id of the list the item belongs to; omit to resolve the item by its id alone"
          },
          "itemId": {
            "type": "string",
            "format": "uuid",
            "description": "List item id"
          },
          "checked": {
            "type": "boolean",
            "default": true,
            "description": "Target checked state; defaults to true (tick off). Pass false to untick."
          },
          "expectedVersion": {
            "type": "string"
          }
        },
        "required": [
          "itemId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      }
    },
    {
      "name": "delete_family_list_item",
      "title": "Delete family list item",
      "description": "Permanently delete a list item (task or shopping item).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "listId": {
            "type": "string",
            "format": "uuid",
            "description": "Id of the list the item belongs to; omit to resolve the item by its id alone"
          },
          "itemId": {
            "type": "string",
            "format": "uuid",
            "description": "List item id"
          },
          "expectedVersion": {
            "type": "string"
          }
        },
        "required": [
          "itemId"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true
      }
    },
    {
      "name": "create_family_list",
      "title": "Create family list",
      "description": "Create a new Quok family list (a todo, shopping, groceries, or packing list). Returns the new list including its id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "packing",
              "shopping",
              "todo",
              "groceries"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "eventId": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "type",
          "title"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false
      }
    },
    {
      "name": "rename_family_list",
      "title": "Rename family list",
      "description": "Rename a Quok family list. Provide only the fields to change in \"patch\".",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "List id"
          },
          "patch": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "packing",
                  "shopping",
                  "todo",
                  "groceries"
                ]
              },
              "title": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "eventId": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "expectedVersion": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "patch"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false
      }
    },
    {
      "name": "delete_family_list",
      "title": "Delete family list",
      "description": "Permanently delete a Quok family list and all its items. The seeded default list cannot be deleted.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "List id"
          },
          "expectedVersion": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true
      }
    },
    {
      "name": "set_default_family_list",
      "title": "Set default family list",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "List id"
          },
          "expectedVersion": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false,
        "$schema": "http://json-schema.org/draft-07/schema#"
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true
      }
    }
  ]
}
