{"openapi":"3.1.0","info":{"title":"DebugBear (BYOK) API","version":"0.1.0","description":"DebugBear (BYOK) lets an AI assistant read your own DebugBear data through the DebugBear API with a key you supply (DebugBear admin API key (read-only keys work for reads)). Read-only: 6 tools (list_projects, get_project, get_project_page_metrics, get_page_metrics, get_analysis, get_experiment). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-debugbear.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-debugbear/docs"},"termsOfService":"https://connectorbay.com/byok-debugbear/terms"},"servers":[{"url":"https://byok-debugbear.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-debugbear/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 all projects of the DebugBear account with their monitored pages (id, name, URL, region, test schedules and device)","description":"List all projects of the DebugBear account with their monitored pages (id, name, URL, region, test schedules and device). Needs an admin API key. Use for \"Which pages does DebugBear monitor for me\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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/get_project":{"post":{"operationId":"get_project","summary":"Get one project with its monitored pages, test schedules and devices. Needs an admin API key. Use for \"Which pages are i","description":"Get one project with its monitored pages, test schedules and devices. Needs an admin API key. Use for \"Which pages are in this DebugBear project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project ID (from list_projects).","maxLength":64,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"get_projectArguments","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_project_page_metrics":{"post":{"operationId":"get_project_page_metrics","summary":"Get the recent results of all pages in a project: for each page the latest metrics such as performance.score and seo.sco","description":"Get the recent results of all pages in a project: for each page the latest metrics such as performance.score and seo.score. Optionally only results before a date. The provider documents the metric keys only by example. Use for \"What are the latest performance scores of all my DebugBear pages\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project ID (from list_projects).","maxLength":64,"title":"Project Id","type":"string"},"before":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only results before this date, YYYY-MM-DD.","title":"Before"}},"required":["project_id"],"title":"get_project_page_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_page_metrics":{"post":{"operationId":"get_page_metrics","summary":"Export the metric history of one monitored page between two dates (keys such as performance.score). The provider documen","description":"Export the metric history of one monitored page between two dates (keys such as performance.score). The provider documents the metric keys only by example. Use for \"How did the performance score of this DebugBear page change in September\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_id":{"description":"Page ID (from list_projects or get_project, in the pages of a project).","maxLength":64,"title":"Page Id","type":"string"},"date_from":{"description":"Start date, YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date, YYYY-MM-DD.","maxLength":10,"title":"Date To","type":"string"}},"required":["page_id","date_from","date_to"],"title":"get_page_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_analysis":{"post":{"operationId":"get_analysis","summary":"Get an existing analysis (test result) without starting a new test: status, metrics, build and commit information. The p","description":"Get an existing analysis (test result) without starting a new test: status, metrics, build and commit information. The provider documents the fields only loosely, so the full answer is returned. Use for \"What were the results of DebugBear analysis 5556667778\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"analysis_id":{"description":"Analysis (test result) ID.","maxLength":64,"title":"Analysis Id","type":"string"}},"required":["analysis_id"],"title":"get_analysisArguments","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 a DebugBear experiment; baselineMetrics and variantMetrics appear once hasFinished is true. Use for \"Has my DebugBea","description":"Get a DebugBear experiment; baselineMetrics and variantMetrics appear once hasFinished is true. Use for \"Has my DebugBear experiment finished and how did the variant do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"experiment_id":{"description":"Experiment ID returned when the experiment was created.","maxLength":64,"title":"Experiment Id","type":"string"}},"required":["experiment_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}}}}