← All action domains

Restaurant

74 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.

Add items to order

restaurant.add_order_itemswrite

Add menu items to an open order. Prices, names and station routing are ALWAYS re-read from the menu on the server — pass menu item and modifier ids only. Items land as 'pending' and are not cooked until restaurant.fire_order sends them.

Parameters

FieldTypeRequiredDescription
order_idstring (uuid)requiredThe open order to add to.
itemsobject[]requiredThe lines to add.
items[].menu_item_idstring (uuid)requiredThe menu item to add.
items[].qtyintegeroptionalHow many. Default: 1
items[].modifier_idsarray of (string (uuid))optionalChosen modifier ids (their prices are read server-side). Default: []
items[].notesstringoptionalKitchen note for this line.
items[].seatintegeroptionalSeat number, if seats are tracked.
items[].courseintegeroptionalCourse number (1 = first).
items[].check_idstring (uuid)optionalLand the line on a specific check; defaults to the first open check.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.add_order_items \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "items": [
      {
        "menu_item_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
      }
    ]
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_add_order_items at https://app.chirply.io/api/mcp, same bearer token, same input.

Adjust

restaurant.adjust_stockwriteconfirm

Change an inventory item's on-hand amount by a signed delta and write the matching row in the stock-movement ledger. This rewrites what the shelf says the restaurant owns — deliveries, waste, corrections, and physical counts all go through here — so the number feeds the low-stock report and everything downstream that trusts it. Requires the Restaurant app (a one-time purchase from the App Marketplace) to be installed in this account; without it the call returns 403 app_required and no data.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
inventory_item_idstring (uuid)requiredThe inventory item to adjust.
deltanumberrequiredHow much to change on-hand by, in the item's own unit. Positive adds stock (a delivery), negative removes it (waste). A 'count' correction is the counted amount minus the current on-hand.
reason"purchase" | "waste" | "adjustment" | "count"requiredWhy the shelf changed: 'purchase' = a delivery came in, 'waste' = spoiled/dropped/comped, 'adjustment' = correcting the number, 'count' = the result of a physical count. 'sale' cannot be written directly — it is recorded automatically when the kitchen fires an order.
notestringoptionalFree-text context for the ledger, e.g. 'Sysco delivery' or 'dropped a case'.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.adjust_stock \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "inventory_item_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "delta": 1,
    "reason": "purchase"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_adjust_stock at https://app.chirply.io/api/mcp, same bearer token, same input.

Assign table

restaurant.assign_reservation_tablewrite

Set or clear which dining table an existing reservation is seated at — the host stand book's Assign-table picker. Pass table_id to assign a table (it must belong to the reservation's own location) or null to clear the assignment back to unassigned. This is a RESERVATION's table, not the floor plan: it is NOT restaurant.assign_tables_to_section, which assigns a group of tables to a server section instead. No message is sent to the guest.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe reservation to update.
table_idstring (uuid) (or null)requiredThe table to seat this reservation at, or null to clear the assignment.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.assign_reservation_table \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "table_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_assign_reservation_table at https://app.chirply.io/api/mcp, same bearer token, same input.

Assign selected

restaurant.assign_tables_to_sectionwrite

Assign one or many dining tables at the same restaurant location to a server section, or clear their section. The section's assigned teammate becomes responsible for the whole selected group; no guest or teammate is messaged.

Also answers to assign tables to server, bulk assign tables, clear table section.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredRestaurant location containing every selected table.
table_idsarray of (string (uuid))requiredDining tables to assign as one group.
section_idstring (uuid) (or null)requiredDestination server section, or null to make the tables unassigned.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.assign_tables_to_section \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "table_ids": [
      "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
    ],
    "section_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_assign_tables_to_section at https://app.chirply.io/api/mcp, same bearer token, same input.

Attach a modifier group to a dish

restaurant.attach_modifier_groupwrite

Offer a modifier group's options on one dish. Diners ordering that dish are shown the group (and must pick from it if the group is required) on every ordering surface. Attaching an already-attached group just updates its display position.

Parameters

FieldTypeRequiredDescription
item_idstring (uuid)requiredThe dish.
group_idstring (uuid)requiredThe modifier group to offer on it.
sortintegeroptionalPosition among the dish's groups (0 = shown first). Default: 0

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.attach_modifier_group \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "item_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "group_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_attach_modifier_group at https://app.chirply.io/api/mcp, same bearer token, same input.

Bump an item

restaurant.bump_itemwrite

Advance one fired order item through the kitchen: queued → 'in_progress' (start cooking), → 'ready' (up in the window), ready → 'served' (drops off the display). Sending 'in_progress' to an item that is currently 'ready' un-bumps it back to cooking — the fix for a mis-tap. Only legal moves are accepted; the kitchen display updates in real time.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe order item to bump (rst_order_items id).
status"in_progress" | "ready" | "served"requiredTarget kitchen state: 'in_progress' = the cook started it (also un-bumps a 'ready' item back to cooking), 'ready' = up in the window, 'served' = delivered and off the kitchen display.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.bump_item \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "status": "in_progress"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_bump_item at https://app.chirply.io/api/mcp, same bearer token, same input.

Bump a whole ticket

restaurant.bump_orderwrite

Advance every fired item on one order in a single move — the ticket-level bump-all. Only items a step can legally reach are moved: 'in_progress' starts the queued items, 'ready' moves queued and cooking items up, 'served' clears the ready ones off the display. Items already past the target (and pending/voided items) are left alone. Returns how many items moved.

Parameters

FieldTypeRequiredDescription
order_idstring (uuid)requiredThe order whose fired items should advance (rst_orders id).
status"in_progress" | "ready" | "served"requiredTarget kitchen state: 'in_progress' = the cook started it (also un-bumps a 'ready' item back to cooking), 'ready' = up in the window, 'served' = delivered and off the kitchen display.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.bump_order \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "status": "in_progress"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_bump_order at https://app.chirply.io/api/mcp, same bearer token, same input.

Cancel order

restaurant.cancel_orderwriteconfirm

Cancel an open order. One-way: the order closes as canceled and can't be reopened; its checks and any payments already taken stay on record as the audit trail. Food already fired to the kitchen is NOT recalled automatically.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe open order to cancel.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.cancel_order \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_cancel_order at https://app.chirply.io/api/mcp, same bearer token, same input.

Complete order

restaurant.complete_orderwriteconfirm

Close an open order out as completed. One-way and irreversible: completed orders can NOT be reopened — anything else the table wants has to go on a new order, and any check still unpaid stays unpaid on a closed order. Normally done only after every check is paid.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe open order to complete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.complete_order \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_complete_order at https://app.chirply.io/api/mcp, same bearer token, same input.

Add floor feature

restaurant.create_floor_featurewrite

