Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.prisme.ai/llms.txt

Use this file to discover all available pages before exploring further.

The Tableau connector exposes the full Tableau platform — REST API 3.x, Metadata GraphQL, VizQL Data Service and Pulse — both as App-mode automations (Tableau.<operation>) and as MCP tools callable by AI agents. Authentication is handled via a Connected App (Direct Trust JWT), so no per-user OAuth flow is needed.

Content & Permissions

Browse, publish, download and govern projects, workbooks, views, datasources and Prep flows. Manage tags, permissions and revisions site-wide.

Pulse & Subscriptions

Manage Tableau Pulse metrics and definitions, retrieve BAN insights, and orchestrate email and Pulse subscriptions for end-users.

Metadata & VizQL Queries

Run arbitrary Metadata API GraphQL queries, search assets, walk workbook/datasource lineage and query published datasources via VizQL Data Service.

Prerequisites

  • A Tableau Cloud site or a Tableau Server installation reachable from Prisme.ai
  • A Tableau Connected App in Direct Trust mode, created from Settings → Connected Apps on the target site (you need its clientId, secretId and secretValue)
  • The Tableau username (email) the Connected App will impersonate — this user must exist on the site and own the rights you want to expose
  • The REST API version to target (defaults to 3.21; pin only if the Tableau Server release requires it)
  • Site contentUrl if you are not using the Default site (the segment after /site/ in the browser URL)

Installation

  1. Go to Apps in your workspace
  2. Search for Tableau and install it
  3. Open the app instance configuration and fill in the required fields

Configuration

