{"openapi":"3.1.0","info":{"title":"Scorecard (BYOK) API","version":"0.1.0","description":"Scorecard (BYOK) lets an AI assistant read your own Scorecard data through the Scorecard API with a key you supply (Scorecard API key (starts with ak_)). Read-only: 10 tools (list_projects, list_testsets, get_testset, list_metrics, get_metric, list_metric_groups, list_runs, get_run, list_systems, get_system). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-scorecard-ai.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-scorecard-ai/docs"},"termsOfService":"https://connectorbay.com/byok-scorecard-ai/terms"},"servers":[{"url":"https://byok-scorecard-ai.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-scorecard-ai/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_projects":{"post":{"operationId":"list_projects","summary":"List your Scorecard projects (oldest first) with id, name and description; paged by cursor. Use for \"Which Scorecard pro","description":"List your Scorecard projects (oldest first) with id, name and description; paged by cursor. Use for \"Which Scorecard projects do I have\".","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 to return (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value from the previous page.","title":"Cursor"}},"title":"list_projectsArguments","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_testsets":{"post":{"operationId":"list_testsets","summary":"List a project's testsets with name, description and which fields map to inputs, expected answers and metadata. Use for ","description":"List a project's testsets with name, description and which fields map to inputs, expected answers and metadata. Use for \"What testsets does my Scorecard project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Scorecard project id.","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value from the previous page.","title":"Cursor"}},"required":["project_id"],"title":"list_testsetsArguments","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_testset":{"post":{"operationId":"get_testset","summary":"Get one testset's name, description and field mapping. Use for \"Show Scorecard testset ts_01\".","description":"Get one testset's name, description and field mapping. Use for \"Show Scorecard testset ts_01\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"testset_id":{"description":"Scorecard testset id, for example ts_01.","maxLength":200,"title":"Testset Id","type":"string"}},"required":["testset_id"],"title":"get_testsetArguments","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_metrics":{"post":{"operationId":"list_metrics","summary":"List a project's evaluation metrics with type, output type, judge model, passing threshold and guidelines; paged. Use fo","description":"List a project's evaluation metrics with type, output type, judge model, passing threshold and guidelines; paged. Use for \"Which metrics does my Scorecard project use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Scorecard project id.","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value from the previous page.","title":"Cursor"}},"required":["project_id"],"title":"list_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/get_metric":{"post":{"operationId":"get_metric","summary":"Get one metric's definition: evaluation type, guidelines, judge model and passing threshold. Use for \"Show Scorecard met","description":"Get one metric's definition: evaluation type, guidelines, judge model and passing threshold. Use for \"Show Scorecard metric met_01\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"metric_id":{"description":"Scorecard metric id, for example met_01.","maxLength":200,"title":"Metric Id","type":"string"}},"required":["metric_id"],"title":"get_metricArguments","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_metric_groups":{"post":{"operationId":"list_metric_groups","summary":"List a project's metric groups (named sets of metrics) with their member metric ids. Use for \"Which metric groups are de","description":"List a project's metric groups (named sets of metrics) with their member metric ids. Use for \"Which metric groups are defined in my Scorecard project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Scorecard project id.","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value from the previous page.","title":"Cursor"}},"required":["project_id"],"title":"list_metric_groupsArguments","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_runs":{"post":{"operationId":"list_runs","summary":"List a project's evaluation runs (newest first) with testset, system version, record and score counts and status. Use fo","description":"List a project's evaluation runs (newest first) with testset, system version, record and score counts and status. Use for \"Which Scorecard runs are still scoring\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Scorecard project id.","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value from the previous page.","title":"Cursor"}},"required":["project_id"],"title":"list_runsArguments","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_run":{"post":{"operationId":"get_run","summary":"Get one run's testset, system version, metric ids, record and score counts and status. Use for \"How far along is Scoreca","description":"Get one run's testset, system version, metric ids, record and score counts and status. Use for \"How far along is Scorecard run run_01\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"run_id":{"description":"Scorecard run id, for example run_01.","maxLength":200,"title":"Run Id","type":"string"}},"required":["run_id"],"title":"get_runArguments","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_systems":{"post":{"operationId":"list_systems","summary":"List the systems (the AI products under test) of a project with production version and all version names. Use for \"Which","description":"List the systems (the AI products under test) of a project with production version and all version names. Use for \"Which systems are registered in my Scorecard project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Scorecard project id.","maxLength":200,"title":"Project Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor value from the previous page.","title":"Cursor"}},"required":["project_id"],"title":"list_systemsArguments","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_system":{"post":{"operationId":"get_system","summary":"Get one system with its production version and the list of versions. Use for \"Show Scorecard system sys_01\".","description":"Get one system with its production version and the list of versions. Use for \"Show Scorecard system sys_01\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"system_id":{"description":"Scorecard system id, for example sys_01.","maxLength":200,"title":"System Id","type":"string"}},"required":["system_id"],"title":"get_systemArguments","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}}}}