{"openapi":"3.1.0","info":{"title":"Typesense Cloud (BYOK) API","version":"0.1.0","description":"Typesense Cloud (BYOK) lets an AI assistant read your own Typesense Cloud data through the Typesense Cloud API with a key you supply (Cluster Management API key (read-only preset is enough; the billing:read capability is needed for invoices)). Read-only: 10 tools (list_clusters, get_cluster, get_cluster_options, get_cluster_metrics, list_configuration_changes, get_configuration_change,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-typesense-cloud.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-typesense-cloud/docs"},"termsOfService":"https://connectorbay.com/byok-typesense-cloud/terms"},"servers":[{"url":"https://byok-typesense-cloud.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-typesense-cloud/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_clusters":{"post":{"operationId":"list_clusters","summary":"List the Typesense Cloud clusters of the account with size, regions, version, high availability, status and runtime hour","description":"List the Typesense Cloud clusters of the account with size, regions, version, high availability, status and runtime hours. Needs the clusters:read capability. Use for \"Which Typesense Cloud clusters do I have and are they in service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_clustersArguments","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_cluster":{"post":{"operationId":"get_cluster","summary":"Get one Typesense Cloud cluster: size, regions, node counts, host names, version, bandwidth usage and status. Use for \"S","description":"Get one Typesense Cloud cluster: size, regions, node counts, host names, version, bandwidth usage and status. Use for \"Show the details and host names of my Typesense Cloud cluster\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Typesense Cloud cluster ID, for example 'nuj9s7k6vplrg15yp', as returned by list_clusters.","maxLength":64,"title":"Cluster Id","type":"string"}},"required":["cluster_id"],"title":"get_clusterArguments","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_cluster_options":{"post":{"operationId":"get_cluster_options","summary":"List the values a Typesense Cloud cluster can be created with: regions and their availability, memory and vCPU options, ","description":"List the values a Typesense Cloud cluster can be created with: regions and their availability, memory and vCPU options, GPU, high availability and the free tier configuration. Use for \"Which regions and sizes does Typesense Cloud offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_cluster_optionsArguments","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_cluster_metrics":{"post":{"operationId":"get_cluster_metrics","summary":"Get per-node metric series for one cluster (CPU, memory, disk, search latency, request rates). Up to five metrics at onc","description":"Get per-node metric series for one cluster (CPU, memory, disk, search latency, request rates). Up to five metrics at once; needs the metrics:read capability. Use for \"What was the search latency of my Typesense Cloud cluster over the last hour\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Typesense Cloud cluster ID, for example 'nuj9s7k6vplrg15yp', as returned by list_clusters.","maxLength":64,"title":"Cluster Id","type":"string"},"metrics":{"description":"Comma-separated metric names, at most five, for example 'system_cpu_active_percentage,search_latency_ms'. Allowed: system_cpu_active_percentage, system_memory_used_bytes, system_memory_total_bytes, system_disk_used_bytes, system_disk_total_bytes, system_swap_used_bytes, system_swap_total_bytes, system_network_received_bytes_rate, system_network_sent_bytes_rate, typesense_memory_active_bytes, search_latency_ms, search_requests_per_second, pending_write_batches, write_requests_per_second, import_requests_per_second, delete_requests_per_second, import_latency_ms, delete_latency_ms, overloaded_requests_per_second, cache_hit_ratio.","maxLength":600,"title":"Metrics","type":"string"},"window":{"anyOf":[{"enum":["1h","3h","24h","7d","30d"],"type":"string"},{"type":"null"}],"default":"1h","description":"Time window: 1h, 3h, 24h, 7d or 30d.","title":"Window"},"aggregation":{"anyOf":[{"enum":["avg","max","min","p95"],"type":"string"},{"type":"null"}],"default":"avg","description":"How each bucket is summarised: avg, max, min or p95.","title":"Aggregation"}},"required":["cluster_id","metrics"],"title":"get_cluster_metricsArguments","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_configuration_changes":{"post":{"operationId":"list_configuration_changes","summary":"List the scheduled and past configuration changes (resize, version upgrade, topology) of one cluster with old and new va","description":"List the scheduled and past configuration changes (resize, version upgrade, topology) of one cluster with old and new values and status. Use for \"Is a capacity change scheduled for my Typesense Cloud cluster\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Typesense Cloud cluster ID, for example 'nuj9s7k6vplrg15yp', as returned by list_clusters.","maxLength":64,"title":"Cluster Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["cluster_id"],"title":"list_configuration_changesArguments","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_configuration_change":{"post":{"operationId":"get_configuration_change","summary":"Get one configuration change of a cluster by ID with its old and new settings, schedule and status (pending, in_progress","description":"Get one configuration change of a cluster by ID with its old and new settings, schedule and status (pending, in_progress, canceled, succeeded, failed). Use for \"What is the status of this Typesense Cloud configuration change\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Typesense Cloud cluster ID, for example 'nuj9s7k6vplrg15yp', as returned by list_clusters.","maxLength":64,"title":"Cluster Id","type":"string"},"change_id":{"description":"Configuration change ID (a UUID), as returned by list_configuration_changes.","maxLength":64,"title":"Change Id","type":"string"}},"required":["cluster_id","change_id"],"title":"get_configuration_changeArguments","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_cloning_operations":{"post":{"operationId":"list_cloning_operations","summary":"List the cloning operations of one cluster with status, source and target region, version and the ID of the new cluster.","description":"List the cloning operations of one cluster with status, source and target region, version and the ID of the new cluster. Use for \"Has my Typesense Cloud cluster been cloned, and where to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Typesense Cloud cluster ID, for example 'nuj9s7k6vplrg15yp', as returned by list_clusters.","maxLength":64,"title":"Cluster Id","type":"string"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["cluster_id"],"title":"list_cloning_operationsArguments","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_server_parameters":{"post":{"operationId":"list_server_parameters","summary":"List the user-editable Typesense server configuration parameters set on a cluster (name and value). Use for \"Which custo","description":"List the user-editable Typesense server configuration parameters set on a cluster (name and value). Use for \"Which custom server parameters are set on my Typesense Cloud cluster\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Typesense Cloud cluster ID, for example 'nuj9s7k6vplrg15yp', as returned by list_clusters.","maxLength":64,"title":"Cluster Id","type":"string"}},"required":["cluster_id"],"title":"list_server_parametersArguments","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_invoices":{"post":{"operationId":"list_invoices","summary":"List Typesense Cloud invoices with number, status, amount in cents, billing period and payment split. Needs the billing:","description":"List Typesense Cloud invoices with number, status, amount in cents, billing period and payment split. Needs the billing:read capability. Use for \"What are my latest Typesense Cloud invoices and are they paid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many invoices per page (1 to 50, default 10).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_invoicesArguments","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_invoice":{"post":{"operationId":"get_invoice","summary":"Get one Typesense Cloud invoice with its line items (node hours, bandwidth) and prices in cents. Needs the billing:read ","description":"Get one Typesense Cloud invoice with its line items (node hours, bandwidth) and prices in cents. Needs the billing:read capability. Use for \"Show the line items of Typesense Cloud invoice inv_abc123def456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice_id":{"description":"Invoice ID, for example 'inv_abc123def456', as returned by list_invoices.","maxLength":64,"title":"Invoice Id","type":"string"}},"required":["invoice_id"],"title":"get_invoiceArguments","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}}}}