{"openapi":"3.1.0","info":{"title":"Epos Now (BYOK) API","version":"0.1.0","description":"Epos Now (BYOK) lets an AI assistant read your own Epos Now data through the Epos Now API with a key you supply (Epos Now API key). Read-only: 11 tools (get_token_info, list_products, get_product, list_categories, list_locations, list_latest_transactions, list_transactions_by_date, list_tender_types, list_tax_groups, list_product_stock, list_end_of_day). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-eposnow.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-eposnow/docs"},"termsOfService":"https://connectorbay.com/byok-eposnow/terms"},"servers":[{"url":"https://byok-eposnow.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-eposnow/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/get_token_info":{"post":{"operationId":"get_token_info","summary":"Show which company and app location the credentials belong to. Use for \"Which Epos Now company is my API token connected","description":"Show which company and app location the credentials belong to. Use for \"Which Epos Now company is my API token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_token_infoArguments","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_products":{"post":{"operationId":"list_products","summary":"List products with name, prices, category, barcode, SKU, supplier and whether they are archived or sold on the till or w","description":"List products with name, prices, category, barcode, SKU, supplier and whether they are archived or sold on the till or web. Use for \"Which products do I sell in Epos Now and at what price\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"title":"list_productsArguments","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_product":{"post":{"operationId":"get_product","summary":"Get one product by id with prices, tax groups, tags and location prices. Use for \"Show Epos Now product 101\".","description":"Get one product by id with prices, tax groups, tags and location prices. Use for \"Show Epos Now product 101\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_id":{"description":"Epos Now product id (the Id field from list_products).","maximum":2147483647,"minimum":1,"title":"Product Id","type":"integer"}},"required":["product_id"],"title":"get_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}},"/v1/tools/list_categories":{"post":{"operationId":"list_categories","summary":"List product categories with their parent, name, reference code and whether they show on the till. Use for \"What product","description":"List product categories with their parent, name, reference code and whether they show on the till. Use for \"What product categories exist in Epos Now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"title":"list_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_locations":{"post":{"operationId":"list_locations","summary":"List the shop locations of the company with name and address. Use for \"What locations does my Epos Now account have\".","description":"List the shop locations of the company with name and address. Use for \"What locations does my Epos Now account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"title":"list_locationsArguments","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_latest_transactions":{"post":{"operationId":"list_latest_transactions","summary":"List the newest transactions first with time, status, staff, device, table and totals. Line items are not returned. Use ","description":"List the newest transactions first with time, status, staff, device, table and totals. Line items are not returned. Use for \"What were my latest Epos Now sales\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"anyOf":[{"maximum":2147483647,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transactions from this till device id.","title":"Device Id"},"status":{"anyOf":[{"maximum":8,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transactions with this status: 1 completed, 7 held, 8 ordered.","title":"Status"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"title":"list_latest_transactionsArguments","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_transactions_by_date":{"post":{"operationId":"list_transactions_by_date","summary":"List transactions between two date-times with status, staff, device, table and totals. Line items are not returned. Use ","description":"List transactions between two date-times with status, staff, device, table and totals. Line items are not returned. Use for \"What did I take in Epos Now between 1 and 7 October 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"Start of the period as an ISO 8601 date-time, for example 2026-10-01T00:00:00.","maxLength":40,"title":"Start Date","type":"string"},"end_date":{"description":"End of the period as an ISO 8601 date-time, for example 2026-10-07T23:59:59.","maxLength":40,"title":"End Date","type":"string"},"device_id":{"anyOf":[{"maximum":2147483647,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transactions from this till device id.","title":"Device Id"},"status":{"anyOf":[{"maximum":8,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only transactions with this status: 1 completed, 7 held, 8 ordered.","title":"Status"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"required":["start_date","end_date"],"title":"list_transactions_by_dateArguments","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_tender_types":{"post":{"operationId":"list_tender_types","summary":"List the payment types (tender types) set up in the account, such as cash and card. Use for \"Which payment types does my","description":"List the payment types (tender types) set up in the account, such as cash and card. Use for \"Which payment types does my Epos Now account accept\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"title":"list_tender_typesArguments","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_tax_groups":{"post":{"operationId":"list_tax_groups","summary":"List the tax groups with their tax rates. Use for \"What tax rates are set up in Epos Now\".","description":"List the tax groups with their tax rates. Use for \"What tax rates are set up in Epos Now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"title":"list_tax_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/list_product_stock":{"post":{"operationId":"list_product_stock","summary":"List stock settings per product and location: minimum and maximum stock and stock batches. Use for \"How much stock do I ","description":"List stock settings per product and location: minimum and maximum stock and stock batches. Use for \"How much stock do I have in Epos Now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"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_end_of_day":{"post":{"operationId":"list_end_of_day","summary":"List end-of-day (till close) records with start and end time, float, total and amount in till. Use for \"What were my Epo","description":"List end-of-day (till close) records with start and end time, float, total and amount in till. Use for \"What were my Epos Now end-of-day totals\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. Each page holds up to 200 items.","title":"Page"}},"title":"list_end_of_dayArguments","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}}}}