diff --git a/components-mdx/team-members.mdx b/components-mdx/team-members.mdx
index c7ae8a01cb..87fe32e378 100644
--- a/components-mdx/team-members.mdx
+++ b/components-mdx/team-members.mdx
@@ -23,4 +23,5 @@
| **Nikita Kabardin** | Frontend Engineer | [Twitter](https://x.com/nkabardin), [LinkedIn](https://www.linkedin.com/in/nkabardin/), [GitHub](https://github.com/nkabardin) |
| **Vera Yap** | Recruiting | [LinkedIn](https://www.linkedin.com/in/verayap/) |
| **Milana Gurbanova** | Integrations Engineer | [LinkedIn](https://www.linkedin.com/in/milana-gurbanova/), [GitHub](https://github.com/milanagm) |
+| **Lysander Kiesel** | Product Engineer | [Twitter](https://x.com/LysanderKie), [LinkedIn](https://www.linkedin.com/in/lysander-kiesel/), [GitHub](https://github.com/LysanderKie) |
| **You?** | Your life's work | [Open Positions](https://jobs.ashbyhq.com/langfuse) |
diff --git a/content/changelog/2026-07-17-dashboard-and-widget-operations-in-api.mdx b/content/changelog/2026-07-17-dashboard-and-widget-operations-in-api.mdx
new file mode 100644
index 0000000000..e065a34ba0
--- /dev/null
+++ b/content/changelog/2026-07-17-dashboard-and-widget-operations-in-api.mdx
@@ -0,0 +1,97 @@
+---
+date: 2026-07-17
+title: Manage dashboards via API, CLI, and MCP
+description: Create and manage dashboards and widgets programmatically through the public API and Langfuse CLI, let AI agents build them via the Langfuse MCP server, or ask the Langfuse Assistant in the UI.
+author: Lysander
+---
+
+import { ChangelogHeader } from "@/components/changelog/ChangelogHeader";
+import { Book, Code, LayoutDashboard } from "lucide-react";
+
+
+
+You can now create and manage dashboards end-to-end in code and through your agent. New endpoints under `/api/public/unstable` cover dashboards, the placements on their grid, and the reusable widgets those placements reference. The [Langfuse CLI](/docs/api-and-data-platform/features/cli) picks the endpoints up automatically, and the [Langfuse MCP server](/docs/api-and-data-platform/features/mcp-server) exposes the same operations as tools.
+
+This opens up a few workflows beyond the dashboard editor in the UI:
+
+- **Dashboards as code**: keep dashboard definitions in version control and apply the same monitoring setup across projects and environments.
+- **Agent-built dashboards**: ask an AI agent for a dashboard, e.g. error traces for a certain feature over time. Reads run automatically, and every change goes through human-in-the-loop approval.
+- **Incremental edits**: add, move, or resize a single tile through the placement endpoints without resubmitting the whole layout. Omit the position and the server appends the tile for you.
+
+The same tools power the [Langfuse Assistant](/docs/langfuse-assistant) in the UI, so you can ask it to create or update dashboards and widgets directly. The Assistant is available when AI features are enabled for your organization (org admins can enable them in the organization settings).
+
+## New endpoints [#new-endpoints]
+
+- `/dashboards` — list, create, read, update, and delete dashboards, including their filters and full layout definition. See the [dashboards API reference](https://api.reference.langfuse.com/#tag/unstabledashboards).
+- `/dashboards/{dashboardId}/placements` — add, move or resize, and remove individual tiles on a dashboard's grid, documented alongside the [dashboards API reference](https://api.reference.langfuse.com/#tag/unstabledashboards).
+- `/dashboard-widgets` — list, create, read, update, and delete the reusable widgets that placements reference. See the [dashboard widgets API reference](https://api.reference.langfuse.com/#tag/unstabledashboardwidgets).
+
+## New MCP tools [#new-mcp-tools]
+
+
+
+
+ |
+ Dashboards
+
+ listDashboards
+ getDashboard
+ createDashboard
+ updateDashboard
+ deleteDashboard
+
+ |
+
+
+ |
+ Placements
+
+ addDashboardPlacement
+ updateDashboardPlacement
+ deleteDashboardPlacement
+
+ |
+
+
+ |
+ Widgets
+
+ listDashboardWidgets
+ getDashboardWidget
+ createDashboardWidget
+ updateDashboardWidget
+ deleteDashboardWidget
+
+ |
+
+
+
+
+
+ These endpoints and MCP tools are **unstable** and may change while the
+ dashboard and widget contract is being finalized. The dashboard editor in the
+ UI remains fully supported.
+
+
+## Get started
+
+
+ }
+ arrow
+ />
+ }
+ arrow
+ />
+ }
+ arrow
+ />
+
diff --git a/content/docs/metrics/features/custom-dashboards.mdx b/content/docs/metrics/features/custom-dashboards.mdx
index e8980446bf..a012524d42 100644
--- a/content/docs/metrics/features/custom-dashboards.mdx
+++ b/content/docs/metrics/features/custom-dashboards.mdx
@@ -157,6 +157,19 @@ Export your dashboard data for further analysis or integration with external too
- Integration with external analytics tools
- Programmatic access via the [Metrics API](/docs/metrics/features/metrics-api)
+### Manage Dashboards via API, CLI, and MCP [#manage-dashboards-via-api]
+
+Beyond the dashboard editor in the UI, you can create and manage dashboards, their tile placements, and reusable widgets programmatically:
+
+- **Public API**: Endpoints under `/api/public/unstable` cover dashboards, placements, and widgets. See the [dashboards](https://api.reference.langfuse.com/#tag/unstabledashboards) and [dashboard widgets](https://api.reference.langfuse.com/#tag/unstabledashboardwidgets) API references.
+- **Langfuse CLI**: The [CLI](/docs/api-and-data-platform/features/cli) picks up these endpoints automatically, so you can keep dashboard definitions in version control and apply them across projects and environments.
+- **MCP server**: The [Langfuse MCP server](/docs/api-and-data-platform/features/mcp-server) exposes the same operations as tools, letting AI agents build and edit dashboards with human-in-the-loop approval for changes. The same tools power the [Langfuse Assistant](/docs/langfuse-assistant) in the UI.
+
+
+ These endpoints and MCP tools are **unstable** and may change while the
+ dashboard and widget contract is being finalized.
+
+
## Use Cases and Examples
### Production Monitoring Dashboard
diff --git a/data/authors.json b/data/authors.json
index ee8c594015..b1a17414f8 100644
--- a/data/authors.json
+++ b/data/authors.json
@@ -226,5 +226,14 @@
"image": "/images/people/milanagurbanova.jpg",
"github": "milanagm",
"linkedin": "milana-gurbanova"
+ },
+ "lysanderkiesel": {
+ "firstName": "Lysander",
+ "name": "Lysander Kiesel",
+ "title": "Product Engineer",
+ "image": "/images/people/lysanderkiesel.jpeg",
+ "twitter": "LysanderKie",
+ "github": "LysanderKie",
+ "linkedin": "lysander-kiesel"
}
}
diff --git a/public/images/people/lysanderkiesel.jpeg b/public/images/people/lysanderkiesel.jpeg
new file mode 100644
index 0000000000..b1cb6fe903
Binary files /dev/null and b/public/images/people/lysanderkiesel.jpeg differ