{"openapi":"3.1.0","info":{"title":"Opik Workspace Admin (BYOK) API","version":"0.1.0","description":"Opik Workspace Admin (BYOK) lets an AI assistant read your own Opik Workspace Admin data through the Opik Workspace Admin API with a key you supply (Comet API key). Read-only: 6 tools (list_retention_rules, list_dashboards, list_alerts, list_environments, get_workspace_configuration, get_workspace_metrics_summary). The BYOK key travels with each request, is used for that one call only and is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-opik-workspace-admin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-opik-workspace-admin/docs"},"termsOfService":"https://connectorbay.com/byok-opik-workspace-admin/terms"},"servers":[{"url":"https://byok-opik-workspace-admin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-opik-workspace-admin/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_retention_rules":{"post":{"operationId":"list_retention_rules","summary":"List the data retention rules (level, retention period such as 60 days or unlimited, enabled flag, project scope and cat","description":"List the data retention rules (level, retention period such as 60 days or unlimited, enabled flag, project scope and catch-up status). Use for \"How long does my Opik workspace keep data\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 100).","title":"Size"},"include_inactive":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include rules that are switched off.","title":"Include Inactive"}},"title":"list_retention_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}},"/v1/tools/list_dashboards":{"post":{"operationId":"list_dashboards","summary":"List the dashboards (name, slug, type, scope, description, project and dates); widget settings and creators are not retu","description":"List the dashboards (name, slug, type, scope, description, project and dates); widget settings and creators are not returned. Use for \"Which dashboards exist in my Opik workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 100).","title":"Size"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only dashboards whose name contains this text.","title":"Name"},"project_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only dashboards of this project id.","title":"Project Id"}},"title":"list_dashboardsArguments","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_alerts":{"post":{"operationId":"list_alerts","summary":"List the alerts (name, enabled flag, kind general, slack or pagerduty, project scope and trigger types). Webhook URLs ar","description":"List the alerts (name, enabled flag, kind general, slack or pagerduty, project scope and trigger types). Webhook URLs are not returned. Use for \"Which alerts are configured in my Opik workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 100).","title":"Size"}},"title":"list_alertsArguments","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_environments":{"post":{"operationId":"list_environments","summary":"List the environments (such as development or production) with description, colour and position. Use for \"Which environm","description":"List the environments (such as development or production) with description, colour and position. Use for \"Which environments are defined in my Opik workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (1 to 100).","title":"Size"}},"title":"list_environmentsArguments","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_workspace_configuration":{"post":{"operationId":"get_workspace_configuration","summary":"Show workspace display settings: time after which a conversation thread counts as inactive and whether table data is tru","description":"Show workspace display settings: time after which a conversation thread counts as inactive and whether table data is truncated. Use for \"What are my Opik workspace settings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_workspace_configurationArguments","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_workspace_metrics_summary":{"post":{"operationId":"get_workspace_metrics_summary","summary":"Get workspace metric totals (for example trace count, cost and duration) for a time interval with the previous interval ","description":"Get workspace metric totals (for example trace count, cost and duration) for a time interval with the previous interval for comparison. Use for \"How many traces did my Opik workspace log last week compared with the week before\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"interval_start":{"description":"Start of the interval, ISO 8601, for example 2026-10-01T00:00:00Z.","maxLength":40,"title":"Interval Start","type":"string"},"interval_end":{"description":"End of the interval, ISO 8601, for example 2026-10-08T00:00:00Z.","maxLength":40,"title":"Interval End","type":"string"}},"required":["interval_start","interval_end"],"title":"get_workspace_metrics_summaryArguments","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}}}}