{"openapi":"3.1.0","info":{"title":"Okendo (BYOK) API","version":"0.1.0","description":"Okendo (BYOK) lets an AI assistant read your own Okendo data through the Okendo API with a key you supply (Okendo user ID). Read-only: 7 tools (list_reviews, get_review, list_earning_rules, list_redemption_rules, list_webhook_subscriptions, get_review_translation_blocklist, get_product_translation_blocklist). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-okendo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-okendo/docs"},"termsOfService":"https://connectorbay.com/byok-okendo/terms"},"servers":[{"url":"https://byok-okendo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-okendo/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_reviews":{"post":{"operationId":"list_reviews","summary":"List the product reviews of the store, newest first by default, with product, title, text, star rating, status, sentimen","description":"List the product reviews of the store, newest first by default, with product, title, text, star rating, status, sentiment, helpful votes, reply and reviewer display name. Page with the cursor in nextUrl. Use for \"What are the latest reviews of my Okendo store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Maximum items per page, 1 to 100 (default 25).","title":"Limit"},"last_evaluated":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the lastEvaluated value inside nextUrl from the previous answer, URL-encoded as given; leave out for the first page.","title":"Last Evaluated"},"order_by":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Sort as '(date|rating) (asc|desc)', for example 'rating asc' (default 'date desc').","title":"Order By"},"status":{"anyOf":[{"enum":["approved","pending","rejected"],"type":"string"},{"type":"null"}],"default":null,"description":"Moderation status to keep (default approved).","title":"Status"}},"title":"list_reviewsArguments","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_review":{"post":{"operationId":"get_review","summary":"Get one review by id with product, title, text, star rating, status, sentiment, helpful votes, reply and reviewer displa","description":"Get one review by id with product, title, text, star rating, status, sentiment, helpful votes, reply and reviewer display name. Use for \"Show Okendo review 5f1c2c7e-1111-4a2b-9c3d-000000000001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"review_id":{"description":"Review id (UUID) from list_reviews.","maxLength":60,"title":"Review Id","type":"string"}},"required":["review_id"],"title":"get_reviewArguments","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_earning_rules":{"post":{"operationId":"list_earning_rules","summary":"List the ways customers earn loyalty points in the store: rule type, points amount and caps. Use for \"How do customers e","description":"List the ways customers earn loyalty points in the store: rule type, points amount and caps. Use for \"How do customers earn loyalty points in my Okendo store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_earning_rulesArguments","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_redemption_rules":{"post":{"operationId":"list_redemption_rules","summary":"List the ways customers redeem loyalty points for rewards: rule id, reward type, points cost, minimum purchase, expiry a","description":"List the ways customers redeem loyalty points for rewards: rule id, reward type, points cost, minimum purchase, expiry and the product offered. Use for \"What rewards can customers redeem points for in my Okendo store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_redemption_rulesArguments","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_webhook_subscriptions":{"post":{"operationId":"list_webhook_subscriptions","summary":"List the webhook subscriptions of the account: id, topics, API version, whether enabled and dates. Endpoint URLs are lef","description":"List the webhook subscriptions of the account: id, topics, API version, whether enabled and dates. Endpoint URLs are left out. Use for \"Which webhooks are set up in my Okendo account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Maximum items per page, 1 to 100 (default 25).","title":"Limit"},"last_evaluated":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the lastEvaluated value inside nextUrl from the previous answer, URL-encoded as given; leave out for the first page.","title":"Last Evaluated"},"order_by":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc by creation date (default desc).","title":"Order By"}},"title":"list_webhook_subscriptionsArguments","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_review_translation_blocklist":{"post":{"operationId":"get_review_translation_blocklist","summary":"Get the terms the store never translates in reviews (subscriber-wide blocklist). Use for \"Which terms does my Okendo sto","description":"Get the terms the store never translates in reviews (subscriber-wide blocklist). Use for \"Which terms does my Okendo store keep untranslated in reviews\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_review_translation_blocklistArguments","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_translation_blocklist":{"post":{"operationId":"get_product_translation_blocklist","summary":"Get the terms kept untranslated in the reviews of one product. Use for \"Which terms are kept untranslated for Okendo pro","description":"Get the terms kept untranslated in the reviews of one product. Use for \"Which terms are kept untranslated for Okendo product shopify-123456789\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"product_id":{"description":"Product id prefixed by the platform, for example shopify-123456789.","maxLength":100,"title":"Product Id","type":"string"}},"required":["product_id"],"title":"get_product_translation_blocklistArguments","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}}}}