Overview
Investigate incidents with groundcover logs and traces, queried with gcQL (groundcover Query Language) over groundcover’s public, read-only MCP endpoint. OpenSRE supports configuration, verification, and three read-only tools (logs, traces, and the gcQL reference). More signals (metrics, APM, Kubernetes events/entities, monitors, monitor issues) and alert-source routing land in follow-up releases. The integration is read-only — no monitor creation, silencing, or other mutating actions.Prerequisites
- A groundcover account with access to create a service-account API key
- A read-only service-account token (see Credentials)
- For multi-workspace / multi-backend accounts: tenant UUID and/or backend ID (verification tells you which values to set)
Setup
Option 1: Interactive CLI
Option 2: Environment variables
Single-workspace accounts need only the token. If your account has multiple workspaces or
backends, verification tells you which value to set.
Multiple instances:
opensre integrations list shows integrations saved to the local store (via setup).
Environment-variable configuration is still picked up by verify and at runtime.
Commands
Credentials
In groundcover: Settings → Access → Service Accounts → create a service account with a read-only policy → create an API key and copy it (shown once). OpenSRE never performs write actions.Investigation tools
Verify
passed, missing (token not configured),
or failed with an actionable message — for example, naming the missing or mistyped
GROUNDCOVER_TENANT_UUID / GROUNDCOVER_BACKEND_ID when the account is ambiguous. Tokens
are never printed.
Troubleshooting
Security
- Use a read-only service-account token. OpenSRE never performs write actions.
- Store the token in
.envor the local integrations store — not in source control. - Verification never prints tokens.
Extras
Writing efficient gcQL
gcQL is pipe-based: a query starts with a filter (or*) and pipes through operators.
These rules keep queries fast and valid:
- Lead with the filter —
level:error | …, not* | filter level:error. The| filterpipe is for post-aggregation conditions on computed aliases. - Project or aggregate — use
| fields a, b, …or| stats …. A bare select-all (<filter> | limit N) can be rejected by the backend. - Keep the time window narrow. Default is the last 1 hour; widen only after an empty or inconclusive result.
- Always include
| limit N— it caps rows returned (not data scanned). For wide ranges, preferstats/ aggregations. - Discover fields with
* | field_names(orget_groundcover_query_reference).