{"openapi":"3.1.0","info":{"title":"Groundcover (BYOK) API","version":"0.1.0","description":"Groundcover (BYOK) lets an AI assistant read your own Groundcover data through the Groundcover API with a key you supply (groundcover API key). Read-only: 9 tools (list_clusters, list_namespaces, list_workloads, list_deployments, list_monitors, get_monitor, search_logs, search_traces, search_kubernetes_events). 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-groundcover.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-groundcover/docs"},"termsOfService":"https://connectorbay.com/byok-groundcover/terms"},"servers":[{"url":"https://byok-groundcover.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-groundcover/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_clusters":{"post":{"operationId":"list_clusters","summary":"List Kubernetes clusters monitored by groundcover with cloud provider, Kubernetes version, node count, issue count and C","description":"List Kubernetes clusters monitored by groundcover with cloud provider, Kubernetes version, node count, issue count and CPU and memory usage against allocatable. Use for \"Which clusters does groundcover monitor and how loaded are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_clustersArguments","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_namespaces":{"post":{"operationId":"list_namespaces","summary":"List the Kubernetes namespaces seen by groundcover in a time range. Use for \"Which namespaces were active in my cluster ","description":"List the Kubernetes namespaces seen by groundcover in a time range. Use for \"Which namespaces were active in my cluster this morning\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Start of the time range in UTC ISO 8601, for example 2026-10-16T09:00:00.000Z.","maxLength":200,"title":"Start","type":"string"},"end":{"description":"End of the time range in UTC ISO 8601, for example 2026-10-16T10:00:00.000Z.","maxLength":200,"title":"End","type":"string"}},"required":["start","end"],"title":"list_namespacesArguments","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_workloads":{"post":{"operationId":"list_workloads","summary":"List Kubernetes workloads with namespace, kind, readiness, pod count, latency percentiles, requests per second, error ra","description":"List Kubernetes workloads with namespace, kind, readiness, pod count, latency percentiles, requests per second, error rate, CPU and memory use and issue count. Use for \"Which workloads have the highest error rate in groundcover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many workloads to return (1 to 1000).","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many workloads to skip, for paging.","title":"Skip"},"sort_by":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":"rps","description":"Field to sort by, for example rps, cpuUsage or memoryUsage.","title":"Sort By"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort order asc or desc.","title":"Order"}},"title":"list_workloadsArguments","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_deployments":{"post":{"operationId":"list_deployments","summary":"List Kubernetes deployments active in a time range with cluster, namespace, desired, ready and available replicas and wa","description":"List Kubernetes deployments active in a time range with cluster, namespace, desired, ready and available replicas and warnings. Use for \"Are all my deployments fully available\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Start of the time range in UTC ISO 8601, for example 2026-10-16T09:00:00.000Z.","maxLength":200,"title":"Start","type":"string"},"end":{"description":"End of the time range in UTC ISO 8601, for example 2026-10-16T10:00:00.000Z.","maxLength":200,"title":"End","type":"string"}},"required":["start","end"],"title":"list_deploymentsArguments","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_monitors":{"post":{"operationId":"list_monitors","summary":"List the configured groundcover monitors (alert rules) with ID, title and type (metrics, traces, logs, events, infra). U","description":"List the configured groundcover monitors (alert rules) with ID, title and type (metrics, traces, logs, events, infra). Use for \"What alert monitors do I have in groundcover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_monitorsArguments","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_monitor":{"post":{"operationId":"get_monitor","summary":"Get one monitor's configuration: title, severity, queries, thresholds, evaluation interval, no-data state and paused fla","description":"Get one monitor's configuration: title, severity, queries, thresholds, evaluation interval, no-data state and paused flag. Use for \"Show how my groundcover monitor is configured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uuid":{"description":"Monitor UUID; list_monitors returns it.","maxLength":200,"title":"Uuid","type":"string"}},"required":["uuid"],"title":"get_monitorArguments","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/search_logs":{"post":{"operationId":"search_logs","summary":"Search logs with a gcQL query over a time range and return the matching rows or aggregates; end the query with a limit. ","description":"Search logs with a gcQL query over a time range and return the matching rows or aggregates; end the query with a limit. Use for \"Show the latest error logs of my checkout workload in groundcover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Start of the time range in UTC ISO 8601, for example 2026-10-16T09:00:00.000Z.","maxLength":200,"title":"Start","type":"string"},"end":{"description":"End of the time range in UTC ISO 8601, for example 2026-10-16T10:00:00.000Z.","maxLength":200,"title":"End","type":"string"},"query":{"description":"gcQL query: a filter then pipes, for example 'level:error | sort by (_time desc) | fields _time, workload, content | limit 20'. Always end with '| limit N'.","maxLength":1000,"title":"Query","type":"string"}},"required":["start","end","query"],"title":"search_logsArguments","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/search_traces":{"post":{"operationId":"search_traces","summary":"Search trace spans with a gcQL query over a time range, for example failing requests or latency percentiles per endpoint","description":"Search trace spans with a gcQL query over a time range, for example failing requests or latency percentiles per endpoint. Use for \"Which endpoints returned errors in the last hour according to groundcover traces\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Start of the time range in UTC ISO 8601, for example 2026-10-16T09:00:00.000Z.","maxLength":200,"title":"Start","type":"string"},"end":{"description":"End of the time range in UTC ISO 8601, for example 2026-10-16T10:00:00.000Z.","maxLength":200,"title":"End","type":"string"},"query":{"description":"gcQL query: a filter then pipes, for example 'level:error | sort by (_time desc) | fields _time, workload, content | limit 20'. Always end with '| limit N'.","maxLength":1000,"title":"Query","type":"string"}},"required":["start","end","query"],"title":"search_tracesArguments","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/search_kubernetes_events":{"post":{"operationId":"search_kubernetes_events","summary":"Search Kubernetes events with a gcQL query over a time range, for example warnings grouped by reason. Use for \"What Kube","description":"Search Kubernetes events with a gcQL query over a time range, for example warnings grouped by reason. Use for \"What Kubernetes warning events happened in the last hour\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"Start of the time range in UTC ISO 8601, for example 2026-10-16T09:00:00.000Z.","maxLength":200,"title":"Start","type":"string"},"end":{"description":"End of the time range in UTC ISO 8601, for example 2026-10-16T10:00:00.000Z.","maxLength":200,"title":"End","type":"string"},"query":{"description":"gcQL query: a filter then pipes, for example 'level:error | sort by (_time desc) | fields _time, workload, content | limit 20'. Always end with '| limit N'.","maxLength":1000,"title":"Query","type":"string"}},"required":["start","end","query"],"title":"search_kubernetes_eventsArguments","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}}}}