{"openapi":"3.1.0","info":{"title":"Opik Project Scope (BYOK) API","version":"0.1.0","description":"Opik Project Scope (BYOK) lets an AI assistant read your own Opik Project Scope data through the Opik Project Scope API with a key you supply (Comet API key). Read-only: 7 tools (list_project_experiments, list_project_datasets, list_project_prompts, list_project_optimizations, list_project_alerts, list_project_dashboards, get_experiment). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-opik-project-scope.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-opik-project-scope/docs"},"termsOfService":"https://connectorbay.com/byok-opik-project-scope/terms"},"servers":[{"url":"https://byok-opik-project-scope.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-opik-project-scope/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_project_experiments":{"post":{"operationId":"list_project_experiments","summary":"List the experiments of a project with dataset, status, trace count, cost, latency percentiles and average feedback scor","description":"List the experiments of a project with dataset, status, trace count, cost, latency percentiles and average feedback scores. Use for \"How did the experiments in my Opik project score\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Opik project id, as returned by the project listing (the id field).","maxLength":200,"title":"Project Id","type":"string"},"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 items whose name contains this text.","title":"Name"}},"required":["project_id"],"title":"list_project_experimentsArguments","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_project_datasets":{"post":{"operationId":"list_project_datasets","summary":"List the datasets used in a project with type, visibility, tags, item, experiment and optimization counts (the items the","description":"List the datasets used in a project with type, visibility, tags, item, experiment and optimization counts (the items themselves are not returned). Use for \"Which datasets does my Opik project use and how many items do they hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Opik project id, as returned by the project listing (the id field).","maxLength":200,"title":"Project Id","type":"string"},"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 items whose name contains this text.","title":"Name"}},"required":["project_id"],"title":"list_project_datasetsArguments","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_project_prompts":{"post":{"operationId":"list_project_prompts","summary":"List the prompts of a project with name, description, template structure, tags and version count (prompt text is not ret","description":"List the prompts of a project with name, description, template structure, tags and version count (prompt text is not returned). Use for \"Which prompts are managed in my Opik project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Opik project id, as returned by the project listing (the id field).","maxLength":200,"title":"Project Id","type":"string"},"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 items whose name contains this text.","title":"Name"}},"required":["project_id"],"title":"list_project_promptsArguments","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_project_optimizations":{"post":{"operationId":"list_project_optimizations","summary":"List the prompt optimization runs of a project with objective, status, trial count, baseline and best score and cost. Us","description":"List the prompt optimization runs of a project with objective, status, trial count, baseline and best score and cost. Use for \"How well did the prompt optimizations in my Opik project do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Opik project id, as returned by the project listing (the id field).","maxLength":200,"title":"Project Id","type":"string"},"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 items whose name contains this text.","title":"Name"}},"required":["project_id"],"title":"list_project_optimizationsArguments","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_project_alerts":{"post":{"operationId":"list_project_alerts","summary":"List the alerts scoped to a project with enabled flag, kind and trigger types (webhook URLs are not returned). Use for \"","description":"List the alerts scoped to a project with enabled flag, kind and trigger types (webhook URLs are not returned). Use for \"Which alerts watch my Opik project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Opik project id, as returned by the project listing (the id field).","maxLength":200,"title":"Project Id","type":"string"},"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"}},"required":["project_id"],"title":"list_project_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_project_dashboards":{"post":{"operationId":"list_project_dashboards","summary":"List the dashboards of a project with name, slug, type and scope (widget settings are not returned). Use for \"Which dash","description":"List the dashboards of a project with name, slug, type and scope (widget settings are not returned). Use for \"Which dashboards exist for my Opik project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Opik project id, as returned by the project listing (the id field).","maxLength":200,"title":"Project Id","type":"string"},"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 items whose name contains this text.","title":"Name"}},"required":["project_id"],"title":"list_project_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/get_experiment":{"post":{"operationId":"get_experiment","summary":"Get one experiment: dataset, status, trace count, cost, latency percentiles and average feedback and experiment scores (","description":"Get one experiment: dataset, status, trace count, cost, latency percentiles and average feedback and experiment scores (metadata and comments are not returned). Use for \"Show the scores of the Opik experiment 0192-exp\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Experiment id, as returned by list_project_experiments.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_experimentArguments","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}}}}