Add one measured physical feature—room, wall, door, bar, kitchen, checkout, restroom, patio, fixture, or exact seat—to a restaurant building plan. A seat can be linked to its operational dining table; nothing is sent or charged.

Also answers to draw room, add wall, place restaurant seat.

Parameters

FieldTypeRequiredDescription
plan_idstring (uuid)requiredPhysical floor plan that will contain the feature.
kind"room" | "wall" | "door" | "bar" | "kitchen" | "checkout" | … 4 morerequiredPhysical feature type to draw on the building plan.
labelstringrequiredStaff-facing label such as "Main dining", "Kitchen", or "Bar stool 3".
floor_xnumberrequiredLeft edge as a percentage of plan width.
floor_ynumberrequiredTop edge as a percentage of plan depth.
floor_widthnumberrequiredFeature width as a percentage of plan width.
floor_heightnumberrequiredFeature depth as a percentage of plan depth.
rotation_degintegeroptionalClockwise feature rotation in degrees. Default: 0
table_idstring (uuid)optionalOperational dining table this exact seat belongs to; use only for seat features.
colorstringoptionalOptional six-digit hex outline color.
lockedbooleanoptionalWhether staff should be prevented from accidentally dragging the feature. Default: false

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_floor_feature \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "plan_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "kind": "room",
    "label": "example",
    "floor_x": 1,
    "floor_y": 1,
    "floor_width": 1,
    "floor_height": 1
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_floor_feature at https://app.chirply.io/api/mcp, same bearer token, same input.

Create section

restaurant.create_floor_sectionwrite

Create a color-coded floor section at one restaurant location and optionally assign an account teammate as its server. No tables move until they are explicitly assigned, and nothing is sent to the teammate.

Also answers to new server section, create table section.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredRestaurant location where this section appears.
namestringrequiredStaff-facing section name, e.g. "North" or "Patio".
colorstringoptionalSix-digit hex color used to mark the section on the floor plan. Default: "#2563eb"
server_user_idstring (uuid)optionalAccount teammate responsible for this section. Omit to leave it unassigned.
sortintegeroptionalSection display order; lower values appear first. Default: 0

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_floor_section \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_floor_section at https://app.chirply.io/api/mcp, same bearer token, same input.

New item

restaurant.create_inventory_itemwrite

Create an inventory item — something the restaurant keeps on the shelf and wants tracked (an ingredient, a bottle, packaging). An opening on-hand amount, when given, is recorded as a 'count' movement so the ledger starts complete. Link the item to menu items with restaurant.set_recipe to have sales deplete it automatically. Requires the Restaurant app (a one-time purchase from the App Marketplace) to be installed in this account; without it the call returns 403 app_required and no data.

Parameters

FieldTypeRequiredDescription
namestringrequiredThe item's name, e.g. 'Flour' or 'House red'.
unitstringoptionalThe unit it's counted in: 'each', 'lb', 'oz', 'bottle', 'case'… Default: "each"
par_levelnumberoptionalThe reorder line — at or below this on-hand amount the item shows on the low-stock report. Omit to leave the item off that report.
cost_centsintegeroptionalWhat one unit costs the restaurant, in integer cents.
skustringoptionalSupplier SKU or internal code.
location_idstring (uuid)optionalRestaurant location this item belongs to. Omit for all locations.
opening_on_handnumberoptionalHow much is on the shelf right now. Recorded as a 'count' stock movement, not a raw overwrite.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_inventory_item \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_inventory_item at https://app.chirply.io/api/mcp, same bearer token, same input.

Set up a restaurant

restaurant.create_locationwriteadmin only

Create a restaurant location — the same thing the Settings first-run wizard does. Claims a globally unique public web address (/eat/<slug>) where diners can immediately see the menu and, when enabled, order and reserve. Only the name is required; everything else has sensible defaults (open toggles, 20-minute prep, no tax).

Parameters

