{"openapi":"3.1.0","info":{"title":"Pancake POS (BYOK) API","version":"0.1.0","description":"Pancake POS (BYOK) lets an AI assistant read your own Pancake POS data through the Pancake POS API with a key you supply (Pancake POS API key (Setting > Application > API KEY)). Read-only: 11 tools (list_shops, list_warehouses, list_product_variations, list_product_categories, list_brands, list_product_tags, list_order_sources, list_payment_methods, list_customer_levels, list_measure_groups,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-pancake-pos.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-pancake-pos/docs"},"termsOfService":"https://connectorbay.com/byok-pancake-pos/terms"},"servers":[{"url":"https://byok-pancake-pos.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-pancake-pos/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_shops":{"post":{"operationId":"list_shops","summary":"List the shops the API key can access with shop id and name. The shop id is needed by every other tool. Use for \"Which P","description":"List the shops the API key can access with shop id and name. The shop id is needed by every other tool. Use for \"Which Pancake POS shops can my key access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_shopsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_warehouses":{"post":{"operationId":"list_warehouses","summary":"List the warehouses of one shop with name, address, country code and whether orders can be created from it. Use for \"Whi","description":"List the warehouses of one shop with name, address, country code and whether orders can be created from it. Use for \"Which warehouses does my Pancake POS shop have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"}},"required":["shop_id"],"title":"list_warehousesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_variations":{"post":{"operationId":"list_product_variations","summary":"List products with their variations: display id, barcode, product name, retail and counter price, import prices, sellabl","description":"List products with their variations: display id, barcode, product name, retail and counter price, import prices, sellable quantity and flags. Filter by keyword, selling speed or lock status. Use for \"Which Pancake POS products are low or best selling and what is in stock\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 100).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search keyword (name, code or barcode).","title":"Search"},"selling_status":{"anyOf":[{"enum":["none","bad","normal","star"],"type":"string"},{"type":"null"}],"default":null,"description":"Selling speed filter: none, bad, normal or star.","title":"Selling Status"},"product_status":{"anyOf":[{"enum":["locked","not_locked"],"type":"string"},{"type":"null"}],"default":null,"description":"Product state filter: locked or not_locked.","title":"Product Status"}},"required":["shop_id"],"title":"list_product_variationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_categories":{"post":{"operationId":"list_product_categories","summary":"List the shop's product categories as a tree: id, name and sub-categories (nodes). Use for \"What product categories does","description":"List the shop's product categories as a tree: id, name and sub-categories (nodes). Use for \"What product categories does my Pancake POS shop have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"}},"required":["shop_id"],"title":"list_product_categoriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_brands":{"post":{"operationId":"list_brands","summary":"List product brands of the shop with id, name, description and dates; filter by name or id. Use for \"Which brands are se","description":"List product brands of the shop with id, name, description and dates; filter by name or id. Use for \"Which brands are set up in my Pancake POS shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 100).","title":"Page Size"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Brand name or brand id to search for.","title":"Search"}},"required":["shop_id"],"title":"list_brandsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_tags":{"post":{"operationId":"list_product_tags","summary":"List product tags of the shop with id, name and display order. Use for \"Which product tags do I use in Pancake POS\".","description":"List product tags of the shop with id, name and display order. Use for \"Which product tags do I use in Pancake POS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"}},"required":["shop_id"],"title":"list_product_tagsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_order_sources":{"post":{"operationId":"list_order_sources","summary":"List order sources (sales channels and pages) with id, name and parent source id. Use for \"Which order sources are confi","description":"List order sources (sales channels and pages) with id, name and parent source id. Use for \"Which order sources are configured in my Pancake POS shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"}},"required":["shop_id"],"title":"list_order_sourcesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_payment_methods":{"post":{"operationId":"list_payment_methods","summary":"List the payment methods defined in the shop with id and name. Use for \"Which payment methods does my Pancake POS shop a","description":"List the payment methods defined in the shop with id and name. Use for \"Which payment methods does my Pancake POS shop accept\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"}},"required":["shop_id"],"title":"list_payment_methodsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_customer_levels":{"post":{"operationId":"list_customer_levels","summary":"List customer loyalty levels with colour, discount value and type, and the order count, points or spend needed to reach ","description":"List customer loyalty levels with colour, discount value and type, and the order count, points or spend needed to reach each level. Use for \"What loyalty levels are set up in my Pancake POS shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Level name to search for.","title":"Search"}},"required":["shop_id"],"title":"list_customer_levelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_measure_groups":{"post":{"operationId":"list_measure_groups","summary":"List unit-of-measure groups with their units and exchange values. Use for \"Which units of measure are defined in my Panc","description":"List unit-of-measure groups with their units and exchange values. Use for \"Which units of measure are defined in my Pancake POS shop\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"}},"required":["shop_id"],"title":"list_measure_groupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_inventory_report_by_product":{"post":{"operationId":"get_inventory_report_by_product","summary":"Inventory movement report per product between two dates: opening and closing quantity and value, purchases, returns, tra","description":"Inventory movement report per product between two dates: opening and closing quantity and value, purchases, returns, transfers, sales and stocktaking in and out. Use for \"How did stock move per product in my Pancake POS shop last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop_id":{"description":"Numeric shop id (from list_shops).","minimum":1,"title":"Shop Id","type":"integer"},"start_date":{"description":"Start of the period as a Unix timestamp in seconds.","minimum":0,"title":"Start Date","type":"integer"},"end_date":{"description":"End of the period as a Unix timestamp in seconds.","minimum":0,"title":"End Date","type":"integer"},"type":{"description":"Quantity basis: actual (on hand) or remain (sellable).","enum":["actual","remain"],"title":"Type","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"Records per page (1 to 100).","title":"Page Size"}},"required":["shop_id","start_date","end_date","type"],"title":"get_inventory_report_by_productArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}