The Grafana connector lets your AI agent act in each user's Grafana account. Each user connects their own Grafana access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 36 tools.
- Tools
- 36
- What they doRead · write · destructive
- 28 · 8 · 028 read8 write0 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Grafana connection
In AgentKit > Connections, create a Grafana connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'grafana'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Grafana:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'grafana_current_user_get',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "grafana"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Grafana:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="grafana_current_user_get",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Grafana credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolgrafana_alert_group_listList Grafana Alertmanager alerts grouped the way notification policies group them.Read-onlyList Alert Groups
List Grafana Alertmanager alerts grouped the way notification policies group them. Returns an array of groups, each with its group labels, receiver and the alerts in it. Use grafana_alert_group_list to see alerts as they are batched into notifications. Use grafana_alert_list for a flat list of alerts.
Inputs
activeboolean- Include active alerts. Defaults to true.default
true filterarray- Label matchers to filter alerts, each in Prometheus matcher syntax. Example: ["severity=\"critical\"", "team=~\"api|web\""].
inhibitedboolean- Include inhibited alerts. Defaults to true.default
true receiverstring- Regular expression matching the contact point (receiver) name to filter alerts by. Example: oncall-.*.
silencedboolean- Include silenced alerts. Defaults to true.default
true
grafana_alert_listList alert instances currently held by Grafana's built-in Alertmanager, filtered by state, labels or contact point.Read-onlyList Alerts
List alert instances currently held by Grafana's built-in Alertmanager, filtered by state, labels or contact point. Returns an array of alerts with labels, annotations (such as summary), startsAt, endsAt, status (state, silencedBy, inhibitedBy), receivers and generatorURL. Use grafana_alert_list to see what is firing right now. Use grafana_alert_group_list for the same alerts grouped by notification policy, and grafana_alert_rule_status_list for rule-level state including pending rules.
Inputs
activeboolean- Include active alerts. Defaults to true.default
true filterarray- Label matchers to filter alerts, each in Prometheus matcher syntax. Example: ["severity=\"critical\"", "team=~\"api|web\""].
inhibitedboolean- Include inhibited alerts. Defaults to true.default
true receiverstring- Regular expression matching the contact point (receiver) name to filter alerts by. Example: oncall-.*.
silencedboolean- Include silenced alerts. Defaults to true.default
true
grafana_alert_rule_getGet the full definition of one Grafana-managed alert rule by UID.Read-onlyGet Alert Rule
Get the full definition of one Grafana-managed alert rule by UID. Returns the rule with its title, condition, queries (data), for duration, labels, annotations, folder and rule group, and notification settings. Use grafana_alert_rule_get to read how a rule is built. Use grafana_alert_rule_status_list to find rule UIDs and see their current state.
Inputs
rule_uidstringrequired- UID of the alert rule, from grafana_alert_rule_status_list or the rule's URL in Grafana. Example: ddbhspyaw3k00e.
grafana_alert_rule_status_listList Grafana-managed alert rules with their current evaluation state, health and alert instances, grouped by folder and rule group.Read-onlyList Alert Rule Statuses
List Grafana-managed alert rules with their current evaluation state, health and alert instances, grouped by folder and rule group. Returns data.groups, each with its rules (name, uid, state, health, lastEvaluation, labels, annotations and alerts), plus totals and groupNextToken for paging. Use grafana_alert_rule_status_list to see which rules are firing, pending or erroring. Use grafana_alert_rule_get for one rule's full definition and grafana_alert_list for the Alertmanager's view of firing alerts.
Inputs
dashboard_uidstring- Only return rules linked to this dashboard UID. Example: cIBgcSjkk.
folder_uidstring- Only return rules in this folder UID. Example: nErXDvCkzz.
group_limitinteger- Maximum number of rule groups to return in this page. Example: 50.
group_next_tokenstring- Pagination token from the previous response's groupNextToken. Example: eyJmIjoibkVyWER2Q2t6eiJ9.
healtharray- Only return rules with this health: ok, error or nodata. Example: ["error"].
limit_alertsinteger- Maximum number of alert instances returned per rule. Example: 10.
panel_idinteger- Only return rules linked to this panel ID; requires Dashboard UID. Example: 2.
receiver_namestring- Only return rules that notify this contact point. Example: oncall-email.
rule_grouparray- Only return rules in these rule groups. Example: ["api-alerts"].
rule_name_searchstring- Case-insensitive substring to match against rule titles. Example: latency.
rule_typestring- Only return alerting or recording rules.one of
alertingrecording statearray- Only return rules in these states: normal (or inactive), pending, alerting (or firing), nodata, error, recovering. Example: ["firing", "pending"].
grafana_annotation_getGet one Grafana annotation by ID.Read-onlyGet Annotation
Get one Grafana annotation by ID. Returns the annotation's id, dashboardUID, panelId, time, timeEnd, text, tags and author. Use grafana_annotation_get to read a single annotation. Use grafana_annotation_list to search annotations by time, dashboard or tag.
Inputs
annotation_idstringrequired- ID of the annotation to retrieve, from grafana_annotation_list. Example: 1234.
grafana_annotation_listList Grafana annotations, filtered by time range, dashboard, panel, alert rule, user, type or tags.Read-onlyList Annotations
List Grafana annotations, filtered by time range, dashboard, panel, alert rule, user, type or tags. Returns an array of annotations with id, dashboardUID, panelId, time, timeEnd, text, tags and the user who created them. Use grafana_annotation_list to find deployment markers, incidents or alert events in a time window. Use grafana_annotation_get for one annotation and grafana_annotation_tag_list to discover tags.
Inputs
alert_uidstring- Only return annotations created by the alert rule with this UID. Example: ddbhspyaw3k00e.
dashboard_uidstring- Only return annotations on this dashboard UID. Example: cIBgcSjkk.
frominteger- Only return annotations after this time, in epoch milliseconds. Example: 1735689600000.
limitinteger- Maximum number of annotations to return. Example: 100.
match_anyboolean- If true, match annotations with any of the tags; if false, they must have all of them.
panel_idinteger- Only return annotations on this panel ID (use with Dashboard UID). Example: 2.
tagsarray- Only return organization annotations with these tags. Example: ["deploy", "api"].
tointeger- Only return annotations before this time, in epoch milliseconds. Example: 1735776000000.
typestring- Return only alert annotations (alert) or only user-created annotations (annotation).one of
alertannotation user_uidstring- Only return annotations created by the user with this UID. Example: fdbhrt9dgknpcb.
grafana_annotation_tag_listList the tags used on Grafana annotations, with how often each is used, optionally filtered by text.Read-onlyList Annotation Tags
List the tags used on Grafana annotations, with how often each is used, optionally filtered by text. Returns result.tags, an array of tag and count pairs. Use grafana_annotation_tag_list to discover tags before filtering grafana_annotation_list.
Inputs
limitinteger- Maximum number of tags to return. Defaults to 100.
tagstring- Text to filter tag names by. Example: deploy.
grafana_current_user_getGet the Grafana user or service account that the connection's token authenticates as.Read-onlyGet Current User
Get the Grafana user or service account that the connection's token authenticates as. Returns id, uid, login, email, name, orgId, isGrafanaAdmin and theme. Use grafana_current_user_get to check which identity and organization the connection uses. Use grafana_org_get for organization details.
Inputs
This tool takes no inputs.
grafana_dashboard_getGet one Grafana dashboard by UID through the dashboard.grafana.app API.Read-onlyGet Dashboard
Get one Grafana dashboard by UID through the dashboard.grafana.app API. Returns the Dashboard object: metadata (name, resourceVersion, generation, folder annotation) and spec, the full dashboard JSON with panels, variables and time settings. Use grafana_dashboard_get to read or copy a dashboard's definition before grafana_dashboard_update. Use grafana_dashboard_search to find the UID first.
Inputs
dashboard_uidstringrequired- UID of the dashboard to retrieve. In the /apis endpoints this is the object's metadata.name; it is the uid shown in the dashboard URL (/d/<uid>/...) and in grafana_dashboard_search results. Example: cIBgcSjkk.
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
api_versionstring- Version of the dashboard.grafana.app API to call. v1beta1 is served by Grafana 12 and later; v1 is the version shown in the latest Grafana docs. Defaults to v1beta1.one of
v1beta1v1defaultv1beta1
grafana_dashboard_listList dashboards in a Grafana namespace through the dashboard.grafana.app API, one page at a time.Read-onlyList Dashboards
List dashboards in a Grafana namespace through the dashboard.grafana.app API, one page at a time. Returns a DashboardList with items (each with metadata.name as the dashboard UID, metadata.annotations and the full spec) and metadata.continue for the next page. Use grafana_dashboard_list to page through all dashboards. Use grafana_dashboard_search to find dashboards by title or tag, and grafana_dashboard_get for a single dashboard.
Inputs
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
api_versionstring- Version of the dashboard.grafana.app API to call. v1beta1 is served by Grafana 12 and later; v1 is the version shown in the latest Grafana docs. Defaults to v1beta1.one of
v1beta1v1defaultv1beta1 continue_tokenstring- Pagination token from the previous response's metadata.continue field. Pass it with the same filters to fetch the next page; omit it for the first page.
label_selectorstring- Kubernetes-style label selector to filter dashboards by their labels. Example: team=platform.
limitinteger- Maximum number of dashboards to return in one page. If more exist, the response's metadata.continue holds a token for the next page. Example: 50.
grafana_dashboard_searchSearch dashboards and folders in Grafana by title, tag, folder or starred status.Read-onlySearch Dashboards and Folders
Search dashboards and folders in Grafana by title, tag, folder or starred status. Returns a list of hits with uid, title, type (dash-db or dash-folder), url, tags and folder uid/title. Use grafana_dashboard_search to find dashboards or folders by name or tag. Use grafana_dashboard_list to page through every dashboard in a namespace, and grafana_dashboard_get to read one dashboard's full JSON.
Inputs
dashboard_uidsarray- Only return dashboards with these UIDs. Example: ["cIBgcSjkk"].
folder_uidsarray- Only return dashboards inside these folder UIDs. Pass an empty string to search top-level folders. Example: ["nErXDvCkzz"].
limitinteger- Maximum number of results per page (max 5000). Example: 100.
pageinteger- Page number, starting at 1, used with limit as the page size. Example: 2.
permissionstring- Set to Edit to return only dashboards and folders the caller can edit. Defaults to View.one of
ViewEdit querystring- Text to match against dashboard and folder titles. Example: api latency.
sortstring- Sort order of results: alpha-asc or alpha-desc. Defaults to alpha-asc.one of
alpha-ascalpha-desc starredboolean- If true, only return dashboards the authenticated user or service account has starred.
tagarray- Only return dashboards that have all of these tags. Example: ["production", "api"].
typestring- Restrict results to folders (dash-folder) or dashboards (dash-db). Omit to return both.one of
dash-dbdash-folder
grafana_datasource_getGet one Grafana data source by UID.Read-onlyGet Data Source
Get one Grafana data source by UID. Returns the data source's uid, name, type, url, access mode, database, jsonData settings and readOnly flag (secrets are never returned). Use grafana_datasource_get to inspect one data source's configuration. Use grafana_datasource_list to find UIDs and grafana_datasource_health_check to test connectivity.
Inputs
datasource_uidstringrequired- UID of the data source. Find it with grafana_datasource_list or in the data source's settings URL (/connections/datasources/edit/<uid>). Example: P8E80F9AEF21F6940.
grafana_datasource_health_checkRun the plugin health check for one Grafana data source, the same check as Save & test in the UI.Read-onlyCheck Data Source Health
Run the plugin health check for one Grafana data source, the same check as Save & test in the UI. Returns a status (OK or ERROR) and a message describing the result. Use grafana_datasource_health_check to confirm a data source can reach its backend. Use grafana_datasource_get to read its settings.
Inputs
datasource_uidstringrequired- UID of the data source to check. Example: P8E80F9AEF21F6940.
grafana_datasource_listList all data sources configured in the current Grafana organization.Read-onlyList Data Sources
List all data sources configured in the current Grafana organization. Returns an array of data sources with uid, name, type (e.g. prometheus, loki), url, access mode and isDefault. Use grafana_datasource_list to find a data source UID for grafana_datasource_query. Use grafana_datasource_get for one data source's full settings.
Inputs
This tool takes no inputs.
grafana_folder_getGet one Grafana folder by UID through the folder.grafana.app API.Read-onlyGet Folder
Get one Grafana folder by UID through the folder.grafana.app API. Returns the Folder object: metadata (name, resourceVersion, parent folder annotation) and spec (title, description). Use grafana_folder_get to read a folder's title and parent. Use grafana_folder_list or grafana_dashboard_search to find folder UIDs.
Inputs
folder_uidstringrequired- UID of the folder to retrieve (its metadata.name, also shown in the folder URL /dashboards/f/<uid>/). Example: nErXDvCkzz.
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
api_versionstring- Version of the folder.grafana.app API to call. v1 is documented as available in Grafana 12 and later; v1beta1 is the earlier version. Defaults to v1.one of
v1v1beta1defaultv1
grafana_folder_listList folders in a Grafana namespace through the folder.grafana.app API, one page at a time.Read-onlyList Folders
List folders in a Grafana namespace through the folder.grafana.app API, one page at a time. Returns a FolderList with items (metadata.name as the folder UID, spec.title, parent folder annotation) and metadata.continue for the next page. Use grafana_folder_list to browse all folders. Use grafana_dashboard_search with type dash-folder to find folders by title, and grafana_folder_get for one folder.
Inputs
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
api_versionstring- Version of the folder.grafana.app API to call. v1 is documented as available in Grafana 12 and later; v1beta1 is the earlier version. Defaults to v1.one of
v1v1beta1defaultv1 continue_tokenstring- Pagination token from the previous response's metadata.continue field. Pass it with the same filters to fetch the next page; omit it for the first page.
label_selectorstring- Kubernetes-style label selector to filter folders by their labels. Example: team=platform.
limitinteger- Maximum number of folders to return in one page. If more exist, the response's metadata.continue holds a token for the next page. Example: 50.
grafana_library_element_getGet one Grafana library panel by UID.Read-onlyGet Library Panel
Get one Grafana library panel by UID. Returns the element's uid, name, kind, type, description, folderUid, version, model (the panel JSON) and meta such as connectedDashboards. Use grafana_library_element_get to read a reusable panel's definition. Use grafana_library_element_list to find UIDs.
Inputs
library_element_uidstringrequired- UID of the library panel, from grafana_library_element_list. Example: V--OrYHnz.
grafana_library_element_listList library panels (reusable panels shared across dashboards) in Grafana, with search, folder filter and paging.Read-onlyList Library Panels
List library panels (reusable panels shared across dashboards) in Grafana, with search, folder filter and paging. Returns result.elements, each with uid, name, kind, type, description, folderUid and model, plus totalCount, page and perPage. Use grafana_library_element_list to find reusable panels. Use grafana_library_element_get to read one panel's full model.
Inputs
folder_filter_uidsstring- Comma-separated folder UIDs to filter by. Example: nErXDvCkzz,abc123.
pageinteger- Page number, starting at 1. Defaults to 1.
per_pageinteger- Number of results per page. Defaults to 100.
search_stringstring- Text matched against library panel names and descriptions. Example: latency.
sort_directionstring- Sort by name ascending (alpha-asc) or descending (alpha-desc).one of
alpha-ascalpha-desc type_filterstring- Comma-separated panel types to filter by. Example: timeseries,stat.
grafana_org_getGet the Grafana organization the token belongs to.Read-onlyGet Current Organization
Get the Grafana organization the token belongs to. Returns the organization's id, name and address. Use grafana_org_get to confirm which organization the connection works in. Use grafana_org_user_list for its members.
Inputs
This tool takes no inputs.
grafana_org_user_listList users in the current Grafana organization, optionally filtered by text.Read-onlyList Organization Users
List users in the current Grafana organization, optionally filtered by text. Requires an org admin token. Returns an array of users with userId, uid, login, email, name, role (Viewer, Editor or Admin) and lastSeenAt. Use grafana_org_user_list to look up people and their roles. Use grafana_team_member_list for a team's members.
Inputs
limitinteger- Maximum number of users to return. Example: 100.
querystring- Text matched against login, email and name. Example: jane.
grafana_public_dashboard_listList dashboards that are shared externally (public dashboards) in the current Grafana organization.Read-onlyList Shared Dashboards
List dashboards that are shared externally (public dashboards) in the current Grafana organization. Returns publicDashboards, each with uid, accessToken, title, dashboardUid, slug and isEnabled, plus paging totals. Use grafana_public_dashboard_list to audit which dashboards are reachable without login.
Inputs
This tool takes no inputs.
grafana_silence_getGet one silence from Grafana's built-in Alertmanager by ID.Read-onlyGet Silence
Get one silence from Grafana's built-in Alertmanager by ID. Returns the silence's id, matchers, startsAt, endsAt, createdBy, comment and status. Use grafana_silence_get to check a single silence. Use grafana_silence_list to find silence IDs.
Inputs
silence_idstringrequired- ID of the silence, from grafana_silence_list or grafana_silence_create. Example: 7d8c5f0a-1b2c-4d3e-9f8a-0b1c2d3e4f5a.
grafana_silence_listList silences in Grafana's built-in Alertmanager, optionally filtered by label matchers.Read-onlyList Silences
List silences in Grafana's built-in Alertmanager, optionally filtered by label matchers. Returns an array of silences with id, matchers, startsAt, endsAt, createdBy, comment and status (active, pending or expired). Use grafana_silence_list to see which alerts are muted. Use grafana_silence_get for one silence and grafana_silence_create to add one.
Inputs
filterarray- Label matchers to filter silences, in Prometheus matcher syntax. Example: ["alertname=\"HighLatency\""].
grafana_snapshot_getGet one Grafana dashboard snapshot by key, including the frozen dashboard JSON and data.Read-onlyGet Dashboard Snapshot
Get one Grafana dashboard snapshot by key, including the frozen dashboard JSON and data. Returns meta (created, expires, url) and dashboard, the snapshot's dashboard model with embedded data. Use grafana_snapshot_get to read what a shared snapshot captured. Use grafana_snapshot_list to find snapshot keys.
Inputs
snapshot_keystringrequired- Key of the snapshot, from grafana_snapshot_list or the snapshot URL (/dashboard/snapshot/<key>). Example: Jt9Qk4PQ3EHqOzw8ZzDpLqB2C0nVt6Zu.
grafana_snapshot_listList dashboard snapshots in the current Grafana organization, optionally filtered by name.Read-onlyList Dashboard Snapshots
List dashboard snapshots in the current Grafana organization, optionally filtered by name. Returns an array of snapshots with id, name, key, created, expires and external flags. Use grafana_snapshot_list to find a snapshot key. Use grafana_snapshot_get to read a snapshot's dashboard data.
Inputs
limitinteger- Maximum number of snapshots to return. Defaults to 1000.
querystring- Text matched against snapshot names. Example: incident.
grafana_team_getGet one Grafana team by ID.Read-onlyGet Team
Get one Grafana team by ID. Returns the team's id, uid, name, email, avatarUrl and memberCount. Use grafana_team_get to read a team's details. Use grafana_team_search to find team IDs and grafana_team_member_list for its members.
Inputs
team_idstringrequired- Numeric ID of the team, from grafana_team_search. Example: 7.
grafana_team_member_listList the members of one Grafana team.Read-onlyList Team Members
List the members of one Grafana team. Returns an array of members with userId, login, email, name and their team permission. Use grafana_team_member_list to see who is on a team. Use grafana_org_user_list for everyone in the organization. Requires a team ID from grafana_team_search.
Inputs
team_idstringrequired- Numeric ID of the team, from grafana_team_search. Example: 7.
grafana_team_searchSearch teams in the current Grafana organization by name, with paging.Read-onlySearch Teams
Search teams in the current Grafana organization by name, with paging. Returns totalCount, page, perPage and teams, each with id, uid, name, email and memberCount. Use grafana_team_search to find a team ID. Use grafana_team_get for one team and grafana_team_member_list for its members.
Inputs
namestring- Return only the team with exactly this name. Example: Platform.
pageinteger- Page number, starting at 1. Defaults to 1.
perpageinteger- Teams per page. Defaults to 1000. Example: 50.
querystring- Return teams whose name contains this text. Example: platform.
grafana_annotation_createCreate a Grafana annotation (a point or a time region) on a dashboard panel, or an organization-wide annotation when no dashboard is given.WriteCreate Annotation
Create a Grafana annotation (a point or a time region) on a dashboard panel, or an organization-wide annotation when no dashboard is given. Returns a message and the new annotation's id. Use grafana_annotation_create to mark deployments, incidents or other events on graphs. Use grafana_annotation_update to change an existing annotation.
Inputs
textstringrequired- Annotation text shown on hover; may contain HTML links. Example: Deployed api v2.3.1.
dashboard_uidstring- UID of the dashboard to attach the annotation to. Leave blank for an organization annotation. Example: cIBgcSjkk.
dataobject- Optional free-form JSON data stored with the annotation. Example: {"version": "2.3.1"}.
panel_idinteger- ID of the panel on that dashboard to attach the annotation to. Example: 2.
tagsarray- Tags for the annotation. Example: ["deploy", "api"].
timeinteger- Event time in epoch milliseconds. Defaults to now if omitted. Example: 1735689600000.
time_endinteger- End time in epoch milliseconds, which turns the annotation into a region. Example: 1735693200000.
grafana_annotation_updateUpdate one or more fields of a Grafana annotation: text, tags, time, time end or data.WriteUpdate Annotation
Update one or more fields of a Grafana annotation: text, tags, time, time end or data. Fields left blank are not changed. Returns a confirmation message. Use grafana_annotation_update to correct or extend an existing annotation. Use grafana_annotation_create for a new one. Requires the annotation ID from grafana_annotation_list.
Inputs
annotation_idstringrequired- ID of the annotation to update, from grafana_annotation_list. Example: 1234.
dataobject- New free-form JSON data. Example: {"version": "2.3.2"}.
tagsarray- New full list of tags; replaces the existing tags. Example: ["deploy", "hotfix"].
textstring- New annotation text. Example: Deployed api v2.3.2 (hotfix).
timeinteger- New event time in epoch milliseconds. Example: 1735689600000.
time_endinteger- New end time in epoch milliseconds for a region annotation. Example: 1735693200000.
grafana_dashboard_createCreate a dashboard in a Grafana namespace through the dashboard.grafana.app API, optionally inside a folder.WriteCreate Dashboard
Create a dashboard in a Grafana namespace through the dashboard.grafana.app API, optionally inside a folder. Returns the created Dashboard object with metadata.name (the dashboard UID), resourceVersion and spec. Use grafana_dashboard_create for a new dashboard. Use grafana_dashboard_update to change an existing one. Requires a folder UID from grafana_folder_list or grafana_dashboard_search to place it in a folder.
Inputs
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
specobjectrequired- Dashboard JSON model: the same JSON you see in Grafana's dashboard settings → JSON Model. It needs a title and usually holds panels, templating, time and schemaVersion; do not include id or uid here (the UID comes from the Dashboard UID input). Example: {"title": "API Latency", "panels": [], "schemaVersion": 41, "time": {"from": "now-6h", "to": "now"}}.
api_versionstring- Version of the dashboard.grafana.app API to call. v1beta1 is served by Grafana 12 and later; v1 is the version shown in the latest Grafana docs. Defaults to v1beta1.one of
v1beta1v1defaultv1beta1 dashboard_uidstring- UID to give the new dashboard (its metadata.name). Up to 40 letters, digits, '-' or '_'. Leave blank to let Grafana generate one with the 'Name Prefix' input or a default prefix. Example: api-latency.
folder_uidstring- UID of the folder to create the dashboard in (sets the grafana.app/folder annotation). Leave blank for the root (General) level. Example: nErXDvCkzz.
generate_namestring- Prefix for a server-generated UID (metadata.generateName), used only when Dashboard UID is blank. Defaults to 'dash-' if both are blank. Example: api-.
grafana_dashboard_updateReplace a Grafana dashboard's JSON model through the dashboard.grafana.app API, optionally moving it to another folder and recording a version message.WriteUpdate Dashboard
Replace a Grafana dashboard's JSON model through the dashboard.grafana.app API, optionally moving it to another folder and recording a version message. Returns the updated Dashboard object with the new resourceVersion and generation. Use grafana_dashboard_update to change an existing dashboard; it replaces the whole spec, so start from grafana_dashboard_get. Use grafana_dashboard_create for a new dashboard. Requires the dashboard UID and its current JSON from grafana_dashboard_get.
- Idempotent
Inputs
dashboard_uidstringrequired- UID of the dashboard to update. In the /apis endpoints this is the object's metadata.name; it is the uid shown in the dashboard URL (/d/<uid>/...) and in grafana_dashboard_search results. Example: cIBgcSjkk.
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
specobjectrequired- The complete new dashboard JSON model. This replaces the existing spec, so send every panel and setting you want to keep. the same JSON you see in Grafana's dashboard settings → JSON Model. It needs a title and usually holds panels, templating, time and schemaVersion; do not include id or uid here (the UID comes from the Dashboard UID input). Example: {"title": "API Latency", "panels": [], "schemaVersion": 41, "time": {"from": "now-6h", "to": "now"}}.
api_versionstring- Version of the dashboard.grafana.app API to call. v1beta1 is served by Grafana 12 and later; v1 is the version shown in the latest Grafana docs. Defaults to v1beta1.one of
v1beta1v1defaultv1beta1 folder_uidstring- UID of the folder the dashboard should be in (grafana.app/folder annotation). This is a full replace: pass the current folder UID to keep the dashboard where it is, or leave blank to put it at the root level. Example: nErXDvCkzz.
messagestring- Commit message saved in the dashboard's version history (grafana.app/message annotation). Example: Add error-rate panel.
grafana_datasource_queryRun one or more queries against Grafana data sources (Prometheus, Loki, SQL and others), including server-side expressions, over a time range.WriteQuery Data Sources
Run one or more queries against Grafana data sources (Prometheus, Loki, SQL and others), including server-side expressions, over a time range. Returns results keyed by refId, each with frames of fields and values. Use grafana_datasource_query to fetch metric, log or table data. Use grafana_alert_rule_status_list for alert rule state and grafana_dashboard_get for the queries a dashboard uses. Requires data source UIDs and types from grafana_datasource_list.
Inputs
fromstringrequired- Start of the time range: epoch milliseconds as a string, or a relative Grafana time such as now-1h. Example: now-1h.
queriesarrayrequired- Queries to run. Each query needs a refId (a short label such as A), a datasource object with the data source's uid (and type), and the query fields that data source type expects, such as expr for Prometheus or Loki, or rawSql for SQL data sources. intervalMs and maxDataPoints are optional. Example: [{"refId": "A", "datasource": {"uid": "P8E80F9AEF21F6940", "type": "prometheus"}, "expr": "sum(rate(http_requests_total[5m]))", "intervalMs": 60000, "maxDataPoints": 500}].
tostringrequired- End of the time range: epoch milliseconds as a string, or a relative Grafana time such as now. Example: now.
debugboolean- If true, Grafana adds debugging information to the response.
grafana_folder_createCreate a folder in a Grafana namespace through the folder.grafana.app API, optionally nested under a parent folder.WriteCreate Folder
Create a folder in a Grafana namespace through the folder.grafana.app API, optionally nested under a parent folder. Returns the created Folder object with metadata.name (the folder UID) and spec.title. Use grafana_folder_create for a new folder. Use grafana_folder_update to rename or move an existing one.
Inputs
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
titlestringrequired- Title of the new folder. Example: Platform Team.
api_versionstring- Version of the folder.grafana.app API to call. v1 is documented as available in Grafana 12 and later; v1beta1 is the earlier version. Defaults to v1.one of
v1v1beta1defaultv1 descriptionstring- Optional folder description. Example: Dashboards owned by the platform team.
folder_uidstring- UID to give the new folder (its metadata.name). Up to 40 letters, digits, '-' or '_'. Leave blank to let Grafana generate one. Example: platform-team.
parent_folder_uidstring- UID of an existing folder to create this one inside (grafana.app/folder annotation; needs nested folders). Leave blank for a top-level folder. Example: nErXDvCkzz.
grafana_folder_updateReplace a Grafana folder's title, description and parent through the folder.grafana.app API.WriteUpdate Folder
Replace a Grafana folder's title, description and parent through the folder.grafana.app API. Returns the updated Folder object with the new resourceVersion. Use grafana_folder_update to rename or move a folder; it replaces the whole folder, so pass the current parent folder to keep a nested folder in place. Use grafana_folder_create for a new folder. Requires the folder UID from grafana_folder_list or grafana_folder_get.
- Idempotent
Inputs
folder_uidstringrequired- UID of the folder to update (its metadata.name, also shown in the folder URL /dashboards/f/<uid>/). Example: nErXDvCkzz.
namespacestringrequired- Grafana API namespace that scopes the request to an organization or stack. Use 'default' for the default organization on self-managed Grafana, 'org-<org_id>' for another organization (e.g. org-2), or 'stacks-<stack_id>' on Grafana Cloud (the stack ID is the instance ID shown in the Grafana Cloud portal under your stack's Details). Example: default.
titlestringrequired- New title for the folder. Example: Platform Team (prod).
api_versionstring- Version of the folder.grafana.app API to call. v1 is documented as available in Grafana 12 and later; v1beta1 is the earlier version. Defaults to v1.one of
v1v1beta1defaultv1 descriptionstring- Folder description after the update. Leave blank to clear it. Example: Dashboards owned by the platform team.
parent_folder_uidstring- UID of the folder this one should sit under (grafana.app/folder annotation). This is a full replace: pass the current parent to keep a nested folder in place, a different UID to move it, or leave blank for the top level. Example: nErXDvCkzz.
grafana_silence_createCreate a silence in Grafana's built-in Alertmanager that mutes matching alerts for a time window, or update an existing silence by passing its ID.WriteCreate Silence
Create a silence in Grafana's built-in Alertmanager that mutes matching alerts for a time window, or update an existing silence by passing its ID. Returns the silence ID. Use grafana_silence_create to mute alerts during maintenance or while an incident is handled. Use grafana_silence_list to see existing silences.
Inputs
commentstringrequired- Reason for the silence. Example: Planned database maintenance.
created_bystringrequired- Name of the person or system creating the silence. Example: oncall-bot.
ends_atstringrequired- When the silence ends, as an RFC 3339 timestamp. Must be after Starts At. Example: 2026-10-14T10:00:00Z.
matchersarrayrequired- Label matchers that select which alerts to mute; an alert is silenced when it matches all of them. Each matcher has a label name, a value, isRegex (true to treat the value as a regular expression) and isEqual (false to negate the match; defaults to true). Example: [{"name": "alertname", "value": "HighLatency", "isRegex": false, "isEqual": true}].
starts_atstringrequired- When the silence starts, as an RFC 3339 timestamp. Example: 2026-10-14T08:00:00Z.
silence_idstring- ID of an existing silence to update instead of creating a new one. Leave blank to create. Example: 7d8c5f0a-1b2c-4d3e-9f8a-0b1c2d3e4f5a.
No tools match.