naftiko: 1.0.0-alpha2 info: label: Grafana — Search description: 'Grafana — Search. 13 operations. Lead operation: Grafana Search Result. Self-contained Naftiko capability covering one Grafana business surface.' tags: - Grafana - Search created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GRAFANA_API_KEY: GRAFANA_API_KEY capability: consumes: - type: http namespace: grafana-search baseUri: http://{defaultHost} description: Grafana — Search business capability. Self-contained, no shared references. resources: - name: access-control-assignments-search path: /access-control/assignments/search operations: - name: searchresult method: POST description: Grafana Search Result outputRawFormat: json outputParameters: - name: result type: object value: $. - name: anonymous-search path: /anonymous/search operations: - name: searchdevices method: GET description: Grafana Search Devices outputRawFormat: json outputParameters: - name: result type: object value: $. - name: dashboard-snapshots path: /dashboard/snapshots operations: - name: searchdashboardsnapshots method: GET description: Grafana Search Dashboard Snapshots outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: query in: query type: string description: Search Query - name: limit in: query type: integer description: Limit the number of returned results - name: orgs path: /orgs operations: - name: searchorganizations method: GET description: Grafana Search Organizations outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: page in: query type: integer - name: perpage in: query type: integer description: Number of items per page - name: name in: query type: string - 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: orgs-org_id-users-search path: /orgs/{org_id}/users/search operations: - name: searchorgusers method: GET description: Grafana Search Org Users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: org_id in: path type: integer required: true - name: playlists path: /playlists operations: - name: searchplaylists method: GET description: Grafana Search Playlists outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: query in: query type: string - name: limit in: query type: integer description: in:limit - name: query-history path: /query-history operations: - name: searchqueries method: GET description: Grafana Search Queries outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: datasourceUid in: query type: array description: List of data source UIDs to search for - name: searchString in: query type: string description: Text inside query or comments that is searched for - name: onlyStarred in: query type: boolean description: Flag indicating if only starred queries should be returned - name: sort in: query type: string description: Sort method - name: page in: query type: integer description: Use this parameter to access hits beyond limit. Numbering starts at 1. limit param acts as page size. - name: limit in: query type: integer description: Limit the number of returned results - name: from in: query type: integer description: From range for the query history search - name: to in: query type: integer description: To range for the query history search - name: search path: /search operations: - name: search method: GET description: Grafana Search outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: query in: query type: string description: Search Query - name: tag in: query type: array description: List of tags to search for - name: type in: query type: string description: Type to search for, dash-folder or dash-db - name: dashboardIds in: query type: array description: List of dashboard id’s to search for - name: dashboardUIDs in: query type: array description: List of dashboard uid’s to search for - name: folderIds in: query type: array description: List of folder id’s to search in for dashboards - name: folderUIDs in: query type: array description: List of folder UID’s to search in for dashboards - name: starred in: query type: boolean description: Flag indicating if only starred Dashboards should be returned - name: limit in: query type: integer description: Limit the number of returned results (max 5000) - name: page in: query type: integer description: Use this parameter to access hits beyond limit. Numbering starts at 1. limit param acts as page size. Only available in Grafana v6.2+. - name: permission in: query type: string description: Set to `Edit` to return dashboards/folders that the user can edit - name: sort in: query type: string description: Sort method; for listing all the possible sort methods use the search sorting endpoint. - name: deleted in: query type: boolean description: Flag indicating if only soft deleted Dashboards should be returned - name: serviceaccounts-search path: /serviceaccounts/search operations: - name: searchorgserviceaccountswithpaging method: GET description: Grafana Search Org Service Accounts With Paging outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Disabled in: query type: boolean - name: expiredTokens in: query type: boolean - name: query in: query type: string description: It will return results where the query value is contained in one of the name. - name: perpage in: query type: integer description: The default value is 1000. - name: page in: query type: integer description: The default value is 1. - name: teams-search path: /teams/search operations: - name: searchteams method: GET description: Grafana Search Teams outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: page in: query type: integer - name: perpage in: query type: integer description: Number of items per page - name: name in: query type: string - 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: accesscontrol in: query type: boolean - name: sort in: query type: string - 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: users path: /users operations: - name: searchusers method: GET description: Grafana Search Users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: perpage in: query type: integer description: Limit the maximum number of users to return per page - name: page in: query type: integer description: Page index for starting fetching users - name: users-search path: /users/search operations: - name: searchuserswithpaging method: GET description: Grafana Search Users With Paging outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: apikey key: Authorization value: '{{env.GRAFANA_API_KEY}}' placement: header exposes: - type: rest namespace: grafana-search-rest port: 8080 description: REST adapter for Grafana — Search. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/access-control/assignments/search name: access-control-assignments-search description: REST surface for access-control-assignments-search. operations: - method: POST name: searchresult description: Grafana Search Result call: grafana-search.searchresult outputParameters: - type: object mapping: $. - path: /v1/anonymous/search name: anonymous-search description: REST surface for anonymous-search. operations: - method: GET name: searchdevices description: Grafana Search Devices call: grafana-search.searchdevices outputParameters: - type: object mapping: $. - path: /v1/dashboard/snapshots name: dashboard-snapshots description: REST surface for dashboard-snapshots. operations: - method: GET name: searchdashboardsnapshots description: Grafana Search Dashboard Snapshots call: grafana-search.searchdashboardsnapshots with: query: rest.query limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/orgs name: orgs description: REST surface for orgs. operations: - method: GET name: searchorganizations description: Grafana Search Organizations call: grafana-search.searchorganizations with: page: rest.page perpage: rest.perpage name: rest.name query: rest.query outputParameters: - type: object mapping: $. - path: /v1/orgs/{org-id}/users/search name: orgs-org-id-users-search description: REST surface for orgs-org_id-users-search. operations: - method: GET name: searchorgusers description: Grafana Search Org Users call: grafana-search.searchorgusers with: org_id: rest.org_id outputParameters: - type: object mapping: $. - path: /v1/playlists name: playlists description: REST surface for playlists. operations: - method: GET name: searchplaylists description: Grafana Search Playlists call: grafana-search.searchplaylists with: query: rest.query limit: rest.limit outputParameters: - type: object mapping: $. - path: /v1/query-history name: query-history description: REST surface for query-history. operations: - method: GET name: searchqueries description: Grafana Search Queries call: grafana-search.searchqueries with: datasourceUid: rest.datasourceUid searchString: rest.searchString onlyStarred: rest.onlyStarred sort: rest.sort page: rest.page limit: rest.limit from: rest.from to: rest.to outputParameters: - type: object mapping: $. - path: /v1/search name: search description: REST surface for search. operations: - method: GET name: search description: Grafana Search call: grafana-search.search with: query: rest.query tag: rest.tag type: rest.type dashboardIds: rest.dashboardIds dashboardUIDs: rest.dashboardUIDs folderIds: rest.folderIds folderUIDs: rest.folderUIDs starred: rest.starred limit: rest.limit page: rest.page permission: rest.permission sort: rest.sort deleted: rest.deleted outputParameters: - type: object mapping: $. - path: /v1/serviceaccounts/search name: serviceaccounts-search description: REST surface for serviceaccounts-search. operations: - method: GET name: searchorgserviceaccountswithpaging description: Grafana Search Org Service Accounts With Paging call: grafana-search.searchorgserviceaccountswithpaging with: Disabled: rest.Disabled expiredTokens: rest.expiredTokens query: rest.query perpage: rest.perpage page: rest.page outputParameters: - type: object mapping: $. - path: /v1/teams/search name: teams-search description: REST surface for teams-search. operations: - method: GET name: searchteams description: Grafana Search Teams call: grafana-search.searchteams with: page: rest.page perpage: rest.perpage name: rest.name query: rest.query accesscontrol: rest.accesscontrol sort: rest.sort 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-search.searchteamgroups with: teamId: rest.teamId page: rest.page perpage: rest.perpage query: rest.query name: rest.name outputParameters: - type: object mapping: $. - path: /v1/users name: users description: REST surface for users. operations: - method: GET name: searchusers description: Grafana Search Users call: grafana-search.searchusers with: perpage: rest.perpage page: rest.page outputParameters: - type: object mapping: $. - path: /v1/users/search name: users-search description: REST surface for users-search. operations: - method: GET name: searchuserswithpaging description: Grafana Search Users With Paging call: grafana-search.searchuserswithpaging outputParameters: - type: object mapping: $. - type: mcp namespace: grafana-search-mcp port: 9090 transport: http description: MCP adapter for Grafana — Search. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: grafana-search-result description: Grafana Search Result hints: readOnly: true destructive: false idempotent: false call: grafana-search.searchresult outputParameters: - type: object mapping: $. - name: grafana-search-devices description: Grafana Search Devices hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchdevices outputParameters: - type: object mapping: $. - name: grafana-search-dashboard-snapshots description: Grafana Search Dashboard Snapshots hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchdashboardsnapshots with: query: tools.query limit: tools.limit outputParameters: - type: object mapping: $. - name: grafana-search-organizations description: Grafana Search Organizations hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchorganizations with: page: tools.page perpage: tools.perpage name: tools.name query: tools.query outputParameters: - type: object mapping: $. - name: grafana-search-org-users description: Grafana Search Org Users hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchorgusers with: org_id: tools.org_id outputParameters: - type: object mapping: $. - name: grafana-search-playlists description: Grafana Search Playlists hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchplaylists with: query: tools.query limit: tools.limit outputParameters: - type: object mapping: $. - name: grafana-search-queries description: Grafana Search Queries hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchqueries with: datasourceUid: tools.datasourceUid searchString: tools.searchString onlyStarred: tools.onlyStarred sort: tools.sort page: tools.page limit: tools.limit from: tools.from to: tools.to outputParameters: - type: object mapping: $. - name: grafana-search description: Grafana Search hints: readOnly: true destructive: false idempotent: true call: grafana-search.search with: query: tools.query tag: tools.tag type: tools.type dashboardIds: tools.dashboardIds dashboardUIDs: tools.dashboardUIDs folderIds: tools.folderIds folderUIDs: tools.folderUIDs starred: tools.starred limit: tools.limit page: tools.page permission: tools.permission sort: tools.sort deleted: tools.deleted outputParameters: - type: object mapping: $. - name: grafana-search-org-service-accounts description: Grafana Search Org Service Accounts With Paging hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchorgserviceaccountswithpaging with: Disabled: tools.Disabled expiredTokens: tools.expiredTokens query: tools.query perpage: tools.perpage page: tools.page outputParameters: - type: object mapping: $. - name: grafana-search-teams description: Grafana Search Teams hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchteams with: page: tools.page perpage: tools.perpage name: tools.name query: tools.query accesscontrol: tools.accesscontrol sort: tools.sort outputParameters: - type: object mapping: $. - name: grafana-search-team-groups description: Grafana Search Team Groups hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchteamgroups with: teamId: tools.teamId page: tools.page perpage: tools.perpage query: tools.query name: tools.name outputParameters: - type: object mapping: $. - name: grafana-search-users description: Grafana Search Users hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchusers with: perpage: tools.perpage page: tools.page outputParameters: - type: object mapping: $. - name: grafana-search-users-paging description: Grafana Search Users With Paging hints: readOnly: true destructive: false idempotent: true call: grafana-search.searchuserswithpaging outputParameters: - type: object mapping: $.