{"openapi":"3.1.0","info":{"title":"Revel Stock (BYOK) API","version":"0.1.0","description":"Revel Stock (BYOK) lets an AI assistant read your own Revel Stock data through the Revel Stock API with a key you supply (Revel API key and secret joined with a colon (KEY:SECRET)). Read-only: 8 tools (list_product_stock, list_current_stock, list_ingredients, list_ingredient_stock, list_stocktakes, list_stock_transfers, list_purchase_orders, list_vendors). The BYOK key travels with each request,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-revel-stock-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-revel-stock-config/docs"},"termsOfService":"https://connectorbay.com/byok-revel-stock-config/terms"},"servers":[{"url":"https://byok-revel-stock-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-revel-stock-config/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_product_stock":{"post":{"operationId":"list_product_stock","summary":"List stock records per product with quantity in hand, quantity in layaway, reorder threshold and unit cost. Use for \"Wha","description":"List stock records per product with quantity in hand, quantity in layaway, reorder threshold and unit cost. Use for \"What is the stock level of my Revel products\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"product":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only the stock record of this Product resource URI or id.","title":"Product"},"id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only the stock record with this id.","title":"Id"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_product_stockArguments","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_current_stock":{"post":{"operationId":"list_current_stock","summary":"List current stock per establishment and product: quantity in hand and the quantity available for sale. Use for \"How man","description":"List current stock per establishment and product: quantity in hand and the quantity available for sale. Use for \"How many units of each product are available for sale at my Revel locations\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"establishment":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only objects of this establishment (location) id.","title":"Establishment"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_current_stockArguments","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_ingredients":{"post":{"operationId":"list_ingredients","summary":"List ingredients with SKU, cost, unit, active and inventory-tracking flags. Use for \"What ingredients are tracked in my ","description":"List ingredients with SKU, cost, unit, active and inventory-tracking flags. Use for \"What ingredients are tracked in my Revel account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"establishment":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only objects of this establishment (location) id.","title":"Establishment"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only active objects.","title":"Active"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only ingredients with exactly this name (case sensitive).","title":"Name"},"sku":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the ingredient with this SKU.","title":"Sku"},"track_in_inventory":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only ingredients tracked in inventory.","title":"Track In Inventory"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_ingredientsArguments","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_ingredient_stock":{"post":{"operationId":"list_ingredient_stock","summary":"List stock records per ingredient with quantity in hand, reorder threshold and unit cost. Use for \"How much of each ingr","description":"List stock records per ingredient with quantity in hand, reorder threshold and unit cost. Use for \"How much of each ingredient do I have in Revel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"ingredient":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only the stock record of this ingredient id.","title":"Ingredient"},"id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only the stock record with this id.","title":"Id"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_ingredient_stockArguments","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_stocktakes":{"post":{"operationId":"list_stocktakes","summary":"List stocktakes (inventory counts) with name, establishment and numeric status. Use for \"Which stocktakes exist in my Re","description":"List stocktakes (inventory counts) with name, establishment and numeric status. Use for \"Which stocktakes exist in my Revel account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"establishment":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only objects of this establishment (location) id.","title":"Establishment"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_stocktakesArguments","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_stock_transfers":{"post":{"operationId":"list_stock_transfers","summary":"List stock transfers between establishments with status, item count and sent and received dates. Use for \"What stock tra","description":"List stock transfers between establishments with status, item count and sent and received dates. Use for \"What stock transfers happened between my Revel locations\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"from_establishment":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transfers sent from this establishment id.","title":"From Establishment"},"to_establishment":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transfers sent to this establishment id.","title":"To Establishment"},"id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only the transfer with this id.","title":"Id"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_stock_transfersArguments","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_purchase_orders":{"post":{"operationId":"list_purchase_orders","summary":"List purchase orders with expected delivery, finalized, sent, invoiced and receive status, tax and total. Contact and ad","description":"List purchase orders with expected delivery, finalized, sent, invoiced and receive status, tax and total. Contact and address details are left out. Use for \"What purchase orders are open in Revel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"establishment":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only purchase orders of this establishment id.","title":"Establishment"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_purchase_ordersArguments","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_vendors":{"post":{"operationId":"list_vendors","summary":"List suppliers with name, city, state, country, type, payment terms and active flag. Contact people, emails, phones and ","description":"List suppliers with name, city, state, country, type, payment terms and active flag. Contact people, emails, phones and tax IDs are left out. Use for \"Which suppliers does my Revel account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Revel account subdomain, the part before .revelup.com (for example 'mybistro'). Lowercase letters, digits and hyphens.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only active objects.","title":"Active"},"id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only the vendor with this id.","title":"Id"},"limit":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many objects to return (Revel asks for fewer than 100; default 20).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of objects to skip, to page through results.","title":"Offset"},"order_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Field to order by, for example id or -id (newest first).","title":"Order By"}},"required":["subdomain"],"title":"list_vendorsArguments","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}}}}