Tableau MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Tableau MCP ServerList all workbooks in the Finance project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tableau MCP Server
A production-grade Model Context Protocol server that exposes Tableau Server/Cloud to Claude (Desktop, Code, and any other MCP-compatible client) as a real business-intelligence platform: projects, workbooks, worksheets/dashboards, published data sources, users and groups, background jobs and refresh schedules, Metadata API (GraphQL) lineage, Pulse metrics/insights, and CSV/PNG/PDF/Hyper exports — all constrained by the signed-in identity's actual Tableau site role and content permissions.
What this is (and isn't)
This is a deliberately-scoped core build: every tool listed below is a
real, working implementation against tableauserverclient and Tableau's
Metadata API — nothing is a stub that returns fake data. What's not
included yet is documented explicitly in Roadmap below, rather
than shipped as a half-finished tool that looks complete but isn't.
Related MCP server: tableau-mcp-navi
Quick start
python -m venv .venv
.venv/Scripts/activate # .venv/bin/activate on macOS/Linux
pip install -e ".[dev]" # add ",hyper" to also enable Hyper-extract tools
cp .env.example .env
python scripts/generate_keys.py # paste FERNET_KEY / JWT_SECRET into .env
# then set TABLEAU_SERVER_URL, TABLEAU_SITE_NAME, TABLEAU_PAT_NAME, TABLEAU_PAT_SECRET
pytest # run the test suite
python -m src.server # start over stdio (for Claude Desktop/Code)Point Claude Desktop / Claude Code at it
A ready-to-use .mcp.json is already in the repo root for Claude Code
(auto-discovered on open). For Claude Desktop, or to adapt the config for a
different machine, see docs/CLAUDE_SETUP.md for
copy-paste-ready configs and how to verify the connection.
Connecting to Tableau Cloud specifically
Works the same as Tableau Server, with two things to get right — both
covered in docs/CONFIGURATION.md:
TABLEAU_SITE_NAMEmust be your site's actual content URL — Cloud has no"Default"site (the server logs a warning at connect time if this looks misconfigured).Use a PAT (
TABLEAU_PAT_NAME/TABLEAU_PAT_SECRET), not username/password — Cloud's MFA/SSO enforcement breaks password sign-in for automation.
TABLEAU_API_VERSION should also be left blank (the default) so the server
auto-negotiates against Cloud's continuously-updating REST API version
instead of drifting out of date against a pinned one.
Docker
docker compose up --buildRuns over HTTP (MCP_TRANSPORT=http) behind bearer-JWT auth, with a Redis
sidecar for shared caching. See docs/SECURITY.md for how to issue tokens.
Deploy
The MCP server itself (above) runs locally over stdio for Claude Desktop/Code
— there's nothing to deploy for that. For everything about deploying the
web app (webapp/ + frontend/) — including a full free-tier walkthrough
(Supabase + Render + Vercel) — see DEPLOY.md.
Documentation
DEPLOY.md— deploying the MCP server and the web app, free-tier walkthrough includeddocs/WEBAPP.md— the multi-user web app: architecture, quick start, configurationdocs/ARCHITECTURE.md— layering, request flow, async model, cachingdocs/TOKEN_OPTIMIZATION.md— the token optimizer: strategies, budgets, cost reporting, how to extend itdocs/TOOLS_REFERENCE.md— every MCP tool, resource, and prompt, with required Tableau roledocs/SECURITY.md— secrets, auth, authorization model, audit traildocs/CONFIGURATION.md— every environment variable, explaineddocs/TROUBLESHOOTING.md— common errors and what they mean
Design principles
Clean layering (
tools → services → repositories → tableau client), each layer only aware of the one below it — seedocs/ARCHITECTURE.md.Repository pattern:
tableauserverclient/tableauhyperapiare only ever imported insidesrc/repositories/andsrc/tableau/; everything above speaks in Pydantic domain models (src/models/).Provider-agnostic token optimization (
src/optimization/): every prompt is measured, deduplicated, compressed, and budget-checked before it reaches an LLM, and the savings are reported rather than assumed. New strategies plug in through a registry — seedocs/TOKEN_OPTIMIZATION.md.Manual dependency injection via a single composition root (
src/services/container.py) — explicit and easy to trace, not a framework.Defense in depth on authorization: Tableau's own REST API is always the final authority;
src/security/permissions.pyadds a fail-fast site-role check in front of it so a caller without the right role gets an immediate, clear error instead of an opaque Tableau 403.Every write is audited (
audit_log(...)) to a dedicated, structured log file, separate from general application logs.Every tool response is uniform:
{"success": true, "data": ...}or{"success": false, "error": ..., "error_type": ...}— raw tracebacks never reach an MCP client.Async-first: the blocking Tableau SDKs run on a bounded thread pool (
asyncio.to_thread/ThreadPoolExecutor) so the MCP event loop stays responsive under concurrent tool calls; the Metadata GraphQL client is nativeaiohttp.
Project structure
src/
config/ Pydantic Settings — every value from the environment, nothing hardcoded
security/ Fernet encryption, JWT issue/verify, Role→Permission matrix
logging_config/ loguru setup: redacted app logs + dedicated audit trail
cache/ In-memory or Redis-backed async cache, TTL + prefix invalidation
tableau/ Connection lifecycle (sign-in, re-auth, retry) + Metadata GraphQL client
models/ Pydantic domain models (framework-agnostic)
optimization/ Provider-agnostic token optimizer: tokenizer, pricing, pluggable strategies
repositories/ tableauserverclient/tableauhyperapi calls, translated to domain models
services/ Business logic: authorization, caching, audit logging, DI container
tools/ MCP @mcp.tool() functions — one module per Tableau resource type
resources/ MCP @mcp.resource() — read-only context (site config, project tree, identity)
prompts/ MCP @mcp.prompt() — reusable guided BI workflows
server.py FastMCP app assembly + stdio/HTTP transport entrypoint
tests/
unit/ Fast, mock-based tests (config, security, cache, services, tool_helpers)
integration/ TableauConnectionManager against a faked TSC.Server (no network needed)
webapp/ Web app tests: auth, chat loop, artifacts, rate limiting
webapp/ Multi-user web app (FastAPI) — see docs/WEBAPP.md
frontend/ Web app UI (Next.js)
alembic/ Postgres schema migrations for webapp/ — see "Deploy" above
docs/ Architecture, tools reference, security, configuration, troubleshooting
scripts/ generate_keys.py / generate_webapp_keys.py — secret generationRoadmap
Deliberately deferred to a follow-up phase rather than included as thin/undertested stubs (see the "Deep core first" scoping decision this build made):
Hyper extract writing — building new
.hyperfiles from arbitrary data (tableauhyperapi.Inserter). Extract reading (list_hyper_tables,preview_hyper_extract) is implemented today.Statistical/ML analytics tools — forecasting, anomaly detection, clustering, regression, root-cause analysis.
pyproject.toml'sanalyticsextra already pins the libraries (scipy,statsmodels,scikit-learn,polars,duckdb) these would build on.Additional export formats — PowerPoint, Parquet, JSON (CSV, PNG, PDF, and Hyper are implemented).
Kubernetes manifests — Docker + docker-compose are provided; a Helm chart / raw manifests are not yet.
SSO/OIDC-federated Tableau auth flows beyond PAT and username/password (the
auth_settingfield oncreate_usersupports federated site configuration, but this server doesn't itself broker an OIDC/SAML login).
License
Proprietary — internal enterprise use.
Available Tools
69 toolsadd_datasource_to_scheduleB
Attach a data source's extract refresh to an existing schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_id | Yes | ||
| datasource_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as idempotency, side effects, permission requirements, or error handling. It states the action but not consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence (12 words) that front-loads the action and resource. Every word earns its place with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema, the description adequately conveys the core operation. It lacks behavioral details, but the simplicity and presence of an output schema reduce the burden. Could mention that the schedule must already exist, but the phrase 'existing schedule' partially covers this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explicitly explain each parameter. However, parameter names (schedule_id, datasource_id) are self-explanatory, and the description clarifies that datasource_id refers to a data source's extract refresh. This adds some meaning but does not fully compensate for missing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Attach') and specifies the resource ('a data source's extract refresh') and target ('an existing schedule'). It clearly distinguishes from sibling add_workbook_to_schedule by naming data source rather than workbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies use for attaching datasources to schedules but does not mention when not to use it or mention the sibling add_workbook_to_schedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_user_to_groupC
Add a user to a group.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only restates the basic action and provides no information about side effects, permissions, error semantics, or whether the operation is idempotent. This is a minimal disclosure, falling below even the 'update_drive' example which listed specific fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is concise and easy to parse. However, it is so brief that it borders on under-specification, though for a simple action it remains appropriately compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple mutation with two required params and an output schema, but the description provides no context about preconditions, return values, or failure modes. It lacks sufficient detail to fully understand the tool's behavior in context, though the simplicity of the operation slightly mitigates the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain what user_id or group_id refer to, whether they must correspond to existing entities, or any constraints. The description adds no semantic value beyond the schema's field names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Add a user to a group.' It uses a specific verb and resource, distinguishing it from siblings like 'remove_user_from_group' and 'create_group'. However, it doesn't explicitly call out alternatives or edge cases, so it falls slightly short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., user and group must exist), idempotency, or when not to use it. The description simply states the action without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_workbook_to_scheduleB
Attach a workbook's extract refresh to an existing schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_id | Yes | ||
| workbook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. While it clearly indicates a mutation-like operation ('attach'), it does not disclose side effects, error behavior, permission requirements, idempotency, or what happens if the schedule is not found. The phrase 'existing schedule' hints at a prerequisite but is not fully explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact sentence, front-loaded with the primary action and resources. Every word earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description conveys the core purpose adequately. However, it lacks usage guidelines, behavioral transparency, and parameter semantics, making it minimally viable but not complete. The existence of an output schema reduces the need to describe return values, but the description still falls short on context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not add meaningful detail about the parameters. It implicitly maps 'workbook' to workbook_id and 'schedule' to schedule_id but provides no guidance on how to obtain these IDs, what formats are expected, or any relationship between them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Attach') and clear resources ('workbook's extract refresh', 'existing schedule'), making the tool's purpose unambiguous. It also distinguishes itself from the sibling tool add_datasource_to_schedule, which targets datasources instead of workbooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when attaching a workbook's extract refresh to a schedule) but provides no explicit exclusions, prerequisites, or alternatives. It does not mention the need to verify the schedule exists or direct users to sibling tools like list_schedules or add_datasource_to_schedule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_pulse_apiA
Call an arbitrary Tableau Pulse REST endpoint.
path is relative to /api/{version}/sites/{site-id}/pulse, e.g.
"/metric-definitions" or "/subscriptions". Use this for any Pulse
endpoint the higher-level tools above don't cover, or to debug one
that isn't behaving as expected.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| method | Yes | ||
| params | No | ||
| json_body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It reveals the tool's arbitrary nature and path construction, but does not disclose potential side effects, authentication requirements, or error behavior, leaving safety considerations unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with three sentences each serving a distinct purpose: stating the function, explaining the path format, and giving usage guidance. No unnecessary filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and path base, and an output schema exists to document return values. However, it lacks parameter semantics for method, params, and json_body, and provides no error or safety context, making it only partially complete for a generic API caller.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It only explains the 'path' parameter with examples, leaving 'method', 'params', and 'json_body' meanings unclear. 'method' as HTTP verb and 'params' vs 'json_body' distinction are not specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool calls an arbitrary Tableau Pulse REST endpoint, which is a specific action and resource. It distinguishes itself from sibling tools by noting it covers endpoints not handled by higher-level Pulse tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: use this tool for Pulse endpoints not covered by higher-level tools, or for debugging non-conforming endpoints. This implies using higher-level tools for standard, covered endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_jobC
Cancel a pending or in-progress background job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral details. It only states the action and the job states ('pending or in-progress') but does not explain consequences of cancellation, edge cases (e.g., if the job is already completed), or error conditions. This is a significant gap for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is succinct and front-loaded with the main action, but it omits context that could be expected. It is not excessively verbose, but it also lacks structured guidance, earning a moderate score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no annotations, no parameter guidance, and no description of outcomes or side effects, the description is incomplete. The existence of an output schema mitigates the need to explain return values, but state transitions, reversibility, and error handling remain unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, job_id, with no description (0% coverage). The description does not mention job_id or provide any guidance on how to obtain or format it, so it fails to compensate for the lack of schema description. This is a complete absence of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'cancel' and identifies the resource as a 'background job', clearly distinguishing it from sibling tools like get_job and wait_for_job. It also specifies the applicable job states ('pending or in-progress'), adding useful scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one wants to stop a job, but it does not explicitly say when to use this tool versus alternatives like wait_for_job or get_job, nor does it mention any prerequisites or exclusions. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_chartA
Render a PNG chart from data you already have and return its file path.
IMPORTANT: chart the actual numbers a tool returned — never invent values. If you don't have real data, get it first (e.g. export_view_csv) or say so; do not fill the chart with placeholder numbers.
Use this to visualize numbers a tool returned — this builds a new
chart. (To get a picture of a viz that already exists in Tableau, use
export_view_image instead.)
chart_type: "bar", "barh" (horizontal — better for long category
names), "line" (change over time), "stacked_bar" (part-to-whole),
"scatter", or "pie".
labels are the categories/x-values. series maps each series name to
its values, one per label — e.g. {"2025": [10, 20], "2026": [12, 25]}
with labels=["Q1", "Q2"].
Notes on how it renders: a ninth series is folded into "Other" rather than reusing a color; scatter is capped at three series; part-to-whole is usually easier to read as "barh" than "pie", since lengths compare more accurately than angles.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | light | |
| title | No | ||
| labels | Yes | ||
| series | Yes | ||
| x_label | No | ||
| y_label | No | ||
| chart_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behaviors: charts are rendered from real data with an anti-fabrication rule, scatter is capped at three series, a ninth series is folded into 'Other', and the tool returns a file path. This gives agents clear expectations about limitations and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized, starting with the core action, then a clear warning, usage differentiation, parameter explanations, and rendering notes. Each section earns its place and the format improves scannability, though the anti-fabrication point is stated twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage, alternatives, data integrity, parameter semantics for core inputs, and rendering limitations. Since an output schema exists, the description appropriately focuses on behavior rather than return structure. This provides a complete picture for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It thoroughly explains `chart_type` with valid values and usage tips, and `labels`/`series` with an example. However, it does not describe optional parameters like `theme`, `title`, `x_label`, or `y_label`, leaving some ambiguity for their accepted values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Render a PNG chart from data you already have and return its file path.' It distinguishes itself from siblings by clarifying 'this builds a *new* chart' and contrasting with `export_view_image` for existing Tableau vizzes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: 'Use this to visualize numbers a tool returned' and provides an alternative for existing visualizations ('To get a picture of a viz that already exists in Tableau, use `export_view_image` instead'). It also instructs when not to invent data and to fetch real data first (e.g., via `export_view_csv`).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_groupB
Create a new group on the current site.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| minimum_site_role | No | Mirrors Tableau's site role vocabulary (TSC `UserItem.Roles`). | Viewer |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only states the basic action, lacking important details such as uniqueness requirements, permission needs, potential errors on duplicates, or side effects. For a write operation, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant wording. It efficiently conveys the core purpose, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity and an output schema, the description omits key context such as whether the group name must be unique, whether administrator rights are required, and what happens on failure. Given the absence of annotations, this leaves the agent under-informed for a mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents 'minimum_site_role' with an enum and default, and 'name' is self-explanatory. The description adds no additional parameter context. Since schema description coverage is 50% (not high), a baseline of 3 is appropriate—the schema does the heavy lifting, and the description does not conflict.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new group on the current site' uses a specific verb ('create'), a clear resource ('group'), and a scope ('current site'). It distinguishes itself from sibling tools like add_user_to_group, delete_group, and list_groups by explicitly stating the creation action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as add_user_to_group or delete_group. The description does not mention prerequisites (e.g., site privileges) or any exclusions, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectA
Create a new Tableau project, optionally nested under a parent project.
Requires the signed-in user's site role to grant content management (Creator or a Site/Server Administrator role).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| parent_id | No | ||
| description | No | ||
| content_permissions | No | LockedToProject |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavioral requirement (permission/role) and the optional parent nesting behavior. While it doesn't detail side effects or outcomes, 'create' inherently implies a mutating action, and the permission note adds useful transparency beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, immediately states the core action, and adds a single important prerequisite. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema is present, so return values need not be described. However, for a mutation tool with four parameters and an enum, the description leaves significant gaps: no explanation of content_permissions, no usage alternatives, and no mention of the effect of description. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only hints at parent_id with 'optionally nested under a parent project' but provides no natural-language meaning for name, description, or content_permissions. The enum values for content_permissions are left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Create a new Tableau project' and specifies optional nesting under a parent project. This distinguishes it from sibling tools like create_group, update_project, and delete_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a prerequisite (site role with content management), which gives clear context for when the tool can be used. However, it does not explicitly describe when not to use it or mention alternatives like update_project or delete_project, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_userA
Add a new user to the current site with the given site role.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| username | Yes | ||
| site_role | Yes | Mirrors Tableau's site role vocabulary (TSC `UserItem.Roles`). | |
| auth_setting | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It makes the mutating nature explicit through the verb 'Add' and adds the 'current site' scope, which is useful. However, it does not disclose required permissions, side effects, failure conditions, or reversibility, leaving a clear gap in behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential information without any redundant or irrelevant content. It is concise and well-structured, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists and covers return values, the description is too minimal for the tool's complexity. With low schema coverage and no annotations, it fails to provide context about required parameters beyond the schema, potential prerequisites, or special behavior. It does not fully enable an agent to understand when and how to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (25%, only site_role has a description). The description mentions 'given site role' which adds meaning to the site_role parameter, but it does not compensate for the lack of explanation for 'email' and 'auth_setting'. The description adds little beyond the schema for these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a new user'), the resource (a new user), and the scope ('to the current site'). It also specifies the key parameter ('with the given site role'), which distinguishes it from sibling tools like add_user_to_group (adds existing users to groups) and update_user (modifies existing users).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating new users, but it does not explicitly mention when to use it instead of alternatives or provide exclusion criteria. The context is clear for a create operation, but there is no explicit guidance about alternatives like update_user or remove_user, so it remains at the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_datasourceA
Permanently delete a published data source. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| datasource_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It explicitly states the irreversibility ('This cannot be undone') and targets 'published data source', which is key. It does not mention permissions or side effects, but the core destructive nature is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the action and resource, and every word adds value. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter delete operation, the description covers the essential information: what it deletes, that it is permanent, and that it targets published datasources. An output schema exists, so return values need not be described. It could mention prerequisites or consequences but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the `datasource_id` parameter. Schema description coverage is 0%, so the description should compensate, but it adds no parameter semantics beyond what the schema already provides in the property name and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('delete'), a clear resource ('published data source'), and emphasizes permanence ('cannot be undone'). It clearly distinguishes this tool from sibling delete tools for other resources (e.g., delete_workbook, delete_group).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is obvious: this tool deletes a datasource. However, it provides no explicit exclusions, prerequisites, or guidance on when to use it versus alternative tools. The context is clear, but there is no mention of when not to use it or what to do first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_groupA
Delete a group. Members are not removed from the site, only from the group.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose an important behavioral trait: members are not removed from the site, only from the group. However, it omits other potentially relevant details such as whether the deletion is permanent, requires certain permissions, or has cascading effects on group-related resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It is front-loaded with the primary action and then adds one clarifying detail. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and an output schema, the description covers the core purpose and a key side effect. It could mention that deletion is irreversible or require permissions, but the description is adequate for basic usage. Since annotations are absent, a bit more risk-related context would be ideal, but overall it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter group_id. The description does not elaborate on what group_id means or how to supply it. While the parameter name is self-explanatory and it's the only parameter, the description adds no semantic value beyond the schema, failing to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Delete a group,' which is a specific verb and resource. It also distinguishes itself from related operations like remove_user_from_group by clarifying that members are not removed from the site, only from the group. This makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool (when you want to delete a group) and provides behavioral context that differentiates it from removing individual members. However, it does not explicitly name alternative tools or state when not to use it, relying on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectA
Permanently delete a project and everything nested inside it. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It clearly states the operation is permanent, cannot be undone, and deletes everything nested in the project—critical consequences for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences—with the key information front-loaded. Each sentence adds essential value and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation, the description adequately covers the most important contextual details: permanence and recursive deletion. Since an output schema is present, return values are documented elsewhere, so the description need not explain them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single required parameter, project_id, with no description (schema coverage 0%). The description does not explain what project_id is or how to obtain it, leaving the agent to infer its meaning from the tool name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Permanently delete a project and everything nested inside it.' The verb 'delete' and resource 'project' are specific, and the scope 'everything nested inside it' distinguishes it from related delete tools like delete_workbook or delete_datasource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the description and name; it is obvious that this tool is for deleting projects. However, there is no explicit mention of when to use it versus alternatives, nor any caveats about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workbookA
Permanently delete a workbook. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the action is permanent and irreversible, which is critical for a destructive operation. It does not mention permissions or side effects, but the core risk is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, just two short sentences, with the action front-loaded. Every word earns its place, and it avoids unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with a single parameter, the description covers the essential fact of irreversibility. However, it lacks any mention of return values, permissions, or usage context, and the lack of output schema leaves some ambiguity about the result. It is adequate but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the description does not mention the workbook_id parameter or explain how it identifies the target workbook. While the single required parameter is self-explanatory from the schema, the description adds no additional meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('delete') and resource ('workbook'), making the tool's purpose unmistakable. It distinguishes itself from sibling tools like delete_datasource and delete_group by explicitly naming the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The implied usage is clear: use this tool to delete a workbook. However, it provides no explicit guidance on when to choose this over alternatives or any prerequisites or exclusions, leaving the agent to infer based on the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_workbookA
Download a workbook's .twbx file (including extracts) to a local directory.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes | ||
| destination_dir | No | exports/workbooks |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the file format (.twbx), that extracts are included, and the local directory destination. However, it omits important behavioral details such as permissions, overwrite behavior, and whether the download creates directories or has other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. 'Download a workbook's .twbx file (including extracts) to a local directory' efficiently conveys the core action and key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool, the description provides the basic purpose and destination but lacks usage context and behavioral specifics. An output schema exists but is not referenced. Overall, it is adequate for a simple download but leaves gaps in guidance for an agent deciding when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The phrase 'to a local directory' hints at destination_dir, but it does not explain workbook_id nor the default value for destination_dir. The description adds minimal meaning beyond the schema field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Download') and the resource ('a workbook's .twbx file (including extracts)') with a destination ('to a local directory'). This distinguishes it from sibling tools like get_workbook (metadata retrieval) and export_view_excel (view-level export).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb and resource, but the description offers no explicit guidance on when to use this tool versus alternatives like export_view_csv or export_datasource_extract. There are no exclusions or mention of alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_tokensA
Measure a prompt's token cost without changing it.
Use this before deciding whether optimization is worth it, or to check
whether a prompt fits a model's context window. Returns input tokens,
estimated output tokens, the total, whether it fits max_input_tokens,
and the estimated cost.
Same messages shape as optimize_tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| system | No | ||
| messages | Yes | ||
| max_input_tokens | No | ||
| max_output_tokens | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the burden of disclosing behavior. It clearly states the tool does not modify the prompt ('without changing it'), returns estimated values, and lists the specific return fields. It doesn't mention potential side effects like network calls or rate limits, but for a measurement tool the core safety and expectations are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action, followed by usage guidance and return details. Every sentence adds value without redundancy, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, output schema exists), the description covers the key aspects: purpose, usage, returns, and compatibility with `optimize_tokens`. It doesn't explain every parameter but the output schema and self-explanatory parameter names fill some gaps. Minor missing edge-cases like error handling, but overall complete enough for a measurement tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the `messages` parameter by referencing the same shape as `optimize_tokens`, and mentions `max_input_tokens` in the return description. However, it leaves `model`, `system`, and `max_output_tokens` undefined, relying on the parameter names and defaults. This is adequate but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('measure') and resource ('prompt's token cost'), and explicitly notes it does so 'without changing it', distinguishing it from optimization tools like optimize_tokens. This makes the tool's unique purpose immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use this before deciding whether optimization is worth it, or to check whether a prompt fits a model's context window.' It also references optimize_tokens for the messages shape, implying when to use that alternative instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_graphql_queryA
Execute an arbitrary GraphQL query or mutation against the Tableau Metadata API.
Use this for metadata questions the higher-level tools (get_workbook_lineage, get_datasource_fields, get_table_columns) don't cover. The query must be valid against Tableau's published Metadata API schema; malformed queries return the raw GraphQL error list.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| variables | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses error behavior (raw GraphQL error list) but fails to warn about the potential destructive impact of mutations, despite explicitly mentioning 'mutation'. It also does not mention authentication, rate limits, or any side effects beyond the immediate execution, leaving a significant gap for a tool that can alter metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the core purpose in the first sentence and usage guidance in the second paragraph. Every sentence adds value, and there is no wasted text. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (arbitrary GraphQL), the description covers purpose, usage, and error behavior, and the presence of an output schema mitigates the need to explain return values. However, it omits safety warnings for mutations and doesn't elaborate on variables, which are notable gaps for a tool that can execute any operation. Overall, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It clarifies the 'query' parameter by stating it accepts an arbitrary GraphQL query or mutation, but it does not explain the 'variables' parameter at all. The schema itself is minimal (string + optional object), so the description partially compensates but lacks details on how to structure variables or pass them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes arbitrary GraphQL queries or mutations against the Tableau Metadata API, using a specific verb and resource. It differentiates from sibling tools by explicitly naming higher-level tools (get_workbook_lineage, get_datasource_fields, get_table_columns) that cover certain metadata questions, making the scope distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: for metadata questions not covered by the higher-level tools, and names those alternatives. It also gives a clear context: the query must be valid against Tableau's published Metadata API schema, with a note about error handling for malformed queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_datasource_extractC
Download a data source's Hyper extract to local disk for inspection or offline use.
| Name | Required | Description | Default |
|---|---|---|---|
| datasource_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the action (download). It does not mention potential prerequisites (e.g., datasource accessibility), whether the download is synchronous, file size implications, or error conditions. This lack of detail could mislead an agent about the tool's side effects or resource intensity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 14 words, front-loaded with the action ('Download') and resource. Every word contributes to meaning, and it avoids redundancy, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one simple parameter and an output schema, but no annotations. The description covers only the core purpose. It omits usage guidelines, parameter semantics, and behavioral nuances, making it incomplete for an agent to invoke reliably without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter (datasource_id) with 0% description coverage. The description does not explain what datasource_id means, where to find it, or any expected format. This is a significant gap for a single-parameter tool, forcing the agent to rely on the parameter name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Download'), the resource ('a data source's Hyper extract'), and the target location ('to local disk'). It also provides the intended use case ('for inspection or offline use'), which distinguishes it from sibling tools like preview_hyper_extract and export_view_image/csv.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for inspection or offline use but provides no explicit guidance on when to use this tool over alternatives (e.g., preview_hyper_extract). It does not mention exclusions or compare with related export/preview tools, leaving the selection decision entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_view_csvA
Export the underlying data of a view (worksheet or dashboard) as CSV.
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only states what the tool does, not how the export is delivered, whether it is synchronous, what data is included, or any permissions/limits. This is insufficient for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is concise and front-loaded. It contains no redundant information and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no nested objects) and an output schema exists, so return values are covered. However, the description lacks parameter elaboration and behavioral context, leaving gaps that are not filled elsewhere. It is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, but it does not explain the 'view_id' parameter at all. The only hint is the word 'view' in the description, which implies it refers to a view's ID, but this is not explicit and does not clarify how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Export'), the resource ('the underlying data of a view'), and the format ('as CSV'). It also clarifies that 'view' includes both worksheets and dashboards, distinguishing it from sibling tools like export_view_image and export_view_excel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when CSV data from a view is needed, and the mention of 'underlying data' and format distinguishes it from image/Excel exports. However, it does not explicitly list alternatives or state when not to use it, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_view_excelA
Export a view's underlying data as a formatted .xlsx workbook.
Same data as export_view_csv, but as a real spreadsheet: bold frozen
header row, auto-filter, and auto-fitted columns — usable without the
recipient reformatting it first.
Pass sheet_name (usually the view's name) to label the tab; it
defaults to "Data".
| Name | Required | Description | Default |
|---|---|---|---|
| view_id | Yes | ||
| sheet_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds value by describing the formatting details (frozen header, auto-filter, auto-fit) and the sheet_name default behavior. While it doesn't explicitly state read-only or permission requirements, 'export' implies a non-mutating operation, and the description is sufficiently transparent for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the primary purpose, efficiently contrasts with the sibling tool, and ends with parameter guidance. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, no nested objects) and has an output schema, so return values need no description. The description covers the key aspects: what it does, why it differs from CSV, and the optional parameter behavior. It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'sheet_name' parameter well (purpose and default), but does not explicitly explain 'view_id'. However, 'view_id' is obvious from the tool name and context ('view's underlying data'), so the gap is minor. Partial compensation for the low coverage warrants a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Export a view's underlying data as a formatted .xlsx workbook.' It also distinguishes itself from the sibling tool 'export_view_csv' by explaining the exact differences (bold frozen header, auto-filter, auto-fitted columns), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative tool 'export_view_csv' and provides a clear comparison, implying when to use this tool (when a formatted spreadsheet is needed) versus the CSV export. This gives explicit usage guidance without needing further elaboration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_view_imageA
Export a view (worksheet or dashboard) as a PNG image or PDF, with optional URL filters.
filters maps a field name to the value it should be filtered to, e.g.
{"Region": "West"} — equivalent to Tableau's view-filter URL parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | png | |
| filters | No | ||
| view_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explains the filter behavior and its equivalence to Tableau URL parameters, which is helpful. However, it does not disclose potential prerequisites, permissions, or any side effects (e.g., whether a saved view is required or if results are time-limited).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, followed by a concise parameter clarification. No wasted words; the example is directly useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return value details are covered. The description covers the tool's core purpose and key parameter semantics. It lacks explicit usage boundaries (e.g., PDF vs PNG differences), but overall it's adequate for an export tool with 3 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description significantly compensates by explaining the non-obvious 'filters' parameter with an example and mapping to Tableau URL semantics. The other parameters (format, view_id) are self-explanatory from the schema's enum and required field, so the added value is solid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports a view (worksheet or dashboard) as PNG or PDF, which is a specific verb+resource+format. It implicitly distinguishes from sibling tools like export_view_csv and export_view_excel by format type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for when to use (export to image/PDF with optional filters) but does not explicitly mention alternatives or when not to use it. Usage is implied rather than explicitly contrasted with sibling export tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_contextA
Get everything about a dashboard in one call: metadata, URL, and screenshot.
Use this as the default when the user asks to "analyze", "look at",
"explain", or "tell me about" a dashboard — it returns the name,
workbook, project, owner, site id, description, tags, URL, created/updated
times, last refresh, and (unless include_screenshot=False) a rendered
screenshot in one response, so a follow-up answer needs no further calls.
dashboard is the name or view id; workbook/project disambiguate.
If the caller may view the dashboard but not export it, the metadata is
still returned and screenshot_error explains why the image is absent.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | ||
| workbook | No | ||
| dashboard | Yes | ||
| high_resolution | No | ||
| include_screenshot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return payload, the effect of include_screenshot, and even the behavior when export permissions are missing (metadata still returned, screenshot_error explains absence). No annotations to contradict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured in three paragraphs, front-loading the core purpose, then usage guidance, then parameter specifics. Every sentence adds meaningful information without fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the existence of an output schema, the description covers all necessary operational context: what it returns, when to use it, how parameters disambiguate, and edge-case behavior. It feels complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining dashboard (name or view id), workbook/project as disambiguators, and include_screenshot's role. However, high_resolution is not mentioned at all, leaving one of five parameters undocumented. The others are well-explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource ('Get everything about a dashboard') and enumerates the exact outputs (metadata, URL, screenshot). It clearly distinguishes from siblings like get_workbook, get_dashboard_screenshot, and export_view_image by combining multiple data types into one call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: 'Use this as the default when the user asks to "analyze", "look at", "explain", or "tell me about" a dashboard.' It also explains how workbook/project disambiguate and notes the permission edge case, providing clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_linkA
Get the direct, clickable Tableau URL for a dashboard or worksheet.
Call this whenever the user asks for a link to, or the address of, a dashboard — e.g. "give me the link to the Sales dashboard".
dashboard is the dashboard's name or its view id. If the name is not
unique, pass workbook and/or project (name substrings) to pick the
right one. Returns the dashboard/workbook/project names and the URL.
| Name | Required | Description | Default |
|---|---|---|---|
| project | No | ||
| workbook | No | ||
| dashboard | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It explains how the dashboard parameter works (name or view id), how to disambiguate with workbook/project, and what the return value contains. It does not mention error handling or edge cases, but for a simple read-only link retrieval this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary action, and includes a practical example. Every sentence adds value, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool, the description is complete: it explains inputs, outputs, and usage context. However, it does not differentiate itself from the sibling get_dashboard_links, nor mention potential errors or ambiguous-name behavior, which could lead to confusion in a tool listing with many related tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to all three schema parameters: dashboard as name or view id, and workbook/project as optional name substrings for disambiguation. This goes well beyond the bare schema types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a direct, clickable Tableau URL for a dashboard or worksheet, using a specific verb and resource. It also includes an example and distinguishes itself from dashboard discovery tools like search_dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call this whenever the user asks for a link or address, and provides disambiguation guidance for non-unique names via workbook/project. It does not explicitly mention when not to use it or contrast with sibling get_dashboard_links, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_linksA
Get shareable browser URLs for a workbook and ALL its dashboards/sheets.
Use this when the user asks for the link(s) to a workbook or "all the
dashboards in " — e.g. "shipping logistics workbook, all
dashboard links". workbook may be the workbook's name or its id; a name
is resolved automatically (if several workbooks share the name, the error
lists them so you can pass the id).
Tableau's API returns URL fragments, not links — this assembles them with the server and site into addresses a person can actually open.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It details that Tableau's API returns fragments and that the tool assembles them into openable URLs, and it explains name-resolution behavior including error handling for duplicate names. This is helpful context beyond the mere existence of the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with three sentences each serving a distinct purpose: definition, usage trigger, and technical note. It is front-loaded with the core purpose and earns its length without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description covers all essential aspects: what it does, when to use it, parameter semantics, and a behavioral nuance (fragment assembly). No gaps remain for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only says 'workbook' can be string or integer, but the description adds substantial meaning: it may be name or id, names are resolved automatically, and duplicate names produce an error listing suggestions. This fully compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get shareable browser URLs for a workbook and ALL its dashboards/sheets.' It clearly distinguishes from the sibling 'get_dashboard_link' by emphasizing the plural 'ALL,' making the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this when the user asks for the link(s) to a *workbook* or "all the dashboards in <workbook>"' and provides an example. However, it does not explicitly mention when not to use it or point to an alternative for single-dashboard links, so it misses the 'when-not/alternatives' part of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_screenshotA
Capture a rendered image of a dashboard and return its file path.
Call this when the user wants to see, preview, or get a picture/PNG of a
dashboard — e.g. "show me the Sales dashboard" or "screenshot the
executive overview". The web UI renders the returned file_path inline.
dashboard is the name or view id; workbook/project disambiguate a
non-unique name. Set high_resolution=True for a sharper (larger) image,
or as_pdf=True to render a PDF instead of a PNG. Returns the file path,
image dimensions, size, and capture time.
| Name | Required | Description | Default |
|---|---|---|---|
| as_pdf | No | ||
| project | No | ||
| workbook | No | ||
| dashboard | Yes | ||
| high_resolution | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool produces a rendered image, returns a file path, that the web UI renders that path inline, and what output fields are returned. It also notes optional behavior changes via high_resolution and as_pdf. It does not mention file lifetime or permissions, but is stronger than typical tool descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into clear sections: action/outcome, when-to-call with examples, parameter explanations, and return values. Every sentence adds value, and there is no redundant fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no annotations, the description is complete: it covers purpose, trigger conditions, all parameters, output contents, and format options. It is easy for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates fully. It explains every parameter: dashboard as 'name or view id', workbook/project for disambiguation, high_resolution for sharper image, and as_pdf for PDF output. This adds meaningful semantics beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Capture a rendered image of a dashboard and return its file path.' It also provides concrete examples like 'show me the Sales dashboard' and differentiates from sibling export tools by focusing on an inline-rendered screenshot/PDF. This clearly serves the user-facing preview use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call the tool: 'Call this when the user wants to see, preview, or get a picture/PNG of a dashboard.' It gives example phrasing and explains parameter disambiguation. It does not name sibling alternatives when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_datasourceA
Get a published data source by id.
| Name | Required | Description | Default |
|---|---|---|---|
| datasource_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The verb 'Get' implies a read-only retrieval with no side effects, and 'published' scopes the resource, but it does not disclose error behavior for nonexistent or unpublished IDs, permissions needed, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of seven words, immediately front-loading the action and object. Every word contributes meaning, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one required parameter and an output schema, the description covers the essential purpose and parameter usage. It does not need to explain return values due to the output schema, and it notes that the source must be published. Missing details are limited to error/permission behavior, which are less critical for a basic retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter datasource_id has 0% schema description coverage. The description's 'by id' adds some meaning by indicating the parameter is a unique identifier, but it adds little beyond the parameter name and does not specify the ID format (e.g., LUID, name).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with the resource 'published data source' and specifies retrieval by id. This clearly differentiates it from sibling tools like list_datasources and search_datasources that return multiple sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over alternatives such as list_datasources or search_datasources. The phrase 'by id' implicitly requires a known datasource_id, but there is no explicit context on prerequisites or alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_datasource_fieldsA
List the fields (including calculated fields with their formulas) defined on a published data source, via the Tableau Metadata API.
| Name | Required | Description | Default |
|---|---|---|---|
| datasource_luid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds useful context about the Metadata API and calculated fields, but does not disclose any side effects, permission requirements, or error behavior. Since this is a read operation, the lack of such details is less critical, but still a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the verb and resource. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, output schema present) and the description covers its core purpose. Missing details like connection prerequisites are minor given the output schema and sibling context. It earns a 4 for being nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, leaving the description to clarify the parameter. The description implies datasource_luid refers to the published data source's LUID, but does not explicitly define it or explain its format/scope. This adds marginal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists fields of a published data source, including calculated fields with formulas, via the Tableau Metadata API. This distinguishes it from sibling tools like get_datasource or get_table_columns by focusing on field-level metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (listing fields on a published datasource) but provides no explicit guidance on when to choose this over alternatives like get_datasource or get_table_columns, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobA
Get the status and progress of a background job by id.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without mentioning side effects, permissions, error handling, or whether the operation is read-only. This minimal description offers no added behavioral context beyond the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is clear and free of unnecessary words. Every part contributes directly to understanding the tool's function and input.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description covers the essential function and input adequately. It does not explain return values since the output schema exists, but it lacks explicit comparison with sibling tools and any behavioral details, which keeps it from a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'job_id' with no description (0% coverage). The description says 'by id', which merely echoes the parameter name and does not add meaningful detail such as where to obtain the id, format, or examples. The added value over the schema is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Get'), the resource ('status and progress of a background job'), and the method ('by id'). It effectively distinguishes this tool from siblings like list_jobs, wait_for_job, and cancel_job by focusing on retrieving details for a specific job.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking a specific background job by its id, but it does not explicitly state when to use this tool versus alternatives such as list_jobs or wait_for_job. No exclusions or alternative tool references are provided, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectA
Get a single Tableau project by its id.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description offers no additional behavioral context beyond the verb 'Get'—it does not mention permissions, not-found behavior, or side effects. The read-only implication is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundancy, perfectly sized for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and only one required parameter, the description provides sufficient context to understand the tool's scope. It omits error or edge-case behavior, but for a straightforward lookup this is likely acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description maps the single parameter (project_id) to 'its id', giving basic semantic context. However, it doesn't elaborate on the ID format or any restrictions, so only marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a specific resource ('a single Tableau project') and identifies the lookup key ('by its id'), clearly distinguishing it from sibling tools like list_projects or search_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for fetching a known project by its unique ID. It provides clear context for when to use it (when you have the project ID), though it doesn't explicitly discuss alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pulse_metricB
Get a single Tableau Pulse metric by id.
| Name | Required | Description | Default |
|---|---|---|---|
| metric_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It states a read-only lookup but adds little beyond the tool name, omitting details such as authentication needs, rate limits, and how this resource differs from a metric definition or insights. The word 'Get' is minimally informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. This is appropriately concise for a one-parameter lookup tool, even though it sacrifices contextual richness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple signature and presence of an output schema, the description is mostly adequate for invoking the tool with a known metric_id. However, the lack of usage guidance and confusion with related Pulse metric tools mean the description is not fully complete for safe tool selection in a large sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The phrase 'by id' maps metric_id to its role as the identifier, and the schema marks it as a required string. However, the description does not explain how to obtain the id or any format expectations, leaving the parameter semantics only partially clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and identifies the resource as 'a single Tableau Pulse metric' with an id. It is clear, but it does not explicitly distinguish this from the sibling get_pulse_metric_definition, which could be confused for the same action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not mention when to use this tool instead of list_pulse_metrics, get_pulse_metric_definition, or get_pulse_metric_insights, nor does it give any exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pulse_metric_definitionA
Get a single Tableau Pulse metric definition by id.
| Name | Required | Description | Default |
|---|---|---|---|
| definition_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. The verb 'get' implies a read-only operation, but the description does not explicitly state whether the operation is safe, what happens for invalid IDs, or any authentication requirements. However, for a simple retrieval tool, the action is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with zero wasted words. It front-loads the verb and resource, making the purpose immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return values are documented elsewhere. However, given the many related Pulse tools listed as siblings, the description does not clarify the relationship between 'metric definition' and 'metric', nor does it provide any usage context or restrictions. It is minimally adequate for a straightforward get-by-id operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description directly mentions 'by id', which explains the purpose of the sole parameter definition_id (it is the identifier used to fetch a single definition). This provides minimal but sufficient meaning for a simple ID parameter, though it does not elaborate on ID format or origin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a single Tableau Pulse metric definition by id' uses a specific verb ('get'), resource ('metric definition'), and scope ('by id'), clearly distinguishing it from siblings like list_pulse_metric_definitions (which lists all) and get_pulse_metric (which retrieves a metric, not a definition).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. There are no references to related tools like list_pulse_metric_definitions or get_pulse_metric, leaving the agent without explicit selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pulse_metric_insightsA
Get Tableau Pulse's generated insight bundle for a metric: its current value, period-over-period change, and any narrative Pulse has produced.
bundle_type selects how much Pulse generates: "ban" (default — current
value, change, and a top insight per dimension), "basic", "springboard",
"exploration", "breakdown", or "detail".
| Name | Required | Description | Default |
|---|---|---|---|
| metric_id | Yes | ||
| bundle_type | No | ban |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently explains what the tool returns and how bundle_type affects generation depth, including the default behavior. However, it does not disclose potential costs, required permissions, error conditions, or any side effects. This is a partial disclosure, not a comprehensive one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the tool's primary purpose, the second details parameter options. No redundant or filler content. It is front-loaded with the most important information and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (though not shown), the description doesn't need to explain return values. It covers the tool's purpose, main output components, and parameter behavior, which is sufficient for a tool of moderate complexity. The only notable gap is the lack of explicit comparison to sibling tools, but this does not undermine overall completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds significant meaning for bundle_type by listing valid values and explaining the default ('ban') and what each output includes. metric_id is not explicitly described, but its name and the context ('for a metric') make it self-evident. The description adds value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource ('Tableau Pulse's generated insight bundle for a metric') and what it includes (current value, period-over-period change, narrative). This effectively distinguishes it from sibling tools like get_pulse_metric (which likely returns raw metric data) and list_pulse_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for accessing generated insights and explains the bundle_type options, but it does not explicitly state when to prefer this tool over alternatives such as get_pulse_metric or list_pulse_metrics. No exclusion or alternative-selection guidance is provided, leaving it to the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_columnsA
Get column-level metadata (name, remote type, description) for an upstream database table known to Tableau's metadata graph.
| Name | Required | Description | Default |
|---|---|---|---|
| table_luid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It discloses that the table must be 'known to Tableau's metadata graph' and lists the returned metadata fields, but it does not mention potential errors, permissions, or whether it is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the purpose and key details. It contains no filler or redundant content, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description sufficiently covers the purpose and scope. It could mention error cases or prerequisites, but for a single-parameter metadata getter, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter, table_luid, with no schema description (0% coverage). The description indirectly implies table_luid identifies the upstream table, but it does not explicitly define the parameter or provide examples. This is adequate but leaves some interpretation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get column-level metadata (name, remote type, description)'. It specifies the resource type ('upstream database table') and the context ('known to Tableau's metadata graph'), which distinguishes it from sibling tools like get_datasource_fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for tables already known to the metadata graph. However, it does not explicitly mention when to use this tool over alternatives or exclude other scenarios, such as tables not in the metadata graph.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userA
Get a single user by id, including their site role.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states what the tool does and that the result includes the site role, but it does not disclose potential error behavior, authentication requirements, or any side effects. The read-only nature is implied by 'get', and the description is not misleading, but it lacks explicit safety or limitation information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence (10 words) that directly states the core functionality. There is no redundancy, filler, or unnecessary detail. Every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and an existing output schema, the description covers the essential purpose and a key output characteristic (site role). The output schema presumably details the return structure, so that is not a gap. However, it lacks any usage guidance or explicit read-only assurance, which prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, user_id, with no description (0% coverage). The tool description only says 'by id', which adds no meaning beyond the parameter name itself. It does not clarify the type or format of the id (e.g., UUID, email) or any constraints, so the description fails to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('user by id'), and adds a specific detail ('including their site role'). This distinguishes it from siblings like list_users (which lists all users), create_user, update_user, etc. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage: fetch a single user by id. It provides clear context for when to use this tool (when you need one user's details) without explicitly naming alternatives like list_users for fetching all users. There are no exclusions stated, but the scope ('single user') gives sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workbookA
Get a workbook by id, including its worksheets/dashboards (views).
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds valuable context that the response includes worksheets/dashboards (views), which is a behavioral detail beyond the basic 'get by id'. It does not discuss permissions or error conditions, but for a read-only getter this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence, front-loaded with the action and resource. It includes a useful extra detail about views without any unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter, the description communicates the purpose and the key additional detail (inclusion of views). The output schema covers the return structure, making the description sufficiently complete for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (workbook_id) with no description, and the description only says 'by id' without explaining the ID format or how to obtain it. With 0% schema coverage, the description does not compensate, leaving room for ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('a workbook by id'), with an explicit note that the response includes worksheets/dashboards (views). This distinguishes it from sibling tools like list_workbooks or get_workbook_lineage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a workbook ID is known, but it does not explicitly mention alternatives or exclusions. It relies on the reader to infer that it is for single-item retrieval rather than listing or searching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workbook_lineageA
Get upstream data lineage for a workbook: which published data sources and database
tables feed it, via the Tableau Metadata API. workbook_luid is the workbook's LUID
(the same id returned as id by get_workbook/list_workbooks).
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_luid | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well by explicitly stating it uses the Tableau Metadata API and focuses on upstream lineage. It implies a read-only operation without explicitly saying so, but the 'get' verb and metadata scope make the behavior clear. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences—the first announces the functionality, the second clarifies the key parameter. Every word earns its place, and the structure is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter, output schema present), and the description provides the core purpose, scope, and parameter provenance. This is sufficient for reliable invocation without needing extra detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no parameter descriptions (0% coverage), but the description fully compensates by defining `workbook_luid` as the workbook's LUID and pointing to get_workbook/list_workbooks for obtaining it. This resolves all ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves upstream data lineage for a workbook, specifying what that includes (published data sources and database tables) and the underlying API. This distinguishes it from sibling tools like get_workbook or list_datasources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes the use case clearly (get upstream lineage) without explicitly naming alternatives or exclusions. The context is sufficient for an agent to decide when to invoke it, though it could better contrast with related lineage/field tools like get_datasource_fields or get_table_columns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_datasourcesA
List published data sources visible to the signed-in user, paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses key behavioral constraints: only published datasources visible to the signed-in user are returned, and results are paginated. This adds meaningful context beyond the tool name, though it omits potential details like ordering or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler, efficiently stating the verb, resource, and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple paginated list tool with an output schema, the description covers the essential context: published status, user visibility, and pagination. It stops short of being fully complete by not differentiating from search_datasources, but the core information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no property descriptions (0% coverage), so the description must compensate. It only says 'paginated' without explaining how page_size and page_number affect results, leaving the parameters under-documented despite their simple names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('published data sources'), and the scope ('visible to the signed-in user, paginated'), distinguishing it from sibling list tools like list_jobs or list_workbooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for enumerating paginated datasources accessible to the current user, but it does not explicitly mention alternatives such as search_datasources or get_datasource, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_groupsB
List groups on the current Tableau site.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds a scope ('on the current Tableau site') but does not disclose pagination behavior, which is relevant given the page_size and page_number parameters. It also does not state whether it is read-only or if any filtering applies. The minimal description leaves key behavioral traits undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes meaning, and it is appropriately sized for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple list operation with an output schema, so return values need not be described. However, the description omits pagination behavior, which is essential given the schema parameters. The 'current Tableau site' scope is a useful context, but the missing pagination guidance leaves it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of page_size or page_number. The tool description does not compensate for the absence of parameter descriptions, leaving the agent to infer pagination semantics solely from parameter names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), names the resource ('groups'), and scopes it ('on the current Tableau site'). This clearly distinguishes it from siblings like list_projects or list_users, and from group management tools like create_group or delete_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use: to list groups on the current site. However, it does not explicitly state when not to use it or mention alternatives. The context of being a list operation alongside create/delete/modify group tools gives some implied usage guidance, but no explicit exclusions or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hyper_tablesA
List the tables (and their columns) contained in a local .hyper extract file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It clearly indicates a read-only listing operation and scopes to local .hyper files, but it does not disclose error behavior, file existence requirements, or that no modifications occur. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. Every word contributes to clarifying what the tool does and its scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and an output schema, the description is mostly sufficient. It clearly states the input is a local .hyper file and the output is tables/columns, though it lacks explicit note about error handling or comparison to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It indirectly clarifies that file_path is a path to a local .hyper extract file, but it does not explicitly describe the parameter format, path requirements, or potential validation. Some meaning is added beyond the bare string schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and clearly identifies the resource ('tables (and their columns)') and scope ('contained in a local .hyper extract file'). This distinguishes it from siblings like preview_hyper_extract or get_table_columns by scoping to local extract files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting local .hyper extract files, but it provides no explicit when-to-use guidance or alternatives. It does not mention how this tool relates to preview_hyper_extract or get_table_columns, so the context is present but not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsB
List background jobs (extract refreshes, publishes, subscriptions) on the site.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It states what jobs are listed but does not disclose pagination behavior, read-only nature, or any side effects. The examples of job types add some context, but critical behavioral details like the use of page_size/page_number are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and resource. Every word earns its place, with no redundant information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, the description is adequate in stating what is listed and gives site scope ('on the site'). However, it lacks any note about pagination or how to access later pages, leaving the agent to rely on the schema. The output schema covers return values, so this is not a major gap, but the missing pagination note prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not mention page_size or page_number. The description adds no meaning beyond the schema's field names and defaults. An agent must infer pagination semantics entirely from the parameter names, which is insufficient given the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and resource 'background jobs', and further clarifies the resource with examples: 'extract refreshes, publishes, subscriptions'. This clearly distinguishes it from sibling tools like get_job (singular) and list_schedules (a different resource type).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not mention when to use this tool versus alternatives like get_job or list_schedules. There is no guidance on pagination, filtering, or exclusions. Usage is only implied by the verb 'List', but no explicit context or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_optimization_strategiesA
List the token-optimization strategies this server can apply.
Shows each strategy's name, what it does, the order it runs in, and the
lowest level that enables it — useful for deciding which level to
ask for, or which strategies to disable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool's read-only nature by using 'List' and details the output fields (name, description, order, lowest enabling level), which adds meaningful behavioral context beyond a bare statement of purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence main purpose followed by a single explanatory sentence. Every word contributes to understanding the tool's function and value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and a likely output schema, the description covers the essential context: what is listed, the fields shown, and the decision support use case. It is fully adequate for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the input schema is empty (100% coverage). The description adds value by explaining what the output contains, fulfilling the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List the token-optimization strategies this server can apply.' It identifies a specific resource (optimization strategies) and a specific action (list), and distinguishes itself from sibling tools like optimize_tokens and estimate_tokens by focusing on enumerating available strategies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when the tool is useful: 'useful for deciding which level to ask for, or which strategies to disable.' This provides clear context for use, though it does not explicitly exclude alternative tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List Tableau projects (folders) visible to the signed-in user, paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses important behavioral traits: the results are scoped to the signed-in user and the output is paginated. The term 'List' implies a read-only operation, but this is not explicitly stated. Despite that, the description adds meaningful context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys purpose, scope, and pagination without any wasted words. It is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, the description covers the essential aspects: what is listed, for whom, and that pagination is used. The lack of explicit alternative usage guidance is a minor gap, but overall it is sufficiently complete for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two parameters (page_size, page_number) with defaults, but the description only says 'paginated' without explaining how these parameters control pagination or what values are expected. Since schema description coverage is 0%, the description should compensate but does not add parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('List') and the resource ('Tableau projects (folders)'), and distinguishes from sibling tools like get_project (singular) and search_projects (search-based). The scope ('visible to the signed-in user') adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to list projects visible to the user) but does not explicitly mention alternatives like search_projects for filtering or get_project for a single project. No exclusions or when-not-to-use guidance is given, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pulse_metric_definitionsA
List Tableau Pulse metric definitions on the site.
A metric definition is the reusable template (measure, aggregation, time dimension, dimensions available for grouping) that individual Pulse metrics are instantiated from.
Paging is token-based: the response carries total_available and, when
more remain, a next_page_token to pass back as page_token.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses token-based paging behavior, including the `total_available` and `next_page_token` fields, which is a non-obvious behavioral detail. It does not explicitly state read-only nature or permission requirements, but 'List' implies a safe read operation and the paging detail adds value beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of three short, focused paragraphs. The first sentence states the action and resource, the second clarifies the domain concept, and the third explains paging. Every sentence earns its place, and the most important information is front-loaded. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are documented. The description covers the core purpose, the definition concept, and paging mechanics, which is sufficient for a list operation. Slight gaps: no explicit mention of permission context, and no comparison to related metric tools, but these are not critical given the clarity and the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It explains `page_token` clearly by describing the `next_page_token` mechanics, but `page_size` is left to inference. This is partial compensation, but not complete parameter documentation. The term 'page_size' is self-explanatory, but the description could have noted defaults or limits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'List Tableau Pulse metric definitions on the site.' It clearly explains what a metric definition is (a reusable template), distinguishing this from the sibling list_pulse_metrics which lists individual metrics. This is a clear, differentiating purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by explaining the conceptual role of metric definitions vs. metric instances, implying when this tool should be used. However, it does not explicitly name alternatives or state when not to use it. Most list tools in the sibling set have implicit usage contexts, and this one is clear enough without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pulse_metricsA
List the individual Pulse metrics instantiated from a metric definition.
Each metric applies the definition's measure to a specific filtered scope (e.g. one per region/product line), and is what shows up as a card in the Pulse UI.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_token | No | ||
| definition_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It adds useful context: each metric applies the definition's measure to a filtered scope and appears as a card in the UI. However, it does not mention pagination behavior (page_size/page_token), whether the operation is read-only (though 'List' implies it), or any access constraints. Some behavioral context is provided, but not a complete picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the first stating the core function clearly and the second adding valuable context about what the metrics represent and how they relate to definitions. No extraneous words; the structure is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are handled. The description adds useful domain context about the definition-to-metric relationship and UI representation. However, it does not mention pagination parameters or explicitly tie definition_id to the required input. For a simple list operation, it is adequate but leaves minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It clarifies the role of definition_id (identifies the metric definition), but completely omits page_size and page_token. For a 3-parameter tool with no schema descriptions, this is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the exact object: 'individual Pulse metrics instantiated from a metric definition.' This distinguishes it from sibling tools like list_pulse_metric_definitions (which lists definitions) and get_pulse_metric (which gets a single metric). The 'instantiated from a metric definition' qualifier removes ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need the per-scope metric cards derived from a specific definition. It contrasts these metrics with the definition itself and notes they appear in the Pulse UI. However, it does not explicitly name alternatives or state when not to use it, so it stops short of fully explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schedulesA
List extract-refresh and subscription schedules defined on the server.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states a read-only list operation but does not disclose pagination behavior or any other side effects. However, the simplicity of a list operation makes this adequate, though not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the tool's purpose with no filler or redundancy. It is front-loaded with the verb 'List' and immediately identifies the resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, the description is mostly complete. It conveys the resource type and scope. However, it omits pagination context, which is relevant given the schema parameters, but this is a minor gap for such a straightforward operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, and the description does not mention page_size or page_number at all. The parameter names and defaults provide some semantics, but the description does not compensate for the lack of schema descriptions, leaving pagination behavior ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool lists extract-refresh and subscription schedules on the server, providing a specific verb and resource. It clearly distinguishes from sibling list tools (e.g., list_jobs, list_workbooks) by focusing on schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool—anytime schedule information is needed—but does not explicitly mention alternatives or exclusion scenarios. It lacks explicit comparison to other list tools, though the resource type makes the usage fairly evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersA
List users on the current Tableau site. Requires an administrative site role.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions the admin role requirement, which is useful, and implies read-only operation. However, it does not describe pagination behavior or that the tool returns a list of users with fields. The description is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the core action. It does not waste words and is easily parseable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two optional integer params, output schema present), the description provides essential context: scope (current site) and permission (admin role). However, it omits explicit guidance on pagination or alternatives, so completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two parameters (page_size, page_number) with 0% description coverage, and the description does not mention them or explain pagination. The parameter names are self-explanatory, but the description fails to clarify that results are paginated, which is a key semantic gap for an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists users on the current Tableau site, using a specific verb and resource. It distinguishes from sibling tools like list_groups (different resource) and get_user (single user), and the scope 'current Tableau site' adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a prerequisite (administrative site role), which implies when it should be used. However, it does not explicitly mention alternatives or contrast with get_user or search_workbooks. The usage context is present but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workbooksA
List Tableau workbooks visible to the signed-in user, paginated.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the visibility scope ('visible to the signed-in user') and pagination, which are useful behavioral traits. However, it does not mention sorting, default page size behavior beyond schema defaults, or whether it returns summary or full workbook objects. This is adequate but not richly transparent, warranting a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of nine words, directly stating the action, resource, scope, and pagination. It is front-loaded with the verb and contains no redundant information. Every word earns its place, making it exceptionally concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional, defaulted parameters and an output schema, the description covers the essential context: what is listed and that it is paginated. Since an output schema exists, return values are described elsewhere. The description is complete enough for the tool's simplicity, though it could add a note about typical use cases or permissions, but that is already implied. A score of 4 is justified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate. It only says 'paginated,' which hints at pagination parameters but does not explain page_size or page_number semantics. The schema offers only type and default, leaving the agent to infer the meaning. The description adds minimal value for understanding parameters, so a score of 2 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Tableau workbooks visible to the signed-in user, with pagination. The verb 'List' plus the resource 'workbooks' and scope 'visible to the signed-in user' precisely conveys its function and distinguishes it from sibling tools like search_workbooks or get_workbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it lists all workbooks accessible to the current user, with pagination. While it does not explicitly mention alternatives or exclusions, the scope and pagination hint at its typical use case. It implies usage rather than explicitly stating when to use it over search_workbooks, but the clarity of the description earns a solid 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workbook_viewsB
List the worksheets and dashboards (views) contained in a workbook.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for conveying safety and behavior. It only states the action ('List'), implying a read-only operation, but does not explicitly confirm it is read-only, nor does it mention potential filtering, pagination, or whether hidden views are included. This lack of behavioral disclosure is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loads the action and resource, and contains no superfluous information. It is highly concise and structured effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema and a single obvious parameter, the description covers the core purpose. However, it lacks supplementary context such as when to use it versus alternatives and any caveats about behavior (e.g., read-only or hidden views). The overall completeness is adequate but not detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter, workbook_id, with no description (schema coverage 0%). The description does not elaborate on the parameter's meaning or format, only indirectly referencing 'a workbook' in the purpose. This adds minimal value beyond the schema's parameter name and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists worksheets and dashboards (views) within a workbook. It uses a specific verb ('List') and resource ('workbook views'), and clarifies that 'views' includes both worksheets and dashboards, distinguishing it from sibling tools like list_workbooks (which list workbooks) and export_view_image (which export individual views).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as get_workbook or export_view_*. The purpose itself implies it is for retrieving the list of views in a specific workbook, but no alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_promptA
Sharpen a vague Tableau question into one that can be answered precisely.
Call this when a request is ambiguous — before running a broad search — to find out what's underspecified and which tools fit. It returns the issues found, a refined phrasing, and suggested tools.
Checks for the ambiguities that make a Tableau answer wrong or unreproducible: relative time words ("recently"), superlatives with no count ("top"), aggregates with no grouping, and actions that would modify the site.
This is analysis, not an answer — use the result to ask a better question or to confirm intent with the user.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does an excellent job: it lists the exact ambiguities checked, discloses return value ('issues found, a refined phrasing, and suggested tools'), and clarifies it's 'analysis, not an answer'. This provides rich behavioral context beyond what schema alone offers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense, with a clear first sentence stating the core purpose, followed by concise usage guidance, behavioral specifics, and a final expectation-setting statement. Every sentence contributes value without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (1 parameter), no annotations, and the presence of an output schema, the description is remarkably complete: it covers input, output, behavior, limitations, and post-conditions. It fully equips an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for the sole parameter 'question', the description fully compensates by explaining the parameter's purpose (a vague Tableau question), what makes it ambiguous (examples), and how the tool processes it. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('sharpen') with a clear resource ('vague Tableau question') and states the outcome ('can be answered precisely'). It distinguishes itself from sibling tools by positioning itself as a pre-processing/analysis step that identifies underspecified aspects and suggests tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call ('when a request is ambiguous'), when in the workflow ('before running a broad search'), and what to do with the result ('ask a better question or confirm intent'). It also implies alternatives by noting it helps identify 'which tools fit', making the usage context very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_tokensA
Shrink a prompt's token cost while preserving its meaning.
Returns the optimized prompt and a full accounting: original and optimized token counts, tokens saved, compression ratio, estimated cost saved, and what each optimization step did.
messages is the conversation, oldest first — each entry is
{"role": "user"|"assistant"|"system"|"tool", "content": "...", "kind": "chat"|"tool_result"|"summary", "name": "<tool name>", "pinned": true|false}. Only role and content are required. Mark
the live question pinned: true so it is never trimmed.
context_blocks are optional retrieved snippets — {"text": "...", "source": "...", "prior": 0.0-1.0}. Only the ones relevant to query
are kept, which is usually the largest saving available.
level: "low" (whitespace + duplicates only, safest), "medium" (adds
relevance selection, compression, history trimming — the default), or
"high" (adds summarization of older turns and tighter caps).
max_input_tokens sets a hard budget; 0 measures and optimizes without
enforcing one. model is used only for tokenizer choice and pricing —
an unknown id degrades to estimates rather than failing.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | medium | |
| model | No | ||
| query | No | ||
| system | No | ||
| messages | Yes | ||
| context_blocks | No | ||
| max_input_tokens | No | ||
| max_output_tokens | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It is exceptionally transparent: it states what is returned (optimized prompt plus detailed token accounting), the exact structure of 'messages' and 'context_blocks', the behavior of each optimization level, and that an unknown model id degrades to estimates rather than failing. It also warns that context blocks are filtered by relevance, which is a significant behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet dense, organized by parameter with clear code-style formatting. Every sentence adds value: it front-loads the purpose, then systematically explains messages, context_blocks, level, and budget. There is no filler, and the structure makes scanning easy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, three levels, multiple optimization modes) and the presence of an output schema, the description is mostly complete but has gaps. It thoroughly explains the core parameters and behavior, but omits 'system', 'query' (beyond a passing reference), and 'max_output_tokens', which would be needed for full autonomous invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so for 'messages' (full object structure, required fields, pinned flag), 'context_blocks' (structure and relevance filtering), 'level' (three modes with meanings), 'max_input_tokens' (hard budget semantics), and 'model' (tokenizer/pricing, fallback behavior). However, it leaves 'query', 'system', and 'max_output_tokens' undefined, and it references 'query' without explaining it, which is a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Shrink a prompt's token cost while preserving its meaning.' It clearly distinguishes this from sibling tools like estimate_tokens (which likely only counts tokens) and optimize_prompt (which may optimize for other goals) by focusing on token-cost reduction and returning a full accounting of savings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it explains how to mark a live question with 'pinned: true' to prevent trimming, which level ('low', 'medium', 'high') to choose based on safety vs. aggressiveness, and the role of 'max_input_tokens'. It does not explicitly name alternative tools or exclusions, but the level descriptions effectively serve as guidance for when to use more or less aggressive optimization.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_hyper_extractA
Read up to limit rows from a local .hyper extract file (e.g. one just downloaded via
export_datasource_extract) so its contents can be inspected without opening Tableau Desktop.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| file_path | Yes | ||
| table_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It clearly indicates a non-destructive read operation and limits scope to local .hyper files with a row cap. However, it does not disclose ordering, behavior when table_name is null, error handling, or whether the returned rows follow any particular ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action, the object, the scope, and the motivating use case efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are handled elsewhere. The description sufficiently covers the tool's purpose, file scope, row limit, and common use case. The main gap is the undocumented `table_name` parameter and its relationship to sibling tools like list_hyper_tables, but overall the description is complete enough for a simple preview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explicitly defines `limit` as a row cap and `file_path` as the local .hyper location, but `table_name` is completely unexplained. This leaves one of three parameters underspecified, though the most critical parameters are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read up to `limit` rows from a local .hyper extract file'. It clearly distinguishes this from sibling tools by focusing on row-level preview of a local extract, and the use case of inspecting contents without opening Tableau Desktop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete context for use by example: 'e.g. one just downloaded via export_datasource_extract'. It explains why the tool is useful (inspect without opening Tableau Desktop), but it does not name alternatives or explicitly state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_datasourceC
Publish a local .tds/.tdsx/.hyper file as a new published data source.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| file_path | Yes | ||
| overwrite | No | ||
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It only states the basic action without disclosing side effects (e.g., upload to server), requirements (e.g., authentication), or the meaning of the 'overwrite' parameter. This leaves significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that leads with the verb and specifies the exact action and resource. It contains no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks essential context for a publish operation: no usage guidance, no parameter explanations, and no behavioral disclosures. Given the tool's complexity (4 parameters, 2 required) and lack of annotations, the description is too sparse to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not explain any of the four parameters. It mentions file types, which hints at file_path, but does not clarify the roles of name, overwrite, or project_id, leaving the agent to infer their semantics from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Publish'), the resource ('data source'), and the input types ('.tds/.tdsx/.hyper file'). The word 'new' distinguishes it from update operations, and the resource type differentiates it from sibling tools like publish_workbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as update_datasource or export_datasource_extract. There is no mention of prerequisites, use cases, or exclusions, leaving the agent without situational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_workbookA
Publish a local .twbx/.twb file to Tableau Server/Cloud under the given project.
Requires Creator-level (or higher) site role. Set overwrite=True to replace an existing workbook with the same name in the target project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| file_path | Yes | ||
| overwrite | No | ||
| show_tabs | No | ||
| project_id | Yes | ||
| skip_connection_check | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the disclosure burden. It reveals the role requirement and the overwrite behavior (replace existing workbook), giving insight into side effects. It does not mention potential failure modes or long-running uploads, but the essential behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences perfectly front-loaded with the primary action, followed by a permission note and overwrite guidance. Every sentence adds value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Core action, role requirement, and overwrite semantics are covered, and presence of an output schema means return values are handled. However, several optional parameters remain unexplained and there are no explicit error conditions or prerequisites beyond the role, making the description adequate but incomplete for a 6-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds meaning for file_path (local .twbx/.twb), project_id (given project), and overwrite (replacement). However, it does not explain name, show_tabs, or skip_connection_check, leaving half the parameters semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Publish a local .twbx/.twb file to Tableau Server/Cloud under the given project.' This uses a specific verb and resource, and distinguishes it from sibling tools like download_workbook, update_workbook, or delete_workbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on prerequisites ('Requires Creator-level...') and when to set overwrite=True for replacing an existing workbook. It does not explicitly name alternative tools for updating or deleting, but the publishing context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_datasourceA
Trigger an extract refresh for a data source. Returns the async job id to poll via get_job.
| Name | Required | Description | Default |
|---|---|---|---|
| incremental | No | ||
| datasource_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It discloses the async trigger behavior and the return of a job id, which is useful. However, it omits potential side effects (e.g., overwriting existing extracts), permission requirements, or behavior when a refresh is already in progress, leaving transparency incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: two sentences, no redundant information, and the key action is front-loaded. Every word contributes to understanding the tool's purpose and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, and the description conveys the core flow (trigger and poll via get_job). The output schema likely defines the return structure, but the lack of parameter details and annotations means the agent may miss nuances like the meaning of 'incremental' or prerequisites. It is adequate but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not mention either parameter. 'datasource_id' is reasonably self-explanatory, but 'incremental' lacks explanation about what an incremental refresh entails versus a full refresh. The description adds no semantic value beyond the schema's property names, which is insufficient for parameters with potential ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Trigger an extract refresh') and the resource ('a data source'). It distinguishes from sibling tools like refresh_workbook and export_datasource_extract by specifying the data source context and the async job id return, which directly supports the use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on the asynchronous workflow by stating 'Returns the async job id to poll via get_job', guiding the agent to use get_job for follow-up. It does not explicitly contrast with other refresh/export tools, so it lacks exclusions, but the primary usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_workbookA
Trigger an extract refresh for a workbook. Returns the async job id to poll via get_job.
| Name | Required | Description | Default |
|---|---|---|---|
| workbook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly discloses the asynchronous nature of the operation and the return of a job id, which is essential for the agent to know. It does not, however, disclose potential side effects like whether the refresh overwrites data or if there are rate limits, but for a simple trigger this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the core action and then state the return value. Every word earns its place, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema, the description suffices by stating the action and the critical async behavior. It could be more complete by mentioning what the poll via get_job yields or any prerequisites, but the existing details cover the essential workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, workbook_id, with zero description coverage. The parameter name is self-explanatory and aligns with the tool's purpose ('for a workbook'), so the agent can infer its meaning. Yet the description does not add any explicit meaning beyond the schema, and the low coverage means some compensation is expected, which is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Trigger' with the resource 'extract refresh for a workbook', which precisely states the tool's function and distinguishes it from sibling refresh_datasource. The addition of returning an async job id for polling via get_job further clarifies the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs the agent to poll the returned job id via get_job, providing a clear follow-up action. However, it does not mention any conditions for when to use this tool over other refresh options, though the sibling refresh_datasource is implied as the alternative for datasource-level refreshes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_userA
Remove a user from the current site. This does not delete their server-level account.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key behavioral trait: it does not delete the server-level account. However, it does not mention reversibility, permissions required, or effects on group memberships. This is a meaningful but incomplete disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and immediately provides a crucial clarification. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter) and has an output schema, so the description need not explain return values. It covers the core action and the key non-destructive nuance. It is sufficiently complete for a low-complexity tool, though it could benefit from noting the 'site' context more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the description does not mention the user_id parameter. The parameter name is self-explanatory, but no additional context is provided about what kind of ID is expected or where it comes from. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Remove' with the resource 'user from the current site,' immediately clarifying the action and scope. It also distinguishes from sibling tools like remove_user_from_group by specifying 'current site,' and the note about not deleting the server-level account further refines the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool removes a user from a site but not from the server, which implicitly tells the agent when to use this tool vs. a hypothetical server-level deletion tool. While it doesn't explicitly name alternatives, the exclusion is a useful guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_user_from_groupB
Remove a user from a group.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states the action without mentioning side effects, permission requirements, or the outcome if the user is not in the group. This is minimal for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that is appropriately concise and front-loaded. It wastes no words and communicates the core action immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is extremely minimal and omits important contextual details such as prerequisites, side effects, or behavior for edge cases (e.g., non-existent user or group). While the tool is simple, the lack of context could lead to incorrect usage by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions (0% coverage), and the tool description does not elaborate on the parameters beyond their names. It relies on the self-explanatory nature of 'user_id' and 'group_id' but does not clarify formats, valid values, or relationships, which is insufficient given the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Remove' with a clear resource 'a user from a group,' which clearly distinguishes it from sibling tools like 'add_user_to_group' and 'remove_user'. It leaves no ambiguity about the tool's primary function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as whether it should be preferred over 'delete_group' or 'remove_user', nor does it mention any prerequisites like requiring the user to already be a member of the group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dashboardsA
Search dashboards/views by name, workbook, project, owner, tag, or keyword.
Call this when the user is looking for a dashboard but hasn't named an exact one — e.g. "find dashboards about revenue", "what dashboards are in the Finance project", or "list dashboards owned by ...". Every filter is optional and they combine (AND). Returns matching dashboards with their ids and URLs, which can be fed straight into the other dashboard tools.
Prefer project_id/workbook_id when you already have an id (e.g. from a
prior list/search): they are exact and unambiguous. project_id matches
the whole project subtree (that project plus any nested sub-projects);
workbook_id matches a single workbook. project/workbook remain as
name-substring fallbacks.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| name | No | ||
| limit | No | ||
| keyword | No | ||
| project | No | ||
| owner_id | No | ||
| workbook | No | ||
| project_id | No | ||
| workbook_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does so admirably: explains that filters are optional and combine with AND, states that results include IDs and URLs for chaining into other tools, and clarifies the nuanced behavior of project_id matching the entire project subtree versus workbook_id matching a single workbook. It also sets expectations that project/workbook are name-substring fallbacks. This is rich behavioral context beyond a simple 'search' phrase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet comprehensive: the first sentence states the core purpose, followed by usage context, examples, and parameter guidance. Every sentence adds value—there is no fluff or repetition of schema details. The structure is well-organized and front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 optional parameters with nuanced behavior) and the presence of an output schema, the description is remarkably complete. It covers the decision of when to use the tool, the parameter semantics (especially ID vs. name), the AND combination logic, and the return value shape (ids and URLs). The output schema handles return-format details, so the description need not repeat them. This is a fully contextual tool description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite the schema having 0% description coverage, the description compensates by naming most parameters (name, workbook, project, owner, tag, keyword) and elaborating on the key distinctions between project_id/project and workbook_id/workbook. However, it does not explicitly clarify the semantics of 'limit', 'owner_id', or 'keyword' beyond what is inferable from the parameter names, leaving some minor gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search dashboards/views by name, workbook, project, owner, tag, or keyword.' It clearly distinguishes itself from sibling search tools (search_projects, search_workbooks, search_datasources) by focusing on dashboards/views, and even mentions that results feed into other dashboard tools, reinforcing its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool ('when the user is looking for a dashboard but hasn't named an exact one') and provides examples of natural-language queries. It also gives clear guidance on choosing between IDs and name-based parameters: 'Prefer project_id/workbook_id when you already have an id...' and explains the subtree vs. single-workbook behavior, plus name-substring fallbacks. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_datasourcesA
Find data sources whose name contains the given text.
| Name | Required | Description | Default |
|---|---|---|---|
| name_contains | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Find' implies a read-only search operation with no side effects, which is adequate, but it does not disclose potential search behavior nuances like case sensitivity, pagination, or whether results include full object details. The presence of an output schema covers return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It directly communicates the tool's purpose and the parameter's role in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with an output schema, the description is largely complete. It explains the search criterion and resource, while the output schema handles return details. It could mention whether the search is substring/contains-based explicitly, but 'name contains' already asserts that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does connect the 'name_contains' parameter to 'name contains the given text', providing basic meaning. However, it adds no extra constraints or examples beyond what the parameter name itself suggests.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Find'), the resource ('data sources'), and the specific criterion ('name contains the given text'). This distinguishes it from sibling tools like list_datasources and get_datasource by specifying a name-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need to find data sources by name fragment) but does not explicitly contrast it with alternatives like list_datasources or get_datasource. No direct usage exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_projectsA
Find projects whose name contains the given text (case-insensitive substring match).
| Name | Required | Description | Default |
|---|---|---|---|
| name_contains | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the case-insensitive substring behavior, which is a key behavioral trait. It doesn't mention pagination or ordering, but the output schema covers return structure. Overall, it provides sufficient transparency for a simple search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every part adds value: what it does, on what field, and the matching behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no nested objects) and the presence of an output schema, the description is complete. It explains the search behavior fully without needing to elaborate on return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the meaning of 'name_contains' by stating that the project name must contain the given text, and adds the case-insensitivity detail. This goes beyond the bare parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Find projects') and the specific matching criterion ('name contains the given text (case-insensitive substring match)'). It distinguishes itself from sibling tools like 'list_projects' by narrowing to name-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case: when you need to find projects by name substring. It doesn't explicitly mention alternatives or when not to use it, but the context is clear from the descriptive language.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_workbooksA
Find workbooks whose name contains the given text.
| Name | Required | Description | Default |
|---|---|---|---|
| name_contains | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It does explain the core behavior—matching the workbook name by substring—but does not mention case sensitivity, pagination, result limits, or whether the search is scoped to the name field only. The description is honest but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the essential purpose without any filler or redundancy. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with an output schema, the description is largely sufficient. It specifies the search criterion and resource, and the output schema can handle return-value expectations. Minor gaps such as case sensitivity or pagination are not critical for this simple tool, but could be added for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the only parameter, name_contains. The description references the parameter indirectly as 'the given text' and clarifies it is matched against the workbook name. This adds some semantic meaning beyond the bare schema type, but it does not elaborate on formatting, case sensitivity, or matching behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: finding workbooks by name substring. The verb 'Find' is specific, the resource is 'workbooks', and the condition 'name contains the given text' distinguishes it from sibling tools like list_workbooks (which lists all) and get_workbook (which fetches by ID).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you need to locate workbooks by a name fragment, as opposed to listing all (list_workbooks) or fetching a specific one (get_workbook). However, it does not explicitly name alternatives or exclusions, so usage guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tableau_connectA
Sign in to Tableau Server/Cloud using the configured credentials.
Idempotent: if already connected, returns the current session's identity without re-authenticating. Most tools call this automatically, so you rarely need to invoke it explicitly — use it to verify connectivity or surface the signed-in user's site role up front.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses idempotency and the behavior of returning the current session identity without re-authenticating if already connected. This is helpful, though it could also mention error behavior or session handling, but the disclosed traits are sufficient for this simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by concise behavioral/usage notes. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 params) and the presence of an output schema, the description is complete. It covers what the tool does, when to use it, idempotency, and the type of return information (identity and site role). No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The description adds meaning by explaining that authentication uses 'configured credentials', which clarifies why no input parameters are needed. It does not need to elaborate further given the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair ('Sign in to Tableau Server/Cloud') and distinguishes the tool from siblings like tableau_disconnect and tableau_health_check. It clearly indicates what the tool does and the context in which it is used.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('verify connectivity or surface the signed-in user's site role up front') and when not to ('Most tools call this automatically, so you rarely need to invoke it explicitly'). This provides clear usage guidance and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tableau_disconnectA
Sign out of the current Tableau session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the primary effect (ending the session) but does not mention side effects like token invalidation, reversibility, or behavior when already signed out. For a simple sign-out, this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, grammatically correct sentence that is clear and to the point. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, simple state-change tool with an output schema, this description fully communicates the necessary information. Return values are presumably covered by the output schema, and no other context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. The baseline for 0 params is 4, and the description correctly adds no unnecessary parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Sign out') and resource ('current Tableau session'), clearly distinguishing it from sibling tools like tableau_connect. It unambiguously states the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool or provide alternatives. However, the purpose is self-evident and implies usage as the counterpart to tableau_connect, so some guidance is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tableau_health_checkA
Report MCP server health: config validity and Tableau connectivity, without side effects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It explicitly states 'without side effects,' which is a key behavioral trait beyond what the name alone conveys. It also mentions what is checked (config validity and connectivity). It could say more about behavior on failure, but the core non-destructive nature is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. It is fully front-loaded with the purpose and includes a meaningful qualifier ('without side effects') without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an output schema present, the description is complete. It states what the tool does, what it checks, and that it is side-effect-free. The output schema presumably covers return values, so no additional return-value documentation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is effectively 100% (empty object). Since there are no parameters, the baseline is 4, and there is nothing further to explain about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description tells us exactly what the tool does: it reports MCP server health by checking config validity and Tableau connectivity. This is a specific verb and resource, and it clearly differentiates from sibling tools like tableau_connect or tableau_server_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: you would use this to check server health before relying on other Tableau operations. However, it does not explicitly state when to use it vs alternatives, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tableau_server_infoA
Get the connected Tableau Server/Cloud's product version and REST API version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verb 'Get' indicates a read-only operation, but it does not disclose any additional behavior such as authentication requirements, rate limits, or whether it depends on an active connection. For a simple version check, this is minimal but acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the tool's purpose without any unnecessary words or repetition. It is front-loaded and immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is extremely simple: no parameters and a clearly stated purpose. An output schema exists, so the description does not need to explain return values. The description fully covers what the tool does, making it complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. According to the rubric, a baseline of 4 is appropriate when there are no parameters, as the description need not explain parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with the verb 'Get' and specifies the resource as the connected Tableau Server/Cloud's product version and REST API version. It is distinct from all sibling tools, which target specific entities like groups, jobs, workbooks, or datasources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking version information but does not explicitly state when to use it versus alternatives or provide any exclusions. For a simple info tool, this is adequate but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_datasourceA
Rename, move, or certify/decertify a published data source.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| project_id | No | ||
| is_certified | No | ||
| datasource_id | Yes | ||
| certification_note | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a mutation (rename, move, certify) but does not mention permissions, reversibility, side effects on existing data, or how certification interacts with certification_note. This is a significant transparency gap for a mutation tool, similar to the update_drive reference example.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys all core actions with no filler words. Every phrase earns its place, and it is appropriately sized relative to the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the primary use cases for a 5-parameter tool with one required parameter, but it omits important contextual details such as required permissions, whether operations can be combined, and the role of certification_note. The presence of an output schema (per context signals) reduces the need to describe return values, but the overall completeness is still only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must compensate. It loosely maps 'rename' to name, 'move' to project_id, and 'certify/decertify' to is_certified and certification_note, providing semantic context beyond bare parameter names. However, it does not explicitly detail each parameter's role, formatting, or constraints, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three specific actions (rename, move, certify/decertify) performed on a published data source, clearly identifying the tool's scope. This distinguishes it from sibling tools like publish_datasource, delete_datasource, or refresh_datasource, which cover different lifecycle operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is implicitly conveyed through the listed operations, providing minimal guidance on when to invoke this tool. However, it does not explicitly state when to use it vs. alternatives, nor does it mention any exclusions or prerequisites, so it meets only the 'implied usage' benchmark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectB
Rename, redescribe, move, or change the permission mode of an existing project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| parent_id | No | ||
| project_id | Yes | ||
| description | No | ||
| content_permissions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It names the kinds of modifications but does not mention potential side effects, required permissions, partial-update semantics, or outcomes. For a mutation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the main actions. No filler or repetition exists; every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and no schema descriptions or annotations, the description is too minimal. It omits important context such as how 'move' works, whether updates are partial, and what happens to unspecified fields. The output schema exists, so return values are not needed, but the operational context remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It maps 'Rename' to name, 'redescribe' to description, 'move' to parent_id, and 'change permission mode' to content_permissions. This gives some semantic help, but it does not explain parameter formats, null behavior, or the enum values for content_permissions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('update') and clearly enumerates the exact operations: 'Rename, redescribe, move, or change the permission mode of an existing project.' This distinguishes it from create/delete/get siblings by focusing on modifying an existing project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing project' implies the tool is for modifying resources that already exist, providing subtle context. However, it does not explicitly state when to use this tool versus create_project, delete_project, or search_projects, nor does it provide exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_userB
Update a user's site role, full name, or email.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| user_id | Yes | ||
| full_name | No | ||
| site_role | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Update', which implies mutation, but lacks details on permission requirements, whether partial updates are supported, reversibility, or any side effects. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, directly stating the action and target. It is front-loaded and appropriately sized for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, which reduces the need to describe return values. However, this is a mutation tool with minimal description; it does not address prerequisites, permissions, effect on existing user settings, or potential side effects. The output schema only partially compensates for the lack of contextual detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It names the fields (site_role, full_name, email) but these are already present as parameter names in the schema, adding little value. It does not explain the semantics of user_id (e.g., whether it's an ID or email) or provide any detail beyond the schema's own enum description for site_role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('update'), resource ('user'), and enumerates the mutable attributes (site role, full name, email). This distinguishes it from sibling tools like create_user, get_user, and remove_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage — when you need to update a user's site role, full name, or email — but it does not explicitly state when to use this over alternatives or mention any exclusions or preconditions. No references to alternative tools are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workbookA
Rename a workbook, move it to a different project, and/or toggle sheet tabs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| show_tabs | No | ||
| project_id | No | ||
| workbook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any side effects, permissions, or consequences of the operations. It only lists the actions without explaining whether changes are reversible, how moving affects access, or whether partial updates are supported. The burden falls entirely on the description, which fails to address these.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the main operations. Every word is necessary, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's capabilities and maps parameters to operations, and an output schema is present. However, given the absence of annotations, the lack of behavioral context (side effects, prerequisites) leaves the description somewhat incomplete for safe invocation, though the core functionality is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explicitly linking each operation to the relevant parameter: rename to 'name', move to 'project_id', and toggle tabs to 'show_tabs'. However, the required workbook_id is not mentioned, and the description does not specify parameter formats (e.g., whether project_id is a GUID).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific action verbs ('rename', 'move', 'toggle') and identifies the resource (workbook) and the exact operations, clearly distinguishing it from sibling workbook tools like publish_workbook or delete_workbook.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the use cases: renaming, moving to a different project, and toggling sheet tabs. It does not explicitly mention alternatives or when-not-to-use, but the specific operations make the applicable context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_jobA
Block until a background job finishes (success or failure), up to timeout_seconds.
Use after refresh_workbook/refresh_datasource when the caller needs the refreshed data confirmed complete before proceeding, rather than firing and forgetting.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that the tool blocks, waits for success or failure, and has a timeout. However, it does not explain what happens on timeout (e.g., error vs. return with status), which is a meaningful gap for a blocking wait tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, followed by a concrete usage scenario. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema, the description covers the essential purpose, usage context, and timeout parameter. Missing details like timeout behavior are likely in the output schema, so the description is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains timeout_seconds as the upper bound of the wait, but job_id is only implicitly understood from the tool name and usage context. It does not describe job_id's origin or required format beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool blocks until a background job finishes (success or failure) up to a timeout. It distinguishes itself from siblings like get_job (polling) and cancel_job by emphasizing the blocking behavior and the specific after-refresh use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool after refresh_workbook/refresh_datasource when the caller needs confirmation before proceeding, and contrasts with 'firing and forgetting.' However, it does not name alternative tools or provide exclusions beyond that context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
69 tool updates
v1.0.0- First observed
add_datasource_to_schedule - First observed
add_user_to_group - First observed
add_workbook_to_schedule - First observed
call_pulse_api - First observed
cancel_job - First observed
create_chart - First observed
create_group - First observed
create_project - First observed
create_user - First observed
delete_datasource - First observed
delete_group - First observed
delete_project - First observed
delete_workbook - First observed
download_workbook - First observed
estimate_tokens - First observed
execute_graphql_query - First observed
export_datasource_extract - First observed
export_view_csv - First observed
export_view_excel - First observed
export_view_image - First observed
get_dashboard_context - First observed
get_dashboard_link - First observed
get_dashboard_links - First observed
get_dashboard_screenshot - First observed
get_datasource - First observed
get_datasource_fields - First observed
get_job - First observed
get_project - First observed
get_pulse_metric - First observed
get_pulse_metric_definition - First observed
get_pulse_metric_insights - First observed
get_table_columns - First observed
get_user - First observed
get_workbook - First observed
get_workbook_lineage - First observed
list_datasources - First observed
list_groups - First observed
list_hyper_tables - First observed
list_jobs - First observed
list_optimization_strategies - First observed
list_projects - First observed
list_pulse_metric_definitions - First observed
list_pulse_metrics - First observed
list_schedules - First observed
list_users - First observed
list_workbook_views - First observed
list_workbooks - First observed
optimize_prompt - First observed
optimize_tokens - First observed
preview_hyper_extract - First observed
publish_datasource - First observed
publish_workbook - First observed
refresh_datasource - First observed
refresh_workbook - First observed
remove_user - First observed
remove_user_from_group - First observed
search_dashboards - First observed
search_datasources - First observed
search_projects - First observed
search_workbooks - First observed
tableau_connect - First observed
tableau_disconnect - First observed
tableau_health_check - First observed
tableau_server_info - First observed
update_datasource - First observed
update_project - First observed
update_user - First observed
update_workbook - First observed
wait_for_job
TDQS
Scored across 69 tools
Several tools have overlapping boundaries, particularly export_view_image vs get_dashboard_screenshot, and get_dashboard_links vs get_dashboard_link. The descriptions clarify when to use each, but the similar names and actions create risk of misselection.
Most tools follow a clear verb_noun pattern (e.g., list_workbooks, get_project, create_user). Minor deviations exist, such as tableau_connect and tableau_disconnect using a noun_verb order, and get_dashboard_links vs get_dashboard_link differing only by plural, but these are not chaotic.
With 69 tools, this server is far beyond the recommended scope for a single MCP server. Many tools are highly specific or overlap (e.g., multiple dashboard export variants), making the surface unwieldy for an agent to navigate effectively.
The tool set covers the full lifecycle of Tableau resources: CRUD for projects, workbooks, datasources, users, and groups, plus jobs, schedules, metadata, Pulse, and exports. Minor gaps exist, such as no update/delete group and no remove-from-schedule utility, but core workflows are well supported.
Maintenance
Related MCP Connectors
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA production-ready MCP server that transforms natural language into safe, executable SQL queries with multi-database support and intelligent schema analysis.1-
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server for Tableau Server. Enables AI assistants to interact with Tableau workbooks, views, datasources, and metadata.24MIT
- FlicenseNot gradedqualityNot gradedmaintenancePersonal MCP server for Snowflake and Tableau integration, enabling SQL queries and database/table listing as well as Tableau workbook, view, datasource management.-
- FlicenseAqualityBmaintenanceMCP server that automates the publishing and validation of Tableau workbooks and data sources on Tableau Server or Tableau Cloud, enabling an AI agent to discover, build, validate, and publish content without human intervention.10-