FieldTypeRequiredDescription
serverUrlstringYesFull URL of the Tableau pod / Server (e.g. https://10ax.online.tableau.com). No trailing slash.
siteContentUrlstringNoSite identifier from the URL (after /site/). Leave empty for the Default site on Tableau Server.
clientIdstringYesConnected App Client ID (Settings → Connected Apps → ID client).
secretIdstringYesConnected App Secret ID (the ID line under the secret on the Connected App page).
secretValuestring (secret)YesConnected App Secret Value (HMAC key). Stored as a workspace secret. Shown only once at creation.
usernamestringYesTableau username (email) used as the JWT sub claim. The user must exist on the site.
apiVersionstringNoREST API version. Defaults to 3.21.
mcpEndpointstringAuto-populated on installEndpoint URL of this app instance’s MCP server.
mcpApiKeystringAuto-populated on installSigned key to pass as the mcp-api-key header to the MCP endpoint.
MCP Endpoint and MCP API Key are generated automatically by the onInstall flow and are only needed to expose this instance as an MCP server (see the next tab).

Available Instructions

Every instruction resolves credentials from the workspace configuration and reuses the cached X-Tableau-Auth session token.

Sites & Users

InstructionArguments
Tableau.listSitespageNumber, pageSize
Tableau.createSitesite*
Tableau.getSitekey*
Tableau.updateSitesite*
Tableau.deleteSitesiteId
Tableau.getRecentlyViewed
Tableau.listUsersfields, filter, pageNumber, pageSize, sort
Tableau.getUseruserId*
Tableau.addUserToSiteuser*
Tableau.updateUseruserId*, user*
Tableau.removeUserFromSiteuserId*, mapAssetsTo
Tableau.getUserGroupsuserId*, pageNumber, pageSize
Tableau.listGroupsfilter, pageNumber, pageSize, sort
Tableau.createGroupgroup*, asJob
Tableau.updateGroupgroupId*, group*, asJob
Tableau.deleteGroupgroupId*
Tableau.addUserToGroupgroupId*, user*
Tableau.removeUserFromGroupgroupId*, userId*
Tableau.getGroupUsersgroupId*, pageNumber, pageSize

Projects, Workbooks & Views

InstructionArguments
Tableau.listProjectsfilter, pageNumber, pageSize, sort
Tableau.createProjectproject*, publishSamples
Tableau.updateProjectprojectId*, project*, publishSamples
Tableau.deleteProjectprojectId*
Tableau.listWorkbooksfields, filter, pageNumber, pageSize, sort
Tableau.getWorkbookworkbookId*
Tableau.publishWorkbooktableau_workbook*, request_payload*, workbookType, overwrite, asJob, skipConnectionCheck
Tableau.updateWorkbookworkbookId*, workbook*
Tableau.updateWorkbookNowworkbookId*
Tableau.deleteWorkbookworkbookId*
Tableau.downloadWorkbookworkbookId*, includeExtract
Tableau.downloadWorkbookPdfworkbookId*, type, orientation, maxAge
Tableau.downloadWorkbookPreviewImageworkbookId*
Tableau.downloadWorkbookPowerPointworkbookId*, maxAge
Tableau.downloadWorkbookRevisionworkbookId*, revisionNumber*, includeExtract
Tableau.getWorkbookRevisionsworkbookId*, pageNumber, pageSize
Tableau.queryViewsForWorkbookworkbookId*, includeUsageStatistics
Tableau.getWorkbookConnectionsworkbookId*
Tableau.updateWorkbookConnectionworkbookId*, connectionId*, connection*
Tableau.queryWorkbookPermissionsworkbookId*
Tableau.addWorkbookPermissionsworkbookId*, permissions*
Tableau.deleteWorkbookPermissionworkbookId*, granteeType*, granteeId*, capabilityName*, capabilityMode*
Tableau.addTagsToWorkbookworkbookId*, tags*
Tableau.deleteTagFromWorkbookworkbookId*, tagName*
Tableau.listViewsForSitefields, filter, includeUsageStatistics, pageNumber, pageSize, sort
Tableau.getViewviewId*, includeUsageStatistics
Tableau.getViewByPathviewUrl*
Tableau.getViewImageviewId*, resolution, maxAge
Tableau.getViewPdfviewId*, type, orientation, maxAge
Tableau.getViewDataviewId*, maxAge
Tableau.getViewCrosstabExcelviewId*, maxAge
Tableau.getViewSummaryDataviewId*, maxAge
Tableau.queryViewPermissionsviewId*
Tableau.addViewPermissionsviewId*, permissions*
Tableau.deleteViewPermissionviewId*, granteeType*, granteeId*, capabilityName*, capabilityMode*
Tableau.addTagsToViewviewId*, tags*
Tableau.deleteTagFromViewviewId*, tagName*

Datasources & Flows

InstructionArguments
Tableau.listDatasourcesfields, filter, pageNumber, pageSize, sort
Tableau.getDatasourcedatasourceId*
Tableau.publishDatasourcetableau_datasource*, request_payload*, datasourceType, overwrite, append, asJob
Tableau.updateDatasourcedatasourceId*, datasource*
Tableau.updateDatasourceNowdatasourceId*
Tableau.deleteDatasourcedatasourceId*
Tableau.downloadDatasourcedatasourceId*, includeExtract
Tableau.downloadDatasourceRevisiondatasourceId*, revisionNumber*, includeExtract
Tableau.getDatasourceRevisionsdatasourceId*, pageNumber, pageSize
Tableau.getDatasourceConnectionsdatasourceId*
Tableau.updateDatasourceConnectiondatasourceId*, connectionId*, connection*
Tableau.queryDatasourcePermissionsdatasourceId*
Tableau.addDatasourcePermissionsdatasourceId*, permissions*
Tableau.deleteDatasourcePermissiondatasourceId*, granteeType*, granteeId*, capabilityName*, capabilityMode*
Tableau.addTagsToDatasourcedatasourceId*, tags*
Tableau.deleteTagFromDatasourcedatasourceId*, tagName*
Tableau.listFlowsfilter, pageNumber, pageSize, sort
Tableau.getFlowflowId*
Tableau.downloadFlowflowId*
Tableau.deleteFlowflowId*
Tableau.runFlowflowId*, flowRunSpec
Tableau.getFlowRunStatusflowRunId*
Tableau.listFlowRunsfilter, pageNumber, pageSize
Tableau.getFlowConnectionsflowId*
Tableau.queryFlowPermissionsflowId*
Tableau.addFlowPermissionsflowId*, permissions*
Tableau.deleteFlowPermissionflowId*, granteeType*, granteeId*, capabilityName*, capabilityMode*

Scheduling, Jobs & Refresh Tasks

InstructionArguments
Tableau.listSchedulespageNumber, pageSize
Tableau.getSchedulescheduleId*
Tableau.createScheduleschedule*
Tableau.updateSchedulescheduleId*, schedule*
Tableau.deleteSchedulescheduleId*
Tableau.addWorkbookToSchedulescheduleId*, task*
Tableau.addDatasourceToSchedulescheduleId*, task*
Tableau.addFlowTaskToSchedulescheduleId*, task*
Tableau.listJobsfilter, pageNumber, pageSize
Tableau.getJobjobId*
Tableau.cancelJobjobId*
Tableau.listExtractRefreshTaskspageNumber, pageSize
Tableau.getExtractRefreshTasktaskId*
Tableau.runExtractRefreshTasktaskId*
Tableau.deleteExtractRefreshTasktaskId*

Subscriptions, Webhooks & Favorites

InstructionArguments
Tableau.listSubscriptionsfilter, pageNumber, pageSize
Tableau.getSubscriptionsubscriptionId*
Tableau.createSubscriptionsubscription*
Tableau.updateSubscriptionsubscriptionId*, subscription*
Tableau.deleteSubscriptionsubscriptionId*
Tableau.listWebhookspageNumber, pageSize
Tableau.getWebhookwebhookId*
Tableau.createWebhookwebhook*
Tableau.updateWebhookwebhookId*, webhook*
Tableau.deleteWebhookwebhookId*
Tableau.testWebhookwebhookId*
Tableau.listFavoritesForUseruserId*
Tableau.addFavoriteuserId*, favorite*
Tableau.deleteFavoriteuserId*, contentType*, contentId*

Tableau Pulse

InstructionArguments
Tableau.listMetricsdefinition_id, page_size, page_token
Tableau.getMetricmetricId*
Tableau.createMetricmetric*
Tableau.deleteMetricmetricId*
Tableau.listMetricDefinitionsview, page_size, page_token
Tableau.getMetricDefinitiondefinitionId*, view
Tableau.createMetricDefinitiondefinition*
Tableau.updateMetricDefinitiondefinitionId*, definition*
Tableau.deleteMetricDefinitiondefinitionId*
Tableau.getInsightbundle_request*
Tableau.listPulseSubscriptionsmetric_id, user_id, page_size, page_token
Tableau.createPulseSubscriptionsubscription*
Tableau.deletePulseSubscriptionsubscriptionId*

Metadata & VizQL Data Service

InstructionArguments
Tableau.metadataQueryquery*, variables
Tableau.searchAssetsname*, first
Tableau.getWorkbookLineageworkbookLuid*
Tableau.getDatasourceLineagedatasourceLuid*
Tableau.readMetadatadatasource*, options
Tableau.queryDatasourcedatasource*, query*, options
Arguments flagged with * are required.

DSUL Examples

List the workbooks in a project

- Tableau.listWorkbooks:
    filter: 'projectName:eq:Marketing'
    pageSize: 50
  output: workbooks

Trigger an immediate extract refresh on a datasource

- Tableau.updateDatasourceNow:
    datasourceId: '{{datasourceId}}'
  output: refreshJob

- Tableau.getJob:
    jobId: '{{refreshJob.job.id}}'
  output: jobStatus

Search assets and walk the workbook lineage

- Tableau.searchAssets:
    name: 'Sales Performance'
    first: 10
  output: matches

- Tableau.getWorkbookLineage:
    workbookLuid: '{{matches.0.luid}}'
  output: lineage

Query a published datasource via VizQL Data Service

- Tableau.queryDatasource:
    datasource:
      datasourceLuid: '{{datasourceLuid}}'
    query:
      fields:
        - fieldCaption: 'Region'
        - fieldCaption: 'Sales'
          function: 'SUM'
  output: rows

Create a Pulse subscription for a user

- Tableau.createPulseSubscription:
    subscription:
      metric_id: '{{metricId}}'
      user_id: '{{userId}}'
  output: subscription

Error Handling

HTTP codeMeaningTypical cause
400Bad RequestMissing or malformed action, invalid filter, missing required parameter for the chosen action.
401UnauthorizedThe Connected App JWT was rejected. Check clientId / secretId / secretValue and that the username exists on the site.
403ForbiddenThe impersonated user lacks the right (or the action is Tableau Server-only and you are on Tableau Cloud, e.g. site CRUD).
404Not FoundThe targeted resource does not exist on this site, or siteContentUrl is wrong.
409ConflictTrying to publish over an existing asset without overwrite: true, or a name collision.
429Too Many RequestsTableau API rate limit hit. Retry with exponential backoff.
500Internal Server ErrorTransient Tableau Server error. Retry; if it persists, check the Tableau status page.

Common Issues

“Not configured” — The app instance has no Connected App secret. Create a Connected App on your Tableau site (Settings → Connected Apps) and paste the clientId, secretId, secretValue and username in the app configuration. “Invalid API key” (MCP) — The mcp-api-key header does not match the central app secret. Reinstall the app instance to regenerate a signed key. “Credentials lookup failed” — The MCP endpoint could not reach the getConfig webhook of the installed app. Verify that the app instance is still installed in the expected workspace. “Site not found” / wrong site — Check siteContentUrl. On Tableau Cloud it is the segment after /site/ in the browser URL; on Tableau Server’s Default site, leave it empty. Tableau Server-only operation on Tableau Cloud — Several site- and schedule-management actions (sites.create, sites.update, schedules.create, …) are only available on Tableau Server and return 403 on Tableau Cloud. Check the Tableau REST API reference for the current allow-list.

External Resources

Tableau REST API Reference

Official documentation for the Tableau REST API 3.x, Metadata API, VizQL Data Service and Pulse.

Tool Agents

How to wire MCP tools into Prisme.ai agents and let them auto-discover capabilities.