{"openapi":"3.1.0","info":{"title":"Algolia (BYOK) API","version":"0.1.0","description":"Algolia (BYOK) lets an AI assistant read your own Algolia data through the Algolia API with a key you supply (API key (search-only key for searching; a key with the listIndexes, settings and browse permissions for the other tools)). Read-only: 8 tools (list_indices, get_index_settings, search_index, browse_index, get_record, search_facet_values, search_synonyms, search_rules). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-algolia.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-algolia/docs"},"termsOfService":"https://connectorbay.com/byok-algolia/terms"},"servers":[{"url":"https://byok-algolia.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-algolia/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_indices":{"post":{"operationId":"list_indices","summary":"List the indices of an Algolia application with record count, data size, last update, replicas and primary index. Needs ","description":"List the indices of an Algolia application with record count, data size, last update, replicas and primary index. Needs the listIndexes permission. Use for \"Which Algolia indices do I have and how many records are in each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 0 (leave out to get all indices in one answer).","title":"Page"},"hits_per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Indices per page (default 100).","title":"Hits Per Page"}},"required":["app_id"],"title":"list_indicesArguments","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_index_settings":{"post":{"operationId":"get_index_settings","summary":"Get the settings of an Algolia index: searchable attributes, facet attributes, ranking, custom ranking, replicas, typo t","description":"Get the settings of an Algolia index: searchable attributes, facet attributes, ranking, custom ranking, replicas, typo tolerance and pagination limit. Needs the settings permission. Use for \"How is my Algolia index configured for searching\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"index_name":{"description":"Algolia index name, for example 'products', as returned by list_indices.","maxLength":200,"title":"Index Name","type":"string"}},"required":["app_id","index_name"],"title":"get_index_settingsArguments","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_index":{"post":{"operationId":"search_index","summary":"Search one Algolia index and return matching records (hits) with total hit count and paging. The search counts toward yo","description":"Search one Algolia index and return matching records (hits) with total hit count and paging. The search counts toward your Algolia search request usage. Up to 1,000 hits are reachable. Use for \"Search my Algolia products index for 'phone'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"index_name":{"description":"Algolia index name, for example 'products', as returned by list_indices.","maxLength":200,"title":"Index Name","type":"string"},"query":{"description":"Search text; use an empty string to match everything.","maxLength":500,"title":"Query","type":"string"},"filters":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Optional Algolia filter expression, for example 'category:phones AND price < 500'.","title":"Filters"},"hits_per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many hits per page (1 to 100; default 20).","title":"Hits Per Page"},"page":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"},"record_in_analytics":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include this search in your Algolia Analytics (default false, so assistant searches do not skew your statistics).","title":"Record In Analytics"}},"required":["app_id","index_name","query"],"title":"search_indexArguments","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/browse_index":{"post":{"operationId":"browse_index","summary":"Browse the records of an Algolia index page by page with a cursor (use for more than 1,000 records or a full listing). N","description":"Browse the records of an Algolia index page by page with a cursor (use for more than 1,000 records or a full listing). Needs the browse permission. Pass the returned cursor to get the next page. Use for \"List the records in my Algolia index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"index_name":{"description":"Algolia index name, for example 'products', as returned by list_indices.","maxLength":200,"title":"Index Name","type":"string"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor returned by the previous browse call; leave out for the first page.","title":"Cursor"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Optional text to filter records by.","title":"Query"},"hits_per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many hits per page (1 to 100; default 20).","title":"Hits Per Page"}},"required":["app_id","index_name"],"title":"browse_indexArguments","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_record":{"post":{"operationId":"get_record","summary":"Get one record of an Algolia index by its objectID, with all its attributes. Needs the search permission. Use for \"Show ","description":"Get one record of an Algolia index by its objectID, with all its attributes. Needs the search permission. Use for \"Show the Algolia record with objectID 12345\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"index_name":{"description":"Algolia index name, for example 'products', as returned by list_indices.","maxLength":200,"title":"Index Name","type":"string"},"object_id":{"description":"The record's objectID, for example 'test-record-123'.","maxLength":200,"title":"Object Id","type":"string"}},"required":["app_id","index_name","object_id"],"title":"get_recordArguments","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_facet_values":{"post":{"operationId":"search_facet_values","summary":"Search the values of one facet attribute of an Algolia index (for example brands starting with 'ap') with the number of ","description":"Search the values of one facet attribute of an Algolia index (for example brands starting with 'ap') with the number of records for each. The attribute must be declared in attributesForFaceting with searchable(). Use for \"Which brands in my Algolia index start with 'ap'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"index_name":{"description":"Algolia index name, for example 'products', as returned by list_indices.","maxLength":200,"title":"Index Name","type":"string"},"facet_name":{"description":"Facet attribute name, for example 'brand'.","maxLength":200,"title":"Facet Name","type":"string"},"facet_query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"","description":"Text the facet values must match; use an empty string for the most common values.","title":"Facet Query"},"max_facet_hits":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many facet values to return (1 to 100).","title":"Max Facet Hits"}},"required":["app_id","index_name","facet_name"],"title":"search_facet_valuesArguments","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_synonyms":{"post":{"operationId":"search_synonyms","summary":"Search the synonyms of an Algolia index with objectID, type and word lists. Needs the settings permission. Use for \"What","description":"Search the synonyms of an Algolia index with objectID, type and word lists. Needs the settings permission. Use for \"What synonyms are set up in my Algolia index\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"index_name":{"description":"Algolia index name, for example 'products', as returned by list_indices.","maxLength":200,"title":"Index Name","type":"string"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"","description":"Text to search in synonyms; empty string lists all.","title":"Query"},"type":{"anyOf":[{"enum":["synonym","onewaysynonym","altcorrection1","altcorrection2"],"type":"string"},{"type":"null"}],"default":null,"description":"Only synonyms of this type.","title":"Type"},"hits_per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many hits per page (1 to 1000; default 20).","title":"Hits Per Page"},"page":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"}},"required":["app_id","index_name"],"title":"search_synonymsArguments","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_rules":{"post":{"operationId":"search_rules","summary":"Search the query rules of an Algolia index with objectID, description, enabled flag, conditions and consequence. Needs t","description":"Search the query rules of an Algolia index with objectID, description, enabled flag, conditions and consequence. Needs the settings permission. Use for \"Which query rules does my Algolia index have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"app_id":{"description":"Your Algolia application ID (for example 'ABCDE12345'; letters are lowercased for the host name). This is the same value you send as the second credential.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"App Id","type":"string"},"index_name":{"description":"Algolia index name, for example 'products', as returned by list_indices.","maxLength":200,"title":"Index Name","type":"string"},"query":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"","description":"Text to search in rules; empty string lists all.","title":"Query"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only enabled rules, false for only disabled.","title":"Enabled"},"hits_per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many hits per page (1 to 1000; default 20).","title":"Hits Per Page"},"page":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"}},"required":["app_id","index_name"],"title":"search_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}}}}