A tool is one specific thing the agent can do mid-conversation: list a schema, run a query, send an email, post to Slack, build a chart, save an analysis. Whenever it uses one, a tool card lands in the chat. Some get a custom UI, the rest fall back to a small generic card showing the inputs and the result.
What an agent has in its toolbox depends on two things:
- The permissions you've switched on.
- The blocks (SQL queries, email templates, Slack messages, Tableau views, Google Slides decks) you've shared with it.
The rest of this page is the full list, grouped by what the tools actually do.
At a glance
Database tools
Always available. This is where the agent goes first when it needs to understand a database before writing SQL.
| Tool | What it does |
|---|---|
list_schemas |
List the schemas in a database. |
list_tables |
List the tables in a schema. |
describe_table |
Columns, types, and metadata for one table. |
batch_describe |
Describe several tables in a single call. Saves round trips. |
search_tables |
Find tables by name pattern. |
select_star |
Pull a handful of sample rows. The agent uses this to see what the data actually looks like, not just what the schema claims. |
check_table_exists |
Confirm a table is there before the agent commits to it in SQL. |
get_column_values |
Distinct values in a single column. |
get_all_column_values |
Same, but for every column at once. Useful for getting a feel for categorical fields. |
list_function_names |
The SQL functions this database supports. |
apply_sql_limit |
Wrap a query with a LIMIT if there isn't one already. |
detect_columns |
Pull out the column references from a query. Helps the agent validate against the schema. |
run_sql |
The actual run. Read-only: the only first keywords accepted are SELECT, WITH, EXPLAIN, SHOW, DESCRIBE, DESC, and VALUES. The agent gets back an inline preview capped at ~10k characters; bigger results come with a CSV download link. |
How a SQL run works
Metrics tools
Available when the Content permission is on. Metrics views are reusable definitions of measures and dimensions: saved once, queried many times.
| Tool | What it does |
|---|---|
save_metrics_view |
Define a new metrics view: a model SQL, plus measures, dimensions, an optional time grain, parameters, and thresholds. |
list_metrics_views |
Show every metrics view the agent has access to. |
query_metrics |
Pull numbers out of a metrics view. Pick measures, dimensions, filters, a time range, and a grain. The SQL gets generated and run for you. |
query_metrics and to fall back to run_sql only when no view covers the question β a metrics view carries the canonical definition, so the number matches the dashboards. Answers that drew on a metrics view end with a β Source: semantic layer (β¦) footer, added by the platform from the tool calls that actually ran. See Agents, Metrics & Explore.Tableau tools
Tableau works a bit differently. Instead of one shared tool, each Tableau block you share with the agent gets its own pair of tools, named after the block. Share a block called "Sales Dashboard" and the agent sees search_tableau_sales_dashboard and export_tableau_sales_dashboard. The suffix is a lowercased, alphanumeric-and-underscore slug of the block name, capped at 20 characters.
| Tool | What it does |
|---|---|
search_tableau_<slug> |
Search the Tableau site behind that block for workbooks or views by keyword. |
export_tableau_<slug> |
Export a view as an image, PDF, CSV, Excel, or crosstab, or a whole workbook as PDF or PowerPoint. Filters can be applied at export time. |
Slack tools
| Tool | What it does |
|---|---|
send_slack_message |
Post a Slack message via one of the Slack blocks shared with the agent. The block determines the workspace and default channel; if more than one block is shared, the agent picks via an integration parameter. |
No matter how many Slack blocks you share, there's still only one send_slack_message. The agent decides which block to route through at call time.
Email tools
| Tool | What it does |
|---|---|
send_email |
Send email via one of the email blocks shared with the agent. Supports CSV attachments, embedded chart images, and any other file attachments. If multiple email blocks are shared, the agent picks via an integration parameter. |
Same pattern as Slack: one tool, the agent chooses the block per call.
Chart tools
| Tool | What it does |
|---|---|
generate_chart |
Build an interactive Plotly chart from data. Takes a Plotly JSON spec and, optionally, a SQL result to pull data from. |
Google Slides tools
Same dynamic-naming idea as Tableau: each Google Slides block you share gets its own tool, named after the block.
| Tool | What it does |
|---|---|
google_slides_action_<slug> |
Add a slide, drop in a chart, edit text, or rearrange the deck. The <slug> part is the slugged block name. |
Reports tools
Available when the Reports permission is on. End-to-end report management: browse, read, write, schedule, run.
| Tool | What it does |
|---|---|
list_reports |
Show reports in the workspace, with optional search. |
list_folders |
List report folders. |
get_report_yaml |
Open a report and read its full YAML: blocks, schedule, recipients, the lot. |
create_report_yaml |
Create a new report from YAML. |
update_report_yaml |
Update an existing one. |
preview_schedule |
Show the next few times an RRULE would fire. Sanity check before you save a schedule. |
run_report |
Kick off a one-off run right now. |
get_report_run_status |
Check whether a run is still going, finished, or failed. |
Supported block types
The assistant can only write block types the platform runs. Asking for "all possible blocks" gets you the list below, not more.
What the report editor offers. Content: sql, tableau, docx, open_ai, google_slides, data_source (from cloud storage or SFTP), external_file, plus agent_step and explore when the Agents and Content features are on. Destinations: email, slack, webhook, writeback, and the file-upload destinations sftp, aws_s3, gdrive, gcp_bucket, azure_storage_blob.
What report YAML additionally accepts. plotly, kpi_card, viz_template, metrics_view, code_block, parameter, p (paragraph text), img, media_embed, api_request, custom_app, action_item, agent_skill, recipient (mail merge), and the control-flow blocks for and if. The full list is the _BLOCK_TYPES allowlist in lib/report_yaml/schema.py; a YAML with any other type is rejected before anything is saved.
Headings, dividers and lists are not blocks. There is no h1, h2, h3, hr or ul block. Put text and headings in a p block; its content is HTML or markdown.
Mandatory fields. Each type has fields it cannot run without, and the server refuses a YAML write that omits them, naming the block and the field. The same table is shown to the assistant in its tool description (lib/report_yaml/block_fields.py): sql needs sql and database; email needs to_ or recipients; slack needs channels; webhook needs webhook_url; sftp needs integration and path (a remote directory, not a file name); aws_s3 and gcp_bucket need integration and key; tableau and google_slides need integration and an action from a fixed vocabulary, with a view id or workbook id depending on the action.
"Saved" is not "verified". After a write, the assistant is told which parts the server could not verify: an email with no recipients, Slack channels (they are not checked against your workspace at write time), a SQL query it did not run successfully in the conversation, an SFTP path that looks like a file. It should tell you exactly that rather than declare the report done, and offer a preview run, which is how a report is actually verified.
Conversation tools
Available when the matching permission is on. Scheduled runs are non-interactive by definition, so they get none of these.
| Tool | What it does |
|---|---|
ask_user_question |
Pause and ask, with optional multiple-choice buttons. |
send_interim_reply |
Drop a quick "still working on itβ¦" update so the user (or the channel) knows the agent hasn't fallen over. |
no_response |
In a busy Slack thread, decide a message wasn't meant for the agent and stay quiet. Only available when there's more than one participant or the conversation came from Slack. |
Recipient tools
| Tool | What it does |
|---|---|
search_recipients |
Look up someone by name or tag. Returns their email and Slack handle. |
add_recipient |
Add a new person to the workspace recipient list. Off if the agent doesn't have the Create Recipients permission. |
Library tools
Skills, metrics views, and other workspace content live as blocks. The agent uses one set of tools to work with all of them.
| Tool | What it does |
|---|---|
list_blocks |
List blocks of a given type: skill, metrics_view, and so on. |
read_block |
Open one block by UID and read it in full. |
create_block |
Create a new block of the given type. |
edit_block |
Update an existing block. |
Memory tools
The agent's private notebook, scoped to /memories/. Available when the Memory permission is on.
| Tool | What it does |
|---|---|
read_file |
Open one of the agent's saved memory notes. |
write_file |
Create a new memory note. |
edit_file |
Update an existing one. |
See Agent Memory for what memory's good for and how to set it up.
What tools do I have right now?
Every agent gets one extra tool, list_tools, that returns its own toolbox. Ask "what can you do?" or "what reporting tools do you have?" and the agent calls it and tells you. You can filter by category: sql, email, slack, tableau, memory, skill, db, report, interaction, chart, google_slides, block, base.