Skip to main content
Glama
Rajvardhan-singh-26

Tableau MCP Server

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:

  1. TABLEAU_SITE_NAME must be your site's actual content URL — Cloud has no "Default" site (the server logs a warning at connect time if this looks misconfigured).

  2. 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 --build

Runs 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

Design principles

  • Clean layering (tools → services → repositories → tableau client), each layer only aware of the one below it — see docs/ARCHITECTURE.md.

  • Repository pattern: tableauserverclient/tableauhyperapi are only ever imported inside src/repositories/ and src/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 — see docs/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.py adds 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 native aiohttp.

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 generation

Roadmap

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 .hyper files 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's analytics extra 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_setting field on create_user supports federated site configuration, but this server doesn't itself broker an OIDC/SAML login).

License

Proprietary — internal enterprise use.

Available Tools

69 tools
add_datasource_to_scheduleB

Attach a data source's extract refresh to an existing schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault
schedule_idYes
datasource_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior1/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
schedule_idYes
workbook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
methodYes
paramsNo
json_bodyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNolight
titleNo
labelsYes
seriesYes
x_labelNo
y_labelNo
chart_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
minimum_site_roleNoMirrors Tableau's site role vocabulary (TSC `UserItem.Roles`).Viewer

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
parent_idNo
descriptionNo
content_permissionsNoLockedToProject

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
usernameYes
site_roleYesMirrors Tableau's site role vocabulary (TSC `UserItem.Roles`).
auth_settingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasource_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYes
destination_dirNoexports/workbooks

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
systemNo
messagesYes
max_input_tokensNo
max_output_tokensNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
variablesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasource_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
view_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
view_idYes
sheet_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNopng
filtersNo
view_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
workbookNo
dashboardYes
high_resolutionNo
include_screenshotNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_pdfNo
projectNo
workbookNo
dashboardYes
high_resolutionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasource_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasource_luidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
metric_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
definition_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
metric_idYes
bundle_typeNoban

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_luidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_luidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_tokenNo
definition_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNomedium
modelNo
queryNo
systemNo
messagesYes
context_blocksNo
max_input_tokensNo
max_output_tokensNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
file_pathYes
table_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
file_pathYes
overwriteNo
project_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
file_pathYes
overwriteNo
show_tabsNo
project_idYes
skip_connection_checkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
incrementalNo
datasource_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
workbook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
nameNo
limitNo
keywordNo
projectNo
owner_idNo
workbookNo
project_idNo
workbook_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_containsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
name_containsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_containsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
project_idNo
is_certifiedNo
datasource_idYes
certification_noteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
parent_idNo
project_idYes
descriptionNo
content_permissionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
user_idYes
full_nameNo
site_roleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
show_tabsNo
project_idNo
workbook_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
timeout_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 69 tool updatesv1.0.0
    • First observedadd_datasource_to_schedule
    • First observedadd_user_to_group
    • First observedadd_workbook_to_schedule
    • First observedcall_pulse_api
    • First observedcancel_job
    • First observedcreate_chart
    • First observedcreate_group
    • First observedcreate_project
    • First observedcreate_user
    • First observeddelete_datasource
    • First observeddelete_group
    • First observeddelete_project
    • First observeddelete_workbook
    • First observeddownload_workbook
    • First observedestimate_tokens
    • First observedexecute_graphql_query
    • First observedexport_datasource_extract
    • First observedexport_view_csv
    • First observedexport_view_excel
    • First observedexport_view_image
    • First observedget_dashboard_context
    • First observedget_dashboard_link
    • First observedget_dashboard_links
    • First observedget_dashboard_screenshot
    • First observedget_datasource
    • First observedget_datasource_fields
    • First observedget_job
    • First observedget_project
    • First observedget_pulse_metric
    • First observedget_pulse_metric_definition
    • First observedget_pulse_metric_insights
    • First observedget_table_columns
    • First observedget_user
    • First observedget_workbook
    • First observedget_workbook_lineage
    • First observedlist_datasources
    • First observedlist_groups
    • First observedlist_hyper_tables
    • First observedlist_jobs
    • First observedlist_optimization_strategies
    • First observedlist_projects
    • First observedlist_pulse_metric_definitions
    • First observedlist_pulse_metrics
    • First observedlist_schedules
    • First observedlist_users
    • First observedlist_workbook_views
    • First observedlist_workbooks
    • First observedoptimize_prompt
    • First observedoptimize_tokens
    • First observedpreview_hyper_extract
    • First observedpublish_datasource
    • First observedpublish_workbook
    • First observedrefresh_datasource
    • First observedrefresh_workbook
    • First observedremove_user
    • First observedremove_user_from_group
    • First observedsearch_dashboards
    • First observedsearch_datasources
    • First observedsearch_projects
    • First observedsearch_workbooks
    • First observedtableau_connect
    • First observedtableau_disconnect
    • First observedtableau_health_check
    • First observedtableau_server_info
    • First observedupdate_datasource
    • First observedupdate_project
    • First observedupdate_user
    • First observedupdate_workbook
    • First observedwait_for_job

TDQS

B3.2/5.0

Scored across 69 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count1/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    A production-ready MCP server that transforms natural language into safe, executable SQL queries with multi-database support and intelligent schema analysis.
    1
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Personal MCP server for Snowflake and Tableau integration, enabling SQL queries and database/table listing as well as Tableau workbook, view, datasource management.
    -
  • F
    license
    A
    quality
    B
    maintenance
    MCP 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
    -