← WebMCP Directory

Tool tree

knot-ur-table.netlify.app

Travel & EventsTools verified
Website
Knot Your Table
Explore capabilities
    get_seating_summaryAnswer

    Understand the wedding at a glance. Returns compressed counts, cohorts, dietary needs, active planning intentions, capacity, and current validation—not full guest records.

    View tool JSON
    {
      "name": "get_seating_summary",
      "kind": "answer",
      "impl": "imperative",
      "description": "Understand the wedding at a glance. Returns compressed counts, cohorts, dietary needs, active planning intentions, capacity, and current validation—not full guest records."
    }
    find_guestAnswer

    Resolve a person’s name or partial name to stable guest ids. Returns compact disambiguation data only.

    View tool JSON
    {
      "name": "find_guest",
      "kind": "answer",
      "impl": "imperative",
      "description": "Resolve a person’s name or partial name to stable guest ids. Returns compact disambiguation data only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Full or partial guest name"
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      }
    }
    get_guestsAnswer

    Retrieve a set of guests by group, dietary need, persona text, or seating status. Use this for requests such as all vegetarians, grandparents, college friends, or unseated guests; use find_guest for a named person.

    View tool JSON
    {
      "name": "get_guests",
      "kind": "answer",
      "impl": "imperative",
      "description": "Retrieve a set of guests by group, dietary need, persona text, or seating status. Use this for requests such as all vegetarians, grandparents, college friends, or unseated guests; use find_guest for a named person.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupTag": {
            "type": "string",
            "description": "Exact group tag such as College friends or Grandparent"
          },
          "dietaryIncludes": {
            "type": "string",
            "description": "Case-insensitive dietary text such as vegetarian"
          },
          "personaIncludes": {
            "type": "string",
            "description": "Case-insensitive text in persona or accessibility context"
          },
          "seatingStatus": {
            "type": "string",
            "enum": [
              "any",
              "seated",
              "unseated"
            ]
          },
          "limit": {
            "type": "number",
            "description": "Maximum matches to return; defaults to 150"
          }
        },
        "required": [],
        "additionalProperties": false
      }
    }
    get_guest_contextAnswer

    Understand the social and seating meaning of one or more guests, including persona, relationships, hard constraints, tablemates, and exact seats.

    View tool JSON
    {
      "name": "get_guest_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Understand the social and seating meaning of one or more guests, including persona, relationships, hard constraints, tablemates, and exact seats.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "guestIds": {
            "type": "array",
            "description": "One or more stable guest ids",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "guestIds"
        ],
        "additionalProperties": false
      }
    }
    update_guest_infoAction

    Change facts, preferences, and relationships about one guest; never changes seating. Avoid and neighboring-table constraints are synchronized to both guests. Use move_guest or swap_guests for placements. Returns a change id. After a multi-step request, call review_changes with all returned ids before reporting completion.

    View tool JSON
    {
      "name": "update_guest_info",
      "kind": "act",
      "impl": "imperative",
      "description": "Change facts, preferences, and relationships about one guest; never changes seating. Avoid and neighboring-table constraints are synchronized to both guests. Use move_guest or swap_guests for placements. Returns a change id. After a multi-step request, call review_changes with all returned ids before reporting completion.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "guestId": {
            "type": "string",
            "description": "Stable guest id"
          },
          "patch": {
            "type": "object",
            "properties": {
              "firstName": {
                "type": "string",
                "description": "Updated first name"
              },
              "lastName": {
                "type": "string",
                "description": "Updated last name"
              },
              "dietaryNeeds": {
                "type": "string",
                "description": "Dietary facts, or an empty string to clear"
              },
              "groupTags": {
                "type": "array",
                "description": "Complete list of social or persona tags",
                "items": {
                  "type": "string"
                }
              },
              "knownFrom": {
                "type": "string",
                "description": "How this guest knows the couple"
              },
              "persona": {
                "type": "string",
                "description": "Wedding-relevant social context for planning"
              },
              "accessibilityNeeds": {
                "type": "string",
                "description": "Accessibility or environmental seating needs"
              },
              "partyId": {
                "type": "string",
                "description": "Shared party id, or an empty string to clear"
              },
              "plusOneOf": {
                "type": "string",
                "description": "Stable id of the inviting guest, or an empty string to clear"
              },
              "knows": {
                "type": "array",
                "description": "Stable guest ids this person knows",
                "items": {
                  "type": "string"
                }
              },
              "avoid": {
                "type": "array",
                "description": "Stable guest ids who cannot share this table",
                "items": {
                  "type": "string"
                }
              },
              "avoidNearby": {
                "type": "array",
                "description": "Stable guest ids who cannot share this or a neighboring table",
                "items": {
                  "type": "string"
                }
              },
              "togetherWith": {
                "type": "array",
                "description": "Stable guest ids who must share this table",
                "items": {
                  "type": "string"
                }
              },
              "adjacentTo": {
                "type": "array",
                "description": "Stable guest ids who must occupy neighboring seats",
                "items": {
                  "type": "string"
                }
              },
              "pinned": {
                "type": "boolean",
                "description": "Whether the guest placement is protected"
              }
            },
            "required": [],
            "additionalProperties": false
          },
          "reason": {
            "type": "string",
            "description": "User intent that caused this fact or constraint update"
          }
        },
        "required": [
          "guestId",
          "patch",
          "reason"
        ],
        "additionalProperties": false
      }
    }
    list_seating_rulesAnswer

    Read the user’s saved seating intentions before adding, changing, or removing one. Returns original wording, the agent’s structured interpretation, live evaluation, provenance, and revision tokens needed for safe updates.

    View tool JSON
    {
      "name": "list_seating_rules",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the user’s saved seating intentions before adding, changing, or removing one. Returns original wording, the agent’s structured interpretation, live evaluation, provenance, and revision tokens needed for safe updates.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "activeOnly": {
            "type": "boolean",
            "description": "Return only active rules; defaults to false"
          }
        },
        "required": [],
        "additionalProperties": false
      }
    }
    save_seating_ruleAction

    Create one reusable seating intention or update one previously saved rule. Call list_seating_rules first when editing, preserve the user’s original wording, explain your interpretation, and pass its expectedRevision so stale agent work cannot overwrite a newer change. Omit expectedRevision only when creating a new rule. Returns a change id for review_changes.

    View tool JSON
    {
      "name": "save_seating_rule",
      "kind": "act",
      "impl": "imperative",
      "description": "Create one reusable seating intention or update one previously saved rule. Call list_seating_rules first when editing, preserve the user’s original wording, explain your interpretation, and pass its expectedRevision so stale agent work cannot overwrite a newer change. Omit expectedRevision only when creating a new rule. Returns a change id for review_changes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ruleId": {
            "type": "string",
            "description": "Stable lowercase id for this intention, such as college-friends-together"
          },
          "originalInstruction": {
            "type": "string",
            "description": "The user’s original natural-language instruction, preserved verbatim"
          },
          "label": {
            "type": "string",
            "description": "Short human-readable name for the rule"
          },
          "interpretation": {
            "type": "string",
            "description": "Plain-language explanation of the precise structured rule the agent inferred"
          },
          "kind": {
            "type": "string",
            "enum": [
              "cluster",
              "distance-from-object",
              "protect-tables",
              "minimize-moves"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "hard",
              "soft"
            ]
          },
          "active": {
            "type": "boolean",
            "description": "Whether this rule participates in validation; defaults to true"
          },
          "selector": {
            "type": "object",
            "properties": {
              "guestIds": {
                "type": "array",
                "description": "Explicit stable guest ids",
                "items": {
                  "type": "string"
                }
              },
              "groupTag": {
                "type": "string",
                "description": "Exact group tag"
              },
              "dietaryIncludes": {
                "type": "string",
                "description": "Case-insensitive dietary text match"
              }
            },
            "required": [],
            "additionalProperties": false
          },
          "tableIds": {
            "type": "array",
            "description": "Stable table ids protected by a protect-tables rule",
            "items": {
              "type": "string"
            }
          },
          "objectId": {
            "type": "string",
            "description": "Stable venue object id used by a distance-from-object rule"
          },
          "targetTableCount": {
            "type": "number",
            "description": "Positive whole number of tables in which to concentrate matching guests"
          },
          "minimumCoverage": {
            "type": "number",
            "description": "Required fraction from 0 to 1 in the target table count"
          },
          "minimumDistance": {
            "type": "number",
            "description": "Non-negative center-to-center canvas distance from the venue object"
          },
          "expectedRevision": {
            "type": "number",
            "description": "Current rule revision returned by list_seating_rules; required for updates and omitted for creates"
          },
          "reason": {
            "type": "string",
            "description": "Concise explanation of why this rule is being saved"
          }
        },
        "required": [
          "ruleId",
          "originalInstruction",
          "label",
          "interpretation",
          "kind",
          "priority",
          "reason"
        ],
        "additionalProperties": false
      }
    }
    remove_seating_ruleAction

    Remove one saved seating intention. Call list_seating_rules first and pass the exact expectedRevision so a stale request cannot delete a newer rule. Returns a change id for review_changes.

    View tool JSON
    {
      "name": "remove_seating_rule",
      "kind": "act",
      "impl": "imperative",
      "description": "Remove one saved seating intention. Call list_seating_rules first and pass the exact expectedRevision so a stale request cannot delete a newer rule. Returns a change id for review_changes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ruleId": {
            "type": "string",
            "description": "Stable rule id returned by list_seating_rules"
          },
          "expectedRevision": {
            "type": "number",
            "description": "Exact current revision returned by list_seating_rules"
          },
          "reason": {
            "type": "string",
            "description": "Why the user wants this intention removed"
          }
        },
        "required": [
          "ruleId",
          "expectedRevision",
          "reason"
        ],
        "additionalProperties": false
      }
    }
    get_table_contextAnswer

    Understand one or more tables: occupancy, exact guests and seats, group and dietary composition, lock state, coordinates, and nearby venue objects.

    View tool JSON
    {
      "name": "get_table_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Understand one or more tables: occupancy, exact guests and seats, group and dietary composition, lock state, coordinates, and nearby venue objects.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "tableIds": {
            "type": "array",
            "description": "One or more stable table ids",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "tableIds"
        ],
        "additionalProperties": false
      }
    }
    get_room_layoutAnswer

    Understand the complete spatial world beyond the viewport. Returns every table and venue object with bounds and guest ids, but not full guest records.

    View tool JSON
    {
      "name": "get_room_layout",
      "kind": "answer",
      "impl": "imperative",
      "description": "Understand the complete spatial world beyond the viewport. Returns every table and venue object with bounds and guest ids, but not full guest records."
    }
    move_guestAction

    Make one atomic seating change: seat, reseat, unseat, or place a guest in an exact seat. Use targetTableId "unseated" for the tray. Returns a change id; review all ids after a multi-step request.

    View tool JSON
    {
      "name": "move_guest",
      "kind": "act",
      "impl": "imperative",
      "description": "Make one atomic seating change: seat, reseat, unseat, or place a guest in an exact seat. Use targetTableId \"unseated\" for the tray. Returns a change id; review all ids after a multi-step request.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "guestId": {
            "type": "string",
            "description": "Stable guest id"
          },
          "targetTableId": {
            "type": "string",
            "description": "Destination table id or unseated"
          },
          "seatIndex": {
            "type": "number",
            "description": "Optional zero-based exact seat index"
          },
          "reason": {
            "type": "string",
            "description": "Why this move serves the user’s intention"
          }
        },
        "required": [
          "guestId",
          "targetTableId",
          "reason"
        ],
        "additionalProperties": false
      }
    }
    apply_seating_planAction

    Apply a coordinated multi-guest seating plan atomically after reasoning over the whole wedding. Use this for broad clustering or cascading reshuffles; use move_guest for one surgical change and swap_guests for two exact guests. The entire plan is rejected if any guest, table, capacity, lock, pin, or explicit seat is invalid. Returns one reviewable change id.

    View tool JSON
    {
      "name": "apply_seating_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply a coordinated multi-guest seating plan atomically after reasoning over the whole wedding. Use this for broad clustering or cascading reshuffles; use move_guest for one surgical change and swap_guests for two exact guests. The entire plan is rejected if any guest, table, capacity, lock, pin, or explicit seat is invalid. Returns one reviewable change id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "assignments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "guestId": {
                  "type": "string",
                  "description": "Stable guest id"
                },
                "targetTableId": {
                  "type": "string",
                  "description": "Destination table id or unseated"
                },
                "seatIndex": {
                  "type": "number",
                  "description": "Optional zero-based exact seat index"
                }
              },
              "required": [
                "guestId",
                "targetTableId"
              ],
              "additionalProperties": false
            }
          },
          "reason": {
            "type": "string",
            "description": "How this coordinated plan satisfies the user’s intentions"
          }
        },
        "required": [
          "assignments",
          "reason"
        ],
        "additionalProperties": false
      }
    }
    swap_guestsAction

    Atomically swap two seated guests without an over-capacity intermediate state. If both are at the same table, swaps their exact seats. Returns one change id for the atomic operation; review it before reporting completion.

    View tool JSON
    {
      "name": "swap_guests",
      "kind": "act",
      "impl": "imperative",
      "description": "Atomically swap two seated guests without an over-capacity intermediate state. If both are at the same table, swaps their exact seats. Returns one change id for the atomic operation; review it before reporting completion.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "guestAId": {
            "type": "string",
            "description": "First stable guest id"
          },
          "guestBId": {
            "type": "string",
            "description": "Second stable guest id"
          },
          "reason": {
            "type": "string",
            "description": "Why this swap serves the user’s intention"
          }
        },
        "required": [
          "guestAId",
          "guestBId",
          "reason"
        ],
        "additionalProperties": false
      }
    }
    validate_seatingAction

    Verify the entire live plan against hard capacity and relationship constraints plus active wedding-wide planning preferences. Use before review_changes when completing coordinated edits.

    View tool JSON
    {
      "name": "validate_seating",
      "kind": "act",
      "impl": "imperative",
      "description": "Verify the entire live plan against hard capacity and relationship constraints plus active wedding-wide planning preferences. Use before review_changes when completing coordinated edits."
    }
    review_changesAction

    Post-action verification. After completing a multi-step modification, call this with every returned change id before telling the user it is done. Returns an exact structured delta, affected tables, current validation, preserved locked tables, and summary metrics.

    View tool JSON
    {
      "name": "review_changes",
      "kind": "act",
      "impl": "imperative",
      "description": "Post-action verification. After completing a multi-step modification, call this with every returned change id before telling the user it is done. Returns an exact structured delta, affected tables, current validation, preserved locked tables, and summary metrics.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "changeIds": {
            "type": "array",
            "description": "Exact ids returned by write tools",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "changeIds"
        ],
        "additionalProperties": false
      }
    }
    focus_on_entityAction

    Connect semantic state back to the human viewport by smoothly focusing a guest, table, or venue object after reasoning or edits.

    View tool JSON
    {
      "name": "focus_on_entity",
      "kind": "act",
      "impl": "imperative",
      "description": "Connect semantic state back to the human viewport by smoothly focusing a guest, table, or venue object after reasoning or edits.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "guest",
              "table",
              "object"
            ]
          },
          "id": {
            "type": "string",
            "description": "Stable entity id"
          }
        },
        "required": [
          "type",
          "id"
        ],
        "additionalProperties": false
      }
    }