diff --git a/src/content/docs/docs/alerts/expressions.mdx b/src/content/docs/docs/alerts/expressions.mdx
index 4e1c017c..62912109 100644
--- a/src/content/docs/docs/alerts/expressions.mdx
+++ b/src/content/docs/docs/alerts/expressions.mdx
@@ -21,7 +21,7 @@ Alert expressions support three operations:
A math expression takes the time series or numbers returned by a query or expression and transforms them with mathematical operations or functions.
-
+
**Input:** any mathematical operation to apply to the data returned from other queries or expressions. Reference queries and expressions by their letter, prefixed with a dollar sign, for example `$A`.
@@ -96,11 +96,11 @@ Reduce takes the time series or numbers returned by a query or expression and tu
- **Reduction function:** select the function to apply: `mean()`, `max()`, `min()`, `sum()`, `last()`, or `count()`.
-
+
- **Input:** select the query or expression to reduce by its letter.
-
+
The reduction function aggregates the values of the query or expression into a single value.
@@ -110,19 +110,19 @@ A condition expression takes the time series or numbers returned by queries or e
- **WHEN:** select the reduction function: `last()`, `mean()`, `max()`, `min()`, `sum()`, or `count()`.
-
+
- **OF:** select the query or expression by its letter (for example, A or C).
-
+
- **Condition string:** select the comparison: `IS ABOVE`, `IS SAME OR ABOVE`, `IS BELOW`, or `IS SAME OR BELOW`.
-
+
- **Threshold:** enter the numeric value to evaluate the condition against.
-
+
The reduction function is applied to the query or expression to produce a single value, which is then compared against the threshold using the condition you chose. When the input is a collection of time series or numbers, the reduction function is applied to each element individually, each reduced output is evaluated against the condition, and the outputs are combined with AND.
@@ -132,16 +132,16 @@ Add more conditions with the **Add condition** button, and choose how they combi
Nodes represent the individual queries or expressions used to build alerts and dashboards. KloudMate assigns each node a letter by default (for example, A, B, or C), based on the order it was created.
-
+
Nodes serve as reference points, so you can identify and evaluate specific queries or expressions during analysis.
-
+
KloudMate names nodes alphabetically by default, but you can rename them for clarity.
-
+
If a custom node name includes spaces, enclose it in **${}**. For example: `${CPU usage}`
-
+
diff --git a/src/content/docs/docs/alerts/images/alarm-maintenance-window-1.jpeg b/src/content/docs/docs/alerts/images/alarm-maintenance-window-1.jpeg
deleted file mode 100644
index bfeca7e0..00000000
Binary files a/src/content/docs/docs/alerts/images/alarm-maintenance-window-1.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/alarm-maintenance-window-1.png b/src/content/docs/docs/alerts/images/alarm-maintenance-window-1.png
deleted file mode 100644
index d7a89a6a..00000000
Binary files a/src/content/docs/docs/alerts/images/alarm-maintenance-window-1.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/alarm-maintenance-window-2.jpeg b/src/content/docs/docs/alerts/images/alarm-maintenance-window-2.jpeg
deleted file mode 100644
index 1b39c4f7..00000000
Binary files a/src/content/docs/docs/alerts/images/alarm-maintenance-window-2.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/alarm-maintenance-window-3.jpeg b/src/content/docs/docs/alerts/images/alarm-maintenance-window-3.jpeg
deleted file mode 100644
index 49117a34..00000000
Binary files a/src/content/docs/docs/alerts/images/alarm-maintenance-window-3.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/expressions-1.png b/src/content/docs/docs/alerts/images/expressions-1.png
new file mode 100644
index 00000000..827a8209
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-1.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-10.png b/src/content/docs/docs/alerts/images/expressions-10.png
new file mode 100644
index 00000000..b4f97a5c
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-10.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-11.png b/src/content/docs/docs/alerts/images/expressions-11.png
new file mode 100644
index 00000000..dd9b867d
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-11.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-2.png b/src/content/docs/docs/alerts/images/expressions-2.png
new file mode 100644
index 00000000..1181ceb0
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-2.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-3.png b/src/content/docs/docs/alerts/images/expressions-3.png
new file mode 100644
index 00000000..9258134d
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-3.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-4.png b/src/content/docs/docs/alerts/images/expressions-4.png
new file mode 100644
index 00000000..143db687
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-4.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-5.png b/src/content/docs/docs/alerts/images/expressions-5.png
new file mode 100644
index 00000000..9120cc8a
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-5.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-6.png b/src/content/docs/docs/alerts/images/expressions-6.png
new file mode 100644
index 00000000..4ed4980f
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-6.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-7.png b/src/content/docs/docs/alerts/images/expressions-7.png
new file mode 100644
index 00000000..9f5da527
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-7.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-8.png b/src/content/docs/docs/alerts/images/expressions-8.png
new file mode 100644
index 00000000..71cc0f78
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-8.png differ
diff --git a/src/content/docs/docs/alerts/images/expressions-9.png b/src/content/docs/docs/alerts/images/expressions-9.png
new file mode 100644
index 00000000..bfed9eb9
Binary files /dev/null and b/src/content/docs/docs/alerts/images/expressions-9.png differ
diff --git a/src/content/docs/docs/alerts/images/maintenance-window-1.png b/src/content/docs/docs/alerts/images/maintenance-window-1.png
new file mode 100644
index 00000000..997fd5c0
Binary files /dev/null and b/src/content/docs/docs/alerts/images/maintenance-window-1.png differ
diff --git a/src/content/docs/docs/alerts/images/maintenance-window-2.png b/src/content/docs/docs/alerts/images/maintenance-window-2.png
new file mode 100644
index 00000000..b33aa5f7
Binary files /dev/null and b/src/content/docs/docs/alerts/images/maintenance-window-2.png differ
diff --git a/src/content/docs/docs/alerts/images/maintenance-window-3.png b/src/content/docs/docs/alerts/images/maintenance-window-3.png
new file mode 100644
index 00000000..34d73982
Binary files /dev/null and b/src/content/docs/docs/alerts/images/maintenance-window-3.png differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-1.jpeg b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-1.jpeg
deleted file mode 100644
index 5fde1a3f..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-1.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-1.png b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-1.png
deleted file mode 100644
index 2e760e0c..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-1.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-2.jpeg b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-2.jpeg
deleted file mode 100644
index 6a1ee4ad..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-2.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-2.png b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-2.png
deleted file mode 100644
index 8dfe551e..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-2.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-3.jpeg b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-3.jpeg
deleted file mode 100644
index 642ebbb3..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-3.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-3.png b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-3.png
deleted file mode 100644
index f8392065..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-3.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-4.jpeg b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-4.jpeg
deleted file mode 100644
index 5b981818..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-4.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-4.png b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-4.png
deleted file mode 100644
index ae223872..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-4.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-5.png b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-5.png
deleted file mode 100644
index a5dc4908..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-5.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-6.png b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-6.png
deleted file mode 100644
index 313df724..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-6.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-7.png b/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-7.png
deleted file mode 100644
index 212a9b79..00000000
Binary files a/src/content/docs/docs/alerts/images/writing-expressions-for-kloudmate-alarms-7.png and /dev/null differ
diff --git a/src/content/docs/docs/alerts/maintenance-windows.mdx b/src/content/docs/docs/alerts/maintenance-windows.mdx
index 32c6f649..db028c23 100644
--- a/src/content/docs/docs/alerts/maintenance-windows.mdx
+++ b/src/content/docs/docs/alerts/maintenance-windows.mdx
@@ -20,21 +20,20 @@ Use a maintenance window when you have a calendar-driven quiet period: a planned
The overview page lists every maintenance window with these details:
- **Name:** name of the maintenance window.
-- **Description:** description of the maintenance window.
+- **Type:** whether the window is **One Time** or **Recurring**.
- **Alert rule targeted:** the alert rule the maintenance window applies to.
-- **Matching label:** labels assigned to the maintenance window.
+- **Matching labels:** labels assigned to the maintenance window.
- **Schedule:** start and end time for the maintenance window.
- **Status:** whether the maintenance window is active or paused.
-
+Each row also has an **Actions** menu for further row-level controls.
+
+
## Creating a maintenance window
1. Open the **Maintenance Windows** page in the Alerts module.
2. Click **Create Maintenance Window**.
-
-
-
3. Configure these details:
- **Name:** a name for the maintenance window.
@@ -43,7 +42,7 @@ The overview page lists every maintenance window with these details:
- **One time:** schedules the maintenance period once, for a specific date and time.
- **Recurring:** repeats automatically on a regular cycle, so you don't reconfigure it each time.
-
+
Additional settings:
@@ -52,6 +51,8 @@ Additional settings:
- **Frequency:** available only for recurring windows; select a daily, weekly, or monthly schedule.
- **Label Matchers:** target the window to specific alerts by their labels (for example, service name, host, or region). Each matcher is a label key, an operator, and a value, combined with AND. The operators are the same four used across the alert module (**Equals**, **Not equals**, **Matches regex**, **Doesn't match regex**), matched against alert rule labels and alert instance labels.
+As you add matchers, an **Affected Alert Instances** preview lists the alert rules and instances the window currently matches, so you can confirm its scope before saving.
+
4. Click **Save** to create the new maintenance window.
-
+
diff --git a/src/content/docs/docs/apm-and-tracing/images/trace-detail-open.png b/src/content/docs/docs/apm-and-tracing/images/trace-detail-open.png
new file mode 100644
index 00000000..0ef193fc
Binary files /dev/null and b/src/content/docs/docs/apm-and-tracing/images/trace-detail-open.png differ
diff --git a/src/content/docs/docs/apm-and-tracing/trace-explorer.mdx b/src/content/docs/docs/apm-and-tracing/trace-explorer.mdx
index 03c2abc8..b9fd991c 100644
--- a/src/content/docs/docs/apm-and-tracing/trace-explorer.mdx
+++ b/src/content/docs/docs/apm-and-tracing/trace-explorer.mdx
@@ -92,6 +92,8 @@ This view is best when you need the most granular look at tracing activity. To i
Select a trace or span from any result view to open it in [Trace Detail](../trace-detail/), where you inspect the timeline waterfall, per-span attributes, and the Service List, Request Flow, and AI Flow views.
+
+
## Related Paths
- [Trace Detail](../trace-detail/)
diff --git a/src/content/docs/docs/getting-started/setting-up-kloudmate.mdx b/src/content/docs/docs/getting-started/setting-up-kloudmate.mdx
index c49838f8..6ddb5e8b 100644
--- a/src/content/docs/docs/getting-started/setting-up-kloudmate.mdx
+++ b/src/content/docs/docs/getting-started/setting-up-kloudmate.mdx
@@ -21,8 +21,6 @@ Already have an account and just want to send data? Jump to [Sending Data to Klo
3. Check your inbox for a verification code from `noreply@kloudmate.com`. Check your spam folder if it doesn't arrive.
4. Enter the code on the next screen and click **Next**.
-
- 
## 2. Walk through the onboarding wizard
diff --git a/src/content/docs/docs/images/setting-up-kloudmate-1.png b/src/content/docs/docs/images/setting-up-kloudmate-1.png
index 66999ba1..b0d1ef1c 100644
Binary files a/src/content/docs/docs/images/setting-up-kloudmate-1.png and b/src/content/docs/docs/images/setting-up-kloudmate-1.png differ
diff --git a/src/content/docs/docs/images/setting-up-kloudmate-2.png b/src/content/docs/docs/images/setting-up-kloudmate-2.png
deleted file mode 100644
index 81d2248d..00000000
Binary files a/src/content/docs/docs/images/setting-up-kloudmate-2.png and /dev/null differ
diff --git a/src/content/docs/docs/incident-management/incidents/creating-an-incident.mdx b/src/content/docs/docs/incident-management/incidents/creating-an-incident.mdx
index cc64fc75..3879cc68 100644
--- a/src/content/docs/docs/incident-management/incidents/creating-an-incident.mdx
+++ b/src/content/docs/docs/incident-management/incidents/creating-an-incident.mdx
@@ -10,18 +10,18 @@ Use the steps below to create an incident manually.
1. Click **Create Incident** in the top-right corner of the Incidents screen.
-
+
2. Enter the incident **Title** and **Incident Details**.
3. Select a severity level: **Critical** , **High** , **Medium** , or **Low**.
-
+
4. Select the integration the incident belongs to.
5. Optionally choose an escalation policy to override the integration default.
6. Click **Create**.
-
+
:::note
Selecting an integration is required. If you do not have an integration yet, create one first in [Adding Integrations](../../integrations/adding-integrations/).
diff --git a/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-1.jpeg b/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-1.jpeg
deleted file mode 100644
index 266ac93b..00000000
Binary files a/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-1.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-1.png b/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-1.png
index b1489c87..b8220ee7 100644
Binary files a/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-1.png and b/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-1.png differ
diff --git a/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-2.png b/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-2.png
index bee0d21f..aa5e1cb6 100644
Binary files a/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-2.png and b/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-2.png differ
diff --git a/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-3.png b/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-3.png
new file mode 100644
index 00000000..ec22431f
Binary files /dev/null and b/src/content/docs/docs/incident-management/incidents/images/creating-an-incident-3.png differ
diff --git a/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-nodes-tab.png b/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-nodes-tab.png
new file mode 100644
index 00000000..d2520732
Binary files /dev/null and b/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-nodes-tab.png differ
diff --git a/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-storage-tab.png b/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-storage-tab.png
new file mode 100644
index 00000000..c835f340
Binary files /dev/null and b/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-storage-tab.png differ
diff --git a/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-workloads-tab.png b/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-workloads-tab.png
new file mode 100644
index 00000000..9cc6e1ed
Binary files /dev/null and b/src/content/docs/docs/infrastructure/kubernetes/images/kubernetes-workloads-tab.png differ
diff --git a/src/content/docs/docs/infrastructure/kubernetes/index.mdx b/src/content/docs/docs/infrastructure/kubernetes/index.mdx
index a59c8c5b..67a70040 100644
--- a/src/content/docs/docs/infrastructure/kubernetes/index.mdx
+++ b/src/content/docs/docs/infrastructure/kubernetes/index.mdx
@@ -53,12 +53,35 @@ Use these guides when you need deeper service-level visibility:
KloudMate provides visibility into all major Kubernetes components:
-- **Clusters:** overall health, capacity, and scale
-- **Nodes:** infrastructure-level resource usage and node health
-- **Namespaces:** resource distribution across teams, applications, or environments
-- **Pods:** pod performance, restarts, and resource consumption
-- **Storage:** Persistent Volume Claims (PVCs) across clusters — status, claim, storage class, and capacity
-- **Workloads:** health and availability of deployments, daemonsets, and statefulsets
+### Clusters
+
+The **Clusters** tab lists every connected cluster, with overall health, capacity, and scale at a glance. Use it as the starting point before drilling into a specific node, namespace, or workload.
+
+### Nodes
+
+The **Nodes** tab lists every node across your clusters, showing node health and infrastructure-level resource usage: allocatable CPU and memory alongside current usage for each. Use it to spot nodes running hot before they affect scheduling.
+
+
+
+### Namespaces
+
+The **Namespaces** tab breaks resource distribution down by namespace, so you can see how CPU, memory, and workload counts spread across the teams, applications, or environments sharing a cluster.
+
+### Pods
+
+The **Pods** tab lists every pod across your clusters, with its performance, restart count, and resource consumption. Use it to find pods that are restarting frequently or running hot before they affect the workloads they belong to.
+
+### Storage
+
+The **Storage** tab lists Persistent Volume Claims (PVCs) across your clusters, with their status, claim, storage class, and capacity. Use it to see what's provisioned and bound without checking each cluster individually.
+
+
+
+### Workloads
+
+The **Workloads** tab lists deployments, daemonsets, statefulsets, and other workload types across your clusters, showing their health and availability alongside pod counts and CPU and memory requests and limits. Filter by workload type, namespace, or cluster to narrow the list.
+
+
## Validation Checklist
diff --git a/src/content/docs/docs/kloudmate-assistant/mcp-server.mdx b/src/content/docs/docs/kloudmate-assistant/mcp-server.mdx
index 23f8c826..77399d35 100644
--- a/src/content/docs/docs/kloudmate-assistant/mcp-server.mdx
+++ b/src/content/docs/docs/kloudmate-assistant/mcp-server.mdx
@@ -16,30 +16,32 @@ Once you're connected, your agent can chain KloudMate's query tools to investiga
## Connection details
-The server is a single remote endpoint. You authenticate with a KloudMate [User Key](../../platform/settings/api-keys/#user-key) passed as a bearer token.
+The server is a single remote endpoint. You authenticate with a KloudMate [Personal API Key](../../platform/settings/api-keys/#personal-api-keys) passed as a bearer token, and name the workspace you want to read with an `x-workspace-id` header.
| Setting | Value |
|---|---|
| **Endpoint** | `https://api.kloudmate.com/mcp` |
| **Transport** | Streamable HTTP |
| **Authentication** | `Authorization: Bearer YOUR_API_KEY` |
+| **Workspace** | `x-workspace-id: YOUR_WORKSPACE_ID` |
-The API key determines which workspace the connection reads from, so you never specify a workspace ID — the key already scopes it. To connect a different workspace, use a key that belongs to that workspace.
+A personal key carries your access to every workspace you belong to, so the connection needs the `x-workspace-id` header to know which one to read. Find the workspace ID in the workspace's URL in the KloudMate app. To point the same key at a different workspace, change that header. One key works for all of them.
## Before you start
-You'll need two things:
+You'll need:
-- **A KloudMate User Key.** Under **Settings → API Keys**, click **Add New** and choose the **User Key** type — it's tied to your account's permissions and reads whatever you can read. Copy it when it's shown (it's shown only once) and keep it handy for your client's config. See [API Keys](../../platform/settings/api-keys/#user-key) for the full walkthrough. Creating a key requires the Admin role.
+- **A KloudMate Personal API Key.** From the account menu (top-right), open **API keys** and click **Create Key**. It's tied to your account and reads whatever you can read. Copy it when it's shown (it's shown only once) and keep it handy for your client's config. Any signed-in user can create one; no admin role needed. See [API Keys](../../platform/settings/api-keys/#personal-api-keys) for the full walkthrough.
+- **The workspace ID** you want to query. Find it in the workspace's URL in the KloudMate app; it goes in the `x-workspace-id` header.
- **An MCP-capable client.** Any tool that supports remote MCP servers over Streamable HTTP with custom headers works. The steps below cover Claude Code, Cursor, VS Code, and Claude Desktop.
:::caution
-Your API key carries your access to the workspace. Treat it like a password: don't paste it into shared files or commit it to version control. The client configs below show how to keep it in an environment variable or a prompted secret instead of hardcoding it. If a key leaks, revoke it from **Settings → API Keys**.
+Your API key carries your KloudMate access. Treat it like a password: don't paste it into shared files or commit it to version control. The client configs below show how to keep it in an environment variable or a prompted secret instead of hardcoding it. If a key leaks, delete it from the **Personal API Keys** screen in your account menu.
:::
## Connect your client
-Pick your tool and follow the steps. Swap `YOUR_API_KEY` for the key you just created.
+Pick your tool and follow the steps. Swap `YOUR_API_KEY` for the key you just created, and `YOUR_WORKSPACE_ID` for the workspace you want to query.
@@ -48,14 +50,16 @@ Add the server from your terminal with the `claude mcp add` command:
```bash
claude mcp add --transport http kloudmate https://api.kloudmate.com/mcp \
- --header "Authorization: Bearer YOUR_API_KEY"
+ --header "Authorization: Bearer YOUR_API_KEY" \
+ --header "x-workspace-id: YOUR_WORKSPACE_ID"
```
By default the server is available in the current project only. Add `--scope user` before the server name to make it available across all your projects:
```bash
claude mcp add --transport http --scope user kloudmate https://api.kloudmate.com/mcp \
- --header "Authorization: Bearer YOUR_API_KEY"
+ --header "Authorization: Bearer YOUR_API_KEY" \
+ --header "x-workspace-id: YOUR_WORKSPACE_ID"
```
Run `/mcp` inside Claude Code to confirm `kloudmate` shows as connected and to see the tools it exposes.
@@ -71,7 +75,8 @@ Create or edit `~/.cursor/mcp.json` (global, all projects) or `.cursor/mcp.json`
"kloudmate": {
"url": "https://api.kloudmate.com/mcp",
"headers": {
- "Authorization": "Bearer ${env:KLOUDMATE_API_KEY}"
+ "Authorization": "Bearer ${env:KLOUDMATE_API_KEY}",
+ "x-workspace-id": "YOUR_WORKSPACE_ID"
}
}
}
@@ -91,7 +96,7 @@ Create `.vscode/mcp.json` in your workspace. The `inputs` block prompts you for
{
"type": "promptString",
"id": "kloudmate-api-key",
- "description": "KloudMate User API Key",
+ "description": "KloudMate Personal API Key",
"password": true
}
],
@@ -100,7 +105,8 @@ Create `.vscode/mcp.json` in your workspace. The `inputs` block prompts you for
"type": "http",
"url": "https://api.kloudmate.com/mcp",
"headers": {
- "Authorization": "Bearer ${input:kloudmate-api-key}"
+ "Authorization": "Bearer ${input:kloudmate-api-key}",
+ "x-workspace-id": "YOUR_WORKSPACE_ID"
}
}
}
@@ -126,7 +132,9 @@ Open `claude_desktop_config.json` (**Settings → Developer → Edit Config**) a
"mcp-remote",
"https://api.kloudmate.com/mcp",
"--header",
- "Authorization:${AUTH_HEADER}"
+ "Authorization:${AUTH_HEADER}",
+ "--header",
+ "x-workspace-id:YOUR_WORKSPACE_ID"
],
"env": {
"AUTH_HEADER": "Bearer YOUR_API_KEY"
@@ -146,7 +154,7 @@ The config file lives at:
-Using a different client? Point it at `https://api.kloudmate.com/mcp` with an `Authorization: Bearer YOUR_API_KEY` header. Any client that speaks Streamable HTTP and lets you set request headers can connect.
+Using a different client? Point it at `https://api.kloudmate.com/mcp` with an `Authorization: Bearer YOUR_API_KEY` header and an `x-workspace-id: YOUR_WORKSPACE_ID` header. Any client that speaks Streamable HTTP and lets you set request headers can connect.
## Verify the connection
@@ -154,7 +162,7 @@ Once the server is connected, your client lists the KloudMate tools and your age
> Which alerts are firing in KloudMate right now?
-If the connection is healthy, the agent calls a KloudMate tool and answers from your workspace. If it reports an authentication failure, the key is likely wrong, revoked, or missing the `Bearer ` prefix — recheck the header and try again.
+If the connection is healthy, the agent calls a KloudMate tool and answers from your workspace. If it reports an authentication failure, the key is likely wrong, deleted, or missing the `Bearer ` prefix. Recheck the header and try again.
## Available tools
@@ -218,14 +226,14 @@ A triage workflow, for example, might pull the currently firing alerts, scope th
A few things worth keeping in mind:
- **Read-only.** The server can't change anything in your workspace. Connecting it can't cause an outage or alter a dashboard.
-- **Workspace-scoped.** The key binds the connection to one workspace. Use separate keys for separate workspaces.
+- **Scoped to you.** The key carries your own account's permissions, and the `x-workspace-id` header picks which workspace each request reads. It can't reach a workspace you can't.
- **Keep the key secret.** Prefer the environment-variable or prompted-secret options above over pasting the key into a file. Add config files that contain a key to `.gitignore`.
-- **Revoke when needed.** If a key is exposed or no longer used, revoke it from **Settings → API Keys**. Any client using it stops working immediately.
+- **Delete when needed.** If a key is exposed or no longer used, delete it from the **Personal API Keys** screen in your account menu. Any client using it stops working immediately.
## Related
-
+
diff --git a/src/content/docs/docs/platform/settings/api-keys.mdx b/src/content/docs/docs/platform/settings/api-keys.mdx
index 45242c9a..14dff3a2 100644
--- a/src/content/docs/docs/platform/settings/api-keys.mdx
+++ b/src/content/docs/docs/platform/settings/api-keys.mdx
@@ -1,6 +1,6 @@
---
title: "API Keys"
-description: "Create and manage API keys: User Keys for programmatic and MCP access, and Ingest Keys for sending telemetry to KloudMate."
+description: "Create and manage API keys: Personal API Keys that act on your behalf for the API and MCP, and Ingest Keys for sending telemetry into a workspace."
sidebar:
label: "API Keys"
order: 2
@@ -8,17 +8,16 @@ sidebar:
import { Steps } from '@astrojs/starlight/components';
-API keys authenticate requests to KloudMate. You'll use them for two jobs: sending telemetry *into* your workspace, and reading data back *out* through the KloudMate API or the [MCP server](../../../kloudmate-assistant/mcp-server/). What a key can do comes down to its **type**, which you choose when you create it.
+KloudMate has two kinds of API key, each for a different job:
-Find your keys under **Settings → API Keys**. The page lists every key in the workspace along with its type, note, and creation date. A key belongs to the workspace it's created in, so create it in the workspace whose data you want to reach. Adding a key requires the **Admin** role.
+- **Personal API Keys** authenticate *you*. Use one to read your data through the KloudMate API or the [MCP server](../../../kloudmate-assistant/mcp-server/). The key carries your own account's permissions.
+- **Ingest Keys** authenticate a *workspace's data pipeline*. Your OpenTelemetry collectors, SDKs, and the KloudMate agent use one to send logs, metrics, and traces into a single workspace.
-## Key types
+## Personal API Keys
-KloudMate has three key types. Pick the one that matches what you're building.
+A personal key acts on your behalf. It's tied to **your** account and pinned to your current organization, so it can reach every workspace you belong to in that org, with exactly the permissions you already have, and nothing more.
-### User Key
-
-A User Key works for any KloudMate API operation and is tied to **your** account's permissions — it can read whatever you can read. This is the key to use for the [KloudMate MCP server](../../../kloudmate-assistant/mcp-server/), and for any script or service that queries your observability data through the API.
+Find your personal keys in the account menu (top-right) under **API keys**, on the **Personal API Keys** screen in your profile. Any signed-in user can create one; you don't need an admin role, because the key can only do what you can already do.
Pass it as a bearer token:
@@ -26,7 +25,23 @@ Pass it as a bearer token:
Authorization: Bearer YOUR_API_KEY
```
-Because the key carries your access, treat it like a password. Anyone holding it can act as you in the workspace.
+...or in the `x-api-key` header:
+
+```http
+x-api-key: YOUR_API_KEY
+```
+
+This is the key to use for the [KloudMate MCP server](../../../kloudmate-assistant/mcp-server/) and for any script or service that queries your observability data. Because it carries your access, treat it like a password. Anyone holding it can act as you.
+
+:::note
+A personal key spans every workspace you can reach, so a tool that reads from **one** workspace at a time, like the MCP server, also needs you to name the target workspace on each request. The [MCP server](../../../kloudmate-assistant/mcp-server/) setup shows how with the `x-workspace-id` header.
+:::
+
+## Ingest Keys
+
+Ingest keys send telemetry into a single workspace. A key belongs to the workspace it's created in, so create it in the workspace whose data you want to fill. Find them in that workspace under **Settings → Ingest Keys**; adding one requires the **Admin** role.
+
+There are two kinds.
### Ingest Key — Backend
@@ -46,23 +61,39 @@ exporters:
A Frontend ingest key is for telemetry sent straight from a browser or mobile app, such as [Real-User Monitoring](../../../rum/). Because the key ships in client code where anyone can read it, you must list the **allowed hosts** it can send from. Data from any other origin is rejected, which limits the damage if the key leaks.
-## Create an API key
+## Create a key
+
+### A personal key
+
+
+
+1. Open the account menu (top-right) and click **API keys**.
+
+2. Click **Create Key**.
+
+3. Add a **Note** that says what the key is for: `mcp-cli`, `reporting-script`. The list shows only the note, so make it recognizable.
+
+4. Click **Create**.
+
+
+
+### An ingest key
-1. Go to **Settings → API Keys** and click **Add New**. (The button appears only if you have the Admin role.)
+1. In the workspace you want to send data to, go to **Settings → Ingest Keys** and click **Add New**. (The button appears only if you have the Admin role.)
-2. Choose a **Key Type** — User Key, Ingest Key – Backend, or Ingest Key – Frontend. You can't change the type after the key is created, so pick the one that fits.
+2. Choose **Ingest Key – Backend** or **Ingest Key – Frontend**. You can't change the type after the key is created, so pick the one that fits.
-3. For a Frontend ingest key, add at least one **allowed host**. Include the protocol and port if there is one, for example `https://app.example.com`. Data sent from any other origin is rejected.
+3. For a Frontend key, add at least one **allowed host**. Include the protocol and port if there is one, for example `https://app.example.com`. Data sent from any other origin is rejected.
-4. Add a **Note** that says what the key is for — `mcp-server`, `prod-otel-collector`, `rum-web`. The list shows only the note, so make it recognizable.
+4. Add a **Note** that says what the key is for: `prod-otel-collector`, `rum-web`.
5. Click **Submit**.
-The key is shown **once**, right after you create it:
+Either way, the key is shown **once**, right after you create it:
> Please copy and save the API key below as it will not be shown again.
@@ -70,9 +101,9 @@ Copy it then and store it somewhere safe — a secret manager, your client's con
## Edit or delete a key
-You can edit or delete only the keys **you** created. Open the actions menu on a key's row to find both.
+Manage a personal key from the **Personal API Keys** screen, and an ingest key from **Settings → Ingest Keys**. Open the actions menu on a key's row to find both actions. You can edit or delete the personal keys you own. With the Admin role, you can do the same to the ingest keys in your workspace.
-- **Edit** lets you change the note and, for a Frontend key, its allowed hosts. The key type is fixed once created.
-- **Delete** is permanent — *this action cannot be undone*. Any agent, collector, app, or MCP client using that key stops working the moment you delete it, so swap in a replacement first if the key is in active use.
+- **Edit** lets you change the note, and for a Frontend ingest key its allowed hosts. The key type is fixed once created.
+- **Delete** is permanent: *this action cannot be undone*. Any agent, collector, app, script, or MCP client using that key stops working the moment you delete it, so swap in a replacement first if the key is in active use.
Delete a key promptly if it's exposed or no longer needed. That's the way to cut off access for a key that's been leaked.
diff --git a/src/content/docs/docs/platform/settings/images/channel-km-incidents-form.png b/src/content/docs/docs/platform/settings/images/channel-km-incidents-form.png
index cf51f6df..c4a5c203 100644
Binary files a/src/content/docs/docs/platform/settings/images/channel-km-incidents-form.png and b/src/content/docs/docs/platform/settings/images/channel-km-incidents-form.png differ
diff --git a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-1.jpeg b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-1.jpeg
deleted file mode 100644
index dc9fc839..00000000
Binary files a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-1.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-1.png b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-1.png
index 7d9d428a..19024831 100644
Binary files a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-1.png and b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-2.jpeg b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-2.jpeg
deleted file mode 100644
index a41041d9..00000000
Binary files a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-2.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-2.png b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-2.png
new file mode 100644
index 00000000..49d5ceac
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-2.png differ
diff --git a/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-3.png b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-3.png
new file mode 100644
index 00000000..b4be8abe
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/create-a-manual-jira-ticket-3.png differ
diff --git a/src/content/docs/docs/platform/settings/images/email-1.png b/src/content/docs/docs/platform/settings/images/email-1.png
index 9624389d..72336ff1 100644
Binary files a/src/content/docs/docs/platform/settings/images/email-1.png and b/src/content/docs/docs/platform/settings/images/email-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/jira-1.png b/src/content/docs/docs/platform/settings/images/jira-1.png
index 70b8b98d..50bf0df7 100644
Binary files a/src/content/docs/docs/platform/settings/images/jira-1.png and b/src/content/docs/docs/platform/settings/images/jira-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/jira-3.png b/src/content/docs/docs/platform/settings/images/jira-3.png
index 64bf1d9c..df63a2c4 100644
Binary files a/src/content/docs/docs/platform/settings/images/jira-3.png and b/src/content/docs/docs/platform/settings/images/jira-3.png differ
diff --git a/src/content/docs/docs/platform/settings/images/ms-teams-1.png b/src/content/docs/docs/platform/settings/images/ms-teams-1.png
index 0ea6c830..3513650f 100644
Binary files a/src/content/docs/docs/platform/settings/images/ms-teams-1.png and b/src/content/docs/docs/platform/settings/images/ms-teams-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/notification-channels-list.png b/src/content/docs/docs/platform/settings/images/notification-channels-list.png
new file mode 100644
index 00000000..70c81c22
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/notification-channels-list.png differ
diff --git a/src/content/docs/docs/platform/settings/images/setting-up-notifications-1.jpeg b/src/content/docs/docs/platform/settings/images/setting-up-notifications-1.jpeg
deleted file mode 100644
index 82b55f29..00000000
Binary files a/src/content/docs/docs/platform/settings/images/setting-up-notifications-1.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/setting-up-notifications-1.png b/src/content/docs/docs/platform/settings/images/setting-up-notifications-1.png
index 0c48a296..8e52862f 100644
Binary files a/src/content/docs/docs/platform/settings/images/setting-up-notifications-1.png and b/src/content/docs/docs/platform/settings/images/setting-up-notifications-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/setting-up-notifications-2.jpeg b/src/content/docs/docs/platform/settings/images/setting-up-notifications-2.jpeg
deleted file mode 100644
index b6a9e35a..00000000
Binary files a/src/content/docs/docs/platform/settings/images/setting-up-notifications-2.jpeg and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/setting-up-notifications-2.png b/src/content/docs/docs/platform/settings/images/setting-up-notifications-2.png
new file mode 100644
index 00000000..56cf09c6
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/setting-up-notifications-2.png differ
diff --git a/src/content/docs/docs/platform/settings/images/slack-1.png b/src/content/docs/docs/platform/settings/images/slack-1.png
index dd512e86..7f067a64 100644
Binary files a/src/content/docs/docs/platform/settings/images/slack-1.png and b/src/content/docs/docs/platform/settings/images/slack-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/sns-1.png b/src/content/docs/docs/platform/settings/images/sns-1.png
index 7367c24c..b6ea6964 100644
Binary files a/src/content/docs/docs/platform/settings/images/sns-1.png and b/src/content/docs/docs/platform/settings/images/sns-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/subscription-_-billing-1.png b/src/content/docs/docs/platform/settings/images/subscription-_-billing-1.png
index 41b7c657..a5e99596 100644
Binary files a/src/content/docs/docs/platform/settings/images/subscription-_-billing-1.png and b/src/content/docs/docs/platform/settings/images/subscription-_-billing-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/subscription-_-billing-2.png b/src/content/docs/docs/platform/settings/images/subscription-_-billing-2.png
index 0a68ded5..58a45036 100644
Binary files a/src/content/docs/docs/platform/settings/images/subscription-_-billing-2.png and b/src/content/docs/docs/platform/settings/images/subscription-_-billing-2.png differ
diff --git a/src/content/docs/docs/platform/settings/images/usage-report-1.jpg b/src/content/docs/docs/platform/settings/images/usage-report-1.jpg
deleted file mode 100644
index 8236bfe3..00000000
Binary files a/src/content/docs/docs/platform/settings/images/usage-report-1.jpg and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/usage-report-1.png b/src/content/docs/docs/platform/settings/images/usage-report-1.png
index 4be46a26..2d0a1597 100644
Binary files a/src/content/docs/docs/platform/settings/images/usage-report-1.png and b/src/content/docs/docs/platform/settings/images/usage-report-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/usage-report-2.png b/src/content/docs/docs/platform/settings/images/usage-report-2.png
index 731d979a..22433092 100644
Binary files a/src/content/docs/docs/platform/settings/images/usage-report-2.png and b/src/content/docs/docs/platform/settings/images/usage-report-2.png differ
diff --git a/src/content/docs/docs/platform/settings/images/usage-report-3.png b/src/content/docs/docs/platform/settings/images/usage-report-3.png
new file mode 100644
index 00000000..7798943a
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/usage-report-3.png differ
diff --git a/src/content/docs/docs/platform/settings/images/webhooks-1.png b/src/content/docs/docs/platform/settings/images/webhooks-1.png
index c8ab29c3..3fc2913b 100644
Binary files a/src/content/docs/docs/platform/settings/images/webhooks-1.png and b/src/content/docs/docs/platform/settings/images/webhooks-1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-1.png b/src/content/docs/docs/platform/settings/images/workspaces-1.png
deleted file mode 100644
index 07176488..00000000
Binary files a/src/content/docs/docs/platform/settings/images/workspaces-1.png and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-2.png b/src/content/docs/docs/platform/settings/images/workspaces-2.png
deleted file mode 100644
index cf9cebab..00000000
Binary files a/src/content/docs/docs/platform/settings/images/workspaces-2.png and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-3.png b/src/content/docs/docs/platform/settings/images/workspaces-3.png
deleted file mode 100644
index 90a183d0..00000000
Binary files a/src/content/docs/docs/platform/settings/images/workspaces-3.png and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-4.png b/src/content/docs/docs/platform/settings/images/workspaces-4.png
deleted file mode 100644
index 946a5842..00000000
Binary files a/src/content/docs/docs/platform/settings/images/workspaces-4.png and /dev/null differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-create-step1.png b/src/content/docs/docs/platform/settings/images/workspaces-create-step1.png
new file mode 100644
index 00000000..2a13aec3
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-create-step1.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-create-step2-aws.png b/src/content/docs/docs/platform/settings/images/workspaces-create-step2-aws.png
new file mode 100644
index 00000000..520ffebe
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-create-step2-aws.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-create-step2-methods.png b/src/content/docs/docs/platform/settings/images/workspaces-create-step2-methods.png
new file mode 100644
index 00000000..0979a755
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-create-step2-methods.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-create-step2-otel.png b/src/content/docs/docs/platform/settings/images/workspaces-create-step2-otel.png
new file mode 100644
index 00000000..79430dc0
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-create-step2-otel.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-create-step3-verify.png b/src/content/docs/docs/platform/settings/images/workspaces-create-step3-verify.png
new file mode 100644
index 00000000..7940bc12
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-create-step3-verify.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-list.png b/src/content/docs/docs/platform/settings/images/workspaces-list.png
new file mode 100644
index 00000000..20c134b9
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-list.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-rename-delete.png b/src/content/docs/docs/platform/settings/images/workspaces-rename-delete.png
new file mode 100644
index 00000000..62649b82
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-rename-delete.png differ
diff --git a/src/content/docs/docs/platform/settings/images/workspaces-switcher.png b/src/content/docs/docs/platform/settings/images/workspaces-switcher.png
new file mode 100644
index 00000000..c06a2c3a
Binary files /dev/null and b/src/content/docs/docs/platform/settings/images/workspaces-switcher.png differ
diff --git a/src/content/docs/docs/platform/settings/notification-channels.mdx b/src/content/docs/docs/platform/settings/notification-channels.mdx
index 07d4fdee..22eb28ab 100644
--- a/src/content/docs/docs/platform/settings/notification-channels.mdx
+++ b/src/content/docs/docs/platform/settings/notification-channels.mdx
@@ -24,7 +24,7 @@ In the case of multiple workspaces and AWS accounts, you must set up notificatio
Navigate to **Settings** > **Notification Channels**. The screen displays all existing channels with their name, type, and address.
-
+
1. Click the **Create** button at the top-right corner.
2. Select the desired channel type from the dropdown.
@@ -33,7 +33,7 @@ Navigate to **Settings** > **Notification Channels**. The screen displays all ex
Once created, the channel appears in the list. You can **Edit** or **Delete** any channel using the more options (⋯) icon.
-
+
Below are the configuration steps for each specific channel type:
@@ -390,8 +390,9 @@ You can create a Jira ticket directly from an issue or alert details page to rai
1. Navigate to the **Issue** or **Alert** details page.
2. Click the **Create in Jira** button. A dialog opens showing all Jira channels integrated with your KloudMate account, along with any previously linked Jira tickets for that issue.
-
-
+
+
+
3. Under Jira Channels, select the checkbox(es) for the channel(s) you want to raise a ticket in.
4. Click **Create Ticket**.
@@ -402,4 +403,4 @@ You can create a Jira ticket directly from an issue or alert details page to rai
2. The panel displays all Jira tickets currently linked to the issue, showing the Ticket ID, Site, Project, and Issue Type.
3. Click the **unlink** icon next to the ticket you want to remove to unlink it from KloudMate.
-
+
diff --git a/src/content/docs/docs/platform/settings/usage-report.mdx b/src/content/docs/docs/platform/settings/usage-report.mdx
index 9b07402a..97f0a909 100644
--- a/src/content/docs/docs/platform/settings/usage-report.mdx
+++ b/src/content/docs/docs/platform/settings/usage-report.mdx
@@ -25,4 +25,4 @@ Use the billing period selector to switch between the current cycle and previous
You can also generate usage reports for a custom date range by selecting a custom window from the billing period selector.
-
+
diff --git a/src/content/docs/docs/platform/settings/workspaces.mdx b/src/content/docs/docs/platform/settings/workspaces.mdx
index 489366c9..19e1903e 100644
--- a/src/content/docs/docs/platform/settings/workspaces.mdx
+++ b/src/content/docs/docs/platform/settings/workspaces.mdx
@@ -5,37 +5,54 @@ sidebar:
label: "Workspaces"
order: 2
---
+
Workspaces let you organize data sources, services, and users by environment, team, or ownership boundary.
## Manage Workspaces
-You create your first workspace during [initial setup](../../../getting-started/setting-up-kloudmate/). After that, you can create and manage additional workspaces from **Settings -> Workspaces**.
+You create your first workspace during [initial setup](../../../getting-started/setting-up-kloudmate/). After that, manage additional workspaces from **Settings → Workspaces**.
From this page, you can:
- View existing workspaces
-- Create a new workspace
+- Add a new workspace
- Rename a workspace
- Delete a workspace
-
+
## Create a Workspace
-1. Click **Add Workspace**.
-2. Enter the workspace name.
-3. Submit the form to create the workspace.
+Click **Add Workspace** to start a three-step wizard that creates the workspace and confirms data is flowing into it, rather than just naming an empty workspace.
+
+1. **Workspace.** Name the new workspace. Stack and team settings carry over from the organization, so this step only needs a name.
+
+ 
+
+2. **Send data to KloudMate.** Choose how to send data to the new workspace, either the KloudMate OpenTelemetry Agent or AWS Integration. Each workspace gets its own ingest API key.
+
+ 
+
+ - **OpenTelemetry Agent:** install the agent, or, if you already run an OpenTelemetry Collector, point it at the given endpoint using the generated API key as the `Authorization` header.
+
+ 
+
+ - **AWS Integration:** name the AWS account KloudMate will connect to. You can add more accounts later from **Settings → Data Sources**.
+
+ 
+
+3. **Verify ingestion.** The wizard waits for the first event to confirm data is reaching the workspace. This usually takes a few seconds, longer for a fresh install. Select **Skip for now** to finish setup without waiting.
-
+ 
-## Edit or Delete a Workspace
+## Rename or Delete a Workspace
-Use the edit action to rename a workspace. Use the delete action to permanently remove the workspace.
+Open the **⋯** menu on a workspace's row and choose **Rename** or **Delete**. Deleting a workspace is permanent.
-
+
## Switch Between Workspaces
-If you belong to multiple workspaces, use the workspace selector in the top-right corner of the interface to switch context.
+Click the workspace selector in the top-left corner of the interface to switch context. If you belong to multiple organizations, the switcher groups workspaces by organization so you can jump between them without signing out.
-
+