---
title: get_source_config
description: Read back a dashboard's stored refresh manifest verbatim. Parameters, return shape, the not-refreshable state, errors and scope.
updated: 2026-08-04
tools: [get_source_config]
---

Reads back the stored refresh manifest that drives scheduled refresh, exactly as
stored: `manifest_version`, `connection`, `schedule`, the SQL, dimensions,
measures, any format and derived fields, and for a row-level manifest the schema
and data block.

Read-only. To change the manifest, edit the spec and republish it through
[`publish_dashboard`](/reference/mcp-tools/publish-dashboard). Passing an updated
`source_config` is **not** a second way to do it: that argument's own schema says
`NOT AVAILABLE`, because it was only ever accepted beside a `body` and publishing
raw bytes is refused. A dashboard that is not yet spec-backed goes through
[`derive_dashboard_spec`](/reference/mcp-tools/derive-dashboard-spec) first.

Behaviour hints for clients: read-only, not open-world.

## Parameters

| Parameter | Type | Required | Notes |
|---|---|---|---|
| `slug` | string | yes | Canonical slug of the dashboard whose manifest to read. |
| `workspace` | string | no | Workspace slug. |

## Returns

The pretty-printed manifest, then a JSON block:

```text
Refresh manifest for "revenue-overview" (frequency: daily):
Connection: Analytics Postgres [7a1e...]
{
  "manifest_version": 3,
  "connection": "7a1e...",
  "schedule": "daily",
  "cube_sql": "select ..."
}

BEGIN_JSON
{"slug":"revenue-overview","dashboard_id":"...","is_refreshable":true,"connection":"7a1e...","connection_label":"Analytics Postgres","frequency":"daily","source_config":{}}
END_JSON
```

A dashboard with no manifest is a **success**, not an error:

```text
"<slug>" has no refresh manifest - it is not a refreshable dashboard. Republish it as a Dashies spec declaring its datasets and a schedule, and the server compiles the manifest.
```

## Errors

The shared [slug rules](/reference/mcp-tools/conventions#paths-and-slugs), plus:

| Condition | Text |
|---|---|
| The read failed | `source_config lookup failed: <err>` |
| No such dashboard | `No dashboard named "<slug>" in that workspace.` |

Both refusals name the workspace rather than an account. See
[Scope](/reference/mcp-tools/conventions#scope-which-workspace-a-call-acts-on).

## Scope

Any member of the workspace may read the manifest of its
dashboards.

## Check it worked

Compare the `connection` in the manifest against the connection you intended.
This is the fastest way to catch the scope trap: a dashboard whose manifest names
a connection created in a **different** workspace publishes fine and can never
refresh, and the manifest is where that mismatch is visible.
