naftiko: 1.0.0-alpha2 info: label: Grafana — Groups description: 'Grafana — Groups. 21 operations. Lead operation: Grafana Route Convert Prometheus Cortex Post Rule Groups. Self-contained Naftiko capability covering one Grafana business surface.' tags: - Grafana - Groups created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GRAFANA_API_KEY: GRAFANA_API_KEY capability: consumes: - type: http namespace: grafana-groups baseUri: http://{defaultHost} description: Grafana — Groups business capability. Self-contained, no shared references. resources: - name: convert-api-prom-rules path: /convert/api/prom/rules operations: - name: routeconvertprometheuscortexpostrulegroups method: POST description: Grafana Route Convert Prometheus Cortex Post Rule Groups outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Content-Type in: header type: string required: true - name: convert-api-prom-rules-NamespaceTitle path: /convert/api/prom/rules/{NamespaceTitle} operations: - name: routeconvertprometheuscortexpostrulegroup method: POST description: Grafana Route Convert Prometheus Cortex Post Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: NamespaceTitle in: path type: string required: true - name: x-grafana-alerting-datasource-uid in: header type: string - name: x-grafana-alerting-recording-rules-paused in: header type: boolean - name: x-grafana-alerting-alert-rules-paused in: header type: boolean - name: x-grafana-alerting-target-datasource-uid in: header type: string - name: x-grafana-alerting-folder-uid in: header type: string - name: x-grafana-alerting-notification-settings in: header type: string - name: body in: body type: object description: Request body (JSON). required: false - name: convert-api-prom-rules-NamespaceTitle-Group path: /convert/api/prom/rules/{NamespaceTitle}/{Group} operations: - name: routeconvertprometheuscortexgetrulegroup method: GET description: Grafana Route Convert Prometheus Cortex Get Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: NamespaceTitle in: path type: string required: true - name: Group in: path type: string required: true - name: routeconvertprometheuscortexdeleterulegroup method: DELETE description: Grafana Route Convert Prometheus Cortex Delete Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: NamespaceTitle in: path type: string required: true - name: Group in: path type: string required: true - name: convert-prometheus-config-v1-rules path: /convert/prometheus/config/v1/rules operations: - name: routeconvertprometheuspostrulegroups method: POST description: Grafana Route Convert Prometheus Post Rule Groups outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Content-Type in: header type: string required: true - name: convert-prometheus-config-v1-rules-NamespaceTitle path: /convert/prometheus/config/v1/rules/{NamespaceTitle} operations: - name: routeconvertprometheuspostrulegroup method: POST description: Grafana Route Convert Prometheus Post Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: NamespaceTitle in: path type: string required: true - name: x-grafana-alerting-datasource-uid in: header type: string - name: x-grafana-alerting-recording-rules-paused in: header type: boolean - name: x-grafana-alerting-alert-rules-paused in: header type: boolean - name: x-grafana-alerting-target-datasource-uid in: header type: string - name: x-grafana-alerting-folder-uid in: header type: string - name: x-grafana-alerting-notification-settings in: header type: string - name: body in: body type: object description: Request body (JSON). required: false - name: convert-prometheus-config-v1-rules-NamespaceTitle-Group path: /convert/prometheus/config/v1/rules/{NamespaceTitle}/{Group} operations: - name: routeconvertprometheusgetrulegroup method: GET description: Grafana Route Convert Prometheus Get Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: NamespaceTitle in: path type: string required: true - name: Group in: path type: string required: true - name: routeconvertprometheusdeleterulegroup method: DELETE description: Grafana Route Convert Prometheus Delete Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: NamespaceTitle in: path type: string required: true - name: Group in: path type: string required: true - name: groupsync-groups path: /groupsync/groups operations: - name: getmappedgroups method: GET description: Grafana Get Mapped Groups outputRawFormat: json outputParameters: - name: result type: object value: $. - name: groupsync-groups-group_id path: /groupsync/groups/{group_id} operations: - name: updategroupmappings method: PUT description: Grafana Update Group Mappings outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: group_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: creategroupmappings method: POST description: Grafana Create Group Mappings outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: group_id in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletegroupmappings method: DELETE description: Grafana Delete Group Mappings outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: group_id in: path type: string required: true - name: groupsync-groups-group_id-roles path: /groupsync/groups/{group_id}/roles operations: - name: getgrouproles method: GET description: Grafana Get Group Roles outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: group_id in: path type: string required: true - name: teams-teamId-groups path: /teams/{teamId}/groups operations: - name: getteamgroupsapi method: GET description: Grafana Get Team Groups Api outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: teamId in: path type: string required: true - name: addteamgroupapi method: POST description: Grafana Add Team Group Api outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: teamId in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: removeteamgroupapiquery method: DELETE description: Grafana Remove Team Group Api Query outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: groupId in: query type: string - name: teamId in: path type: string required: true - name: teams-teamId-groups-search path: /teams/{teamId}/groups/search operations: - name: searchteamgroups method: GET description: Grafana Search Team Groups outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: teamId in: path type: integer required: true - name: page in: query type: integer - name: perpage in: query type: integer description: Number of items per page - name: query in: query type: string description: If set it will return results where the query value is contained in the name field. Query values with spaces need to be URL encoded. - name: name in: query type: string description: Filter by exact name match - name: v1-provisioning-folder-FolderUID-rule-groups-Group path: /v1/provisioning/folder/{FolderUID}/rule-groups/{Group} operations: - name: routegetalertrulegroup method: GET description: Grafana Route Get Alert Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: FolderUID in: path type: string required: true - name: Group in: path type: string required: true - name: routeputalertrulegroup method: PUT description: Grafana Route Put Alert Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: X-Disable-Provenance in: header type: string - name: FolderUID in: path type: string required: true - name: Group in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: false - name: routedeletealertrulegroup method: DELETE description: Grafana Route Delete Alert Rule Group outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: FolderUID in: path type: string required: true - name: Group in: path type: string required: true - name: v1-provisioning-folder-FolderUID-rule-groups-Group-export path: /v1/provisioning/folder/{FolderUID}/rule-groups/{Group}/export operations: - name: routegetalertrulegroupexport method: GET description: Grafana Route Get Alert Rule Group Export outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: download in: query type: boolean description: Whether to initiate a download of the file or not. - name: format in: query type: string description: Format of the downloaded file. Supported yaml, json or hcl. Accept header can also be used, but the query parameter will take precedence. - name: FolderUID in: path type: string required: true - name: Group in: path type: string required: true authentication: type: apikey key: Authorization value: '{{env.GRAFANA_API_KEY}}' placement: header exposes: - type: rest namespace: grafana-groups-rest port: 8080 description: REST adapter for Grafana — Groups. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/convert/api/prom/rules name: convert-api-prom-rules description: REST surface for convert-api-prom-rules. operations: - method: POST name: routeconvertprometheuscortexpostrulegroups description: Grafana Route Convert Prometheus Cortex Post Rule Groups call: grafana-groups.routeconvertprometheuscortexpostrulegroups with: Content-Type: rest.Content-Type outputParameters: - type: object mapping: $. - path: /v1/convert/api/prom/rules/{namespacetitle} name: convert-api-prom-rules-namespacetitle description: REST surface for convert-api-prom-rules-NamespaceTitle. operations: - method: POST name: routeconvertprometheuscortexpostrulegroup description: Grafana Route Convert Prometheus Cortex Post Rule Group call: grafana-groups.routeconvertprometheuscortexpostrulegroup with: NamespaceTitle: rest.NamespaceTitle x-grafana-alerting-datasource-uid: rest.x-grafana-alerting-datasource-uid x-grafana-alerting-recording-rules-paused: rest.x-grafana-alerting-recording-rules-paused x-grafana-alerting-alert-rules-paused: rest.x-grafana-alerting-alert-rules-paused x-grafana-alerting-target-datasource-uid: rest.x-grafana-alerting-target-datasource-uid x-grafana-alerting-folder-uid: rest.x-grafana-alerting-folder-uid x-grafana-alerting-notification-settings: rest.x-grafana-alerting-notification-settings body: rest.body outputParameters: - type: object mapping: $. - path: /v1/convert/api/prom/rules/{namespacetitle}/{group} name: convert-api-prom-rules-namespacetitle-group description: REST surface for convert-api-prom-rules-NamespaceTitle-Group. operations: - method: GET name: routeconvertprometheuscortexgetrulegroup description: Grafana Route Convert Prometheus Cortex Get Rule Group call: grafana-groups.routeconvertprometheuscortexgetrulegroup with: NamespaceTitle: rest.NamespaceTitle Group: rest.Group outputParameters: - type: object mapping: $. - method: DELETE name: routeconvertprometheuscortexdeleterulegroup description: Grafana Route Convert Prometheus Cortex Delete Rule Group call: grafana-groups.routeconvertprometheuscortexdeleterulegroup with: NamespaceTitle: rest.NamespaceTitle Group: rest.Group outputParameters: - type: object mapping: $. - path: /v1/convert/prometheus/config/v1/rules name: convert-prometheus-config-v1-rules description: REST surface for convert-prometheus-config-v1-rules. operations: - method: POST name: routeconvertprometheuspostrulegroups description: Grafana Route Convert Prometheus Post Rule Groups call: grafana-groups.routeconvertprometheuspostrulegroups with: Content-Type: rest.Content-Type outputParameters: - type: object mapping: $. - path: /v1/convert/prometheus/config/v1/rules/{namespacetitle} name: convert-prometheus-config-v1-rules-namespacetitle description: REST surface for convert-prometheus-config-v1-rules-NamespaceTitle. operations: - method: POST name: routeconvertprometheuspostrulegroup description: Grafana Route Convert Prometheus Post Rule Group call: grafana-groups.routeconvertprometheuspostrulegroup with: NamespaceTitle: rest.NamespaceTitle x-grafana-alerting-datasource-uid: rest.x-grafana-alerting-datasource-uid x-grafana-alerting-recording-rules-paused: rest.x-grafana-alerting-recording-rules-paused x-grafana-alerting-alert-rules-paused: rest.x-grafana-alerting-alert-rules-paused x-grafana-alerting-target-datasource-uid: rest.x-grafana-alerting-target-datasource-uid x-grafana-alerting-folder-uid: rest.x-grafana-alerting-folder-uid x-grafana-alerting-notification-settings: rest.x-grafana-alerting-notification-settings body: rest.body outputParameters: - type: object mapping: $. - path: /v1/convert/prometheus/config/v1/rules/{namespacetitle}/{group} name: convert-prometheus-config-v1-rules-namespacetitle-group description: REST surface for convert-prometheus-config-v1-rules-NamespaceTitle-Group. operations: - method: GET name: routeconvertprometheusgetrulegroup description: Grafana Route Convert Prometheus Get Rule Group call: grafana-groups.routeconvertprometheusgetrulegroup with: NamespaceTitle: rest.NamespaceTitle Group: rest.Group outputParameters: - type: object mapping: $. - method: DELETE name: routeconvertprometheusdeleterulegroup description: Grafana Route Convert Prometheus Delete Rule Group call: grafana-groups.routeconvertprometheusdeleterulegroup with: NamespaceTitle: rest.NamespaceTitle Group: rest.Group outputParameters: - type: object mapping: $. - path: /v1/groupsync/groups name: groupsync-groups description: REST surface for groupsync-groups. operations: - method: GET name: getmappedgroups description: Grafana Get Mapped Groups call: grafana-groups.getmappedgroups outputParameters: - type: object mapping: $. - path: /v1/groupsync/groups/{group-id} name: groupsync-groups-group-id description: REST surface for groupsync-groups-group_id. operations: - method: PUT name: updategroupmappings description: Grafana Update Group Mappings call: grafana-groups.updategroupmappings with: group_id: rest.group_id body: rest.body outputParameters: - type: object mapping: $. - method: POST name: creategroupmappings description: Grafana Create Group Mappings call: grafana-groups.creategroupmappings with: group_id: rest.group_id body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletegroupmappings description: Grafana Delete Group Mappings call: grafana-groups.deletegroupmappings with: group_id: rest.group_id outputParameters: - type: object mapping: $. - path: /v1/groupsync/groups/{group-id}/roles name: groupsync-groups-group-id-roles description: REST surface for groupsync-groups-group_id-roles. operations: - method: GET name: getgrouproles description: Grafana Get Group Roles call: grafana-groups.getgrouproles with: group_id: rest.group_id outputParameters: - type: object mapping: $. - path: /v1/teams/{teamid}/groups name: teams-teamid-groups description: REST surface for teams-teamId-groups. operations: - method: GET name: getteamgroupsapi description: Grafana Get Team Groups Api call: grafana-groups.getteamgroupsapi with: teamId: rest.teamId outputParameters: - type: object mapping: $. - method: POST name: addteamgroupapi description: Grafana Add Team Group Api call: grafana-groups.addteamgroupapi with: teamId: rest.teamId body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: removeteamgroupapiquery description: Grafana Remove Team Group Api Query call: grafana-groups.removeteamgroupapiquery with: groupId: rest.groupId teamId: rest.teamId outputParameters: - type: object mapping: $. - path: /v1/teams/{teamid}/groups/search name: teams-teamid-groups-search description: REST surface for teams-teamId-groups-search. operations: - method: GET name: searchteamgroups description: Grafana Search Team Groups call: grafana-groups.searchteamgroups with: teamId: rest.teamId page: rest.page perpage: rest.perpage query: rest.query name: rest.name outputParameters: - type: object mapping: $. - path: /v1/v1/provisioning/folder/{folderuid}/rule-groups/{group} name: v1-provisioning-folder-folderuid-rule-groups-group description: REST surface for v1-provisioning-folder-FolderUID-rule-groups-Group. operations: - method: GET name: routegetalertrulegroup description: Grafana Route Get Alert Rule Group call: grafana-groups.routegetalertrulegroup with: FolderUID: rest.FolderUID Group: rest.Group outputParameters: - type: object mapping: $. - method: PUT name: routeputalertrulegroup description: Grafana Route Put Alert Rule Group call: grafana-groups.routeputalertrulegroup with: X-Disable-Provenance: rest.X-Disable-Provenance FolderUID: rest.FolderUID Group: rest.Group body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: routedeletealertrulegroup description: Grafana Route Delete Alert Rule Group call: grafana-groups.routedeletealertrulegroup with: FolderUID: rest.FolderUID Group: rest.Group outputParameters: - type: object mapping: $. - path: /v1/v1/provisioning/folder/{folderuid}/rule-groups/{group}/export name: v1-provisioning-folder-folderuid-rule-groups-group-export description: REST surface for v1-provisioning-folder-FolderUID-rule-groups-Group-export. operations: - method: GET name: routegetalertrulegroupexport description: Grafana Route Get Alert Rule Group Export call: grafana-groups.routegetalertrulegroupexport with: download: rest.download format: rest.format FolderUID: rest.FolderUID Group: rest.Group outputParameters: - type: object mapping: $. - type: mcp namespace: grafana-groups-mcp port: 9090 transport: http description: MCP adapter for Grafana — Groups. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: grafana-route-convert-prometheus-cortex description: Grafana Route Convert Prometheus Cortex Post Rule Groups hints: readOnly: false destructive: false idempotent: false call: grafana-groups.routeconvertprometheuscortexpostrulegroups with: Content-Type: tools.Content-Type outputParameters: - type: object mapping: $. - name: grafana-route-convert-prometheus-cortex-2 description: Grafana Route Convert Prometheus Cortex Post Rule Group hints: readOnly: false destructive: false idempotent: false call: grafana-groups.routeconvertprometheuscortexpostrulegroup with: NamespaceTitle: tools.NamespaceTitle x-grafana-alerting-datasource-uid: tools.x-grafana-alerting-datasource-uid x-grafana-alerting-recording-rules-paused: tools.x-grafana-alerting-recording-rules-paused x-grafana-alerting-alert-rules-paused: tools.x-grafana-alerting-alert-rules-paused x-grafana-alerting-target-datasource-uid: tools.x-grafana-alerting-target-datasource-uid x-grafana-alerting-folder-uid: tools.x-grafana-alerting-folder-uid x-grafana-alerting-notification-settings: tools.x-grafana-alerting-notification-settings body: tools.body outputParameters: - type: object mapping: $. - name: grafana-route-convert-prometheus-cortex-3 description: Grafana Route Convert Prometheus Cortex Get Rule Group hints: readOnly: true destructive: false idempotent: true call: grafana-groups.routeconvertprometheuscortexgetrulegroup with: NamespaceTitle: tools.NamespaceTitle Group: tools.Group outputParameters: - type: object mapping: $. - name: grafana-route-convert-prometheus-cortex-4 description: Grafana Route Convert Prometheus Cortex Delete Rule Group hints: readOnly: false destructive: true idempotent: true call: grafana-groups.routeconvertprometheuscortexdeleterulegroup with: NamespaceTitle: tools.NamespaceTitle Group: tools.Group outputParameters: - type: object mapping: $. - name: grafana-route-convert-prometheus-post description: Grafana Route Convert Prometheus Post Rule Groups hints: readOnly: false destructive: false idempotent: false call: grafana-groups.routeconvertprometheuspostrulegroups with: Content-Type: tools.Content-Type outputParameters: - type: object mapping: $. - name: grafana-route-convert-prometheus-post-2 description: Grafana Route Convert Prometheus Post Rule Group hints: readOnly: false destructive: false idempotent: false call: grafana-groups.routeconvertprometheuspostrulegroup with: NamespaceTitle: tools.NamespaceTitle x-grafana-alerting-datasource-uid: tools.x-grafana-alerting-datasource-uid x-grafana-alerting-recording-rules-paused: tools.x-grafana-alerting-recording-rules-paused x-grafana-alerting-alert-rules-paused: tools.x-grafana-alerting-alert-rules-paused x-grafana-alerting-target-datasource-uid: tools.x-grafana-alerting-target-datasource-uid x-grafana-alerting-folder-uid: tools.x-grafana-alerting-folder-uid x-grafana-alerting-notification-settings: tools.x-grafana-alerting-notification-settings body: tools.body outputParameters: - type: object mapping: $. - name: grafana-route-convert-prometheus-get description: Grafana Route Convert Prometheus Get Rule Group hints: readOnly: true destructive: false idempotent: true call: grafana-groups.routeconvertprometheusgetrulegroup with: NamespaceTitle: tools.NamespaceTitle Group: tools.Group outputParameters: - type: object mapping: $. - name: grafana-route-convert-prometheus-delete description: Grafana Route Convert Prometheus Delete Rule Group hints: readOnly: false destructive: true idempotent: true call: grafana-groups.routeconvertprometheusdeleterulegroup with: NamespaceTitle: tools.NamespaceTitle Group: tools.Group outputParameters: - type: object mapping: $. - name: grafana-get-mapped-groups description: Grafana Get Mapped Groups hints: readOnly: true destructive: false idempotent: true call: grafana-groups.getmappedgroups outputParameters: - type: object mapping: $. - name: grafana-update-group-mappings description: Grafana Update Group Mappings hints: readOnly: false destructive: false idempotent: true call: grafana-groups.updategroupmappings with: group_id: tools.group_id body: tools.body outputParameters: - type: object mapping: $. - name: grafana-create-group-mappings description: Grafana Create Group Mappings hints: readOnly: false destructive: false idempotent: false call: grafana-groups.creategroupmappings with: group_id: tools.group_id body: tools.body outputParameters: - type: object mapping: $. - name: grafana-delete-group-mappings description: Grafana Delete Group Mappings hints: readOnly: false destructive: true idempotent: true call: grafana-groups.deletegroupmappings with: group_id: tools.group_id outputParameters: - type: object mapping: $. - name: grafana-get-group-roles description: Grafana Get Group Roles hints: readOnly: true destructive: false idempotent: true call: grafana-groups.getgrouproles with: group_id: tools.group_id outputParameters: - type: object mapping: $. - name: grafana-get-team-groups-api description: Grafana Get Team Groups Api hints: readOnly: true destructive: false idempotent: true call: grafana-groups.getteamgroupsapi with: teamId: tools.teamId outputParameters: - type: object mapping: $. - name: grafana-add-team-group-api description: Grafana Add Team Group Api hints: readOnly: false destructive: false idempotent: false call: grafana-groups.addteamgroupapi with: teamId: tools.teamId body: tools.body outputParameters: - type: object mapping: $. - name: grafana-remove-team-group-api description: Grafana Remove Team Group Api Query hints: readOnly: false destructive: true idempotent: true call: grafana-groups.removeteamgroupapiquery with: groupId: tools.groupId teamId: tools.teamId outputParameters: - type: object mapping: $. - name: grafana-search-team-groups description: Grafana Search Team Groups hints: readOnly: true destructive: false idempotent: true call: grafana-groups.searchteamgroups with: teamId: tools.teamId page: tools.page perpage: tools.perpage query: tools.query name: tools.name outputParameters: - type: object mapping: $. - name: grafana-route-get-alert-rule description: Grafana Route Get Alert Rule Group hints: readOnly: true destructive: false idempotent: true call: grafana-groups.routegetalertrulegroup with: FolderUID: tools.FolderUID Group: tools.Group outputParameters: - type: object mapping: $. - name: grafana-route-put-alert-rule description: Grafana Route Put Alert Rule Group hints: readOnly: false destructive: false idempotent: true call: grafana-groups.routeputalertrulegroup with: X-Disable-Provenance: tools.X-Disable-Provenance FolderUID: tools.FolderUID Group: tools.Group body: tools.body outputParameters: - type: object mapping: $. - name: grafana-route-delete-alert-rule description: Grafana Route Delete Alert Rule Group hints: readOnly: false destructive: true idempotent: true call: grafana-groups.routedeletealertrulegroup with: FolderUID: tools.FolderUID Group: tools.Group outputParameters: - type: object mapping: $. - name: grafana-route-get-alert-rule-2 description: Grafana Route Get Alert Rule Group Export hints: readOnly: true destructive: false idempotent: true call: grafana-groups.routegetalertrulegroupexport with: download: tools.download format: tools.format FolderUID: tools.FolderUID Group: tools.Group outputParameters: - type: object mapping: $.