{"openapi":"3.1.0","info":{"title":"Thousand Eyes (BYOK) API","version":"0.1.0","description":"Thousand Eyes (BYOK) lets an AI assistant read your own Thousand Eyes data through the Thousand Eyes API with a key you supply (ThousandEyes user API token (OAuth bearer token)). Read-only: 9 tools (list_account_groups, get_account_group, get_current_user, list_tests, list_agents, list_alerts, get_alert, list_alert_rules, list_alert_suppression_windows). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-thousandeyes.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-thousandeyes/docs"},"termsOfService":"https://connectorbay.com/byok-thousandeyes/terms"},"servers":[{"url":"https://byok-thousandeyes.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-thousandeyes/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_account_groups":{"post":{"operationId":"list_account_groups","summary":"List the account groups the token's user belongs to, with their ids (aid). Use an id as the aid parameter of other tools","description":"List the account groups the token's user belongs to, with their ids (aid). Use an id as the aid parameter of other tools. Use for \"Which ThousandEyes account groups can I access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_account_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/get_account_group":{"post":{"operationId":"get_account_group","summary":"Get one account group: name, whether it is the current or default one, and its organization name and id. Users and token","description":"Get one account group: name, whether it is the current or default one, and its organization name and id. Users and tokens are not returned. Use for \"Show details of ThousandEyes account group 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Account group id (the aid value from list_account_groups).","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_account_groupArguments","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_current_user":{"post":{"operationId":"get_current_user","summary":"Show the user the token belongs to: name, user id, registration date, last login and login account group. Use for \"Which","description":"Show the user the token belongs to: name, user id, registration date, last login and login account group. Use for \"Which ThousandEyes user is this token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_current_userArguments","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_tests":{"post":{"operationId":"list_tests","summary":"List the tests configured in an account group with type, interval, enabled flags and creation and modification dates. Us","description":"List the tests configured in an account group with type, interval, enabled flags and creation and modification dates. Use for \"Which ThousandEyes tests are configured and how often do they run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"aid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account group id (from list_account_groups). Leave out to use the key's current account group.","title":"Aid"}},"title":"list_testsArguments","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_agents":{"post":{"operationId":"list_agents","summary":"List the Cloud and Enterprise Agents visible to the account group, with location, network, state and (for Enterprise Age","description":"List the Cloud and Enterprise Agents visible to the account group, with location, network, state and (for Enterprise Agents) hostname and last-seen time. Use for \"Which ThousandEyes enterprise agents are offline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"aid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account group id (from list_account_groups). Leave out to use the key's current account group.","title":"Aid"}},"title":"list_agentsArguments","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 alerts (active ones by default, or cleared ones with state=clear) in a lookback window or date range, with type, se","description":"List alerts (active ones by default, or cleared ones with state=clear) in a lookback window or date range, with type, severity, start and end time and violation count. Use for \"Which ThousandEyes alerts fired in the last 24 hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"aid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account group id (from list_account_groups). Leave out to use the key's current account group.","title":"Aid"},"state":{"anyOf":[{"enum":["trigger","clear"],"type":"string"},{"type":"null"}],"default":null,"description":"Alert state to match: trigger (the default) or clear.","title":"State"},"window":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Lookback interval up to now: a number plus s, m, h, d or w, for example 24h or 7d. Cannot be combined with start_date or end_date.","title":"Window"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Start of a UTC range in ISO 8601, for example 2026-10-01T00:00:00Z. Use with end_date.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"End of the UTC range in ISO 8601; defaults to now.","title":"End Date"},"max":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum number of alerts to return.","title":"Max"}},"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/get_alert":{"post":{"operationId":"get_alert","summary":"Get one alert by id with its type, state, severity, times and violation count. Use for \"Show ThousandEyes alert 12345678","description":"Get one alert by id with its type, state, severity, times and violation count. Use for \"Show ThousandEyes alert 1234567890\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"alert_id":{"description":"Alert id from list_alerts.","maxLength":200,"title":"Alert Id","type":"string"},"aid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account group id (from list_account_groups). Leave out to use the key's current account group.","title":"Aid"}},"required":["alert_id"],"title":"get_alertArguments","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_alert_rules":{"post":{"operationId":"list_alert_rules","summary":"List the alert rules with expression, alert type, direction, minimum sources, rounds-violating settings and severity. Us","description":"List the alert rules with expression, alert type, direction, minimum sources, rounds-violating settings and severity. Use for \"Which alert rules does my ThousandEyes account group have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"aid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account group id (from list_account_groups). Leave out to use the key's current account group.","title":"Aid"}},"title":"list_alert_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_alert_suppression_windows":{"post":{"operationId":"list_alert_suppression_windows","summary":"List alert suppression (maintenance) windows with name, status, start, duration and repeat settings. Use for \"Are there ","description":"List alert suppression (maintenance) windows with name, status, start, duration and repeat settings. Use for \"Are there any ThousandEyes alert suppression windows scheduled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"aid":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Account group id (from list_account_groups). Leave out to use the key's current account group.","title":"Aid"}},"title":"list_alert_suppression_windowsArguments","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}}}}