{"openapi":"3.1.0","info":{"title":"Grafana Cloud (BYOK) API","version":"0.1.0","description":"Grafana Cloud (BYOK) lets an AI assistant read your own Grafana Cloud data through the Grafana Cloud API with a key you supply (Grafana Cloud access policy token (or grafana.com API key) with read scopes for the objects these tools read). Read-only: 5 tools (list_access_policies, get_access_policy, get_access_policy_config, list_stack_regions, get_closest_stack_region). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-grafana-cloud-access.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-grafana-cloud-access/docs"},"termsOfService":"https://connectorbay.com/byok-grafana-cloud-access/terms"},"servers":[{"url":"https://byok-grafana-cloud-access.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-grafana-cloud-access/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_access_policies":{"post":{"operationId":"list_access_policies","summary":"List Cloud access policies in a region with name, status, scopes and realms; no token values are involved. Use for \"Whic","description":"List Cloud access policies in a region with name, status, scopes and realms; no token values are involved. Use for \"Which Grafana Cloud access policies exist in my region\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region slug of the stacks the policies belong to; use the region field returned for your stack by the stack list, for example 'us'.","maxLength":60,"title":"Region","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only policies with this exact name.","title":"Name"},"status":{"anyOf":[{"enum":["active","inactive"],"type":"string"},{"type":"null"}],"default":null,"description":"Only policies with this status.","title":"Status"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Policies per page.","title":"Page Size"},"page_cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from a previous answer to fetch the next page.","title":"Page Cursor"}},"required":["region"],"title":"list_access_policiesArguments","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_access_policy":{"post":{"operationId":"get_access_policy","summary":"Get one access policy by id: name, status, scopes, realms, allowed subnets and Loki query limits. Use for \"Show the deta","description":"Get one access policy by id: name, status, scopes, realms, allowed subnets and Loki query limits. Use for \"Show the details of one Grafana Cloud access policy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Id of the access policy, as returned by list_access_policies.","maxLength":200,"title":"Id","type":"string"},"region":{"description":"Region slug of the stacks the policies belong to; use the region field returned for your stack by the stack list, for example 'us'.","maxLength":60,"title":"Region","type":"string"}},"required":["id","region"],"title":"get_access_policyArguments","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_access_policy_config":{"post":{"operationId":"get_access_policy_config","summary":"List the scopes and scope sets that access policies can use, with descriptions and the realm type each requires. Use for","description":"List the scopes and scope sets that access policies can use, with descriptions and the realm type each requires. Use for \"Which scopes can a Grafana Cloud access policy have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"description":"Region slug of the stacks the policies belong to; use the region field returned for your stack by the stack list, for example 'us'.","maxLength":60,"title":"Region","type":"string"}},"required":["region"],"title":"get_access_policy_configArguments","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_stack_regions":{"post":{"operationId":"list_stack_regions","summary":"List the Grafana Cloud regions with slug, public name, provider and status; useful to find the region value for the acce","description":"List the Grafana Cloud regions with slug, public name, provider and status; useful to find the region value for the access policy tools. Use for \"Which Grafana Cloud regions exist and what are their slugs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"provider":{"anyOf":[{"enum":["aws","gcp","azure","fedramp-palantir"],"type":"string"},{"type":"null"}],"default":null,"description":"Only regions of this cloud provider.","title":"Provider"}},"title":"list_stack_regionsArguments","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_closest_stack_region":{"post":{"operationId":"get_closest_stack_region","summary":"Get the Grafana Cloud region closest to the caller. The answer shape is not documented, so it is returned as the API sen","description":"Get the Grafana Cloud region closest to the caller. The answer shape is not documented, so it is returned as the API sends it, trimmed. Use for \"Which Grafana Cloud region is closest to me\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_closest_stack_regionArguments","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}}}}