FieldTypeRequiredDescription
namestringrequiredThe restaurant's name, as diners see it.
slugstringoptionalPublic web address for /eat/<slug>. Omit to derive one from the name. Fails if the address is already taken.
phonestring (or null)optionalPhone number shown to diners on the public page.
emailstring (or null)optionalEmail address order and reservation notices go to.
addressstring (or null)optionalStreet address shown to diners for pickup and directions.
timezonestringoptionalIANA timezone, e.g. America/New_York. Hours and reservation slots are interpreted in it.
currencystringoptionalISO currency code prices are in, lowercase — e.g. usd.
tax_rate_pctnumberoptionalSales tax percent added to every check — 8.25 means 8.25%.
hoursobjectoptionalWeekly opening hours shown to diners on the public page. A day that is omitted or has no ranges displays as closed.
hours.sunobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.sun[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.sun[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.monobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.mon[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.mon[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.tueobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.tue[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.tue[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.wedobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.wed[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.wed[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.thuobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.thu[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.thu[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.friobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.fri[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.fri[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.satobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.sat[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.sat[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
tip_presetsinteger[]optionalThe one-tap tip percentages diners see at checkout, e.g. [15,18,20,25].
online_ordering_enabledbooleanoptionalWhether diners can order and pay from the public menu page.
reservations_enabledbooleanoptionalWhether diners can book tables from the public reservation page.
pickup_enabledbooleanoptionalWhether online orders may be collected at the counter.
delivery_enabledbooleanoptionalWhether online orders may be delivered by the restaurant's own drivers.
delivery_fee_centsintegeroptionalFee in integer cents added to every delivery order — 499 = $4.99.
min_order_centsintegeroptionalMinimum order size in integer cents before delivery is offered.
prep_minutesintegeroptionalMinutes diners are told their order takes to prepare.
logo_urlstring (or null)optionalURL of the logo image on the public page.
hero_urlstring (or null)optionalURL of the wide cover photo across the top of the public page.
aboutstring (or null)optionalShort welcome text shown under the restaurant's name on the public page.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_location \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_location at https://app.chirply.io/api/mcp, same bearer token, same input.

New menu

restaurant.create_menuwrite

Create a menu (e.g. Dinner, Brunch, Drinks) at one of the restaurant's locations. A live menu appears on the POS, table tablets, online ordering, and the website menu block as soon as it has dishes.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredThe location this menu belongs to.
namestringrequiredThe menu's name, e.g. "Dinner".
activebooleanoptionalfalse creates it hidden, so you can build it out before going live. Default: true
sortintegeroptionalDisplay position (0 = first).

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_menu \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_menu at https://app.chirply.io/api/mcp, same bearer token, same input.

New category

restaurant.create_menu_categorywrite

Add a category (Starters, Mains, Desserts…) to a menu. Optionally route its dishes to a kitchen station, so they print on that station's kitchen screen.

Parameters

FieldTypeRequiredDescription
menu_idstring (uuid)requiredThe menu this category belongs to.
namestringrequiredThe category name, e.g. "Mains".
descriptionstringoptionalShown under the category name on the menu, to diners.
station_idstring (uuid)optionalKitchen station this category's dishes fire to (a rst_stations id).
sortintegeroptionalDisplay position within the menu.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_menu_category \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "menu_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_menu_category at https://app.chirply.io/api/mcp, same bearer token, same input.

Add a dish

restaurant.create_menu_itemwrite

Add a dish to a menu category with its price, description, photo, and dietary tags. It becomes orderable on every surface (POS, tablets, online ordering, website menu) immediately unless available=false.

Parameters

FieldTypeRequiredDescription
category_idstring (uuid)requiredThe menu category the dish goes in.
namestringrequiredThe dish name, e.g. "Pad Thai".
price_centsintegerrequiredPrice in integer cents (1250 = $12.50).
descriptionstringoptionalWhat's in it and how it's served — shown to diners.
image_urlstring (uri)optionalPhoto URL, ideally from the org's media library.
dietary_tagsstring[]optionalDietary labels shown to diners, e.g. ["vegan", "gluten-free", "spicy"].
availablebooleanoptionalfalse creates it 86'd (hidden from diners) until switched on. Default: true
station_idstring (uuid)optionalKitchen station override; otherwise the category's station is used.
skustringoptionalInternal SKU for reports and exports. Not shown to diners.
sortintegeroptionalDisplay position within the category.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_menu_item \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "category_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example",
    "price_cents": 1
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_menu_item at https://app.chirply.io/api/mcp, same bearer token, same input.

Add an option

restaurant.create_modifierwrite

Add one option to a modifier group — e.g. "Fries" or "Extra shot (+$1.50)". Its price is added on top of the dish's own price whenever a diner picks it.

Parameters

FieldTypeRequiredDescription
group_idstring (uuid)requiredThe modifier group this option belongs to.
namestringrequiredThe option name, e.g. "Fries".
price_centsintegeroptionalExtra cost in integer cents on top of the dish price; 0 = free. Default: 0
availablebooleanoptionalfalse hides the option from diners without deleting it; true shows it. Default: true
sortintegeroptionalDisplay position within the group.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_modifier \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "group_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_modifier at https://app.chirply.io/api/mcp, same bearer token, same input.

New modifier group

restaurant.create_modifier_groupwrite

Create a reusable option set diners pick from when ordering a dish — e.g. "Choose a side" (required, exactly one) or "Add-ons" (optional, any number). Attach it to dishes with restaurant.attach_modifier_group.

Parameters

FieldTypeRequiredDescription
namestringrequiredThe group name, e.g. "Choose a side".
min_selectintegeroptionalFewest options the diner must pick. Default: 0
max_selectinteger (or null)optionalMost options the diner may pick; null = no cap. Default: null
requiredbooleanoptionaltrue means the dish can't be ordered without picking from this group — it forces an extra choice on every diner ordering any dish the group is attached to. Default: false

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_modifier_group \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_modifier_group at https://app.chirply.io/api/mcp, same bearer token, same input.

New order

restaurant.create_orderwrite

Open a new restaurant order with its first check. Nothing is cooked or charged yet — add items with restaurant.add_order_items, then fire them to the kitchen with restaurant.fire_order.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredThe restaurant location the order belongs to.
type"dine_in" | "takeout" | "delivery" | "online"requiredDine-in, takeout, delivery, or online.
table_idstring (uuid)optionalThe table, for dine-in orders.
source"pos" | "tablet" | "online" | "api"optionalThe channel the order came through. Machine callers default to 'api'. Default: "api"
contact_idstring (uuid)optionalCRM contact this order belongs to.
guest_namestringoptionalWalk-in guest's name.
guest_phonestringoptionalGuest's phone number.
guest_emailstringoptionalGuest's email address.
coversintegeroptionalHow many guests at the table.
notesstringoptionalOrder-level notes for staff.
requested_atstring (date-time)optionalRequested ready/arrival time for takeout or delivery, ISO 8601.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_order \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "type": "dine_in"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_order at https://app.chirply.io/api/mcp, same bearer token, same input.

Add reservation

restaurant.create_reservationwriteconfirm

Book a real table: creates a reservation exactly like the host stand's Add-reservation form, after re-validating the requested time against live availability (an unavailable time is refused). Matches or creates a CRM contact for the guest and immediately sends them a confirmation by email and/or SMS through the org's own connected sender and Twilio number — a real message to a real person.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)optionalWhich location to book at. Optional when the account has exactly one location.
starts_atstring (date-time)requiredThe reservation start as an ISO 8601 instant. Must exactly match a slot from restaurant.reservation_availability that is still available.
party_sizeintegerrequiredHow many guests.
guest_namestringrequiredThe guest's name, as the host will call it.
guest_phonestringoptionalThe guest's phone — used for the SMS confirmation and CRM matching.
guest_emailstringoptionalThe guest's email — used for the email confirmation and CRM matching.
notesstringoptionalNotes for the restaurant: allergies, occasion, seating preference.
table_idstring (uuid)optionalPre-assign a specific table (must belong to the location).
source"phone" | "walk_in" | "api"optionalHow the booking came in. Use 'phone' or 'walk_in' when acting for staff taking one; defaults to 'api'. Default: "api"

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_reservation \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "starts_at": "2026-09-17T15:00:00Z",
    "party_size": 1,
    "guest_name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_reservation at https://app.chirply.io/api/mcp, same bearer token, same input.

Add station

restaurant.create_stationwriteadmin only

Add a kitchen station to a location — a named screen/printer tickets route to, like Grill or Bar. Station names are unique within a location.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredThe location the station belongs to.
namestringrequiredThe station's name, e.g. Grill, Fry, Bar.
sortintegeroptionalDisplay order among the location's stations — lower first. Default: 0

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_station \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_station at https://app.chirply.io/api/mcp, same bearer token, same input.

Add table

restaurant.create_tablewrite

Add a dining table to the restaurant's floor plan. It appears on the Tables screen immediately and gets its own tablet ordering screen (/restaurant/tablet/<id>) that staff can hand to guests. Nothing is sent to anyone.

Also answers to new table, add a table to the floor plan.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredThe restaurant location this table belongs to.
namestringrequiredThe table's name as staff know it, e.g. "Table 4" or "Patio 2".
seatsintegeroptionalHow many guests the table seats. Default: 2
areastringoptionalNamed floor area the table sits in, e.g. "Patio" or "Bar". Omit for the main floor.
sortintegeroptionalDisplay order within its area (lower first). Default: 0
activebooleanoptionalfalse takes the table out of service — hidden from seating and its tablet screen refuses orders. Default: true
shape"round" | "square" | "rectangle" | "bar"optionalTable silhouette on the floor plan. Default: "rectangle"
floor_xnumberoptionalHorizontal floor position as a percentage from the left edge. Default: 6
floor_ynumberoptionalVertical floor position as a percentage from the top edge. Default: 8
floor_widthnumberoptionalTable width as a percentage of the floor canvas. Default: 13
floor_heightnumberoptionalTable depth as a percentage of the floor canvas. Default: 14
rotation_degintegeroptionalClockwise table rotation in degrees. Default: 0
section_idstring (uuid)optionalServer section responsible for this table. Omit to leave it unassigned.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.create_table \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_create_table at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete floor feature

restaurant.delete_floor_featurewriteconfirm

Permanently delete one traced room, wall, door, service area, fixture, or exact seat marker from the physical restaurant plan. Linked operational tables, orders, reservations, and server sections stay intact, but the deleted drawing cannot be restored automatically.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Also answers to remove room, delete seat marker.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredPhysical floor feature to permanently delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_floor_feature \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_floor_feature at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete section

restaurant.delete_floor_sectionwriteconfirm

Permanently delete a server section. Its dining tables remain on the floor plan but immediately become unassigned; the lost section name, color, and server assignment cannot be restored automatically. No messages are sent.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Also answers to remove server section.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredServer section to permanently delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_floor_section \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_floor_section at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete a menu

restaurant.delete_menuwriteconfirm

Permanently delete a menu with all of its categories and dishes, removing it from the POS, tablets, online ordering, and the website. This cannot be undone — to take a menu offline temporarily, set active=false instead.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe menu to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_menu \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_menu at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete a category

restaurant.delete_menu_categorywriteconfirm

Permanently delete a category and every dish in it, removing them from all ordering surfaces. This cannot be undone.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe category to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_menu_category \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_menu_category at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete a dish

restaurant.delete_menu_itemwriteconfirm

Permanently delete a dish from the menu. Past order lines keep their snapshot of it, but it disappears from every ordering surface and cannot be restored. To take it off temporarily, 86 it instead.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe dish to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_menu_item \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_menu_item at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete an option

restaurant.delete_modifierwriteconfirm

Permanently delete one option from a modifier group. Diners can no longer pick it on any dish. This cannot be undone — to pull it temporarily, set available=false instead.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe option to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_modifier \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_modifier at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete a modifier group

restaurant.delete_modifier_groupwriteconfirm

Permanently delete a modifier group and all of its options, detaching it from every dish that offered it. Diners lose those choices immediately. This cannot be undone.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe group to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_modifier_group \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_modifier_group at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete station

restaurant.delete_stationwriteconfirmadmin only

Permanently delete a kitchen station. Menu items and categories routed to it fall back to 'no station' — their tickets keep printing but stop being sorted onto this screen. Cannot be undone.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe station to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_station \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_station at https://app.chirply.io/api/mcp, same bearer token, same input.

Delete table

restaurant.delete_tablewriteconfirm

Permanently delete a dining table from the floor plan. Past orders keep their history (they just lose the table link), but the table's tablet ordering screen and QR token stop working immediately. This cannot be undone — prefer taking the table out of service (restaurant.update_table with active=false) if it might come back.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Also answers to remove table.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe table to delete.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.delete_table \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_delete_table at https://app.chirply.io/api/mcp, same bearer token, same input.

Detach a modifier group from a dish

restaurant.detach_modifier_groupwriteconfirm

Stop offering a modifier group on one dish. Diners immediately lose those options when ordering it (a required group's detachment means the dish orders as-is). The group itself and its other attachments are untouched.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
item_idstring (uuid)requiredThe dish.
group_idstring (uuid)requiredThe modifier group to remove from it.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.detach_modifier_group \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "item_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "group_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_detach_modifier_group at https://app.chirply.io/api/mcp, same bearer token, same input.

Send to kitchen

restaurant.fire_orderwriteconfirm

Fire an order's pending items to the kitchen — they appear on the kitchen display for REAL cooks to start making, and each item's recipe depletes inventory. Optionally fire only specific item ids (a course). Fired food can't be un-fired, only voided.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
order_idstring (uuid)requiredThe order whose pending items should fire.
item_idsarray of (string (uuid))optionalFire only these pending items; omit to fire everything pending.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.fire_order \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_fire_order at https://app.chirply.io/api/mcp, same bearer token, same input.

Open a menu

restaurant.get_menuread

Fetch one menu with its full contents: categories in service order, every dish in each category (including 86'd ones, flagged by available=false), and the ids of the modifier groups attached to each dish.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe menu's id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.get_menu \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_get_menu at https://app.chirply.io/api/mcp, same bearer token, same input.

Open an order

restaurant.get_orderread

Fetch one order in full: its line items (with modifiers and kitchen status), its checks with computed totals, and every payment taken against them.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe order's id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.get_order \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_get_order at https://app.chirply.io/api/mcp, same bearer token, same input.

Physical floor plan

restaurant.get_physical_floor_planread

Read one restaurant location's measured building plan, uploaded-image reference, rooms, walls, doors, fixed service areas, and exact seat markers. This returns layout data only and sends nothing.

Also answers to building layout, restaurant rooms, seating map.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredRestaurant location whose physical building plan to read.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.get_physical_floor_plan \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_get_physical_floor_plan at https://app.chirply.io/api/mcp, same bearer token, same input.

Kitchen display

restaurant.kitchen_queueread

Read the live kitchen display: every fired order item that is queued, cooking, or ready, grouped into per-order tickets (oldest fire first) with table/guest, order type, modifiers, notes, seats and courses — plus the 'all day' totals per item name still being cooked. Optionally filter to one location or one kitchen station. Read-only; changes nothing.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)optionalOnly tickets for this restaurant location (rst_locations id).
station_idstring (uuid)optionalOnly items routed to this kitchen station (rst_stations id), e.g. just the grill's screen.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.kitchen_queue \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "station_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_kitchen_queue at https://app.chirply.io/api/mcp, same bearer token, same input.

Server sections

restaurant.list_floor_sectionsread

List the restaurant's floor sections, including each section's display color, assigned server, location, and the number of tables currently in the section. This reads scheduling state only and sends nothing.

Also answers to server sections, table sections, server table assignments.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)optionalOnly sections at this restaurant location.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_floor_sections \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_floor_sections at https://app.chirply.io/api/mcp, same bearer token, same input.

Inventory

restaurant.list_inventoryread

List the restaurant's inventory items with what's on hand, the unit each is counted in, its par (reorder) level, unit cost in cents, and SKU. Optionally filter to one location or search by name/SKU. Costs nothing to run. Requires the Restaurant app (a one-time purchase from the App Marketplace) to be installed in this account; without it the call returns 403 app_required and no data.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
location_idstring (uuid)optionalOnly items assigned to this restaurant location.
querystringoptionalText to match in the item name or SKU.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_inventory \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_inventory at https://app.chirply.io/api/mcp, same bearer token, same input.

Restaurant settings

restaurant.list_locationsread

List the account's restaurant locations with all of their settings — public web address (/eat/<slug>), contact details, opening hours, timezone, currency, sales tax rate, online-ordering/pickup/delivery/reservation toggles, delivery fee and minimum, prep time, tip presets, and public-page branding.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
querystringoptionalText to match in the name or slug.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_locations \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_locations at https://app.chirply.io/api/mcp, same bearer token, same input.

List dishes

restaurant.list_menu_itemsread

List the dishes on the menu, in display order. Filter by category or by menu, restrict to available (or 86'd) dishes only, and search names and descriptions. available=false rows are 86'd — hidden from diners but still on the books.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
category_idstring (uuid)optionalOnly dishes in this category.
menu_idstring (uuid)optionalOnly dishes anywhere on this menu.
availablebooleanoptionaltrue = only orderable dishes; false = only 86'd ones.
querystringoptionalText to match in the dish name or description.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_menu_items \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_menu_items at https://app.chirply.io/api/mcp, same bearer token, same input.

List menus

restaurant.list_menusread

List the restaurant's menus (Dinner, Brunch, Drinks…) in display order, optionally for one location only. Each menu row includes whether it is live — an inactive menu is hidden from the POS, tablets, online ordering, and the website.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
location_idstring (uuid)optionalOnly menus at this location.
activebooleanoptionaltrue = only live menus; false = only hidden ones.
querystringoptionalText to match in the menu name.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_menus \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_menus at https://app.chirply.io/api/mcp, same bearer token, same input.

List modifier groups

restaurant.list_modifier_groupsread

List the restaurant's reusable option sets ("Choose a side", "Add-ons"…), each with its options and their price bumps. available=false options are hidden from diners.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
querystringoptionalText to match in the group name.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_modifier_groups \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_modifier_groups at https://app.chirply.io/api/mcp, same bearer token, same input.

List orders

restaurant.list_ordersread

List the restaurant's orders (POS, tablet and online), newest first. Filter by status, order type, source channel, location, or an opened-at date range.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
status"open" | "completed" | "canceled"optionalOnly orders in this status.
type"dine_in" | "takeout" | "delivery" | "online"optionalOnly this order type.
source"pos" | "tablet" | "online" | "api"optionalOnly orders placed through this channel.
location_idstring (uuid)optionalOnly orders at this location.
sincestring (date-time)optionalOnly orders opened at or after this ISO 8601 timestamp.
untilstring (date-time)optionalOnly orders opened at or before this ISO 8601 timestamp.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_orders \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_orders at https://app.chirply.io/api/mcp, same bearer token, same input.

Reservations

restaurant.list_reservationsread

List the restaurant's reservations — the same book the host stand shows. Filter to one local calendar day (the 'tonight's book' view), a status, or a location. Rows include guest name/phone/email, party size, start time (UTC instant), assigned table, status, and how the booking came in (online, phone, walk-in, or API).

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
location_idstring (uuid)optionalWhich location's book. Optional when the account has exactly one location.
datestringoptionalOnly reservations starting on this local calendar day at the location.
status"pending" | "confirmed" | "seated" | "completed" | "no_show" | "canceled"optionalOnly reservations in this status.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_reservations \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_reservations at https://app.chirply.io/api/mcp, same bearer token, same input.

Reservation services

restaurant.list_service_periodsread

List a location's service periods — the bookable sittings on the public reservation page (e.g. Dinner: Tue–Sun 5–10pm, 30-minute slots, tables turn in 90 minutes). Days use 0=Sunday…6=Saturday; times are 24-hour local to the location.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
location_idstring (uuid)optionalOnly services at this location.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_service_periods \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_service_periods at https://app.chirply.io/api/mcp, same bearer token, same input.

Kitchen stations

restaurant.list_stationsread

List the kitchen stations (Grill, Fry, Bar…) tickets are sorted onto. Menu items and categories point at a station, and the kitchen display filters by it.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
location_idstring (uuid)optionalOnly stations at this location.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_stations \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_stations at https://app.chirply.io/api/mcp, same bearer token, same input.

Movements

restaurant.list_stock_movementsread

Read the stock-movement ledger, newest first: every change to every on-hand count, with its signed delta, reason ('purchase', 'waste', 'adjustment', 'count', or the automatic 'sale' written when the kitchen fires an order), note, the order that consumed the stock for sale rows, and who made it. Optionally filter by item or reason. Costs nothing to run. Requires the Restaurant app (a one-time purchase from the App Marketplace) to be installed in this account; without it the call returns 403 app_required and no data.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
inventory_item_idstring (uuid)optionalOnly movements for this inventory item.
reason"purchase" | "waste" | "adjustment" | "sale" | "count"optionalOnly movements with this reason.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_stock_movements \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_stock_movements at https://app.chirply.io/api/mcp, same bearer token, same input.

Tables

restaurant.list_tablesread

List the restaurant's dining tables and their floor-plan geometry: name, seat count, room, shape, position, size, rotation, server section, service state, and QR/tablet token. Filter by location, room, section, or active state, or search by name.

Also answers to floor plan, dining tables, table list.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
location_idstring (uuid)optionalOnly tables at this location.
areastringoptionalOnly tables in this named area (e.g. "Patio", "Bar").
activebooleanoptionaltrue = only tables in service; false = only out-of-service tables.
section_idstring (uuid)optionalOnly tables assigned to this server section.
querystringoptionalText to match in the table name.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.list_tables \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_list_tables at https://app.chirply.io/api/mcp, same bearer token, same input.

Reorder list

restaurant.low_stockread

The reorder report: every inventory item at or below its par level, with what's on hand, the par line, unit and unit cost — i.e. what to order before service runs out. Items without a par level never appear. Costs nothing to run. Requires the Restaurant app (a one-time purchase from the App Marketplace) to be installed in this account; without it the call returns 403 app_required and no data.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.low_stock \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool restaurant_low_stock at https://app.chirply.io/api/mcp, same bearer token, same input.

Record cash payment

restaurant.record_cash_paymentwriteconfirm

Record REAL MONEY taken in cash against a check. The amount (plus any tip) counts toward the check's total, and the check marks itself paid once its payments cover it. An amount below the total is a partial payment — how an even split settles. This is a financial record; get it wrong and the till won't balance.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
check_idstring (uuid)requiredThe check being paid.
amount_centsintegerrequiredCash applied to the check, integer cents (not the tendered amount — change stays in the drawer).
tip_centsintegeroptionalTip left on top, integer cents. Joins the check's totals. Default: 0

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.record_cash_payment \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "check_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "amount_cents": 1
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_record_cash_payment at https://app.chirply.io/api/mcp, same bearer token, same input.

Remove plan image

restaurant.remove_floor_plan_imagewriteconfirm

Permanently delete the private uploaded architectural-plan image from one restaurant location. Every traced room, wall, fixture, seat, operational table, order, reservation, and server section stays in place, but the image itself cannot be restored automatically.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Also answers to delete restaurant blueprint, clear floor background.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredRestaurant location whose uploaded plan image to remove.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.remove_floor_plan_image \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_remove_floor_plan_image at https://app.chirply.io/api/mcp, same bearer token, same input.

Check available times

restaurant.reservation_availabilityread

The bookable reservation times for one local calendar day and party size, computed from the location's service periods minus what existing reservations and table capacity already consume. Read-only and free. Each slot is a UTC instant with an 'available' flag; offer only available ones to a guest, and know the time is re-validated again at booking.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)optionalWhich location to check. Optional when the account has exactly one location.
datestringrequiredA calendar date, YYYY-MM-DD, on the RESTAURANT's own wall clock (its location timezone).
party_sizeintegerrequiredHow many guests the table must seat.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.reservation_availability \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "date": "2026-09-17",
    "party_size": 1
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_reservation_availability at https://app.chirply.io/api/mcp, same bearer token, same input.

Save building plan

restaurant.save_physical_floor_planwrite

Create or update the real-world width, depth, measurement unit, and uploaded-plan visibility for one restaurant location. Existing uploaded images, rooms, fixtures, seats, tables, orders, and reservations stay in place.

Also answers to set restaurant dimensions, calibrate floor plan.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredRestaurant location whose building dimensions to save.
width_unitsnumberrequiredMeasured outside width of the floor in the selected unit.
height_unitsnumberrequiredMeasured outside depth of the floor in the selected unit.
unit"feet" | "meters"requiredMeasurement system for every physical dimension: feet or meters.
background_opacitynumberoptionalUploaded plan visibility from 0.05 (faint) through 1 (solid). Default: 0.35

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.save_physical_floor_plan \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "width_units": 1,
    "height_units": 1,
    "unit": "feet"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_save_physical_floor_plan at https://app.chirply.io/api/mcp, same bearer token, same input.

Send receipt

restaurant.send_receiptwriteconfirm

Email and/or text a REAL diner the itemized receipt for a check, on the org's own connected email sender and Twilio number. NOT SAFE TO RE-SEND: there is no de-duplication, so every call delivers another message to that person's phone and inbox, and every SMS is another Twilio message billed to the org. Send it once. It does not charge the diner's card or change the check — the cost is the messaging, and the harm is texting a customer repeatedly. Optionally captures the guest's email/phone onto the order first.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
check_idstring (uuid)requiredThe check whose receipt to send.
emailstringoptionalGuest email to send to (saved onto the order). Omit to use what's already on the order.
phonestringoptionalGuest mobile number for the SMS copy (saved onto the order).

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.send_receipt \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "check_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_send_receipt at https://app.chirply.io/api/mcp, same bearer token, same input.

86 a dish / bring it back

restaurant.set_item_availabilitywriteconfirm

Flip a dish's availability. available=false 86's it: the dish disappears from the POS, table tablets, online ordering, and the website menu immediately, so real diners can no longer order it. available=true puts it back on sale everywhere. Nothing is deleted either way.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe dish.
availablebooleanrequiredfalse = 86 it (hide from every ordering screen); true = back on the menu.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.set_item_availability \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "available": true
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_set_item_availability at https://app.chirply.io/api/mcp, same bearer token, same input.

Save recipe

restaurant.set_recipewrite

Replace a menu item's ingredient lines — how much of which inventory items selling ONE of that dish consumes. This is what makes sales deplete stock automatically: when the kitchen fires the dish, each line writes a 'sale' movement. An empty ingredient list clears the recipe, and the dish stops touching inventory. Quantities are per single sale, in each ingredient's own unit. Requires the Restaurant app (a one-time purchase from the App Marketplace) to be installed in this account; without it the call returns 403 app_required and no data.

Parameters

FieldTypeRequiredDescription
menu_item_idstring (uuid)requiredThe menu item (dish) whose recipe to set.
ingredientsobject[]requiredThe complete new set of ingredient lines. An empty array clears the recipe.
ingredients[].inventory_item_idstring (uuid)requiredThe inventory item consumed.
ingredients[].qtynumberrequiredAmount consumed per single sale, in the item's unit.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.set_recipe \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "menu_item_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "ingredients": [
      {
        "inventory_item_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
        "qty": 1
      }
    ]
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_set_recipe at https://app.chirply.io/api/mcp, same bearer token, same input.

Update reservation status

restaurant.set_reservation_statuswriteconfirm

Move a reservation through its lifecycle, the same buttons the host stand shows: confirm a pending one, seat the party, complete the visit, mark a no-show, or cancel. Canceling or no-showing releases the table, and another guest may book the freed slot immediately — treat those as irreversible in practice. No message is sent to the guest.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe reservation to update.
status"pending" | "confirmed" | "seated" | "completed" | "no_show" | "canceled"requiredThe new status: pending, confirmed, seated, completed, no_show, or canceled.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.set_reservation_status \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "status": "pending"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_set_reservation_status at https://app.chirply.io/api/mcp, same bearer token, same input.

Save reservation services

restaurant.set_service_periodswriteadmin only

REPLACE a location's entire reservation schedule with the given service periods. This immediately changes which dates and times diners can book on the public page — services not in the list are removed (existing reservations are kept). Pass the full schedule, not a delta.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredThe location whose schedule to replace.
periodsobject[]requiredThe location's complete schedule. An empty array removes every service.
periods[].namestringrequiredWhat diners pick when booking — Lunch, Dinner, Brunch…
periods[].daysinteger[]requiredDays the service runs: 0=Sunday … 6=Saturday.
periods[].start_timestringrequiredFirst bookable time, 24-hour HH:MM local to the location.
periods[].end_timestringrequiredLast bookable time, 24-hour HH:MM local to the location. Must be after start_time.
periods[].slot_minutesintegeroptionalMinutes between offered times — 30 offers 5:00, 5:30, 6:00… Default: 30
periods[].turn_minutesintegeroptionalHow long a party keeps its table before it frees up. Default: 90
periods[].max_covers_per_slotinteger (or null)optionalCap on total guests per time slot. Null = limited only by free tables. Default: null
periods[].activebooleanoptionalFalse keeps the service saved but hides it from diners. Default: true

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.set_service_periods \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "periods": [
      {
        "name": "Example",
        "days": [
          1
        ],
        "start_time": "example",
        "end_time": "example"
      }
    ]
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_set_service_periods at https://app.chirply.io/api/mcp, same bearer token, same input.

Split a check

restaurant.split_checkwrite

Split a check two ways: mode 'items' moves the listed item groups onto new checks on the same order (groups[0] stays on the original), each paying independently; mode 'even' creates NO new checks — it returns the per-payer share amounts, each of which is then taken as a partial payment (restaurant.record_cash_payment, or a card payment in the app).

Parameters

FieldTypeRequiredDescription
check_idstring (uuid)requiredThe open check to split.
mode"items" | "even"required'items' moves lines to new checks; 'even' just computes payer shares.
groupsarray of (array of (string (uuid)))optionalFor mode 'items': groups of order-item ids. The first group stays on the original check; every further group becomes a new check.
waysintegeroptionalFor mode 'even': how many payers to split between.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.split_check \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "check_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "mode": "items"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_split_check at https://app.chirply.io/api/mcp, same bearer token, same input.

Table status

restaurant.table_statusread

The live floor view: for each table, whether it currently has an open order (with order number, when it opened, and covers) and its next upcoming reservation inside the look-ahead window. This is exactly what the Tables screen shows staff.

Also answers to floor status, which tables are open, table availability.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)optionalOnly tables at this location.
table_idstring (uuid)optionalStatus for just this one table.
horizon_hoursintegeroptionalHow far ahead to look for upcoming reservations, in hours. Default: 24

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.table_status \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "table_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_table_status at https://app.chirply.io/api/mcp, same bearer token, same input.

Save floor feature

restaurant.update_floor_featurewrite

Update a traced room, wall, door, fixed service area, fixture, or exact seat on the physical restaurant plan. This changes only the drawing; linked tables, orders, reservations, and server assignments remain intact.

Also answers to move floor feature, resize room, link seat to table.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredPhysical floor feature to update.
labelstringoptionalNew staff-facing feature label.
floor_xnumberoptionalNew left edge as a percentage of plan width.
floor_ynumberoptionalNew top edge as a percentage of plan depth.
floor_widthnumberoptionalNew feature width as a percentage of plan width.
floor_heightnumberoptionalNew feature depth as a percentage of plan depth.
rotation_degintegeroptionalNew clockwise rotation in degrees.
table_idstring (uuid) (or null)optionalDining table linked to this seat, or null to unlink it.
colorstring (or null)optionalNew six-digit hex outline color, or null for the feature default.
lockedbooleanoptionalWhether staff should be prevented from accidentally dragging the feature.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_floor_feature \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_floor_feature at https://app.chirply.io/api/mcp, same bearer token, same input.

Save section

restaurant.update_floor_sectionwrite

Update a floor section's name, color, display order, or assigned server. Changing the server reassigns responsibility for every table already in that section; it does not send a notification or message.

Also answers to assign server to section, rename server section.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredFloor section to update.
namestringoptionalNew staff-facing section name.
colorstringoptionalNew six-digit hex display color.
server_user_idstring (uuid) (or null)optionalNew responsible teammate, or null to leave the section without a server.
sortintegeroptionalNew display order; lower values appear first.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_floor_section \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_floor_section at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit item

restaurant.update_inventory_itemwrite

Edit an inventory item's name, unit, par level, unit cost, SKU, or location. Omitted fields are left alone. The on-hand amount is deliberately NOT editable here — change it with restaurant.adjust_stock so the ledger records why. Requires the Restaurant app (a one-time purchase from the App Marketplace) to be installed in this account; without it the call returns 403 app_required and no data.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe inventory item to edit.
namestringoptionalNew name.
unitstringoptionalNew counting unit.
par_levelnumber (or null)optionalNew reorder line; null removes it (and the item leaves the low-stock report).
cost_centsinteger (or null)optionalNew unit cost in integer cents; null clears it.
skustring (or null)optionalNew SKU; null clears it.
location_idstring (uuid) (or null)optionalMove the item to this location; null makes it an all-locations item.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_inventory_item \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_inventory_item at https://app.chirply.io/api/mcp, same bearer token, same input.

Save restaurant settings

restaurant.update_locationwriteconfirmadmin only

Update a restaurant location's settings. CHANGES WHAT DINERS SEE AND WHAT THEY ARE CHARGED: the tax rate and delivery fee alter real checkout totals, the toggles turn public ordering/reservations on or off, hours change when orders are accepted, and changing the slug MOVES the public pages (old /eat/<slug> links stop working). Omitted fields are left alone.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe location to update.
namestringoptionalThe restaurant's name, as diners see it.
slugstringoptionalThe location's public web address: diners visit /eat/<slug>. Globally unique across the whole platform.
phonestring (or null)optionalPhone number shown to diners on the public page.
emailstring (or null)optionalEmail address order and reservation notices go to.
addressstring (or null)optionalStreet address shown to diners for pickup and directions.
timezonestringoptionalIANA timezone, e.g. America/New_York. Hours and reservation slots are interpreted in it.
currencystringoptionalISO currency code prices are in, lowercase — e.g. usd.
tax_rate_pctnumberoptionalSales tax percent added to every check — 8.25 means 8.25%.
hoursobjectoptionalWeekly opening hours shown to diners on the public page. A day that is omitted or has no ranges displays as closed.
hours.sunobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.sun[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.sun[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.monobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.mon[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.mon[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.tueobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.tue[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.tue[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.wedobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.wed[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.wed[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.thuobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.thu[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.thu[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.friobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.fri[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.fri[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
hours.satobject[]optionalOpen ranges for the day. Two ranges = split hours (lunch and dinner). Empty or omitted = closed that day.
hours.sat[].openstringrequiredOpening time, 24-hour HH:MM local to the location.
hours.sat[].closestringrequiredClosing time, 24-hour HH:MM local to the location.
tip_presetsinteger[]optionalThe one-tap tip percentages diners see at checkout, e.g. [15,18,20,25].
online_ordering_enabledbooleanoptionalWhether diners can order and pay from the public menu page.
reservations_enabledbooleanoptionalWhether diners can book tables from the public reservation page.
pickup_enabledbooleanoptionalWhether online orders may be collected at the counter.
delivery_enabledbooleanoptionalWhether online orders may be delivered by the restaurant's own drivers.
delivery_fee_centsintegeroptionalFee in integer cents added to every delivery order — 499 = $4.99.
min_order_centsintegeroptionalMinimum order size in integer cents before delivery is offered.
prep_minutesintegeroptionalMinutes diners are told their order takes to prepare.
logo_urlstring (or null)optionalURL of the logo image on the public page.
hero_urlstring (or null)optionalURL of the wide cover photo across the top of the public page.
aboutstring (or null)optionalShort welcome text shown under the restaurant's name on the public page.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_location \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_location at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit a menu

restaurant.update_menuwriteconfirm

Rename a menu, change its display position, or toggle it live/hidden. Setting active=false immediately pulls the ENTIRE menu — every category and every dish on it — off the POS, table tablets, online ordering, and the website, mid-service if that is when you run it; real diners stop being able to order any of it within seconds. Nothing is deleted, and active=true puts it all back.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe menu to edit.
namestringoptionalThe menu's name, e.g. "Dinner".
activebooleanoptionalWhether the whole menu is live. false hides every dish on it from the POS, table tablets, online ordering, and the website menu; true brings them all back.
sortintegeroptionalDisplay position (0 = first).

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_menu \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_menu at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit a category

restaurant.update_menu_categorywrite

Rename a category, change its description or display position, or point it at a different kitchen station. Pass station_id: null to clear the station.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe category to edit.
namestringoptionalThe category name, e.g. "Mains".
descriptionstring (or null)optionalShown under the category name on the menu, to diners.
station_idstring (uuid) (or null)optionalNew kitchen station, or null for none.
sortintegeroptionalDisplay position within the menu.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_menu_category \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_menu_category at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit a dish

restaurant.update_menu_itemwriteconfirm

Update a dish — name, price, description, photo, dietary tags, kitchen station, SKU, or which category it sits in. Omitted fields are left alone. Every change is outward-facing: this edits a dish real diners are looking at, and a new price_cents is what the next order charges on the POS, the tablets, online ordering, and the website, within seconds and with no review step. A wrong dietary tag reaches someone with an allergy. To 86 a dish use restaurant.set_item_availability instead.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe dish to edit.
category_idstring (uuid)optionalMove it to this category.
namestringoptionalThe dish name, e.g. "Pad Thai".
price_centsintegeroptionalNew price in integer cents (1250 = $12.50). Charged on the very next order.
descriptionstring (or null)optionalWhat's in it and how it's served — shown to diners.
image_urlstring (uri) (or null)optionalNew photo URL, or null to remove it.
dietary_tagsstring[]optionalDietary labels shown to diners, e.g. ["vegan", "gluten-free", "spicy"].
station_idstring (uuid) (or null)optionalNew kitchen station override, or null to fall back to the category's.
skustring (or null)optionalInternal SKU for reports and exports. Not shown to diners.
sortintegeroptionalDisplay position within the category.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_menu_item \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_menu_item at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit an option

restaurant.update_modifierwrite

Update one option in a modifier group — rename it, change its extra cost, its display position, or hide/show it (available). Price changes reach diners immediately on every dish offering the group.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe option to edit.
namestringoptionalThe option name, e.g. "Fries".
price_centsintegeroptionalNew extra cost in integer cents. Charged on the very next order.
availablebooleanoptionalfalse hides the option from diners without deleting it; true shows it.
sortintegeroptionalDisplay position within the group.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_modifier \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_modifier at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit a modifier group

restaurant.update_modifier_groupwrite

Rename a modifier group or change its pick rules (min/max/required). The change applies at once to every dish the group is attached to.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe group to edit.
namestringoptionalThe group name, e.g. "Choose a side".
min_selectintegeroptionalNew minimum picks.
max_selectinteger (or null)optionalNew maximum picks; null = no cap.
requiredbooleanoptionaltrue means the dish can't be ordered without picking from this group — it forces an extra choice on every diner ordering any dish the group is attached to.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_modifier_group \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_modifier_group at https://app.chirply.io/api/mcp, same bearer token, same input.

Rename station

restaurant.update_stationwriteadmin only

Rename a kitchen station in place — the settings screen's pencil-edit on a station chip. This is the safe alternative to deleting and recreating it: delete detaches every menu item and category already routed to that station (their tickets fall back to 'no station'), while renaming keeps their routing intact. Station names stay unique within a location.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe station to rename.
namestringrequiredThe station's new name.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_station \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "name": "Example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_station at https://app.chirply.io/api/mcp, same bearer token, same input.

Edit table

restaurant.update_tablewrite

Update a dining table: rename it, change its seats, shape, floor position, size, rotation, room, server section, location, display order, or service state. Omitted fields are left alone, except moving a table to another location without naming a destination section clears its old section. Taking a table out of service makes its tablet screen refuse new orders.

Also answers to rename table, move table, take table out of service.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe table to edit.
location_idstring (uuid)optionalMove the table to this location.
namestringoptionalNew name for the table.
seatsintegeroptionalNew seat count.
areastring (or null)optionalNew floor area; null moves it back to the main floor.
sortintegeroptionalNew display order.
activebooleanoptionaltrue puts the table in service; false takes it out.
shape"round" | "square" | "rectangle" | "bar"optionalNew table silhouette on the floor plan.
floor_xnumberoptionalNew horizontal floor position as a percentage from the left edge.
floor_ynumberoptionalNew vertical floor position as a percentage from the top edge.
floor_widthnumberoptionalNew width as a percentage of the floor canvas.
floor_heightnumberoptionalNew depth as a percentage of the floor canvas.
rotation_degintegeroptionalNew clockwise table rotation in degrees.
section_idstring (uuid) (or null)optionalAssign this server section, or null to leave the table unassigned.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.update_table \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_update_table at https://app.chirply.io/api/mcp, same bearer token, same input.

Upload plan image

restaurant.upload_floor_plan_imagewriteconfirm

Upload or replace the private architectural-plan image underneath one restaurant floor. The image is stored permanently in the account's Supabase Storage (up to 10 MB, which can incur storage and egress cost); traced rooms, fixtures, seats, and tables remain unchanged.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Also answers to upload building plan, replace restaurant blueprint.

Parameters

FieldTypeRequiredDescription
location_idstring (uuid)requiredRestaurant location that owns the uploaded plan.
filenamestringrequiredOriginal image filename, used only to preserve its extension.
content_type"image/jpeg" | "image/png" | "image/webp"requiredUploaded image MIME type: JPEG, PNG, or WebP.
content_base64stringrequiredPlan image bytes encoded as base64, without a data-URL prefix.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.upload_floor_plan_image \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "filename": "Example",
    "content_type": "image/jpeg",
    "content_base64": "example"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_upload_floor_plan_image at https://app.chirply.io/api/mcp, same bearer token, same input.

Void item

restaurant.void_order_itemwriteconfirm

Void a single line item on a ticket — the POS's 'Void?' control (tap once to arm it, again to confirm). Removes just that line from its check's total; the rest of the order is untouched. Fired items — already sent to the kitchen — can still be voided here, but the food itself can't be un-cooked, only kept off the bill. Use this for one wrong or unwanted item; use restaurant.cancel_order when the WHOLE order should go away instead. Voiding an item that's already voided is a harmless no-op.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
item_idstring (uuid)requiredThe order item (ticket line) to void.

Example

curl -X POST https://app.chirply.io/api/v1/actions/restaurant.void_order_item \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "item_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool restaurant_void_order_item at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=restaurant — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.