{"openapi":"3.1.0","info":{"title":"Mixedbread (BYOK) API","version":"0.1.0","description":"Mixedbread (BYOK) lets an AI assistant read your own Mixedbread data through the Mixedbread API with a key you supply (API key). Read-only: 8 tools (list_stores, get_store, list_store_files, get_store_file, list_store_events, list_events, list_files, get_file). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-mixedbread.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mixedbread/docs"},"termsOfService":"https://connectorbay.com/byok-mixedbread/terms"},"servers":[{"url":"https://byok-mixedbread.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mixedbread/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_stores":{"post":{"operationId":"list_stores","summary":"List Mixedbread stores (searchable collections) with status, file counts, size, token usage and dates. Cursor paginated.","description":"List Mixedbread stores (searchable collections) with status, file counts, size, token usage and dates. Cursor paginated. Use for \"Which Mixedbread stores do I have and how many files are in each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items per page (1 to 100, default 20).","title":"Limit"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the last_cursor value of the previous answer.","title":"After"},"before":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the first_cursor value of the previous answer.","title":"Before"},"include_total":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also count all matching items (slower).","title":"Include Total"},"q":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Fuzzy match over store names and descriptions (1 to 255 characters).","title":"Q"}},"title":"list_storesArguments","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_store":{"post":{"operationId":"get_store","summary":"Get one Mixedbread store by ID or name: status, file counts by state, usage, tags and dates. Use for \"How many files in ","description":"Get one Mixedbread store by ID or name: status, file counts by state, usage, tags and dates. Use for \"How many files in my Mixedbread store have finished indexing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"store_identifier":{"description":"Store ID or store name, for example 'my-knowledge-base', as returned by list_stores.","maxLength":200,"title":"Store Identifier","type":"string"}},"required":["store_identifier"],"title":"get_storeArguments","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_store_files":{"post":{"operationId":"list_store_files","summary":"List the files indexed in a Mixedbread store with status, size, token usage and errors. Cursor paginated; can filter by ","description":"List the files indexed in a Mixedbread store with status, size, token usage and errors. Cursor paginated; can filter by name text. Use for \"Which files are in my Mixedbread store and did any fail\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"store_identifier":{"description":"Store ID or store name, for example 'my-knowledge-base', as returned by list_stores.","maxLength":200,"title":"Store Identifier","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many files per page (1 to 100, default 20).","title":"Limit"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the last_cursor value of the previous answer.","title":"After"},"q":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Fuzzy match over file names and external IDs (1 to 255 characters).","title":"Q"},"sort_by":{"anyOf":[{"enum":["created_at","filename","usage_bytes","usage_tokens"],"type":"string"},{"type":"null"}],"default":"created_at","description":"Sort field: created_at, filename, usage_bytes or usage_tokens.","title":"Sort By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort direction: asc or desc.","title":"Sort Order"}},"required":["store_identifier"],"title":"list_store_filesArguments","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_store_file":{"post":{"operationId":"get_store_file","summary":"Get one file of a Mixedbread store by ID with its indexing status, size and last error. Use for \"Is this file in my Mixe","description":"Get one file of a Mixedbread store by ID with its indexing status, size and last error. Use for \"Is this file in my Mixedbread store indexed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"store_identifier":{"description":"Store ID or store name, for example 'my-knowledge-base', as returned by list_stores.","maxLength":200,"title":"Store Identifier","type":"string"},"file_identifier":{"description":"File ID or external ID within the store, from list_store_files.","maxLength":200,"title":"File Identifier","type":"string"}},"required":["store_identifier","file_identifier"],"title":"get_store_fileArguments","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_store_events":{"post":{"operationId":"list_store_events","summary":"List usage events of one store of a given type (ingestion, search, grep, QA and so on) with pagination and optional time","description":"List usage events of one store of a given type (ingestion, search, grep, QA and so on) with pagination and optional time filters. Use for \"What searches were run against my Mixedbread store recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"store_identifier":{"description":"Store ID or store name, for example 'my-knowledge-base', as returned by list_stores.","maxLength":200,"title":"Store Identifier","type":"string"},"event_type":{"description":"Event type: ingestion, search, agentic_search, grep, completion or qa.","enum":["ingestion","search","agentic_search","grep","completion","qa"],"title":"Event Type","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items per page (1 to 100, default 20).","title":"Limit"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the last_cursor value of the previous answer.","title":"After"},"before":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the first_cursor value of the previous answer.","title":"Before"},"include_total":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also count all matching items (slower).","title":"Include Total"},"filter_before":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only events before this ISO 8601 time.","title":"Filter Before"},"filter_after":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only events after this ISO 8601 time.","title":"Filter After"}},"required":["store_identifier","event_type"],"title":"list_store_eventsArguments","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_events":{"post":{"operationId":"list_events","summary":"List usage events across all stores of the organization for a given event type, optionally for one store, with time filt","description":"List usage events across all stores of the organization for a given event type, optionally for one store, with time filters and pagination. Use for \"How many ingestion events happened across my Mixedbread stores\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_type":{"description":"Event type: ingestion, search, agentic_search, grep, completion or qa.","enum":["ingestion","search","agentic_search","grep","completion","qa"],"title":"Event Type","type":"string"},"store_identifier":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this store (ID or name).","title":"Store Identifier"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items per page (1 to 100, default 20).","title":"Limit"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the last_cursor value of the previous answer.","title":"After"},"before":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the first_cursor value of the previous answer.","title":"Before"},"include_total":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also count all matching items (slower).","title":"Include Total"},"filter_before":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only events before this ISO 8601 time.","title":"Filter Before"},"filter_after":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only events after this ISO 8601 time.","title":"Filter After"}},"required":["event_type"],"title":"list_eventsArguments","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_files":{"post":{"operationId":"list_files","summary":"List the files uploaded to the Mixedbread account with name, size, type, version and dates. Cursor paginated. Use for \"W","description":"List the files uploaded to the Mixedbread account with name, size, type, version and dates. Cursor paginated. Use for \"Which files have I uploaded to Mixedbread\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items per page (1 to 100, default 20).","title":"Limit"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the last_cursor value of the previous answer.","title":"After"},"before":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the previous page: the first_cursor value of the previous answer.","title":"Before"},"include_total":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also count all matching items (slower).","title":"Include Total"},"q":{"anyOf":[{"maxLength":255,"type":"string"},{"type":"null"}],"default":null,"description":"Fuzzy match over file names (1 to 255 characters).","title":"Q"}},"title":"list_filesArguments","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_file":{"post":{"operationId":"get_file","summary":"Get one uploaded Mixedbread file by ID: name, size, MIME type, version and dates (not its content). Use for \"What are th","description":"Get one uploaded Mixedbread file by ID: name, size, MIME type, version and dates (not its content). Use for \"What are the details of this Mixedbread file\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"file_id":{"description":"File ID, from list_files.","maxLength":200,"title":"File Id","type":"string"}},"required":["file_id"],"title":"get_fileArguments","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}}}}