Order food on ChowDeck: browse restaurants, set your delivery address, build a cart, and check out…
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Add an item to cart. Requires vendor id + menu item id from search_product (products[]) or view_vendor_items. Always pass item type menu.
Vendor id: search_product data[].id OR view_vendor_items vendor. Not the menu item id.
From get_addresses after user confirms pretty_name — never ask user to type this.
Menu item id: search_product data[].products[].id OR view_vendor_items menu item id.
Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names.
Same value as step_37_body_address_id.
Quantity (default 1).
Display name of the menu item from search/menu response.
Discount price in kobo; same as price_per_quantity if no discount.
Pack reference if required; else empty string.
Always menu for food items (never container). Omit to use default menu.
Unit price in kobo from menu/search response.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http mcp-bgpt-chowdeck https://nova.civai.co/mcp/agents/mcp-bgpt-chowdeck
Add an item to cart. Requires vendor id + menu item id from search_product (products[]) or view_vendor_items. Always pass item type menu.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
| step_37_body_addressId | string | Same value as step_37_body_address_id. |
| step_47_body_vendor_id* | string | Vendor id: search_product data[].id OR view_vendor_items vendor. Not the menu item id. |
| step_37_body_address_id* | string | From get_addresses after user confirms pretty_name — never ask user to type this. |
| step_61_body_items_0_item_id* | string | Menu item id: search_product data[].products[].id OR view_vendor_items menu item id. |
| step_61_body_items_0_quantity | string | Quantity (default 1). |
| step_57_body_data_0_products_0_name | string | Display name of the menu item from search/menu response. |
| step_61_body_items_0_discount_price | string | Discount price in kobo; same as price_per_quantity if no discount. |
| step_61_body_items_0_pack_reference | string | Pack reference if required; else empty string. |
| step_7_body_data_0_cart_items_0_type | string | Always menu for food items (never container). Omit to use default menu. |
| step_61_body_items_0_price_per_quantity | string | Unit price in kobo from menu/search response. |
{
"type": "object",
"required": [
"step_37_body_address_id",
"step_47_body_vendor_id",
"step_61_body_items_0_item_id"
],
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
},
"step_37_body_addressId": {
"type": "string",
"description": "Same value as step_37_body_address_id."
},
"step_47_body_vendor_id": {
"type": "string",
"description": "Vendor id: search_product data[].id OR view_vendor_items vendor. Not the menu item id."
},
"step_37_body_address_id": {
"type": "string",
"description": "From get_addresses after user confirms pretty_name — never ask user to type this."
},
"step_61_body_items_0_item_id": {
"type": "string",
"description": "Menu item id: search_product data[].products[].id OR view_vendor_items menu item id."
},
"step_61_body_items_0_quantity": {
"type": "string",
"description": "Quantity (default 1)."
},
"step_57_body_data_0_products_0_name": {
"type": "string",
"description": "Display name of the menu item from search/menu response."
},
"step_61_body_items_0_discount_price": {
"type": "string",
"description": "Discount price in kobo; same as price_per_quantity if no discount."
},
"step_61_body_items_0_pack_reference": {
"type": "string",
"description": "Pack reference if required; else empty string."
},
"step_7_body_data_0_cart_items_0_type": {
"enum": [
"menu"
],
"type": "string",
"default": "menu",
"description": "Always menu for food items (never container). Omit to use default menu."
},
"step_61_body_items_0_price_per_quantity": {
"type": "string",
"description": "Unit price in kobo from menu/search response."
}
}
}Delete/clear the entire cart for one vendor (all items). Requires cart id from view_vendor_cart response data.id — not vendor id. Side-effect: use when user wants to empty cart or before re-adding after 'Active cart already exists'.
| Argument | Type | Description |
|---|---|---|
| step_176_url_path_2* | string | Cart id to delete (view_vendor_cart → data.id, or view_cart → data[].id for matching vendor) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"step_176_url_path_2"
],
"properties": {
"step_176_url_path_2": {
"type": "string",
"description": "Cart id to delete (view_vendor_cart → data.id, or view_cart → data[].id for matching vendor)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Increase quantity by duplicating one pack (configured line item). POST /customer/cart/{cart_id}/pack/{pack_reference}/duplicate. Run view_vendor_cart first. Side-effect.
| Argument | Type | Description |
|---|---|---|
| step_66_url_path_2* | string | Cart id from view_vendor_cart → data.id |
| step_66_url_path_4* | string | Pack reference UUID from view_vendor_cart → data.cart_items[].pack_reference for the line to duplicate |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"step_66_url_path_2",
"step_66_url_path_4"
],
"properties": {
"step_66_url_path_2": {
"type": "string",
"description": "Cart id from view_vendor_cart → data.id"
},
"step_66_url_path_4": {
"type": "string",
"description": "Pack reference UUID from view_vendor_cart → data.cart_items[].pack_reference for the line to duplicate"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Public customer app config (no auth). Good session probe.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Run the get_addresses pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Run the get_chowpass_status pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Run the get_country_list pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Run the get_customer_survey pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Fetch delivery fee details for an order.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Featured and tagged vendors near a delivery address.
| Argument | Type | Description |
|---|---|---|
| step_40_page | integer | Page number for featured vendors (default 1). Use when user asks for more vendors or next page. |
| step_40_page_size | integer | Vendors per page (default 25, max 100) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
| step_40_url_query_address_id* | string | Active delivery address id (from get_addresses or set_active_address) |
{
"type": "object",
"required": [
"step_40_url_query_address_id"
],
"properties": {
"step_40_page": {
"type": "integer",
"minimum": 1,
"description": "Page number for featured vendors (default 1). Use when user asks for more vendors or next page."
},
"step_40_page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Vendors per page (default 25, max 100)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
},
"step_40_url_query_address_id": {
"type": "string",
"description": "Active delivery address id (from get_addresses or set_active_address)"
}
}
}Run the get_order_details pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Run the get_payment_methods pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Run the list_orders_success pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Place order with Pay for me — returns pay_for_me_url for the user to complete payment in browser.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Remove one line item (pack) from a vendor cart. POST /customer/cart/vendor/{vendor_id} with quantity 0. Run view_vendor_cart first — pass menu line ids from data.cart_items[] (type menu). Side-effect.
| Argument | Type | Description |
|---|---|---|
| step_56_url_path_3* | string | Vendor id (view_vendor_cart → data.vendor_id or same vendor as cart) |
| step_118_body_class | string | Order class from cart — usually delivery |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
| step_118_body_address_id* | string | Delivery address id from view_vendor_cart → data.address_id |
| step_118_body_items_0_item_id* | string | Menu item id from view_vendor_cart → data.cart_items[].item_id (type menu line) |
| step_118_body_items_0_cart_item_id* | string | Cart line id from view_vendor_cart → data.cart_items[].id |
| step_118_body_items_0_pack_reference* | string | Pack UUID from view_vendor_cart → data.cart_items[].pack_reference |
Send ChowDeck login SMS (validate phone → auth/login). Does not accept OTP. Ask the user for their phone first, then for the SMS code, then call verify_login_otp.
| Argument | Type | Description |
|---|---|---|
| step_2_body_phone* | string | User-provided phone without country prefix (local NG format like 080…). Never invent or reuse another account's number. |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
| step_2_body_country_code | string | Country code (e.g. NG) |
{
"type": "object",
"required": [
"step_2_body_phone"
],
"properties": {
"step_2_body_phone": {
"type": "string",
"description": "User-provided phone without country prefix (local NG format like 080…). Never invent or reuse another account's number."
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
},
"step_2_body_country_code": {
"type": "string",
"description": "Country code (e.g. NG)"
}
}
}Run the search_menu_by_address pipeline.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Search vendors/products by name near a delivery address. Each data[] entry: id = vendor id; products[].id = menu item id when present. If products[] empty, call view_vendor_items next.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
| step_52_url_query_query* | string | Product search term (e.g. jollof, omeprazole, Daytona) |
| step_52_url_query_address_id* | string | Delivery address id from get_addresses — never ask user to type the number. |
{
"type": "object",
"required": [
"step_52_url_query_query",
"step_52_url_query_address_id"
],
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
},
"step_52_url_query_query": {
"type": "string",
"description": "Product search term (e.g. jollof, omeprazole, Daytona)"
},
"step_52_url_query_address_id": {
"type": "string",
"description": "Delivery address id from get_addresses — never ask user to type the number."
}
}
}Set active delivery address and fetch chowsmart menu for that address.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
| step_37_body_addressId | string | Same address id (duplicate field in API body) |
| step_37_body_address_id* | string | Address id to set as active (from get_addresses) |
| step_38_url_query_address_id* | string | Same address id for menu fetch |
{
"type": "object",
"required": [
"step_37_body_address_id",
"step_38_url_query_address_id"
],
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
},
"step_37_body_addressId": {
"type": "string",
"description": "Same address id (duplicate field in API body)"
},
"step_37_body_address_id": {
"type": "string",
"description": "Address id to set as active (from get_addresses)"
},
"step_38_url_query_address_id": {
"type": "string",
"description": "Same address id for menu fetch"
}
}
}Complete ChowDeck login with SMS code (validate phone → validate OTP → refresh token). Does not send a new SMS.
| Argument | Type | Description |
|---|---|---|
| step_5_body_otp* | string | SMS one-time code from the user |
| step_2_body_phone* | string | Same phone used in request_login_otp |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
| step_2_body_country_code | string | Country code (e.g. NG) |
{
"type": "object",
"required": [
"step_2_body_phone",
"step_5_body_otp"
],
"properties": {
"step_5_body_otp": {
"type": "string",
"description": "SMS one-time code from the user"
},
"step_2_body_phone": {
"type": "string",
"description": "Same phone used in request_login_otp"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
},
"step_2_body_country_code": {
"type": "string",
"description": "Country code (e.g. NG)"
}
}
}View current cart contents.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}View cart for one vendor (vendor-specific checkout view).
| Argument | Type | Description |
|---|---|---|
| step_60_url_path_3* | string | Vendor id (from search_product, view_cart data[].vendor_id, or featured vendors) |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"step_60_url_path_3"
],
"properties": {
"step_60_url_path_3": {
"type": "string",
"description": "Vendor id (from search_product, view_cart data[].vendor_id, or featured vendors)"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Load a vendor menu. Pass vendor id from search_product data[].id as step_58_url_path_2 before add_item_to_cart when search products[] is empty.
| Argument | Type | Description |
|---|---|---|
| step_58_url_path_2* | string | Vendor id from search_product data[].id for the restaurant the user picked. |
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"required": [
"step_58_url_path_2"
],
"properties": {
"step_58_url_path_2": {
"type": "string",
"description": "Vendor id from search_product data[].id for the restaurant the user picked."
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}Retrieve the user's wallet balance.
| Argument | Type | Description |
|---|---|---|
| notification_message | string | Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names. |
{
"type": "object",
"properties": {
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
| step_7_body_data_0_cart_items_0_type | string | Must be menu for food lines (default menu) |
{
"type": "object",
"required": [
"step_56_url_path_3",
"step_118_body_address_id",
"step_118_body_items_0_item_id",
"step_118_body_items_0_cart_item_id",
"step_118_body_items_0_pack_reference"
],
"properties": {
"step_56_url_path_3": {
"type": "string",
"description": "Vendor id (view_vendor_cart → data.vendor_id or same vendor as cart)"
},
"step_118_body_class": {
"type": "string",
"description": "Order class from cart — usually delivery"
},
"notification_message": {
"type": "string",
"description": "Short user-facing sentence for this action if the follow-up reply fails. Plain text only; do not mention template syntax or variable names."
},
"step_118_body_address_id": {
"type": "string",
"description": "Delivery address id from view_vendor_cart → data.address_id"
},
"step_118_body_items_0_item_id": {
"type": "string",
"description": "Menu item id from view_vendor_cart → data.cart_items[].item_id (type menu line)"
},
"step_118_body_items_0_cart_item_id": {
"type": "string",
"description": "Cart line id from view_vendor_cart → data.cart_items[].id"
},
"step_118_body_items_0_pack_reference": {
"type": "string",
"description": "Pack UUID from view_vendor_cart → data.cart_items[].pack_reference"
},
"step_7_body_data_0_cart_items_0_type": {
"type": "string",
"description": "Must be menu for food lines (default menu)"
}
}
}