{"openapi":"3.1.0","info":{"title":"EAN Search (BYOK) API","version":"0.1.0","description":"EAN Search (BYOK) lets an AI assistant read your own EAN Search data through the EAN Search API with a key you supply (EAN-Search API access token). Read-only: 9 tools (lookup_barcode, search_products_by_name, search_similar_products, search_products_in_category, search_barcodes_by_prefix, get_issuing_country, verify_barcode_checksum, find_asin_for_barcode, find_barcode_for_asin). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-eansearch.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-eansearch/docs"},"termsOfService":"https://connectorbay.com/byok-eansearch/terms"},"servers":[{"url":"https://byok-eansearch.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-eansearch/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/lookup_barcode":{"post":{"operationId":"lookup_barcode","summary":"Look up the product behind a barcode: name, category, Google category id and issuing country. Give exactly one of ean, u","description":"Look up the product behind a barcode: name, category, Google category id and issuing country. Give exactly one of ean, upc or isbn. Counts against the plan's monthly query allowance. Use for \"What product has barcode 5099750442227\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"op":{"anyOf":[{"const":"barcode-lookup","type":"string"},{"type":"null"}],"default":"barcode-lookup","description":"Fixed operation name, always 'barcode-lookup'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"},"ean":{"anyOf":[{"maxLength":14,"type":"string"},{"type":"null"}],"default":null,"description":"EAN-13 or GTIN-13 barcode, 13 digits.","title":"Ean"},"upc":{"anyOf":[{"maxLength":13,"type":"string"},{"type":"null"}],"default":null,"description":"UPC-A barcode, 12 digits.","title":"Upc"},"isbn":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"ISBN-10 number.","title":"Isbn"},"language":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Language id for product names: 1 is English, 99 means any language.","title":"Language"}},"title":"lookup_barcodeArguments","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/search_products_by_name":{"post":{"operationId":"search_products_by_name","summary":"Search products by exact name or keywords and get their barcodes, 10 or more per page with a more-products flag. Use for","description":"Search products by exact name or keywords and get their barcodes, 10 or more per page with a more-products flag. Use for \"Which barcodes belong to products named Bananaboat\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Product name or keywords.","maxLength":200,"title":"Name","type":"string"},"op":{"anyOf":[{"const":"product-search","type":"string"},{"type":"null"}],"default":"product-search","description":"Fixed operation name, always 'product-search'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number starting at 0.","title":"Page"},"language":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Language id for product names: 1 is English, 99 means any language.","title":"Language"}},"required":["name"],"title":"search_products_by_nameArguments","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/search_similar_products":{"post":{"operationId":"search_similar_products","summary":"Find products whose names are similar to the given text and get their barcodes. Use for \"Find products similar to 'espri","description":"Find products whose names are similar to the given text and get their barcodes. Use for \"Find products similar to 'esprit pullover'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Product name to match approximately.","maxLength":200,"title":"Name","type":"string"},"op":{"anyOf":[{"const":"similar-product-search","type":"string"},{"type":"null"}],"default":"similar-product-search","description":"Fixed operation name, always 'similar-product-search'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number starting at 0.","title":"Page"},"language":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Language id for product names: 1 is English, 99 means any language.","title":"Language"}},"required":["name"],"title":"search_similar_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/search_products_in_category":{"post":{"operationId":"search_products_in_category","summary":"Search products by name within one product category id. Use for \"Find music products named Thriller in category 15\".","description":"Search products by name within one product category id. Use for \"Find music products named Thriller in category 15\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"description":"Category id as returned in categoryId, for example 15.","maxLength":6,"title":"Category","type":"string"},"name":{"description":"Product name or keywords.","maxLength":200,"title":"Name","type":"string"},"op":{"anyOf":[{"const":"category-search","type":"string"},{"type":"null"}],"default":"category-search","description":"Fixed operation name, always 'category-search'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number starting at 0.","title":"Page"},"language":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Language id for product names: 1 is English, 99 means any language.","title":"Language"}},"required":["category","name"],"title":"search_products_in_categoryArguments","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/search_barcodes_by_prefix":{"post":{"operationId":"search_barcodes_by_prefix","summary":"List products whose barcode starts with a prefix, for example a manufacturer prefix such as 0885909. Use for \"Which prod","description":"List products whose barcode starts with a prefix, for example a manufacturer prefix such as 0885909. Use for \"Which products have barcodes starting with 0885909\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"prefix":{"description":"Leading digits of the barcode.","maxLength":13,"title":"Prefix","type":"string"},"op":{"anyOf":[{"const":"barcode-prefix-search","type":"string"},{"type":"null"}],"default":"barcode-prefix-search","description":"Fixed operation name, always 'barcode-prefix-search'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number starting at 0.","title":"Page"},"language":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Language id for product names: 1 is English, 99 means any language.","title":"Language"}},"required":["prefix"],"title":"search_barcodes_by_prefixArguments","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_issuing_country":{"post":{"operationId":"get_issuing_country","summary":"Get the country that issued a barcode (from its GS1 prefix). Use for \"Which country issued barcode 5099750442227\".","description":"Get the country that issued a barcode (from its GS1 prefix). Use for \"Which country issued barcode 5099750442227\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ean":{"description":"Barcode number (EAN-13, GTIN-13 or ISBN-13), digits only.","maxLength":14,"title":"Ean","type":"string"},"op":{"anyOf":[{"const":"issuing-country","type":"string"},{"type":"null"}],"default":"issuing-country","description":"Fixed operation name, always 'issuing-country'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"}},"required":["ean"],"title":"get_issuing_countryArguments","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/verify_barcode_checksum":{"post":{"operationId":"verify_barcode_checksum","summary":"Check whether the check digit of an EAN barcode is valid. Use for \"Is 5099750442227 a valid EAN checksum\".","description":"Check whether the check digit of an EAN barcode is valid. Use for \"Is 5099750442227 a valid EAN checksum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ean":{"description":"Barcode number (EAN-13, GTIN-13 or ISBN-13), digits only.","maxLength":14,"title":"Ean","type":"string"},"op":{"anyOf":[{"const":"verify-checksum","type":"string"},{"type":"null"}],"default":"verify-checksum","description":"Fixed operation name, always 'verify-checksum'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"}},"required":["ean"],"title":"verify_barcode_checksumArguments","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/find_asin_for_barcode":{"post":{"operationId":"find_asin_for_barcode","summary":"Find the Amazon ASIN that matches an EAN barcode. Use for \"What is the Amazon ASIN for barcode 5099750442227\".","description":"Find the Amazon ASIN that matches an EAN barcode. Use for \"What is the Amazon ASIN for barcode 5099750442227\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ean":{"description":"Barcode number (EAN-13, GTIN-13 or ISBN-13), digits only.","maxLength":14,"title":"Ean","type":"string"},"op":{"anyOf":[{"const":"asin-for-ean-lookup","type":"string"},{"type":"null"}],"default":"asin-for-ean-lookup","description":"Fixed operation name, always 'asin-for-ean-lookup'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"}},"required":["ean"],"title":"find_asin_for_barcodeArguments","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/find_barcode_for_asin":{"post":{"operationId":"find_barcode_for_asin","summary":"Find the EAN barcode that matches an Amazon ASIN. Use for \"What is the EAN barcode for Amazon ASIN B000000000\".","description":"Find the EAN barcode that matches an Amazon ASIN. Use for \"What is the EAN barcode for Amazon ASIN B000000000\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"asin":{"description":"Amazon ASIN, 10 characters.","maxLength":10,"title":"Asin","type":"string"},"op":{"anyOf":[{"const":"ean-for-asin-lookup","type":"string"},{"type":"null"}],"default":"ean-for-asin-lookup","description":"Fixed operation name, always 'ean-for-asin-lookup'.","title":"Op"},"format":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Response format, always 'json'.","title":"Format"}},"required":["asin"],"title":"find_barcode_for_asinArguments","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}}}}