{"openapi":"3.1.0","info":{"title":"Algolia Analytics (BYOK) API","version":"0.1.0","description":"Algolia Analytics (BYOK) lets an AI assistant read your own Algolia Analytics data through the Algolia Analytics API with a key you supply (API key with the analytics permission). Read-only: 12 tools (get_searches_count, get_no_results_rate, get_no_click_rate, get_click_through_rate, get_average_click_position, get_conversion_rate, get_add_to_cart_rate, get_purchase_rate, get_users_count,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-algolia-analytics.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-algolia-analytics/docs"},"termsOfService":"https://connectorbay.com/byok-algolia-analytics/terms"},"servers":[{"url":"https://byok-algolia-analytics.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-algolia-analytics/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_searches_count":{"post":{"operationId":"get_searches_count","summary":"Count searches on an index over a period, in total and per day. Use for \"How many searches did my Algolia index 'product","description":"Count searches on an index over a period, in total and per day. Use for \"How many searches did my Algolia index 'products' get last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_searches_countArguments","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_no_results_rate":{"post":{"operationId":"get_no_results_rate","summary":"Show the share of searches that returned no results on an index: overall rate, search count, no-result count and the per","description":"Show the share of searches that returned no results on an index: overall rate, search count, no-result count and the per-day series. Use for \"What share of searches on my Algolia index return no results\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_no_results_rateArguments","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_no_click_rate":{"post":{"operationId":"get_no_click_rate","summary":"Show the share of tracked searches with no click on an index: overall rate, search count, no-click count and the per-day","description":"Show the share of tracked searches with no click on an index: overall rate, search count, no-click count and the per-day series. Use for \"What share of searches on my Algolia index get no click\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_no_click_rateArguments","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_click_through_rate":{"post":{"operationId":"get_click_through_rate","summary":"Show the click-through rate of searches on an index: rate, click count, tracked search count and the per-day series. Use","description":"Show the click-through rate of searches on an index: rate, click count, tracked search count and the per-day series. Use for \"What is the click-through rate of my Algolia index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_click_through_rateArguments","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_average_click_position":{"post":{"operationId":"get_average_click_position","summary":"Show the average position of clicked results on an index, with click count and the per-day series. Use for \"What is the ","description":"Show the average position of clicked results on an index, with click count and the per-day series. Use for \"What is the average click position in my Algolia index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_average_click_positionArguments","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_conversion_rate":{"post":{"operationId":"get_conversion_rate","summary":"Show the conversion rate of searches on an index: rate, tracked search count, conversion count and the per-day series. U","description":"Show the conversion rate of searches on an index: rate, tracked search count, conversion count and the per-day series. Use for \"What is the search conversion rate of my Algolia index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_conversion_rateArguments","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_add_to_cart_rate":{"post":{"operationId":"get_add_to_cart_rate","summary":"Show the add-to-cart rate of searches on an index: rate, tracked search count, add-to-cart count and the per-day series.","description":"Show the add-to-cart rate of searches on an index: rate, tracked search count, add-to-cart count and the per-day series. Use for \"How often do searches in my Algolia index lead to add to cart\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_add_to_cart_rateArguments","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_purchase_rate":{"post":{"operationId":"get_purchase_rate","summary":"Show the purchase rate of searches on an index: rate, tracked search count, purchase count and the per-day series. Use f","description":"Show the purchase rate of searches on an index: rate, tracked search count, purchase count and the per-day series. Use for \"What is the purchase rate of searches in my Algolia index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_purchase_rateArguments","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_users_count":{"post":{"operationId":"get_users_count","summary":"Count distinct users who searched an index over a period, in total and per day. Use for \"How many distinct users searche","description":"Count distinct users who searched an index over a period, in total and per day. Use for \"How many distinct users searched my Algolia index last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_users_countArguments","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_top_countries":{"post":{"operationId":"get_top_countries","summary":"List the countries with the most searches on an index, with search counts. Use for \"Which countries search my Algolia in","description":"List the countries with the most searches on an index, with search counts. Use for \"Which countries search my Algolia index the most\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Position of the first item to return, starting at 0.","title":"Offset"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_top_countriesArguments","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_top_filter_attributes":{"post":{"operationId":"get_top_filter_attributes","summary":"List the filter attributes used most in searches on an index, with usage counts. Use for \"Which filter attributes do peo","description":"List the filter attributes used most in searches on an index, with usage counts. Use for \"Which filter attributes do people use most in my Algolia index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only searches for this query text.","title":"Search"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the period in YYYY-MM-DD format; leave empty for the default period (the last 8 days).","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the period in YYYY-MM-DD format; leave empty for today.","title":"End Date"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Position of the first item to return, starting at 0.","title":"Offset"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Analytics tags to segment by (URL-encoded; combine with OR and AND); leave empty for all traffic.","title":"Tags"}},"required":["index"],"title":"get_top_filter_attributesArguments","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_analytics_status":{"post":{"operationId":"get_analytics_status","summary":"Show when the analytics data of an index was last updated (data refreshes every 5 minutes; null if the index has had no ","description":"Show when the analytics data of an index was last updated (data refreshes every 5 minutes; null if the index has had no searches). Use for \"When was the Algolia analytics data for my index last updated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"index":{"description":"Algolia index name, for example 'products'.","maxLength":200,"title":"Index","type":"string"}},"required":["index"],"title":"get_analytics_statusArguments","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}}}}