naftiko: 1.0.0-alpha2 info: label: Grafana — Folders description: 'Grafana — Folders. 10 operations. Lead operation: Grafana Get Folders. Self-contained Naftiko capability covering one Grafana business surface.' tags: - Grafana - Folders created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GRAFANA_API_KEY: GRAFANA_API_KEY capability: consumes: - type: http namespace: grafana-folders-2 baseUri: http://{defaultHost} description: Grafana — Folders business capability. Self-contained, no shared references. resources: - name: folders path: /folders operations: - name: getfolders method: GET description: Grafana Get Folders outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the maximum number of folders to return - name: page in: query type: integer description: Page index for starting fetching folders - name: parentUid in: query type: string description: The parent folder UID - name: permission in: query type: string description: Set to `Edit` to return folders that the user can edit - name: createfolder method: POST description: Grafana Create Folder outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: folders-id-folder_id path: /folders/id/{folder_id} operations: - name: getfolderbyid method: GET description: Grafana Get Folder By ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_id in: path type: integer required: true - name: folders-folder_uid path: /folders/{folder_uid} operations: - name: getfolderbyuid method: GET description: Grafana Get Folder By UID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_uid in: path type: string required: true - name: updatefolder method: PUT description: Grafana Update Folder outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_uid in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletefolder method: DELETE description: Grafana Delete Folder outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_uid in: path type: string required: true - name: forceDeleteRules in: query type: boolean description: If `true` any Grafana 8 Alerts under this folder will be deleted. - name: folders-folder_uid-counts path: /folders/{folder_uid}/counts operations: - name: getfolderdescendantcounts method: GET description: Grafana Get Folder Descendant Counts outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_uid in: path type: string required: true - name: folders-folder_uid-move path: /folders/{folder_uid}/move operations: - name: movefolder method: POST description: Grafana Move Folder outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_uid in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true - name: folders-folder_uid-permissions path: /folders/{folder_uid}/permissions operations: - name: getfolderpermissionlist method: GET description: Grafana Get Folder Permission List outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_uid in: path type: string required: true - name: updatefolderpermissions method: POST description: Grafana Update Folder Permissions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: folder_uid in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: apikey key: Authorization value: '{{env.GRAFANA_API_KEY}}' placement: header exposes: - type: rest namespace: grafana-folders-2-rest port: 8080 description: REST adapter for Grafana — Folders. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/folders name: folders description: REST surface for folders. operations: - method: GET name: getfolders description: Grafana Get Folders call: grafana-folders-2.getfolders with: limit: rest.limit page: rest.page parentUid: rest.parentUid permission: rest.permission outputParameters: - type: object mapping: $. - method: POST name: createfolder description: Grafana Create Folder call: grafana-folders-2.createfolder with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/folders/id/{folder-id} name: folders-id-folder-id description: REST surface for folders-id-folder_id. operations: - method: GET name: getfolderbyid description: Grafana Get Folder By ID call: grafana-folders-2.getfolderbyid with: folder_id: rest.folder_id outputParameters: - type: object mapping: $. - path: /v1/folders/{folder-uid} name: folders-folder-uid description: REST surface for folders-folder_uid. operations: - method: GET name: getfolderbyuid description: Grafana Get Folder By UID call: grafana-folders-2.getfolderbyuid with: folder_uid: rest.folder_uid outputParameters: - type: object mapping: $. - method: PUT name: updatefolder description: Grafana Update Folder call: grafana-folders-2.updatefolder with: folder_uid: rest.folder_uid body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletefolder description: Grafana Delete Folder call: grafana-folders-2.deletefolder with: folder_uid: rest.folder_uid forceDeleteRules: rest.forceDeleteRules outputParameters: - type: object mapping: $. - path: /v1/folders/{folder-uid}/counts name: folders-folder-uid-counts description: REST surface for folders-folder_uid-counts. operations: - method: GET name: getfolderdescendantcounts description: Grafana Get Folder Descendant Counts call: grafana-folders-2.getfolderdescendantcounts with: folder_uid: rest.folder_uid outputParameters: - type: object mapping: $. - path: /v1/folders/{folder-uid}/move name: folders-folder-uid-move description: REST surface for folders-folder_uid-move. operations: - method: POST name: movefolder description: Grafana Move Folder call: grafana-folders-2.movefolder with: folder_uid: rest.folder_uid body: rest.body outputParameters: - type: object mapping: $. - path: /v1/folders/{folder-uid}/permissions name: folders-folder-uid-permissions description: REST surface for folders-folder_uid-permissions. operations: - method: GET name: getfolderpermissionlist description: Grafana Get Folder Permission List call: grafana-folders-2.getfolderpermissionlist with: folder_uid: rest.folder_uid outputParameters: - type: object mapping: $. - method: POST name: updatefolderpermissions description: Grafana Update Folder Permissions call: grafana-folders-2.updatefolderpermissions with: folder_uid: rest.folder_uid body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: grafana-folders-2-mcp port: 9090 transport: http description: MCP adapter for Grafana — Folders. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: grafana-get-folders description: Grafana Get Folders hints: readOnly: true destructive: false idempotent: true call: grafana-folders-2.getfolders with: limit: tools.limit page: tools.page parentUid: tools.parentUid permission: tools.permission outputParameters: - type: object mapping: $. - name: grafana-create-folder description: Grafana Create Folder hints: readOnly: false destructive: false idempotent: false call: grafana-folders-2.createfolder with: body: tools.body outputParameters: - type: object mapping: $. - name: grafana-get-folder-id description: Grafana Get Folder By ID hints: readOnly: true destructive: false idempotent: true call: grafana-folders-2.getfolderbyid with: folder_id: tools.folder_id outputParameters: - type: object mapping: $. - name: grafana-get-folder-uid description: Grafana Get Folder By UID hints: readOnly: true destructive: false idempotent: true call: grafana-folders-2.getfolderbyuid with: folder_uid: tools.folder_uid outputParameters: - type: object mapping: $. - name: grafana-update-folder description: Grafana Update Folder hints: readOnly: false destructive: false idempotent: true call: grafana-folders-2.updatefolder with: folder_uid: tools.folder_uid body: tools.body outputParameters: - type: object mapping: $. - name: grafana-delete-folder description: Grafana Delete Folder hints: readOnly: false destructive: true idempotent: true call: grafana-folders-2.deletefolder with: folder_uid: tools.folder_uid forceDeleteRules: tools.forceDeleteRules outputParameters: - type: object mapping: $. - name: grafana-get-folder-descendant-counts description: Grafana Get Folder Descendant Counts hints: readOnly: true destructive: false idempotent: true call: grafana-folders-2.getfolderdescendantcounts with: folder_uid: tools.folder_uid outputParameters: - type: object mapping: $. - name: grafana-move-folder description: Grafana Move Folder hints: readOnly: false destructive: false idempotent: false call: grafana-folders-2.movefolder with: folder_uid: tools.folder_uid body: tools.body outputParameters: - type: object mapping: $. - name: grafana-get-folder-permission-list description: Grafana Get Folder Permission List hints: readOnly: true destructive: false idempotent: true call: grafana-folders-2.getfolderpermissionlist with: folder_uid: tools.folder_uid outputParameters: - type: object mapping: $. - name: grafana-update-folder-permissions description: Grafana Update Folder Permissions hints: readOnly: false destructive: false idempotent: false call: grafana-folders-2.updatefolderpermissions with: folder_uid: tools.folder_uid body: tools.body outputParameters: - type: object mapping: $.