# TableauOps MCP tools reference

> Every tool the TableauOps MCP server exposes: publish_extension, update_extension, list_extensions, validate_extension, and more, with parameters.

Canonical: https://ext.tableauops.com/knowledge/mcp-tools-reference
Updated: 2026-09-18
Author: Eric Summers

The TableauOps MCP server lets an agent (Claude Desktop, Claude Code, Cursor, or any MCP client) publish and manage hosted viz extensions, and search this library. These are the public tools it exposes. Connect it at [the MCP page](/mcp).

## `publish_extension`

Compile a self-contained React + D3 Component and host it as a real Tableau viz extension on TableauOps. Returns the hosted page (where the .trex downloads) and install steps. Read the "authoring-guide" resource FIRST: the source must follow that exact contract (a function named Component, the // viz: and // fields: metadata lines, no imports, no exports).

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | yes | Human name for the extension, e.g. "Region KPI Card". |
| `source` | string | yes | The full JSX source: the // viz: line, the // fields: line, then function Component({ data, schema, theme, fields }) { ... }. No imports, no exports, no prose. |
| `themeName` | string | no | Optional theme preset name. Omit for the default. |

## `update_extension`

Replace the component source of an extension you already published, by numeric id. Same source contract as publish_extension. Use get_extension first to read the current source.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | number | yes | The extension id, from list_extensions or a previous publish. |
| `source` | string | yes | The new full JSX source (same contract as publish_extension). |
| `themeName` | string | no | Optional theme preset name. |

## `list_extensions`

List the extensions on this TableauOps account: id, name, slug, type, and hosted page URL.

No parameters.

## `get_extension`

Return an extension's current component source (if it was builder-made), name, slug, hosted page, and .trex URL, so you can read it before updating.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | number | yes | The extension id. |

## `validate_extension`

Compile a component and read its Marks-card tiles WITHOUT publishing anything. Returns whether it compiles, the chart type, and the tiles it declares (or a warning if it declares none). Use this to iterate a component to a clean state before publish_extension, so you do not create throwaway extensions.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `source` | string | yes | The full JSX source to check (same contract as publish_extension). |

## `set_public`

Flip an extension to its public hosted URL, so its .trex needs no per-viewer token and anyone you share it with can load it without a TableauOps account. Returns the public URL.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | number | yes | The extension id. |

## `tableau_public_embed`

Produce a Web Page object URL that runs this viz on a Tableau Public dashboard, where real extensions cannot load. It bakes in a frozen sample dataset (Web Page objects receive no data from Tableau), so the chart renders standalone. Paste the URL into a Web Page object on the dashboard. Re-run to refresh the sample.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | number | yes | The extension id (must be a builder-made viz). |

## `search_knowledge`

Search the public TableauOps knowledge library: the Tableau Extensions API, the .trex manifest, every error code and its fix, the kit extensions, and the platform. Returns ranked hits with page URLs and section anchors. Use it to answer a Tableau extension question before guessing, then read_knowledge for the full page.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `q` | string | yes | The question, error code, or keywords to search for. |
| `limit` | number | no | Max page hits to return (default 8). |

## `read_knowledge`

Return the full markdown of one knowledge library page by its slug (e.g. "encoding-icon-tokens", "extensions-api-error-codes", or "kit/ridgeline"). Use search_knowledge first to find the slug.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `slug` | string | yes | The page slug, e.g. "trex-manifest-reference" or "kit/bullet". |


---
Try it live: Connect the MCP server — https://ext.tableauops.com/mcp
