{"openapi":"3.1.0","info":{"title":"Opik Evaluation Ops (BYOK) API","version":"0.1.0","description":"Opik Evaluation Ops (BYOK) lets an AI assistant read your own Opik Evaluation Ops data through the Opik Evaluation Ops API with a key you supply (Comet API key). Read-only: 8 tools (list_evaluation_rules, get_evaluation_rule, list_annotation_queues, get_annotation_queue, list_optimizations, get_optimization, list_dataset_versions, list_experiment_feedback_score_names). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-opik-evaluation-ops.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-opik-evaluation-ops/docs"},"termsOfService":"https://connectorbay.com/byok-opik-evaluation-ops/terms"},"servers":[{"url":"https://byok-opik-evaluation-ops.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-opik-evaluation-ops/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_evaluation_rules":{"post":{"operationId":"list_evaluation_rules","summary":"List the online evaluation rules (LLM-as-judge, Python metric and queue-router rules) with type, enabled flag, sampling ","description":"List the online evaluation rules (LLM-as-judge, Python metric and queue-router rules) with type, enabled flag, sampling rate, trigger scope and the projects they apply to. Use for \"Which online evaluation rules are running 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 rules whose name contains this text.","title":"Name"},"project_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only rules of this project id.","title":"Project Id"}},"title":"list_evaluation_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/get_evaluation_rule":{"post":{"operationId":"get_evaluation_rule","summary":"Get one online evaluation rule by id: type, action, enabled flag, sampling rate, trigger scope and projects. Use for \"Sh","description":"Get one online evaluation rule by id: type, action, enabled flag, sampling rate, trigger scope and projects. Use for \"Show the Opik evaluation rule 0192-rule\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Evaluation rule id, as returned by list_evaluation_rules.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_evaluation_ruleArguments","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_annotation_queues":{"post":{"operationId":"list_annotation_queues","summary":"List the annotation queues with scope, project, instructions, feedback definitions, annotators per item and item count (","description":"List the annotation queues with scope, project, instructions, feedback definitions, annotators per item and item count (reviewer names are not returned). Use for \"Which annotation queues are set up 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 queues whose name contains this text.","title":"Name"}},"title":"list_annotation_queuesArguments","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_annotation_queue":{"post":{"operationId":"get_annotation_queue","summary":"Get one annotation queue: scope, instructions, feedback definitions, annotators per item, lock timeout, item count and i","description":"Get one annotation queue: scope, instructions, feedback definitions, annotators per item, lock timeout, item count and its automation settings (reviewer names are not returned). Use for \"Show the Opik annotation queue 0192-queue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Annotation queue id, as returned by list_annotation_queues.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_annotation_queueArguments","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_optimizations":{"post":{"operationId":"list_optimizations","summary":"List prompt optimization runs with dataset, objective, status, trial count, baseline and best scores and cost. Use for \"","description":"List prompt optimization runs with dataset, objective, status, trial count, baseline and best scores and cost. Use for \"Which prompt optimizations ran in my Opik workspace and how much did they improve\".","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 optimizations whose name contains this text.","title":"Name"},"dataset_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only optimizations on this dataset id.","title":"Dataset Id"},"project_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only optimizations of this project id.","title":"Project Id"}},"title":"list_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/get_optimization":{"post":{"operationId":"get_optimization","summary":"Get one prompt optimization run by id with status, objective, trial count, baseline and best scores, durations and cost.","description":"Get one prompt optimization run by id with status, objective, trial count, baseline and best scores, durations and cost. Use for \"Show the Opik optimization 0192-opt\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Optimization id, as returned by list_optimizations.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_optimizationArguments","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_dataset_versions":{"post":{"operationId":"list_dataset_versions","summary":"List the versions of one dataset with version name, hash, tags, item totals and how many items were added, modified or d","description":"List the versions of one dataset with version name, hash, tags, item totals and how many items were added, modified or deleted. Use for \"What versions does the Opik dataset 0192-ds have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Dataset id, as returned by list_datasets of the Opik connector.","maxLength":200,"title":"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":["id"],"title":"list_dataset_versionsArguments","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_experiment_feedback_score_names":{"post":{"operationId":"list_experiment_feedback_score_names","summary":"List the names and types of the feedback scores recorded on experiments, optionally for one project. Use for \"Which feed","description":"List the names and types of the feedback scores recorded on experiments, optionally for one project. Use for \"Which feedback scores do my Opik experiments record\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only scores from experiments of this project id.","title":"Project Id"}},"title":"list_experiment_feedback_score_namesArguments","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}}}}