Skip to main content
Glama

Server Details

Oviond brings data from 100+ marketing platforms into one reporting platform. Through the Oviond MCP server, AI assistants can securely access and work with Oviond clients, projects, reports, dashboards, widgets, and marketing data.

Ask questions about your reporting data, analyze marketing performance, and manage reporting workflows directly through your AI assistant.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.1/5.0

Scored across 188 tools

Disambiguation4/5

Most tools target a distinct resource and action, with careful descriptions. However, a few pairs overlap or are easy to confuse—notably add_asset_to_page and add_report_section, plus create_client_with_report vs create_report_from_template.

Naming Consistency3/5

Names follow a mostly verb_noun snake_case pattern and are readable, but the verb vocabulary is inconsistent: delete/remove/clear, add/create, update/change are used synonymously across different tools. This is a mild convention mix, not chaos.

Tool Count1/5

188 tools is far beyond what an agent can efficiently navigate for most workflows. Even though the server covers a broad domain, the sheer number of endpoints makes selection and discoverability poor.

Completeness4/5

CRUD and lifecycle coverage is broad: clients, reports, templates, widgets, datasources, media, themes, automations, email, notifications, and billing are all well represented. Missing a few singular getters (e.g., get_automation, get_connection) and an API-key creation tool, but these are minor gaps.

Available Tools

188 tools
add_asset_to_pageAdd saved section to pageAInspect

Instantiate an asset's widgets onto a report page. Each widget is cloned with a fresh ID and stacked below existing widgets. Widgets whose datasource / goal / calculated metric isn't connected for the client land as demo data instead of erroring on first load.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID to place the widgets on, from list_pages.
asset_idYesSource asset ID (from list_assets).
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID to add the widgets to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoWhat was added — the new widget ids, each a fresh clone stacked below what was already on the page. Read their numbers with get_widget_data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations by disclosing the cloning behavior with fresh IDs and the stacking of widgets below existing ones. It also surfaces the demo-data fallback for unconnected datasources/goals/metrics, which is a non-obvious side effect. This is significant behavioral context for an operation that will modify a page.

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 focused sentences: the first states the core action, the second covers cloning, placement, and fallback behavior. No filler or redundant repetition of the title/schema. Front-loaded with the main purpose.

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 mutating bulk-add operation, the description plus full schema descriptions and output schema are sufficient to understand invocation. It lacks explicit notes on idempotency or failure modes, but these are minor given the transparent cloning statement. Overall adequate for an AI 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all four parameters and references the list_* sources for valid IDs. The description adds no extra parameter-level meaning, so it relies on the schema. Baseline 3 applies because schema coverage is 100%.

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 states a specific action and resource: instantiate an asset's widgets onto a report page. It distinguishes itself from single-widget add tools by explaining that all of an asset's widgets are cloned. It does not explicitly name sibling tools like add_report_section or add_*_widget, so differentiation is implicit rather than explicit.

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 given on when to choose this tool over alternatives such as add_report_section or the individual add_*_widget tools. The intended context is only implied by 'instantiate an asset's widgets.' There are no prereq notes or exclusion statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_button_widgetAdd button widgetAInspect

Add a button widget to a page. Position, width, and height use sensible defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkNoClick-through URL. Default: "#".
textNoButton label. Default: "Click Here".
page_idYesPage ID the widget will be placed on, from list_pages.
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe button widget that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-read, non-destructive write operation, and the description does not contradict them. It adds one meaningful behavior – position, width, and height are auto-defaulted rather than configurable – but it doesn't disclose the resulting defaults, possible duplication behavior, or any 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?

Two short sentences with no filler; the primary action is front-loaded and the defaults note earns its place by explaining an otherwise missing aspect of the API. It is appropriately sized for the tool's low complexity.

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, complete parameter descriptions, and annotations, the description covers what an agent needs to select and call the tool. The only minor gap is the vagueness of 'sensible defaults' – an agent cannot predict or communicate the exact resulting position and size – but this is not critical for invoking the 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 100%, so the schema already defines each parameter. The description's only contribution is the 'sensible defaults' note, which explains why position, width, and height are absent from the schema but does not add semantics to link, text, page_id, client_id, or source_id.

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?

States an explicit action ('Add') with a specific resource ('button widget') and target ('a page'). The resource name differentiates it from siblings such as add_text_widget and add_image_widget, and the defaults sentence clarifies scope without ambiguity.

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 it – when the user wants a button widget placed on a page – but it does not explicitly address alternatives or exclusions. There is no mention of when to prefer another add_*_widget sibling or update_button_widget, so the guidance relies on inference from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_calculated_metric_widgetAdd calculated metric widgetAInspect

Add a Calculated Metric widget to a page: a table trended by date, showing demo data until it points at a formula. Returns the new widget_id — configure it with update_data_widget, passing the calculated metric id from list_calculated_metrics as the single metric. Position, width and height match the editor's Calculated Metric card.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID the widget will be placed on, from list_pages.
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe calculated metric widget, still on demo data until a formula is picked, that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate readOnly=false and destructive=false, so the description carries meaningful behavioral disclosure: the widget initially shows demo data, is a table trended by date, returns a widget_id, and inherits editor layout properties. There is no contradiction with the annotations.

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?

Three dense sentences, each contributing unique information: creation semantics, return value and next step, and layout inheritance. There is no filler and no mere repetition of the tool title or schema content.

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 that an output schema exists and annotations are present, the description fully covers what the tool does, what it returns, what the initial widget state looks like, and how to proceed after creation. The agent can correctly invoke it and understand the expected follow-up actions.

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?

All three parameters are fully described in the schema at 100% coverage, so the schema is doing the heavy lifting. The description adds workflow context about update_data_widget and list_calculated_metrics, but does not deepen understanding of the three required parameters beyond what the schema already 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 states a precise verb+resource combination: 'Add a Calculated Metric widget to a page' and characterizes the widget as a date-trended table with demo data until configured with a formula. This clearly identifies what is being created and differentiates it from the many add_*_widget siblings without needing to name them explicitly.

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 makes the use case explicit and provides a clear follow-up path: return the widget_id, then configure it with update_data_widget using a calculated metric id from list_calculated_metrics. It does not explicitly list when-not-to-use or compare against add_data_widget/add_custom_data_widget, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_custom_data_widgetAdd custom data widgetAInspect

Add a Custom Data widget to a page: a table showing demo data until it points at an uploaded CSV dataset. Returns the new widget_id — configure it with update_data_widget, passing advanced.custom_data_id from list_custom_data plus the dataset's own column names as the metrics and dimensions (get_custom_data lists them). Position, width and height match the editor's Custom Data card.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID the widget will be placed on, from list_pages.
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe custom data widget, still on demo data until a dataset is picked, that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate it is not read-only and not destructiveasi no contradiction. The description adds meaningful behavioral detail: the widget initially shows demo data, returns a new widget_id, and has position/size behavior matching the editor's Custom Data card. This goes beyond what the annotations reveal.

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: it states the action, the initial state, the return value, and the follow-up configuration steps in a tight, logical flow. Each sentence contributes necessary information without redundancy or filler.

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 only three required parameters and an output schema, the description covers the key context an agent needs: what the widget does initially, what the return value is, how to configure it next, and where to get the required IDs and column names. No crucial information is missing.

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 100% description coverage for all three required parameters, each sourced from list_pages, list_clients, or list_reports. The tool description does not add extra parameter-level meaning, so the baseline of 3 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 states a specific verb and resource: 'Add a Custom Data widget to a page', and describes its behavior as 'a table showing demo data until it points at an uploaded CSV dataset.' This clearly distinguishes it from related sibling tools like add_data_widget or add_button_widget, which serve different widget types.

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 workflow context by explaining that the returned widget_id should be used with update_data_widget, and where to get advanced.custom_data_id and column names. It does not explicitly list exclusions or alternatives, but the focused purpose and follow-up configuration make the intended usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_data_widgetAdd data widgetAInspect

Add a DATA widget to a page and configure it, applying the same rules as the report builder: the datasource's defaults, the generated name, sort and row limit, and validation of the metric/dimension/advanced combination. Discover ids with datasources → describe_datasource. Returns the new widget_id; the series is fetched in the background, so call get_widget_data with that id to read the numbers. Omit the config to drop in a default widget with demo data and configure it later. Position/size default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name. Omit to use the generated one ("Clicks & Impressions by Date")
chartNoChart type: table, score (KPI), area, line, bar, column, pie, donut, funnel, or map. 'score' shows a single value, so it takes exactly one metric
filtersNoRow filters. Every row needs a field, an operator and a value
metricsNoMetrics to display, e.g. [{ value: "clicks" }] — ids from describe_datasource. Must belong to the chosen data view. Only `value` is required; the server fills the rest
page_idYesPage ID the widget will be placed on, from list_pages.
sort_byNoMetric or dimension id to sort rows by. Defaults to the first dimension
advancedNoDatasource-specific settings (Meta attribution, SEM Rush region, Mailchimp audience…). Several datasources require keys here — describe_datasource lists them per data view. Merges with existing settings
currencyNoPer-widget currency code override; falls back to the client currency
client_idYesClient ID the report belongs to (from list_clients).
data_viewNoDatasource data view (from describe_datasource), e.g. ACCOUNT. Changing it clears metrics and dimensions
row_limitNoRows to keep (default 'all')
source_idYesReport ID the widget belongs to (from list_reports).
date_rangeNoPer-widget date range (overrides the report range) — also set show_custom_date_range
dimensionsNoBreakdown dimensions, e.g. [{ value: "DATE" }] — ids from describe_datasource. A widget needs at least one; a dimension flagged `single` must be the only one
sort_orderNoSort direction (default 'asc')
datasource_idNoDatasource alias (from datasources), e.g. gadw. Changing it clears the data view, metrics, dimensions, filters and advanced settings, then applies that datasource's defaults. A datasource the client has not connected renders demo data until the connection is made — connected_datasources shows what is connected. The internal sources take no metrics/dimensions and are configured through `advanced` instead: 'CUSTOM_DATA' (Static Value — advanced.value), 'GOALS' (advanced.goal_id from list_goals), 'CUSTOM_IMPORT' (advanced.custom_data_id from list_custom_data), 'CALCULATION' (a calculated metric id as the single metric)
show_custom_date_rangeNoUse the widget date_range instead of the report range

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe data widget that was added — widget_id, the generated name, and the config as the builder resolved it. The series is fetched in the background; read it with get_widget_data using that widget_id.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the annotations: it states that the series is fetched in the background and requires a follow-up call to get_widget_data, that omitting config yields a default widget with demo data, and that position/size default. These are not disclosed by the annotations (readOnlyHint false, destructiveHint false) and significantly help an agent set expectations.

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 about 80 words, starts with the core purpose, and each sentence adds a distinct piece of information: rules, id discovery, return value, background fetch, default behavior, and positioning default. It is front-loaded and avoids repeating schema details, making it efficient for an agent 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 (17 parameters, nested objects, 100% schema coverage, and an output schema), the description covers the essential workflow and the most critical edge case (default demo widget). It does not enumerate all parameters, but the schema handles that. It could have mentioned the required client_id/page_id sources, but the schema already includes those descriptions, so the description is sufficiently complete for correct 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?

With 100% schema description coverage, the baseline is 3, but the description adds cross-cutting parameter context: 'applying the same rules as the report builder' explains how datasource defaults affect sort/row limit, and 'Discover ids with datasources → describe_datasource' tells agents where to obtain values for source_id, metrics, dimensions, and advanced settings. This adds meaning beyond individual 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 clearly states the action: 'Add a DATA widget to a page and configure it.' It distinguishes this tool from its siblings by explicitly naming the widget type (DATA) and describing configuration and the returned widget_id. The scope is precise and leaves no ambiguity about what the tool accomplishes.

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 a clear workflow: discover ids with datasources → describe_datasource, then add the widget, then call get_widget_data to read the numbers. It also gives an alternative use case (omitting config for a default demo widget). However, it does not explicitly contrast with other add_*_widget tools, so it lacks explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_domainAdd custom domainAInspect

Add a custom domain. The backend detects the DNS provider and returns the DNS records the user needs to configure.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesFully-qualified domain name to add (e.g. "reports.example.com")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new domain — id, domain, its pending status, the detected DNS provider, and the DNS records to configure before it verifies.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal a write operation (readOnlyHint=false). The description adds useful context — the backend detects the DNS provider and returns records for the user to configure — but omits caveats like reversibility, duplicate-handling, or preconditions. The added value is modest but real.

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 compact sentences with no filler. The core purpose is front-loaded and the behavioral detail follows 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?

For a simple one-parameter tool with an output schema present, the description adequately conveys what happens and what the user receives. A minor gap is the lack of connection to email-domain or verification tools, but this doesn't block correct invocation.

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 100% with a clear type, description, and example ("reports.example.com"). The tool description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

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?

"Add a custom domain" is a specific verb+resource statement. The qualifier "custom" and the follow-up about returning DNS records clearly differentiate it from the sibling add_email_domain, which targets a different resource.

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 case (adding a custom domain and getting DNS configuration) but gives no explicit when-to-use guidance or alternatives. It does not distinguish itself from add_email_domain or reference related steps like verify_email_domain, leaving selection partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_email_domainAdd sending domainAInspect

Add a sending domain (returns DNS records to configure).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain to add, e.g. mail.acme.com

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new domain — id, domain, its pending status, and the DNS records to add before verify_email_domain will pass.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate that the tool is not read-only and not destructive. The description adds one useful behavioral fact: the tool returns DNS records for configuration, implying it does not perform the DNS setup itself. It does not address idempotency, authentication, or duplicate-domain behavior, but for a simple creation tool 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?

One short sentence that front-loads the verb and resource and places the side effect in a parenthetical. 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter, an output schema, and annotations covering the basic safety profile, the description supplies the essential action and its key outcome. Nothing critical is missing for an agent to select and invoke this tool correctly.

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 only parameter is fully covered by the schema, which provides a type and example ('mail.acme.com'). The description adds no additional parameter semantics beyond labeling it a sending domain, so the baseline of 3 for high schema coverage applies.

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 and resource: 'Add a sending domain' and tells the agent the key outcome, that DNS records are returned. The qualifier 'sending' differentiates it from the sibling add_domain, while the DNS-record detail separates it from create_email_sender or verify_email_domain.

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 'sending domain' and the DNS-record side effect imply the tool is for initiating email-domain setup, but the description gives no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like verify_email_domain or how to proceed after DNS records are configured.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_embed_widgetAdd embed widgetBInspect

Add an embed widget to a page. Position, width, and height use sensible defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID the widget will be placed on, from list_pages.
link_urlNoEmbed source URL (for 'URL' or 'IFRAME' modes).
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).
embed_typeYesEmbed mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe embed widget that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so it's a mutating but not destructive operation. The description adds one behavioral detail: position, width, and height use sensible defaults, which clarifies that these are optional and will be auto-set. However, it doesn't mention side effects, required permissions, or what happens on failure. This is minimal but not contradictory.

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, efficient sentence that front-loads the purpose and adds a useful note about defaults. Zero wasted words, well-structured for quick parsing.

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 create-operation with 5 parameters and an output schema, the description is minimal. It covers the core action and the defaults behavior, but lacks usage guidance and behavioral nuance. The schema and output schema handle parameter details and return values, so this is adequate but not rich. Given the tool's relative simplicity, a 3 is appropriate.

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 100%, so all parameters are documented in the schema. The description adds nothing about parameter meaning or relationships; it only mentions defaults for properties not in the schema. This meets the baseline but doesn't enhance understanding beyond the schema.

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 'Add an embed widget to a page', a specific verb and resource. It distinguishes the tool from other add_*_widget siblings by naming the widget type, though it doesn't explicitly contrast with them. The defaults comment adds context but doesn't affect purpose clarity.

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 on when to use this tool vs alternatives like add_button_widget or add_image_widget. It doesn't mention prerequisites (e.g., that page_id and client_id must come from list_pages/list_clients, though schema hints at this) or when this tool would be inappropriate. The description provides no explicit usage conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_goal_widgetAdd goal widgetAInspect

Add a Goal widget to a page: a progress gauge showing a demo target until it points at a saved goal. Returns the new widget_id — configure it with update_data_widget, passing advanced.goal_id from list_goals. The goal carries its own metric query, target and comparison, so the widget needs no metrics or dimensions. Position, width and height match the editor's Goal card.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID the widget will be placed on, from list_pages.
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe goal widget, still on a demo target until a goal is picked, that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors beyond the annotations: the widget initially displays a demo target, returns a widget_id for later configuration, inherits goal-defined metric/query/target/comparison settings, and matches the editor's Goal card dimensions. It does not mention permissions or reversal, but the annotations already indicate a non-read-only, non-destructive operation and the description adds meaningful behavioral context.

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?

Three sentences deliver the core action, return value, configuration path, and the widget's distinguishing behavior with no redundancy. The most important operational details are front-loaded.

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 widget-creation tool with full schema coverage and an output schema, the description covers the full lifecycle: what the widget is, what it returns, how to configure it, why it needs no metrics/dimensions, and how its layout behaves. Nothing essential is missing.

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 100%, so each parameter (page_id, client_id, source_id) is already documented with source references. The description adds workflow context but no additional parameter-specific semantics, so the baseline score of 3 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 identifies the tool's action and resource: adding a Goal widget to a page, specifically a progress gauge that shows a demo target until linked to a saved goal. It also distinguishes it from sibling add_*_widget tools by referencing the goal's self-contained metric query, target, and comparison.

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 actionable guidance: after adding, configure the widget via update_data_widget with advanced.goal_id from list_goals, and notes that no metrics or dimensions need to be passed. It does not explicitly contrast with alternatives like add_data_widget or add_calculated_metric_widget, but the use case is specific and clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_image_widgetAdd image widgetBInspect

Add an image widget to a page. Position, width, and height use sensible defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
linkNoOptional click-through URL when the image is clicked.
page_idYesPage ID the widget will be placed on, from list_pages.
link_urlNoImage URL to display — use list_media to find an uploaded image.
client_idYesClient ID the report belongs to (from list_clients).
image_fitNoCSS object-fit class. Default: "object-contain".
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe image widget that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description only needs to add context beyond the safety profile. It contributes the "sensible defaults" note, which usefully preempts the agent from hunting for position/width/height parameters that don't exist in the schema. It doesn't disclose side effects like whether the widget is appended or replaces content, but with annotations present the bar is lower and the description clears it minimally.

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?

Two short sentences with the action front-loaded and the second sentence earning its place by clarifying default layout behavior. There is no fluff and no repetition of schema content, though it is terse enough to be borderline under-specified.

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 structured data carries most of the weight here: 100% parameter coverage, annotations for the mutation profile, and an output schema for return values. The description covers purpose and defaults adequately, but leaves the agent without any cross-tool selection context — the same gap flagged under usage_guidelines — so it is adequate rather than 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?

Schema description coverage is 100%, so each of the six parameters is already documented — including the link vs link_url distinction and the image_fit default. Per the rubric this sets a baseline of 3; the description's "sensible defaults" hint adds a small amount of signal but no per-parameter meaning beyond the schema.

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?

"Add an image widget to a page" names a specific verb, resource, and destination, and the resource type distinguishes it from sibling widget tools like add_text_widget and add_button_widget. It doesn't explicitly contrast with siblings, but the object "image widget" carries the differentiation and the defaults note adds 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to choose this tool over alternatives — no mention of when add_asset_to_page or another widget adder would be more appropriate, and no when-not conditions. Among 15+ add_*_widget siblings, an agent receives no routing help beyond the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_report_sectionAdd section to reportAInspect

Add a saved section (asset) to a report — works for both reports and dashboards. Find the section first with list_assets (filter by name, type, or datasource). Page handling is automatic: a single-page report (typical dashboard) uses its one page; a multi-page report returns its pages so you can pass the right page_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idNoPage to place it on (from list_pages). Omit to auto-use a single-page report, or to list pages when there are several.
asset_idYesSaved section to add (from list_assets — filter by name, type, or datasource)
client_idYesClient id (from list_clients)
report_idYesReport or dashboard id to add the section to (from list_reports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoEither what was added — the page it landed on and the new widget ids — or, when the report has several pages and none was named, those pages so you can choose one and call again.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the mutation is expected. The description adds valuable behavioral context: it explains automatic page handling (single-page auto-use, multi-page returns pages) and clarifies that the tool works for both reports and dashboards. This goes beyond what annotations provide, though it doesn't detail side effects like whether adding a section modifies the report irreversibly.

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?

Three sentences, each earning its place: the first states the core action and scope, the second gives the prerequisite lookup, the third explains the page-handling nuance. Information is front-loaded and no filler exists.

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 description covers the key operational details: what to find first, how page_id behaves, and that it applies to both reports and dashboards. With an output schema present and annotations covering safety, the description is nearly complete. It could mention what happens if the asset is already on the page or whether the section is added at a specific position, but these are minor gaps.

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 100%, so the schema already documents all four parameters. The description adds extra meaning by explaining the page_id behavior (omit for single-page, or to list pages when multiple) and by clarifying that asset_id refers to a saved section from list_assets. This supplements the schema rather than merely repeating 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 states a specific verb ('Add'), a specific resource ('a saved section (asset) to a report'), and explicitly notes it works for both reports and dashboards. It also distinguishes itself from sibling tools by naming list_assets as the prerequisite finder, which helps an agent understand what this tool does versus other 'add_*' 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?

The description gives clear when-to-use guidance: find the section first with list_assets, and explains page handling behavior (single-page vs multi-page) so the agent knows when to pass page_id. It also implicitly differentiates from sibling add_*_widget tools by focusing on saved sections/assets rather than widgets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_static_value_widgetAdd static value widgetAInspect

Add a Static Value widget to a page: one typed-in value as a KPI card — a number, an amount like "R50", or free text like "Active". It has no datasource and never fetches, so unlike the other cards its content is inline: pass the value here, or omit it to land on 0 and set it later with update_static_value_widget. Position, width and height match the editor's card.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoLabel shown above the value.
valueNoThe value to display. Defaults to 0, as the card does.
page_idYesPage ID the widget will be placed on, from list_pages.
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe static value widget, holding its value inline (it never fetches), that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the mutation/safety profile is covered. The description adds valuable behavioral context beyond annotations: the widget has no datasource, never fetches, content is inline, and omitting the value defaults to 0. It also notes that position/width/height match the editor's card, which is useful placement context. Minor gap: it doesn't state whether adding is idempotent or what the response contains, but the output schema likely covers return values.

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?

Three sentences with no filler. The core purpose is front-loaded, the distinguishing behavior (no datasource, inline content) comes second, and the practical default/alternative guidance is last. 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 create-style tool with 5 params, 100% schema coverage, and an output schema, the description is nearly complete. It explains the widget's unique behavior, the default value, and the update path. It doesn't explicitly state prerequisites (e.g., that the page must exist) or whether the widget is immediately visible, but those are minor given the schema and output schema context.

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 100%, so the schema already documents all 5 parameters. The description adds meaning for 'value' (typed-in content, examples like 'R50' or 'Active', defaults to 0) and clarifies that source_id is the report ID, but it doesn't add much beyond the schema for name, page_id, or client_id. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Add') and resource ('Static Value widget to a page'), and clearly distinguishes it from sibling card tools by explaining it has no datasource and never fetches. It also names the sibling update_static_value_widget for later edits, so an agent can tell this tool apart from add_data_widget, add_goal_widget, etc.

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 says when to use this tool (to add a static KPI card with inline content) and contrasts it with 'the other cards' that have datasources. It also gives a clear alternative: omit the value to land on 0 and set it later with update_static_value_widget. This is explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_text_widgetAdd text widgetAInspect

Add a rich-text widget to a page. Position, width, and height use sensible defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoPlain-text content. Defaults to empty.
page_idYesPage ID the widget will be placed on, from list_pages.
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe text widget that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-read-only, non-destructive operation. The description adds one behavioral detail: the tool automatically applies default values for position, width, and height. However, it leaves 'sensible defaults' undefined and does not disclose any side effects or prerequisites.

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 a front-loaded action clause and a short clarifying detail. It is concise, contains no redundant wording, and every word contributes value beyond what the schema and annotations already provide.

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 creation tool with a complete output schema and full parameter documentation, the one-sentence description is largely sufficient. The only real gap is that 'sensible defaults' is vague, but the agent can still invoke the tool correctly based on the provided schema and the description's core purpose.

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 100%, so each parameter is already documented (e.g., page_id from list_pages, client_id from list_clients). The description contributes by explaining that position, width, and height parameters are not needed because defaults are applied, but it does not add meaning to the existing schema properties beyond that.

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 ('Add') and resource ('rich-text widget') along with a placement target ('to a page'). This clearly distinguishes it from sibling tools like add_button_widget or add_image_widget, since 'rich-text' names the widget subtype and the description is not a tautology.

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 mention any alternative tools or explicitly state when to use this versus other add_*_widget siblings. It gives a contextual hint that position, width, and height use sensible defaults, which implies the tool is meant for quick adds without custom layout needs, but it is not an explicit routing guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_title_widgetAdd title widgetAInspect

Add a title widget to a page. Position, width, and height use sensible defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTitle text. Default: "Title".
headingNoHeading level. Default: "h2".
page_idYesPage ID the widget will be placed on, from list_pages.
client_idYesClient ID the report belongs to (from list_clients).
source_idYesReport ID the widget belongs to (from list_reports).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe title widget that was added — widget_id, plus the stored row with the defaults the server filled in (position, width, height).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false, so the description must convey write behavior and side effects. It states that position, width, and height use sensible defaults, which is useful, but it does not mention permissions, reversibility, or what happens to existing widgets. It does not contradict annotations.

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 with no redundancy. The core action is front-loaded, and the additional note about defaults is directly relevant to expected behavior. Every word earns its place.

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 an output schema, and the input parameters are well-documented, so basic calling is clear. However, the description does not explain how a title widget differs from other widget types or when to prefer it, and the defaults statement is vague about placement. For a simple add operation it is minimally complete but not rich.

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 100%, so all five parameters are already described with their own meanings and defaults. The description adds no extra parameter-level detail, and its mention of position/width/height refers to non-existent parameters, which is slightly ambiguous. Baseline 3 applies because the schema carries the burden.

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 ('Add') and resource ('title widget') and clarifies the target ('to a page'). It distinguishes from siblings like add_text_widget or add_button_widget by naming the widget type explicitly, and the mention of defaults adds operational scope.

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 offers no guidance on when to use this tool versus alternatives like add_text_widget or add_heading_widget. It does not state when not to use it, nor does it reference sibling tools or provide selection criteria. Usage is only implied by the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_assetArchive saved sectionA
Destructive
Inspect

Archive a saved section and its widget rows. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID to archive (from list_assets).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the section was archived. Widgets already added from it stay where they are.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, but the description adds meaningful behavioral nuance: archiving affects widget rows and is recoverable via restore_from_archive. This clearly explains the 'soft delete' nature and what the operation does beyond the raw destructive hint. No contradiction with annotations.

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 compact sentences with zero filler. The core action and target are front-loaded, and the recovery mechanism is stated efficiently. Every phrase earns its place.

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 single-parameter tool with an output schema and annotations, the description covers the essential context: what gets archived, that it is recoverable, and where to find it afterward. No critical information for invoking the tool correctly is missing.

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 100%, and the description does not add parameter-specific meaning beyond what the schema provides ('Asset ID to archive (from list_assets)'). The baseline of 3 is appropriate; the schema carries the parameter documentation burden.

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 'archive' and clearly identifies the resource: 'a saved section and its widget rows.' It also clarifies the semantic distinction from deletion with 'not away,' which helps differentiate from delete_* siblings. This is unambiguous about what the tool does.

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 lifecycle context by mentioning list_archive and restore_from_archive, implying this tool is for reversible archiving. However, it does not explicitly state when to choose this over related tools like delete_* or when not to use it, leaving the usage decision partially inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_automationArchive automationA
Destructive
Inspect

Archive an automation, stopping its scheduled deliveries. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back, rescheduled.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAutomation ID (from list_automations)
parent_idYesParent report or client ID (from list_reports or list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the automation was archived and its scheduled sends have stopped.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description is not the only source of behavioral context. It adds valuable detail beyond that: archiving is reversible, the automation appears in list_archive, and restoring it reschedules deliveries. No contradiction with the annotations.

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 compact sentences, front-loaded with the action and consequence. The phrase 'not away' earns its place by preventing a deletion misread, and naming list_archive/restore_from_archive provides concrete navigation in the same breath.

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 two-parameter operation with an output schema and destructive annotations, the description covers the essential lifecycle: what archiving does, where it goes, and how to reverse it. The only meaningful gap is the unaddressed distinction from pause_automation, which was already scored under usage guidelines.

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 100%, and both required parameters (id, parent_id) already have descriptive schema entries referencing list_automations, list_reports, and list_clients. The tool description adds no parameter-level semantics, so the schema baseline of 3 applies.

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 pair, 'Archive an automation,' and immediately states the key effect: stopping scheduled deliveries. It then distinguishes archiving from deletion by naming the archive lifecycle ('list_archive shows it' and 'restore_from_archive brings it back'), which separates it from sibling operations like archive_asset or delete actions.

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 conveys when to use the tool: when an automation should stop delivering but be retained and restorable. However, it never compares it to the sibling pause_automation, which likely also stops scheduled deliveries, so the guidance 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.

archive_calculated_metricArchive calculated metricA
Destructive
Inspect

Archive a calculated metric by ID. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCalculated metric ID (from list_calculated_metrics)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the metric was archived. Widgets still pointing at it fall back to demo data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already mark destructiveHint=true, but the description adds meaningful behavioral nuance by stating the item goes to the archive and can be listed/restored, making it clear the action is not permanent deletion. It also references sibling tools that are part of the archive lifecycle. This goes beyond the annotations and helps the agent predict the tool's 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 two short sentences with the key information front-loaded. Every word is functional: it states the operation, the target, the ID requirement, and the reversible nature. No 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 tool with only one input parameter, an output schema, and annotations already covering mutability, the description is complete. It covers what happens (archived), how to undo it, and how to view archived items, leaving no important gaps for an agent to call it safely.

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 fully covers the single parameter 'id' with a description and provenance ('from list_calculated_metrics'), so the description adds no additional parameter semantics. Per baseline for high schema coverage, this is 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 states a specific verb ('Archive'), a specific resource ('calculated metric'), and the mechanism ('by ID'), making its purpose unambiguous. It also distinguishes the operation from permanent deletion by noting it's not destroyed, which is useful context. This clearly separates it from sibling archive_* tools that target different resource types.

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 that archiving is reversible and points to list_archive and restore_from_archive as related operations, but it does not explicitly explain when to prefer this over other archive_* tools or when not to use it. The guidance is implied rather than explicit, so it earns a 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_clientArchive clientA
Destructive
Inspect

Archive a client by ID, with its reports, exports and automations. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClient ID to archive (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the client was archived. Its reports, pages and widgets are archived with it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite destructiveHint=true, the description usefully discloses the cascade to reports, exports and automations, and clarifies the client is not permanently deleted because list_archive and restore_from_archive exist. This adds real behavioral context beyond the annotations.

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 compact sentences front-load the action and scope, then add the key recovery caveat. No filler or redundant content.

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 single-parameter tool with an output schema and adequate annotations, the description covers the operation's scope, side effects and reversibility, which is all an agent needs to invoke it correctly.

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 100% and the id parameter already says 'Client ID to archive (from list_clients)'. The description adds only the 'by ID' framing, so it does not provide extra parameter semantics 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?

States a specific verb ('Archive'), resource ('client'), key parameter ('by ID'), and scope ('with its reports, exports and automations'). This differentiates it from sibling archive_report/archive_export/archive_automation and from archive_clients by indicating a single-client, cascading operation.

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 selection context: use for archiving a single client and its dependent objects, and clarifies the operation is recoverable via list_archive/restore_from_archive. It does not explicitly contrast with archive_clients or say when not to use it, so it falls just short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_clientsArchive multiple clientsA
Destructive
Inspect

Archive several clients by ID in one call. They go to the archive, not away — list_archive shows them and restore_from_archive brings them back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesArray of client IDs to archive (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation of the archive and how many clients it covered. Each one takes its reports with it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the annotations: archiving is recoverable ('not away'), and it names the exact tools to view and reverse the operation. DestructiveHint=true is not contradicted since this is still a non-read-only state change, but the recoverability nuance is valuable.

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 with no filler: the first states the action and scope, the second clarifies lifecycle behavior. The most important information is front-loaded, and every clause earns its place.

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 single-parameter, batch archive operation, the description plus annotations and output schema cover everything an agent needs to invoke it correctly. It explains what happens to the clients and how to recover them, leaving no critical gaps.

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 100% for the single parameter, and the schema already says 'Array of client IDs to archive (from list_clients)'. The description reinforces the 'by ID' and 'in one call' aspects but adds no new parameter-level semantics 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 states a specific action ('Archive several clients by ID in one call') and clearly identifies the batch scope, distinguishing it from the singular archive_client sibling. It also names related lifecycle tools (list_archive, restore_from_archive), reinforcing what the tool is for.

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: use this when archiving multiple clients in a single call, and it points to list_archive/restore_from_archive for later retrieval. It doesn't explicitly exclude the singular archive_client alternative, but the batch framing makes the intended usage evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_custom_dataArchive custom datasetA
Destructive
Inspect

Archive a custom-data dataset by ID. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom-data ID (from list_custom_data)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the dataset was archived. Widgets still pointing at it fall back to demo data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true, but the description adds crucial context beyond that: it clarifies the action is reversible ('goes to the archive, not away') and explicitly names the tools that reverse or display it. This extra behavioral disclosure is valuable and does not contradict the destructive hint.

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 short, front-loaded sentences with zero redundancy. The action is stated first, and the clarifying clause about reversibility is concise and directly relevant. Every word earns its place.

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, single-parameter archive operation, the description fully addresses what the agent needs: it explains the permanent-vs-archived nature, points to related tools for listing and restoring, and is sufficient given the low complexity and available annotations and 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 single parameter 'id' is fully described in the schema (from list_custom_data). The description adds no additional meaning beyond what the schema provides, so the baseline of 3 is appropriate given 100% 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 states a specific verb ('Archive'), a clear resource ('custom-data dataset by ID'), and distinguishes the action from deletion with 'not away'. It clearly differentiates from sibling archive_* tools by focusing on custom data, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning list_archive and restore_from_archive as complementary tools, signaling that this is the reversible archiving step. However, it does not explicitly state when to use this over other tools (e.g., delete_custom_data is not listed), but the 'not away' phrasing gives a clear hint that it is non-destructive in the long term.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_exportArchive PDF exportA
Destructive
Inspect

Archive a PDF export record by ID. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExport ID (from list_exports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the export record was moved to the archive.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include destructiveHint: true and readOnlyHint: false, so the description's clarification that the record 'goes to the archive, not away' and can be restored adds valuable context beyond the annotations. It discloses that the operation is reversible and not a permanent deletion, which is critical behavioral information an agent needs. No contradiction with the annotations, as 'destructive' here means a state-changing move, not irreversible destruction.

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 concise two-sentence structure. The first sentence states the action and target, the second clarifies the effect and provides the related tools. Every word earns its place, with no fluff or repetition. It is front-loaded with the core purpose and uses the em-dash effectively to add crucial nuance.

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 tool with a single parameter, an output schema present, and annotations covering safety, the description is quite complete. It covers the purpose, the reversible nature, and the related tools (list_archive, restore_from_archive). It does not mention error conditions or prerequisites, but the schema's reference to list_exports implies the ID source. Overall, an agent has enough information to invoke it correctly without ambiguity.

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 already fully describes the single parameter 'id' with the note 'Export ID (from list_exports)', giving 100% coverage. The description adds only the redundant phrase 'by ID' and does not provide any additional semantic details such as format, validity, or constraints. Since the schema carries the full burden, the description's contribution is minimal, warranting the baseline score of 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?

Description states a specific verb ('Archive'), a resource ('a PDF export record'), and the method ('by ID'). It also clarifies the action is not permanent deletion ('not away'), which distinguishes it from destructive delete operations and aligns with the archive_* family of siblings. The mention of list_archive and restore_from_archive further disambiguates its role in the lifecycle.

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 lifecycle context by naming list_archive and restore_from_archive, implicitly telling the agent that archiving is reversible and that these tools are the complementary operations. However, it does not explicitly state when to use this tool versus alternatives like delete or other archive tools, though the name and specificity to PDF exports largely remove ambiguity. The 'not away' phrasing also implies it should not be used when permanent deletion is intended.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_goalArchive goalA
Destructive
Inspect

Archive a goal by ID. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGoal ID (from list_goals)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the goal was archived. Widgets still pointing at it fall back to demo data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, but the description adds crucial context: the goal is not permanently deleted and can be viewed and restored via list_archive and restore_from_archive. This clarifies the reversibility and reduces the perceived destructiveness, going beyond the raw annotation.

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 zero redundancy. The primary action and ID reference are front-loaded, and the clarifying clause about reversibility is efficiently placed. Every word earns its place.

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 one-parameter tool with an existing output schema, the description covers all essential behavior: what happens to the goal, how to retrieve it later, and how to undo. No additional context is needed for correct invocation.

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 provides a full description for the single parameter (id: 'Goal ID (from list_goals)') with 100% coverage. The description adds no additional semantic meaning about the parameter, so the baseline of 3 applies.

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 (archive), the resource (goal), and the method (by ID). It also distinguishes the tool from other archive_* siblings by naming the specific resource type. The phrase 'It goes to the archive, not away' clarifies the semantic intent, making it 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 implies when to use this tool (soft-delete a goal) and mentions related tools (list_archive, restore_from_archive) that explain the lifecycle. However, it does not explicitly compare against alternatives like deleting a goal (which isn't in siblings) or other archive tools, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_media_fileArchive media fileA
Destructive
Inspect

Archive a media file. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back. The file itself is only removed from storage when it is permanently deleted from the archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMedia file ID to archive (from list_media)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the file was archived. Anything already pointing at its url keeps working until it is permanently deleted.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true, but the description clarifies that the action is actually non-destructive (reversible) and only becomes permanent upon explicit deletion from the archive. This adds valuable context beyond the annotation and prevents the agent from overestimating the tool's destructive impact. It also explains the storage 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 two sentences, front-loaded with the primary action, and every phrase adds value: it states the action, corrects a likely misconception, names the recovery tools, and specifies the only deletion condition. No redundant 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 simple tool with one parameter, the description fully covers the behavior: what happens on archive, how to see it, how to restore it, and when it is actually removed. It also references the source of the id (list_media) via the schema. With an output schema present, nothing essential is missing.

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 only parameter 'id' is fully described in the schema ('Media file ID to archive (from list_media)'), so schema coverage is 100%. The description adds no additional information about the parameter beyond what the schema provides, so the baseline score of 3 applies.

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 ('Archive a media file') and immediately clarifies that archiving is not deletion ('not away'). It also names the complementary tools (list_archive, restore_from_archive) and the only condition for permanent removal, making the purpose unambiguous and distinguishing it from deletion-related siblings.

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 the outcome of archiving (goes to archive, can be listed/restored) and clarifies that it is not permanent deletion, which guides an agent on when to use it. However, it does not explicitly address alternative archive tools like archive_media_files (plural) or archive_asset, so it leaves some differentiation to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_media_filesArchive multiple media filesA
Destructive
Inspect

Archive several media files by ID in one call. They go to the archive, not away — list_archive shows them and restore_from_archive brings them back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesMedia file IDs to archive (from list_media)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation of the archive, and how many files it covered.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond the destructiveHint and readOnlyHint annotations: it clarifies that archiving is not permanent ('not away') and that archived media can be listed and restored. It does not cover partial failures or metadata retention, but for a reversible archive operation this is sufficient.

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 wasted words. The first sentence states the action and scope; the second sentence disambiguates the permanence of the operation and names the recovery tools.

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 single well-documented parameter, the output schema, and the annotations, the description is complete. It explains what happens to the files, where they appear, and how to reverse the operation, so an agent has enough context to call this tool correctly.

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 100%, and the schema already documents ids as 'Media file IDs to archive (from list_media)' with minItems: 1. The description adds only that the operation is batched by ID, which matches the schema without providing additional 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 states a specific verb and resource: 'Archive several media files by ID in one call.' It clearly distinguishes this batch tool from the singular sibling archive_media_file and from other archive_* tools that target different resource types.

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 main use case — archiving multiple files in a single batch call — and explains the recovery path via list_archive and restore_from_archive. It does not explicitly name an alternative for permanent deletion, but the context is clear enough given the tool's reversible behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_notificationArchive notificationA
Destructive
Inspect

Archive a single notification by ID. It leaves the inbox but is not erased.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNotification ID (from list_notifications)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the notification left the inbox.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, and the description adds useful nuance by stating the notification is not erased and simply leaves the inbox. This clarifies that archiving is a reversible, non-destructive action despite the destructive hint.

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 short sentences deliver the core action and the key behavioral nuance. No filler or redundant detail, and the main action is front-loaded.

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 single-parameter tool with full schema coverage, an output schema, and annotations covering the destructive behavior, the description is sufficient for correct selection and invocation.

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 100% and the only parameter id is already described as 'Notification ID (from list_notifications)'. The description adds no additional semantic meaning beyond the schema, so baseline 3 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?

Description states an explicit verb and resource ('Archive a single notification by ID') and clarifies non-permanence ('leaves the inbox but is not erased'). It clearly distinguishes from the plural sibling archive_notifications.

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 is implied through 'single notification by ID' and the distinction of being archived rather than erased. However, it does not explicitly name the plural alternative archive_notifications or state when to prefer one over the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_notificationsArchive multiple notificationsA
Destructive
Inspect

Archive several notifications by ID in one call. They leave the inbox but are not erased.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesNotification IDs to archive (from list_notifications)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation, and how many notifications left the inbox.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite the destructiveHint=true annotation, the description adds valuable context by stating 'They leave the inbox but are not erased', clarifying that the operation is not permanent deletion. This goes beyond the annotation's simple destructiveness flag and gives the agent a clearer model of the tool's 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 two sentences with no filler. The core action is front-loaded ('Archive several notifications by ID in one call') and the clarifying behavior is added without redundancy. Every word 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 one-parameter batch operation with an output schema present and annotations covering safety, the description is nearly complete. It explains the batch nature, the input method, and the non-destructive outcome. Minor gaps like partial failures or id validation are not addressed, but they are not essential given the tool's simplicity.

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 provides 100% coverage with a description for the 'ids' parameter ('Notification IDs to archive (from list_notifications)'). The description adds 'by ID' but no new constraints, formatting, or behavioral detail beyond the schema. Baseline 3 is appropriate since the schema carries the semantic burden.

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 (archive), resource (notifications), and method (by ID in one call). It also clarifies that the notifications leave the inbox but are not erased, which distinguishes it from deletion tools. However, it does not explicitly differentiate from the singular sibling archive_notification, though 'several' and 'in one call' imply batch usage.

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 batch use ('several notifications by ID in one call') but does not explicitly state when to choose this over alternatives like archive_notification (singular) or clear_read_notifications. No exclusions or 'when not to use' guidance is provided, leaving the selection decision somewhat to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_reportArchive report or dashboardA
Destructive
Inspect

Archive a report by ID. Its pages and widgets stay attached and come back with it. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReport ID to archive (from list_reports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the report was archived. Its pages and widgets go with it and return with it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint=true annotation, the description clarifies that pages and widgets remain attached and that the report is recoverable ('not away'). This directly addresses what the destructive hint suggests and gives the agent nuanced safety 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?

Two brief sentences front-load the action and add only high-value behavior details. No filler or redundant restatement of the schema.

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 single parameter, existing output schema, and annotations, the description covers the critical invocation context: what persists, where it goes, and how it can be reversed. Nothing needed for correct use is missing.

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 fully documents the single 'id' parameter, including its origin from list_reports. The description only says 'by ID' and adds no new parameter meaning, so a baseline 3 with full schema coverage is appropriate.

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 (archive) and resource (a report by ID), and the title extends it to dashboards. However, it does not distinguish this singular tool from the sibling 'archive_reports' beyond number, so it misses full sibling differentiation.

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?

It gives useful lifecycle context: archived items appear in list_archive and can be restored via restore_from_archive. It implies when to use the tool (preserve rather than permanently remove), but it doesn't explicitly state when not to use it or how it compares with sibling archive operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_reportsArchive multiple reportsA
Destructive
Inspect

Archive several reports by ID in one call. They go to the archive, not away — list_archive shows them and restore_from_archive brings them back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesArray of report IDs to archive (from list_reports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation of the archive and how many reports it covered.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, and the description adds valuable nuance by clarifying that archiving is reversible and not permanent ('not away', 'restore_from_archive brings them back'). This goes beyond the annotation to disclose the non-destructive nature in practice, which is critical for an agent to assess risk.

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: the first states the core action, the second clarifies the outcome and points to related tools. No redundant words, front-loaded purpose, and efficient structure.

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 single-parameter tool with an output schema and annotations, the description covers purpose, scope, and reversibility. It also references the archive lifecycle via sibling tools. Nothing an agent needs to decide whether to call it or interpret results is missing.

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 100%, so the parameter 'ids' is fully described as an array of report IDs. The tool description adds no additional meaning beyond the schema's own description, which already mentions 'from list_reports'. Baseline 3 is appropriate because the schema handles the semantics and the description does not compensate further.

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 (archive), resource (reports), and scope (several by ID in one call). It explicitly differentiates from the sibling archive_report by emphasizing batch operation. The phrase 'They go to the archive, not away' clarifies the semantic outcome, making it 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 implies usage for multiple reports via 'several' and 'in one call', which contrasts with the singular archive_report sibling. However, it does not explicitly state 'use archive_report for a single report' or provide exclusion conditions. It gives lifecycle context (list_archive, restore_from_archive) but lacks explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

archive_templateArchive templateA
Destructive
Inspect

Archive a template by ID. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID to archive (from list_templates)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the template was archived. Reports already created from it are untouched.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, which could imply permanent deletion. The description adds crucial context that the template 'goes to the archive, not away' and that list_archive shows it and restore_from_archive brings it back, clarifying the exact reversible nature of the operation. This goes beyond the annotation and prevents a misconception.

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 with no filler. The primary action is front-loaded, and the second sentence efficiently conveys the archive lifecycle and related sibling tools. Every sentence adds 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?

For a single-parameter tool with an output schema, the description fully covers what the tool does, how the operation affects the resource, and how to undo it. Combined with the schema and annotations, an agent has everything needed to invoke it correctly without additional documentation.

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 100% and the only parameter 'id' is already documented as 'Template ID to archive (from list_templates)'. The description merely repeats 'by ID' and does not add additional meaning beyond the schema, so the baseline of 3 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 states a specific verb ('archive') and resource ('a template by ID'), and immediately distinguishes it from deletion by explaining the archive lifecycle. This clearly separates archive_template from siblings like delete_email_template and other archive_* tools.

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: it archives a template rather than deleting it, and mentions that list_archive and restore_from_archive are the counterpart operations. However, it does not explicitly state when to use this tool versus alternatives (e.g., 'use when you want to temporarily remove a template') or name exclusions, 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.

archive_themeArchive themeA
Destructive
Inspect

Archive a theme by ID. Reports using it fall back to the default. It goes to the archive, not away — list_archive shows it and restore_from_archive brings it back.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTheme ID to archive (from list_themes)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the theme was archived. Reports using it fall back to the default theme.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description doesn't need to restate that. It adds valuable behavioral context: reports using the archived theme fall back to the default, and the theme is recoverable via restore_from_archive. This goes beyond the annotations and clarifies the real-world impact of the 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?

Three sentences, each earning its place: the action, the consequence, and the recoverability. The most important information (what it does) is front-loaded, and the contrast with deletion is concise and clear.

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 tool with a clear schema and annotations, the description is nearly complete. It explains the action, the side effect on reports, and the recovery path. The only minor gap is that it doesn't explicitly state the return value or whether the operation is idempotent, but the output schema likely covers the return, and the description is sufficient for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the single parameter 'id' is already described as 'Theme ID to archive (from list_themes)'. The description adds no new parameter-level detail beyond what the schema provides, so the baseline 3 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 action ('Archive a theme by ID'), the resource (theme), and the effect (reports using it fall back to the default). It also distinguishes archiving from deletion, which is a key semantic distinction from sibling tools like delete_* or update_theme.

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 this tool: when you want to archive a theme rather than permanently delete it. It explicitly contrasts with deletion ('not away') and names the related tools list_archive and restore_from_archive, which helps an agent understand the archive lifecycle. However, it doesn't explicitly state when NOT to use it (e.g., use delete_* for permanent removal) or mention prerequisites like the theme not being in use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_report_healthAudit report healthA
Read-only
Inspect

Audit a report or dashboard: list its connected data sources and automation state, and flag likely issues (no data sources connected, paused automations). Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReport ID to audit (from list_reports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe audit — the report, the datasources its client has connected, its automations and their state, and the issues found (no datasource connected, automations paused).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description discloses what the audit covers and what kinds of issues it flags. The explicit 'Read-only' statement reinforces the annotations without contradicting them, adding practical behavioral context.

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, front-loaded sentence that states the verb, resource, and expected output without filler. Every clause contributes meaningful information, 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one well-documented required parameter, a schema coverage of 100%, an output schema available, and annotations covering safety, the description fills the remaining behavioral gap—what the audit inspects and flags. Nothing essential for correct invocation is missing.

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 100%; the schema already documents the id parameter and its provenance ('from list_reports'). The description adds no new parameter semantics beyond the schema, so the baseline score of 3 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 uses a specific verb ('Audit') with a clear resource ('report or dashboard') and enumerates the concrete outputs: connected data sources, automation state, and flagged issues. This distinguishes it from related sibling tools like get_report or list_automations, which retrieve data but do not aggregate health signals.

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 conveys the intended use case: check a report/dashboard for likely problems such as missing data sources or paused automations. It does not explicitly name alternative tools or state when not to use it, but the context is clear enough for an agent to route to this tool over simple getters or listers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

change_my_emailChange user emailAInspect

Change the authenticated user's email address

ParametersJSON Schema
NameRequiredDescriptionDefault
email_addressYesNew email address

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the change was started — the new address has to be verified before it becomes the sign-in email.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's 'Change' is consistent but not additive. It does add the important scoping context that this affects the authenticated user's own account, yet it does not disclose possible side effects such as email verification requirements or impacts on login sessions.

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 concise for a tool with one parameter.

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?

This is a simple one-parameter mutation with a complete input schema and an output schema present, so the description is nearly sufficient for correct invocation. It lacks only a bit of side-effect or verification context, which would make it fully 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 input schema has 100% coverage, with email_address fully described by name, type, format, and description. The tool description adds no additional parameter detail, so the baseline score of 3 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 states a specific verb ('Change'), a clear resource ('email address'), and the exact scope ('authenticated user's'). This distinguishes it from update_user and get_current_user, which are the relevant sibling alternatives in the tool list.

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 phrase 'authenticated user's' clearly indicates this tool is for changing the caller's own email address, which implies it should not be used to change another user's email. However, it does not explicitly name an alternative like update_user or state a when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

change_report_date_rangeChange report date rangeAInspect

Set the period a report covers. Every data widget on it is re-fetched for the new range and the results are saved — widgets on their own custom range keep it. A rolling preset ("Last 30 Days") is stored as the preset and re-resolved on every later fetch, so it stays current. The re-fetch runs in the background — call get_widget_data with source_id set to this report to read the new numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReport ID (from list_reports)
date_rangeYesThe period to report on

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe report carrying the new date_range. Every data widget on it is re-fetching in the background — read the new numbers with get_widget_data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations indicate readOnlyHint=false and destructiveHint=false, the description goes much further: it discloses that every data widget is re-fetched and results are saved, that widgets on their own custom range are preserved, that rolling presets are stored as presets and re-resolved later, and that the re-fetch runs in the background. This is precisely the kind of behavioral context an agent needs to anticipate 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?

Three sentences, each packed with necessary information: the core purpose, the behavior for widgets and rolling presets, and the background execution with a pointer to get_widget_data. No filler or repetition, and the most important detail (what the tool does) is front-loaded.

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 complexity of the nested date_range object and the presence of an output schema, the description covers everything needed to call the tool correctly: the effect on widgets, the rolling preset behavior, the background execution, and how to retrieve results. Annotation and schema already handle safety and parameter details, so nothing essential 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?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema by explaining how the date_range object behaves: widgets with custom ranges keep them, and rolling presets are re-resolved on later fetches. This clarifies the overall effect of setting date_range, going beyond field-level 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 opens with the specific verb+resource ('Set the period a report covers'), immediately distinguishing this from sibling tools like get_widget_data by stating the action and its object. It also clarifies the scope: it affects all data widgets on the report unless they have their own custom range, which prevents confusion with other update tools.

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 tells the agent to use get_widget_data with source_id set to the report to read the re-fetched results, which directly addresses the common post-action question. It implies when to use this tool (when changing a report's date range) but does not explicitly contrast it with other update tools like update_report, leaving a slight gap in exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_read_notificationsClear read notificationsA
Destructive
Inspect

Delete all notifications that have already been read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation, and how many read notifications were cleared.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry destructiveHint=true and readOnlyHint=false, so destructiveness is disclosed structurally. The description adds one valuable behavioral boundary — only already-read notifications are affected, leaving unread ones intact. It does not clarify whether 'delete' is permanent versus a trash/archive state, which is relevant given archive_notifications exists as a sibling.

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 eight-word sentence that opens with the verb and states the full scope. Every word earns its place; there is no filler or redundant restatement of the title.

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 zero-parameter destructive bulk operation with an output schema present, the description conveys the action, the affected scope, and the exclusivity of the filter. The only remaining gap is an explicit reversibility statement distinguishing delete from the archive sibling, which would make it fully bulletproof.

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 zero parameters, there is nothing for the schema to document, and the description's phrasing 'all notifications that have already been read' confirms this is an unfiltered bulk operation. The baseline 4 for a zero-parameter tool applies, as no parameter semantics need to be added.

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 pairs a specific verb ('Delete') with a precise resource and scope ('all notifications that have already been read'), which clearly distinguishes it from sibling tools like archive_notifications (archive rather than delete), mark_notifications_read (marks rather than deletes), and count_unread_notifications. No ambiguity remains about what this tool accomplishes.

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 case — permanently removing already-read notifications — but never explicitly contrasts it with the nearest alternative, archive_notifications, which preserves history. An agent will likely choose correctly for a cleanup goal, but the description offers no explicit when-to-use vs when-not-to guidance relative to the notification-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connected_datasourcesList connected datasourcesA
Read-only
Inspect

List the datasource connections this account has made. A widget can only pull real data from a datasource that is connected to its client — anything else renders demo data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per connection this account has made — id (pass it to test_connection or delete_connection), datasource_id, the connection name, its status and when it was last tested. Never the credentials themselves.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this as a read-only, non-destructive operation, so the description doesn't need to restate that. It adds valuable behavioral context beyond the annotations: unconnected datasources cannot provide real widget data and will render demo data instead, which tells the agent why the list matters.

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 uses two sentences with no wasted words. The first sentence front-loads the core action and scope, and the second adds one high-value contextual detail about real data versus demo data, making the definition both compact and informative.

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 zero-parameter, read-only listing tool with an output schema, the description is complete. It explains what is listed, at what scope, and why the distinction between connected and unconnected datasources matters in practice, so an agent has enough information to invoke it 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?

The tool has zero parameters, so there is no parameter detail that the description must explain beyond the empty schema. The baseline for zero-parameter tools is appropriate here, and the description appropriately focuses on the meaning of the returned list rather than input syntax.

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 ('List'), a specific resource ('datasource connections'), and a clear scope ('this account has made'). It also adds a distinguishing behavior: only connected datasources can power widgets with real data, while everything else falls back to demo data, which separates this tool from generic datasource listings.

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 this tool: when an agent needs to verify which datasource connections are available for widgets to pull real data. It gives practical context but does not explicitly name sibling alternatives or state when not to use it, so it stops just short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_clientsCount clientsA
Read-only
Inspect

Get total count of clients for the account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoHow many clients the account has — compare against the plan allowance.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive behavior, so the description only needs to add beyond that. It adds the account-level scope and aggregate 'total count' nature, but does not address whether archived clients are included or how the count is computed. That is acceptable given the output schema and simple nature of the 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 declarative sentence with no filler. It front-loads the action, resource, and scope, and every word contributes meaning.

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 zero-parameter, read-only count operation with an output schema, the one-sentence description is complete enough for an agent to invoke it correctly. Return-value specifics are already covered by the output schema, and the annotations cover safety traits.

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 there is no parameter semantics for the description to add. The baseline for 0-parameter tools is 4, and the description is consistent with this by not implying any configurable inputs.

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 a specific verb ('Get'), a specific resource ('clients'), and the scope ('for the account'). The phrase 'total count' clearly distinguishes it from list_clients by signaling an aggregate operation rather than a detailed listing.

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 account-level usage through 'for the account,' but it does not explicitly state when to choose this tool over alternatives like list_clients or count_unread_notifications. There is no exclusionary guidance, only an implicit selection condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_unread_notificationsCount unread notificationsA
Read-only
Inspect

Get the number of unread notifications.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoHow many notifications are still unread.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds no further behavioral detail beyond the count semantics, but it does not contradict annotations.

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, front-loaded sentence with no wasted words. It states exactly what the tool does without unnecessary elaboration.

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 parameterless read-only count tool with an output schema and safety annotations, this description is fully sufficient. Nothing needed to invoke the tool correctly 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?

The tool has zero parameters, so the schema is trivially complete. The description need not elaborate on parameter meaning, and the baseline of 4 applies.

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 resource ('number of unread notifications'), clearly distinguishing it from list_notifications by indicating it returns a count rather than a list. The scope ('unread') is also explicit.

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 list_notifications or clear_read_notifications. No exclusions or preferred contexts are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_assetSave widgets as a sectionAInspect

Save widgets as a reusable section, the same way the editor does when you select widgets and save them: each widget is copied onto the section with a fresh id, and its type and datasources are derived from what you picked. Use add_asset_to_page to drop the section onto a report page later.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSection display name.
tagsNoCategorization tags.
widget_idsYesWidgets to save into the section (ids from list_widgets). Their current config is copied.
descriptionNoSection description.
is_recommendedNoPromote this section to the top of the default "Recommended" sort.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new saved section — id, name and tags. Pass the id to add_asset_to_page to drop it onto a report.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=false and destructiveHint=false in annotations, the description carries the burden and discloses meaningful behavior: widgets are copied, receive fresh ids, and inherit type/datasources from the selection. It does not explicitly say original widgets remain untouched, but 'copied' makes that a reasonable inference.

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 action, followed by a concise behavioral explanation and a pointer to the sibling tool. No filler, tautology, or repeated schema details.

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 100% schema coverage and presence of an output schema, the description is complete enough for an agent to invoke the tool correctly. It explains the core behavior, the relationship to widget_ids, and the intended next step.

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 100%, so the schema already documents all five parameters. The description's 'what you picked' maps to widget_ids but adds little beyond the schema's 'current config is copied'.

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?

States a concrete action: saving selected widgets into a reusable section, and specifies the core semantics (copied widgets, fresh ids, derived types/datasources). The reference to add_asset_to_page distinguishes this from adding a section directly to a report.

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 editor analogy and the pointer to add_asset_to_page give clear context for when this tool fits in a workflow. However, it does not explicitly name alternatives or state when not to use it, leaving some routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_automationCreate automationA
Destructive
Inspect

Create a new automation. Pick an existing email template + sender by id (from email_templates / email_senders), or pass template_id:"custom" together with a custom payload to save a new named template inline.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNoDay of send: weekday name (weekly, e.g. "monday") or day-of-month (monthly, e.g. "2")
nameYesAutomation name
hoursYesHour of send (e.g. "9")
customNoRequired when template_id === "custom" — saved as a new named email template
minutesYesMinute of send (e.g. "00")
timezoneYesIANA timezone (e.g. America/New_York)
date_textYesDate-range preset label for the report
frequencyYesSend frequency
parent_idYesParent report ID this automation belongs to (from list_reports)
sender_idYesSaved email sender id
recipientsYesRecipient email addresses
template_idYesSaved email template id, or the literal "custom" to save a new template from the `custom` payload
time_formatNoMeridiem for the send time

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new automation — id, name, schedule, recipients and next_run_at. It is created active, so pause it if the user has not confirmed the first send.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, covering the mutating nature. The description adds the behavioral nuance that a custom template gets saved inline as a new named template, which is useful context. It does not disclose any additional side effects like potential overwrites or permission requirements, but given annotation coverage, it is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the core action ('Create a new automation') and then explains the two modes. It is concise and free of fluff, though the second clause is slightly complex. It earns points for efficiency and clarity.

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 complexity (13 params, 10 required, nested object, output schema exists), the description covers the key decision point (existing vs custom template) and references the source tools for IDs. It omits mention of required fields like parent_id or the meaning of date_text, but these are fully covered in the schema. The output schema handles return values. It is sufficient but not exhaustive for such a complex 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 100%, so each parameter is already documented. The description reinforces the relationship between template_id and the custom payload, but this is also stated in the schema (template_id description and custom description). It adds no new parameter meaning beyond what the schema provides, so a baseline of 3 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 'Create a new automation', identifying the specific verb and resource. It distinguishes this tool from siblings by explaining the two creation modes: using an existing template/sender or providing a custom template inline. This differentiates it from create_email_template and create_email_sender while clarifying its own scope.

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 explicit guidance on the two valid usage paths: referencing existing templates/senders by id from the listed tools, or using the 'custom' literal with a payload. This helps the agent decide which parameters to fill. However, it does not explicitly contrast with update_automation or test_automation, nor state when not to use it, though the 'create' intent is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_calculated_metricCreate calculated metricAInspect

Create a calculated metric — a custom KPI from a formula over other metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesMetric name (e.g. "CTR")
symbolYesDisplay format: numbers, decimal, % or currency
formulaYesFormula as an ARRAY of tokens in evaluation order. CTR = clicks ÷ impressions × 100 is: [{id:"t1",type:"METRIC",query:{datasource_id:"gadw",data_view:"ACCOUNT",metrics:[{value:"clicks"}]}}, {id:"t2",type:"OPERATOR",operator:"÷"}, {id:"t3",type:"METRIC",query:{datasource_id:"gadw",data_view:"ACCOUNT",metrics:[{value:"impressions"}]}}, {id:"t4",type:"OPERATOR",operator:"×"}, {id:"t5",type:"NUMBER",number:100}]

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new calculated metric — id, name, formula and symbol.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a write operation that is not destructive. The description adds the concept of a 'custom KPI from a formula over other metrics,' which clarifies the semantic behavior. However, it doesn't disclose details like whether the metric is immediately available, whether it can reference other calculated metrics, or what the response contains. With annotations covering the basic safety profile, a 3 is appropriate.

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, efficient sentence that front-loads the core purpose. It earns its place by defining the resource type and its nature. It could arguably add a pointer to the formula example in the schema, but the current length is appropriate and not padded.

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 has a rich output schema and 100% schema description coverage, so the description doesn't need to explain return values or parameters. The formula parameter is complex, but the schema's example covers it thoroughly. The description is complete enough for an agent to understand the tool's purpose, though it could mention that formula tokens reference datasource metrics from describe_datasource.

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 100%, so the schema already documents all three parameters (name, formula, symbol) in detail. The description adds the high-level concept of a 'formula over other metrics' but doesn't add meaning beyond the schema's extensive formula token documentation. The schema's formula example is particularly rich, so the description's contribution is minimal. Baseline 3 is correct.

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 ('Create') and resource ('calculated metric'), and defines it as 'a custom KPI from a formula over other metrics.' This clearly distinguishes it from sibling tools like add_calculated_metric_widget (which adds a widget to a page) and update_calculated_metric (which modifies an existing one).

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 a calculated metric, and the schema's formula example shows how to construct one. However, it does not explicitly state when to use this tool versus alternatives like add_calculated_metric_widget or update_calculated_metric, nor does it mention prerequisites like needing datasource IDs from describe_datasource. The usage context is implied 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.

create_clientCreate clientCInspect

Create a new client

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesClient name
foldersNoFolder IDs (from list_folders)
managerNoManager user ID (from list_users)
websiteYesClient website URL
currencyYesCurrency ISO 4217 code, e.g. "USD" — the server fills in symbol + country iso
timezoneYesIANA timezone (e.g. America/New_York)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new client, complete — including the theme_id the server derived from the website's branding. Pass its id when creating reports or linking datasources.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate that this is a mutating but non-destructive operation (readOnlyHint=false, destructiveHint=false). The description adds no behavioral context beyond the word 'create', such as side effects, defaults, duplicate handling, or whether the client is immediately available.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, but it merely restates the tool name and title. This is under-specification rather than earned conciseness, so it does not warrant a higher 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?

Given the close sibling create_client_with_report, the description provides no context for choosing between them. The schema and output schema offer substantial detail, but the description itself fails to give enough guidance for correct tool selection or expected behavior.

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 100% and each parameter is documented with meaningful detail, including the currency pattern and the server-filling behavior. The description itself adds no parameter information, but the baseline of 3 applies because the schema carries the full semantic load.

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 states a specific verb ('create') and resource ('client'), so the core purpose is immediately clear. However, it does not distinguish this from the sibling create_client_with_report, so it falls short of a top score.

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 given about when to use this tool versus create_client_with_report, update_client, or archive_client. There is also no mention of prerequisites, such as required permissions or how folders and manager relate to the creation flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_client_with_reportCreate client with reportAInspect

Create a new client and its first report or dashboard in one step. The first report is resolved from the inputs: template_id clones that template; blank:true creates an empty report; with neither, a matching Starter template of the given type is cloned (never a blank report). For a specific style (e.g. a Google Ads dashboard), pass a template_id found via list_templates (filter by datasources + type).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesClient name
typeYesReport type: REPORT (point-in-time) or DASHBOARD (live)
blankNoSet true for an empty report. If false/omitted and no template_id is given, a matching Starter template is cloned.
websiteNoClient website, e.g. acme.com
timezoneNoIANA timezone for the client (default UTC)
report_nameYesName for the first report
template_idNoClone this template into the first report (from list_templates — filter by datasources + type)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoWhat was created — the new client and the new report, each with its id and name, and the template the report came from. Link a datasource to the client next, or the widgets show demo data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond annotations by explaining the resolution precedence and the important warning that omitting both options never creates a blank report. The only minor gap is the lack of an explicit precedence statement when both template_id and blank:true are supplied together.

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?

Three sentences, no filler, and the key behavior is front-loaded. Every sentence earns its place by adding resolution logic or practical guidance.

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 composite creation tool, the description covers the decision branches, warns against unintended blank reports, and points to the right template search path. With an output schema present, return details are not required; only the combined-option ambiguity keeps this from being fully complete.

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 100%, so the baseline is 3; the description adds meaningful semantics for template_id, blank, and type, including the list_templates filtering hint. It does not add new meaning for name/report_name/website/timezone, but those are already described in 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 states a specific action and resources: 'Create a new client and its first report or dashboard in one step.' It clearly differentiates from siblings like create_client and create_report by emphasizing the one-step combined behavior.

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 conditional guidance: use template_id to clone, blank:true for empty, and neither to clone a matching Starter template. It also directs users to list_templates for specific styles. However, it does not explicitly state when to prefer separate create_client/create_report calls instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_connectionCreate datasource connectionAInspect

Create a datasource connection from credentials — the connect panel's credential form, as a tool. Call it with just datasource_id to be told which fields that datasource needs, then again with those values and a name. Re-using an existing name updates that connection's credentials. Only for datasources that are connected by credentials; the ones that sign in through the vendor's website (Google, Meta, LinkedIn…) cannot be created here and say so. Use link_datasource afterwards to point a client at the new connection, and test_connection to check it.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoWhat to call this connection, e.g. "Client Stripe". Shown wherever connections are listed
credentialsNoThe credential values, keyed as the tool lists them. Omit to see the list
datasource_idYesDatasource alias (from datasources)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoEither the credential fields this datasource needs (when called without them), or the connection that was created — its id and name. Link it to a client with link_datasource.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-read-only and non-destructive behavior. The description adds meaningful behavioral context: re-using an existing name updates that connection's credentials, the first call returns the field list, and unsupported datasources 'say so'. This goes beyond the annotations without contradicting them.

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?

Five sentences carry the full workflow: purpose, first call, second call, upsert caveat, unsupported datasources, and follow-up tools. There is no filler, and the most useful guidance appears early.

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 output schema exists, rich schema descriptions, and annotations, the description completes the picture: it explains the two-step interaction, the credential-only scope, the reuse/update behavior, and downstream tools to call. An agent has everything needed to invoke this 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 coverage is 100%, so parameters are already documented. The description adds important semantics: datasource_id alone triggers a field-discovery response, credentials are provided in the format the tool lists, and name is needed on the second call. This enriches the structured schema meaningfully.

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 and resource: 'Create a datasource connection from credentials.' It also differentiates this tool from related siblings by noting that link_datasource and test_connection are used afterwards, and that OAuth-based datasources cannot be created here.

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 gives explicit when-to-use guidance: call with just datasource_id to discover required fields, then call again with credentials and a name. It also states a clear exclusion — vendor-website OAuth datasources like Google and Meta cannot be created this way — and names the follow-up tools to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_custom_dataCreate custom datasetAInspect

Create a custom-data dataset from parsed CSV rows (max 10,000 rows).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDataset name
columnsYesColumn definitions
raw_dataYesArray of row objects keyed by column name
file_nameYesOriginal file name
file_sizeYesFile size in bytes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new dataset — id, name and columns. Pass the id as the dataset when adding a custom-import widget.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, so the create/mutating nature is expected. The description adds the row source and the 10,000-row limit, but does not disclose other behavioral details such as whether the dataset is linked to a report, how duplicates are handled, auth requirements, or effects on existing data. It does not contradict the annotations.

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 front-loads the primary action and object, and includes a relevant constraint in parentheses. Every word adds value and there is 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?

Given that all parameters are fully described in the schema and an output schema exists, the description is sufficient for an agent to understand the tool's core purpose and input format. A brief note on when this dataset creation is needed relative to other custom-data operations would make it fully 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?

Schema description coverage is 100%, so the baseline applies. The description mentions 'parsed CSV rows' which helps contextualize raw_data and columns, but it does not add meaningful parameter information beyond the schema's own descriptions. No additional semantics are provided.

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 states a specific action ('Create') and a specific resource ('custom-data dataset'), and adds the distinguishing source ('parsed CSV rows, max 10,000'). It clearly communicates what the tool does, though it does not explicitly compare itself to sibling tools such as create_asset or add_custom_data_widget.

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 a custom dataset needs to be created from already-parsed CSV rows. However, it does not mention any exclusions, prerequisites, alternatives, or why one would choose this over related create operations, so usage 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.

create_email_senderCreate email senderCInspect

Create a "From" sender.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoPostal city for the email footer
sourceYesresend or smtp
addressNoPostal street address for the email footer (required by anti-spam law in some regions)
countryNoPostal country for the email footer
nicknameNoInternal label for this sender, shown in the sender list
reply_toNoReply-To address, when replies should go somewhere other than from_email
from_nameYesDisplay name
from_emailYesFrom email address

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new sender — id, from_name and from_email. Pass its id as sender_id when sending or on an automation.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false, the annotations already indicate this is a mutating operation. The description adds no further behavioral details, such as whether creating a sender will fail if the domain is unverified, or what side effects occur. It does not contradict annotations, but it provides no value beyond the structured metadata.

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 sentence of four words, making it extremely concise and front-loaded. However, it is so terse that it sacrifices informative content, though it avoids redundancy with the schema. It earns its place by stating the core action, but it could include a brief elaboration without becoming bloated.

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 and a complete input schema, the description omits important contextual information such as prerequisites, limitations, or how the created sender integrates with other email operations. An agent would need to consult documentation or infer behavior from sibling tools like verify_email_domain and set_default_email_sender. This is inadequate for a create operation with multiple optional postal fields that have legal implications.

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 provides complete descriptions for all 8 parameters (100% coverage), including enums and supplementary details like anti-spam law requirements for address fields. The description adds no parameter-specific meaning, so it maintains the baseline score of 3 expected when schema descriptions are comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'create' and the resource 'From sender', which clearly identifies the action as creating a sender entity. However, it does not explain what a 'From' sender is or differentiate it from related sender operations beyond the create verb. The phrase is a slight elaboration on the title but lacks specific context about the sender's role in email delivery.

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 like update_email_sender, set_default_email_sender, or delete_email_sender. There is no mention of prerequisites such as domain verification or how this sender will be used in future email sends. An agent must infer usage context from the tool name and sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_email_templateCreate email templateCInspect

Create an email template.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name
messageYesEmail body
subjectYesEmail subject
button_topNoPlace the button above the message
button_textNoOptional CTA button label

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new template — id, name and subject. Pass its id as template_id when sending or on an automation.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutating but non-destructive action. The description adds no behavioral context beyond the verb 'create' – such as whether duplicate names are rejected, whether templates become immediately available, or any side effects. With no extra context, the description fails to add value beyond the annotations.

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, directly front-loaded sentence with no filler. It is concise, but it is so terse that it omits useful context that could be added without bloat, so it doesn't reach the maximum.

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 rich input schema (5 params, 100% coverage) and an output schema, an agent can likely invoke the tool correctly based on structured data alone. However, the description offers no explanation of how this template creation fits into the broader workflow (e.g., with send_email) or how it differs from the generic create_template sibling, leaving a moderate gap.

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 100%, so each of the five parameters already has a descriptive explanation. The tool description does not add any additional parameter semantics, but the baseline of 3 is appropriate because the schema fully compensates.

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 'Create an email template' clearly identifies a specific verb and resource, making the tool's basic function unmistakable. However, it does not differentiate itself from sibling 'create_template' or related 'update_email_template' tools, so it earns a 4 rather than 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?

The description provides no guidance on when to use this tool versus alternatives like create_template, update_email_template, or set_default_email_template. There are no mentions of prerequisites, target users, or context such as whether this creates a global or client-scoped template.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_folderCreate client folderAInspect

Create a new client folder

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new folder — id and name. Pass the id to move_client_to_folder.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write operation. The description adds no further behavioral context (e.g., prerequisites, side effects, uniqueness constraints), but given the annotations, a 3 is appropriate.

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, front-loaded sentence with zero fluff. It states the action and object clearly, which is the ideal length for a simple create 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?

For a tool with one parameter and an output schema, the description is minimally sufficient, but it lacks any context about folder hierarchy, naming constraints, or relationship to other client operations. Given the simplicity, a 3 is fair but not higher.

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 100%, so the parameter 'name' is fully documented as 'Folder name'. The description does not add any additional meaning beyond the schema, so the baseline of 3 applies.

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 client folder' uses a specific verb and resource, and the qualifier 'client' clearly distinguishes it from siblings like create_media_folder. An agent can tell what this tool does without opening the schema.

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 create_media_folder or update_folder. The description implies it's for client folders but does not state when this is the right choice or when to avoid it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_goalCreate goalAInspect

Create a goal — a target value + comparison for a saved metric query.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGoal name
queryYesSaved builder query the goal is measured against
symbolNoDisplay format: numbers, decimal, % or currency
operatorYesSuccess comparison: >= (at or above), = (equal), <= (at or below)
client_idNoBind the goal to a client (from list_clients)
goal_typeYesstatic (fixed target) or change (delta over the period)
descriptionNoOptional description
target_valueYesTarget value to measure against

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new goal — id, name, target_value, operator, goal_type and its query. Pass the id as a metric when adding a goal widget.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a definition of a goal (target value + comparison for a saved metric query), which gives some behavioral context beyond the tool name. Annotations already indicate it is not read-only or destructive, and the description confirms it is a creation operation. However, it does not disclose potential side effects (e.g., impact on reports), permission requirements, or whether the goal is immediately persisted. With minimal annotation coverage, the description carries the responsibility for these details but fails to provide them.

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, tightly worded sentence with zero filler. It immediately states the action and defines the core concept, making it highly efficient and front-loaded. Every word earns its place.

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 8 parameters, nested objects, and an output schema, yet the description is minimalist. While the schema is highly detailed and covers parameter semantics, the description lacks high-level usage context such as how the query relates to goal creation or what constitutes a valid setup. Since an output schema exists, not explaining return values is acceptable, but the description could still provide more context on prerequisites and relationship to saved queries.

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 100%, meaning every parameter already has a description. The tool description adds no additional parameter-level meaning, so it meets the baseline expected for high schema coverage. No extra value is provided beyond what the schema already communicates.

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 (create), the resource (goal), and defines a goal as a target value plus comparison for a saved metric query. This precisely distinguishes it from sibling tools like update_goal, duplicate_goal, or add_goal_widget, leaving no ambiguity about what operation is performed.

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 add_goal_widget or update_goal. It does not mention prerequisites (e.g., needing a saved query), nor does it explain the context of goal creation. A single sentence with no usage context leaves the agent to infer when and why to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_media_folderCreate media folderCInspect

Create a new media folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new folder — id and name. Pass the id to move_media_to_folder.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations indicate readOnlyHint=false and destructiveHint=false, which already imply a write operation. The description adds no extra behavioral traits, such as whether duplicate names are allowed, parent-folder requirements, or permission needs. For a creation tool, this is sparse.

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 with zero filler. It is front-loaded and easily parsed, making it highly concise and well-structured for an agent to digest 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?

Although the tool is simple, the description lacks sufficient context about when to use it, what a 'media folder' is in the broader system, or any side effects of creation. The presence of sibling tools like create_folder and update_media_folder makes this ambiguity more impactful.

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 only parameter 'name' is fully described in the schema ('Folder name'), so schema coverage is 100%. The description adds no supplementary meaning beyond what the schema already provides, matching the baseline expectation.

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 specifies a clear action ('Create') and resource ('a new media folder'), which is unambiguous on its own. However, it doesn't explicitly distinguish itself from the sibling create_folder, so it relies on the reader to note the 'media' qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like create_folder, update_media_folder, or list_media_folders. The description simply states the action without any context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pageCreate report pageAInspect

Add a page to a report or template. Appended at the end by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPage name
visibleNoWhether the page is visible (defaults to true)
positionNoPosition (1-indexed); omit to append at the end
source_idYesReport or template ID this page belongs to (from list_reports or list_templates)
source_typeYesSource type

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new page — page_id, name, position and visible. Pass page_id when adding widgets.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses a useful behavioral detail beyond the annotations: pages are appended at the end by default. It does not contradict the annotations (readOnlyHint=false, destructiveHint=false), and the write nature is consistent with the 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 two short sentences with no filler. The core action is front-loaded, and the only additional behavior mentioned (append by default) is relevant and 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?

Given the high schema coverage, an output schema, and annotations indicating a non-read-only, non-destructive mutation, this description is largely sufficient for an agent to invoke the tool correctly. It could explicitly note that the page is added to an existing report/template, but the required source_id and source_type parameters already convey 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 100%, so the schema already documents all parameters and their meanings. The description echoes the report/template target and the append-by-default position behavior, but it does not add substantial new parameter-level detail 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 ('Add') and names the exact resource ('a page') and target ('report or template'), which clearly distinguishes it from siblings like create_report, add_report_section, update_page, and delete_page. It is not a tautology and goes beyond the title.

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 context is implied: this tool adds a page to an existing report or template. However, there is no explicit guidance about when to choose this tool over related alternatives such as add_report_section or create_report, and no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_reportCreate report or dashboardAInspect

Create a new report or dashboard for a client. Presentation toggles have server defaults when omitted. A report is created on the grid layout or the free canvas; a dashboard is always grid.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesReport name
typeYesReport type
layoutNoLayout engine that owns widget geometry: 'grid' is the 12-column grid, 'canvas' is absolute page pixels. Defaults to 'grid'. Dashboards are always 'grid'. Set at creation only — a report cannot change engine afterwards, because its widget positions are stored in the units it was authored in.
passwordNoPassword (required when password_enabled is true)
templateYesBLANK (fresh), TEMPLATE (from a saved template), or AGENCY (account-level)
theme_idNoTheme ID (use list_themes to find one)
client_idYesClient ID the report belongs to (from list_clients)
date_rangeNoDate range configuration
descriptionNoReport description
pdf_enabledNoEnable PDF download
template_idNoWhen template is TEMPLATE, the source template ID — its pages and widgets are cloned into the new report. Use list_templates to find one.
show_cover_pageNoShow cover page
cover_page_titleNoCover heading, overriding the theme's. Null or omitted inherits the theme.
password_enabledNoEnable password protection
cover_page_subtitleNoCover subheading, overriding the theme's. Null or omitted inherits the theme.
thank_you_page_titleNoThank-you heading, overriding the theme's. Null or omitted inherits the theme.
cover_page_pattern_idNoGenerated artwork for the cover, overriding the theme's. Null or omitted inherits the theme.
show_table_of_contentsNoShow table of contents
thank_you_page_subtitleNoThank-you message, overriding the theme's. Null or omitted inherits the theme.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new report — id, name, type and its pages (cloned from the template when one was named). Pass the id to list_pages, then add widgets.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate readOnly=false and destructive=false, so the description adds real behavior: presentation toggles fall back to server defaults and dashboards are forced onto grid layout. It does not describe return values or cloning side effects, but the output schema exists and the core creation behavior 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?

Three concise, front-loaded sentences each carry meaningful information: creation scope, default handling, and layout rules. There is no filler or restating of the tool title.

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 19-parameter creation tool the description is adequate but leaves the relationship to create_report_from_template and create_client_with_report unstated. The schema covers parameter detail and an output schema exists, but the description itself is thin on process and alternative selection.

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 effectively 100%, so the schema does the heavy lifting; the description still adds a useful general guarantee that omitted presentation toggles are allowed and that layout has a fixed default. This supplements, rather than repeats, the per-property documentation.

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 states a specific action ('Create a new report or dashboard for a client') and names the resource, so an agent can see this is the general creation entry point. It does not explicitly distinguish itself from the overlapping sibling create_report_from_template, though it does cover report/dashboard and grid/canvas behavior.

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 when-to-use or when-not-to-use guidance and no mention of alternatives such as create_report_from_template or create_client_with_report. Since this tool itself accepts a template_id, an agent gets no routing signal for choosing between overlapping creation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_report_from_templateCreate report from templateAInspect

Create a report or dashboard for an existing client by cloning a template (its pages + widgets). Find the template first with list_templates — filter by datasources + type (e.g. datasources=gadw, type=DASHBOARD for a Google Ads dashboard).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new report
typeYesReport type — must match the template
client_idYesClient id (from list_clients)
template_idYesTemplate to clone (from list_templates — filter by datasources + type)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new report — its id, name and type, the template it was cloned from, and the client it belongs to.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so an agent knows this is a non-destructive mutation. The description adds value by disclosing that the operation clones the template's pages and widgets into a new report and requires an existing client. This is consistent with the annotations, with no contradiction.

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, zero waste. The core action is front-loaded in the first sentence, and the second sentence earns its place by naming the prerequisite tool, the filter criteria, and a concrete example. Nothing redundant with the schema.

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 mutation tool with 4 documented parameters, an output schema, and a clear prerequisite workflow, the description is nearly complete. It covers the cloning behavior, the existing-client constraint, and the template discovery step. The only minor gap is not warning about type-matching failure, but the schema already states 'must match the template', so this is adequately covered.

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 100%, so each parameter is already documented. The description adds meaning beyond the schema by tying the workflow together — the template_id must come from list_templates filtered by datasources+type — and by giving a concrete example (datasources=gadw, type=DASHBOARD for a Google Ads dashboard) that clarifies how to select the right template.

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 ('Create a report or dashboard... by cloning a template') and the mechanism ('its pages + widgets'). This clearly distinguishes it from siblings like create_report (build from scratch), duplicate_report, and create_template, so an agent can tell them apart without opening schemas.

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 an explicit prerequisite workflow: 'Find the template first with list_templates — filter by datasources + type', including a concrete filter example. The context makes the intended use clear, though it does not explicitly exclude alternatives like create_report or duplicate_report.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_templateCreate templateAInspect

Create a template from an existing report. Pages, widgets, and datasource categories are copied/derived from the source report automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name
report_idYesSource report ID (from list_reports) — pages and widgets are copied from this report
descriptionNoTemplate description

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new template — id, name, type and the datasources derived from the source report.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the write nature (readOnlyHint=false) and non-destructiveness; the description adds genuinely useful behavior beyond that: pages, widgets, and datasource categories are 'copied/derived automatically' from the source. This tells the agent the operation has side effects beyond creating a blank shell. It doesn't cover reversibility or downstream coupling to the source report, but with an output schema present, return behavior is already 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?

Two sentences with zero filler: the action verb and resource land in the first five words, and the behavioral detail about automatic copying follows immediately. Every word earns its place; nothing is redundant with the schema.

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 3-parameter tool with 100% schema documentation, an output schema, and safety annotations, the description covers the core semantics an agent needs to call it correctly. The only notable omission is lifecycle context (e.g., that templates can later be edited via update_template), which is a nice-to-have, not a correctness blocker.

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 100%, so the schema already documents all three parameters — including the crucial note that report_id is the source and that pages/widgets are copied from it. The description reinforces the copy behavior conceptually but adds no parameter-level detail beyond what the schema provides. Baseline 3 applies.

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?

States a specific verb, resource, and source: 'Create a template from an existing report.' The second sentence specifies exactly what gets copied (pages, widgets, datasource categories), which clearly distinguishes this from the inverse sibling create_report_from_template (report ← template) and from plain create_report. An agent can tell direction and scope at a glance.

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 context is clear: this is used when you have an existing report and want a derived template, and the schema reinforces the prerequisite via 'Source report ID (from list_reports)'. However, no alternative is explicitly named — it doesn't say to use create_report_from_template for the reverse direction — so the guidance stops at implied context rather than explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_themeCreate themeAInspect

Create a new visual theme. Supply the complete tokens map (primary, font, radius, shadow, canvas, surface, chart1-10, etc.) — tokens are the single source of truth for every visual property. A theme also picks the report cover-page and thank-you-page background images (other text/colour overlays come from defaults). Set is_default=true to make this the account default — any existing default is cleared atomically.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTheme name
tokensYesComplete token map for all visual properties: primary, primary_foreground, accent, accent_foreground, canvas, surface, surface_muted, text, text_muted, border, header_surface, header_text, header_border, chart1–chart10, font, radius, shadow.
cover_pageNoCover-page configuration: background image URL plus title and subtitle overlays (variable-substituted at render time).
is_defaultNoMark as the account default theme — one per account, cascade target for new reports
thank_you_pageNoThank-you-page configuration: background image + title + subtitle.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe new theme — id, name, tokens and page config. Pass the id as theme_id on a report.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutation, and the description adds important behavioral context beyond that: tokens are the single source of truth, and setting is_default=true atomically clears any existing default. This is a meaningful side-effect disclosure that helps an agent anticipate the consequences of the call.

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 tight sentences with no filler. It front-loads the core action, then provides the critical token requirement and the notable default side effect. Every sentence contributes operational information.

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 create tool with five parameters, nested objects, and an output schema, the description covers the essential inputs and behaviors. A minor gap is that it does not explicitly acknowledge the optional title/subtitle overlays allowed by the schema, though the schema itself documents those, and the overlays comment is slightly ambiguous.

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 input schema already provides 100% parameter coverage with detailed descriptions, so the baseline applies. The description adds value by emphasizing that the tokens map must be complete, and by explaining the atomic default-clearing behavior of is_default. It also clarifies the role of cover_page and thank_you_page as selecting background images.

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 a specific action and resource: 'Create a new visual theme.' It further defines what a theme includes (tokens, cover-page and thank-you-page background images), making it easy to distinguish from siblings like update_theme, archive_theme, get_theme, and list_themes.

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?

It gives clear guidance on when to call this tool: when creating a new theme, providing a complete tokens map, and optionally setting it as the account default. It does not explicitly enumerate alternatives like 'use update_theme to modify an existing theme,' but the 'new' framing and sibling names supply adequate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

datasource_resourcesList datasource resource valuesA
Read-only
Inspect

List the selectable values behind a widget's advanced settings and filters — campaigns, ad sets, forms, videos, alerts, and so on. describe_datasource says WHICH advanced keys a data view requires; this returns the values to put in them.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoValues the resource is scoped by — e.g. the campaign id when listing its ad sets. Keyed as describe_datasource names them
resourceYesResource name, e.g. "campaigns"
client_idYesClient id (from list_clients)
datasource_idYesDatasource alias (from datasources), e.g. fb-ads

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe selectable values for that resource — each with the id to put in the advanced setting or filter, and the label to show.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds useful behavioral context: the tool returns selectable values for advanced widget settings/filters, and those values are meant to populate datasource keys. The 'and so on' wording also aligns with openWorldHint=true. No contradiction or hidden surprise.

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, zero filler, with the core action front-loaded and the clarifying relationship to describe_datasource in the second sentence. The examples are compact and informative rather than redundant.

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 description is complete for this tool's role: it states what is returned, how it relates to describe_datasource, and gives examples. With an output schema present and annotations covering safety, no critical operational detail is missing. It could explicitly mention the need for client_id/datasource_id context, but the schema already supplies 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 100%, so the schema already documents datasource_id, client_id, resource, and params. The description adds some orientation by mentioning campaign/ad-set-style resources and pointing to describe_datasource for key naming, but it does not add significant parameter-level meaning 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 and resource: 'List the selectable values behind a widget's advanced settings and filters,' and names concrete examples. It also explicitly distinguishes itself from describe_datasource, making its purpose unambiguous even among many sibling list_* 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?

The description gives an explicit workflow: describe_datasource tells you WHICH advanced keys are required, while this tool returns the values to fill them with. This clearly routes the agent between the two tools and leaves no ambiguity about when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

datasourcesList supported datasourcesA
Read-only
Inspect

List every datasource Oviond supports, with the id (the datasource_id used everywhere else — e.g. ga4, gadw, fb-ads), name, category, and data views. Call this FIRST to find the datasource_id, then describe_datasource for that datasource's views, metrics and dimensions. For what this account has actually connected, use connected_datasources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe catalog of supported datasources — each with its id (the datasource_id used everywhere else), name, category and data views.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds context beyond annotations by clarifying this lists all supported datasources (a catalog) versus account-connected ones, and specifies the return fields. This is useful behavioral context, though the output schema likely covers the fields, so the description doesn't need to elaborate further.

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, zero waste. The purpose and returned fields are front-loaded, followed by clear usage guidance and the sibling alternative. Every sentence earns its place.

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 list tool with an output schema, the description is complete. It tells the agent what it returns, when to call it, and how to proceed next (describe_datasource), plus the alternative for connected data. Nothing essential 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?

The tool has zero parameters, and schema coverage is trivially 100%. Per the rubric, a 0-parameter tool gets a baseline of 4. The description doesn't add parameter meaning (none exist) but doesn't need to.

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 every datasource Oviond supports') and the resource (datasources), and specifies the returned fields (id, name, category, data views). It distinguishes itself from siblings like describe_datasource and connected_datasources, making its 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?

Provides explicit guidance: 'Call this FIRST to find the datasource_id, then describe_datasource for that datasource's views, metrics and dimensions.' It also names the alternative for account-specific data: 'For what this account has actually connected, use connected_datasources.' No ambiguity remains.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_api_keyPermanently delete API keyA
Destructive
Inspect

Permanently delete an API key record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAPI key ID (from list_api_keys)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the key record was deleted for good.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide destructiveHint=true, so the description does not need to re-establish destructiveness. It adds 'permanently', conveying irreversibility, but it does not disclose broader consequences such as invalidating active integrations or inability to restore the key. No contradiction exists.

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 operation with no filler or redundant clauses. It is appropriately sized for a simple, one-parameter destructive tool.

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 one well-documented parameter, a destructive annotation, and an output schema, the description is nearly complete for safe invocation. The main missing piece is explicit guidance contrasting this with revoke_api_key, which would make it fully self-contained.

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 100%, and the schema already documents the single id parameter clearly, including its provenance from list_api_keys. The description adds no parameter-level information, but it is not required given the complete 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 names a specific resource ('API key') and a specific action ('permanently delete'), and the word 'permanently' distinguishes it from the sibling revoke_api_key. An agent can tell exactly what this tool does without opening the schema.

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 permanence of the deletion implies when this tool is appropriate, but the description does not explicitly compare it to revoke_api_key or state when to choose one over the other. It leaves the important selection between delete and revoke to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_connectionDelete connected datasourceA
Destructive
Inspect

Delete a datasource connection — every widget pulling data from it will break

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatasource connection ID to delete (from connected_datasources)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the connection was deleted. It is unlinked from every client that used it, and their widgets fall back to demo data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds the significant cascading effect that widgets pulling from it will break, which is valuable behavioral context beyond the annotations. No contradiction; the description aligns with the destructive hint.

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. It front-loads the action and immediately states the key consequence, 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation with one parameter, the description plus annotations and schema provide sufficient information. The widget-breaking warning covers the primary risk, and the presence of an output schema means return details need not be described. Slightly more could be said about irreversibility, but destructiveHint already implies 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?

The input schema fully documents the id parameter with its source and purpose (from connected_datasources), achieving 100% coverage. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline 3 applies.

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 ('Delete') and the resource ('a datasource connection'), and the added consequence ('every widget pulling data from it will break') distinguishes it from non-destructive connection operations like rename_connection or test_connection. The title reinforces the purpose, making it unambiguous.

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 mention when to use this tool versus alternatives such as unlink_datasource or rename_connection. It clearly implies deletion but lacks explicit exclusions or guidance on when not to use it, which is a minor gap given the many connection-related sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_email_senderDelete email senderB
Destructive
Inspect

Delete a sender by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSender ID (from list_email_senders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the sender was deleted. Automations still pointing at it fall back to the account default.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry destructiveHint=true and readOnlyHint=false, so the destructive nature is disclosed. The description adds little beyond repeating 'Delete'. It doesn't mention side effects (e.g., whether existing emails using this sender are affected, whether it's reversible, or if confirmation is needed). With annotations carrying the destructive signal, a 3 is fair—description adds minimal behavioral context.

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?

Single sentence, no fluff, but extremely terse. It's not padded, but it also doesn't earn points for front-loading substantive guidance—there is none to front-load. 3 seems right for a one-liner that could have been slightly richer.

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 one-parameter delete with destructive annotation and output schema, the description is adequate but minimal. It doesn't explain what happens after deletion, any restrictions, or whether the operation is permanent. Given the simplicity, 3 is appropriate—an agent can likely use it correctly, but the description adds the bare minimum.

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 100% description coverage, with id described as 'Sender ID (from list_email_senders)'. That's sufficient. The description itself doesn't add param detail, but schema does the work, so baseline 3-4; the schema's 'from list_email_senders' actually adds provenance, which is good. I'll give 4 for the schema's clear parameter doc.

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 (Delete) and the resource (a sender by ID). It's distinguishable from siblings like update_email_sender or create_email_sender. A bit of context about what 'sender' means (email sender) would push it to 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 on when to use this tool vs alternatives. The description doesn't mention that the id comes from list_email_senders (that's in the schema), nor any caveats like whether deletion is permanent or affects templates/logs. No conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_email_templateDelete email templateA
Destructive
Inspect

Delete an email template by ID (refused if it is the default).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID (from list_email_templates)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the template was deleted. Deleting the account default is refused.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, establishing the destructive nature. The description adds a specific behavioral condition—'refused if it is the default'—which is not in the annotations and is valuable for the agent to know before invoking. It does not contradict annotations and provides a meaningful operational detail.

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, efficient sentence with no filler. The core action and the critical constraint (default refusal) are both front-loaded, making it immediately actionable for an agent.

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 with one parameter, a clear destructive action, and an output schema (not shown but indicated). The description covers identification (ID) and a key edge case (default refusal). No additional context is needed for a correct invocation.

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 100%: the id parameter is described as 'Template ID (from list_email_templates)'. The description's 'by ID' reinforces this but adds no new information beyond the schema. Since the schema fully documents the parameter, the description meets the baseline but does not elevate 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 verb (Delete) and resource (email template), and identifies the ID as the key parameter. It distinguishes from sibling delete tools like delete_email_sender by specifying 'email template', and the parenthetical 'refused if it is the default' adds a unique constraint that further clarifies 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 the tool is for deleting email templates but provides no explicit guidance on when to use it versus alternatives, such as archiving or updating. It does not mention when not to use it, nor does it reference sibling tools like set_default_email_template for context. The default-refusal note is a behavioral constraint, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_folderDelete client folderC
Destructive
Inspect

Delete a client folder

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFolder ID to delete (from list_folders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the folder was deleted. The clients inside it are not deleted — they just stop being filed under it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The destructiveHint annotation already marks this as destructive, and the description merely restates that via the word 'Delete'. It adds no additional behavioral context, such as whether deletion is permanent, affects folder contents, or is reversible.

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 filler or redundancy. It is appropriately terse for a one-parameter tool, though it does not add information beyond the title.

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?

For a destructive operation, the description is too thin. It does not explain what happens to the folder's contents, whether the action is irreversible, or whether any safeguards exist. The schema and annotations provide some support, but the description leaves important operational context unstated.

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 covers the single parameter fully, including that the id is a folder ID from list_folders. The description adds no extra parameter-level meaning, so the baseline of 3 is appropriate given the high schema coverage.

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 ('Delete') and the specific resource ('a client folder'). It is distinct from sibling tools like delete_media_folder and delete_page, though it does not explicitly differentiate itself from them.

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 archiving or updating a folder. No exclusions, prerequisites, or conditions are mentioned, leaving the agent to infer the appropriate usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_media_folderDelete media folderA
Destructive
Inspect

Delete a media folder (its media are not deleted, just un-foldered).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFolder ID to delete (from list_media_folders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the folder was deleted. The files inside it survive — they just stop being filed under it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the agent knows this is destructive. The description adds the key behavioral nuance that the media files themselves are not deleted—they are simply un-foldered. This is valuable context beyond the annotation and prevents the agent from overestimating the blast radius. It doesn't mention reversibility or permissions, but the core behavior is well 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?

One sentence, front-loaded with the action and immediately followed by the most important caveat. Every word earns its place; no fluff or repetition of the title.

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 destructive tool with a complete schema and an output schema present, the description covers the essential behavior. The only minor gap is not mentioning whether the operation is reversible or what happens to the folder's children beyond media (e.g., subfolders), but the core decision-making information is present.

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 100%, so the schema already documents the single 'id' parameter. The description adds no additional parameter-level detail beyond what the schema provides, which is acceptable given the schema is complete. Baseline 3 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 action (delete a media folder) and the resource (media folder), and immediately clarifies a critical nuance: the media inside are not deleted, just un-foldered. This distinguishes it from a destructive delete and from sibling tools like delete_media_file or archive_media_folder.

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 this tool: when you want to remove a folder but retain its media. It doesn't explicitly name alternatives like archive_media_folder or move_media_to_folder, but the 'not deleted, just un-foldered' clarification gives enough context for an agent to choose it over a true delete. A clear exclusion of when not to use it would push this to 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_notification_channelDelete notification channelA
Destructive
Inspect

Remove a configured Slack or Discord notification channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesWhich channel to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the channel was removed and stops receiving notifications.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds no extra context like irreversibility or effects on the Slack/Discord workspace, but does not contradict the annotations either. Given the annotation coverage, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with the verb and object front-loaded. No fluff, no repetition. It conveys the complete action in minimal 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?

The tool is simple: one parameter, an output schema exists, and annotations cover the destructive nature. The description, schema, and annotations together give an agent everything needed to invoke it correctly. No missing information like prerequisites or side effects is necessary for this basic delete 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 coverage is 100% with the 'channel' parameter fully described by an enum (slack/discord) and a clear description. The tool description simply names the same platforms, adding no new meaning beyond the schema. Baseline 3 applies.

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') and resource ('notification channel') and narrows it with 'Slack or Discord' and 'configured'. It clearly differentiates from siblings like set_notification_channel (add/update) and list_notification_channels, and from archive_* tools, by indicating this is a permanent removal.

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 action is unambiguous: use this to delete an existing Slack or Discord channel. It does not explicitly name an alternative for setting channels, but the context implies that set_notification_channel is for adding/changing. This is clear context without exclusions, though a mention of not using it for listing or setting would be stronger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_pageDelete report pageA
Destructive
Inspect

Delete a page by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesPage ID to delete (from list_pages)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the page and the widgets on it were deleted.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive operation. The description adds no extra behavioral context beyond what annotations provide—no mention of cascading effects on widgets, irreversibility, or permissions. With annotations covering the destructive nature, a 3 is appropriate.

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 waste. It front-loads the action and resource, and the parameter is self-explanatory. Every word 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 single-parameter delete tool with destructiveHint annotation and a 100% schema coverage, the description is nearly complete. The only minor gap is not mentioning whether deleting a page also deletes its widgets or is reversible, but the annotations and schema cover the essential safety and parameter context.

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 100%: the only parameter page_id is described as 'Page ID to delete (from list_pages)'. The description adds no additional parameter meaning beyond the schema, but the schema already provides sufficient guidance including the source of the ID. Baseline 3 is correct.

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 'Delete a page by ID' clearly states the verb (delete), the resource (page), and the identifier (ID). It distinguishes from siblings like update_page and create_page, though it doesn't explicitly name them. The title 'Delete report page' adds context that the page belongs to a report.

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: call when you need to delete a page by its ID. It doesn't explicitly state when not to use it or mention alternatives like archive_page (which doesn't exist in siblings) or delete_widget. The context is clear enough for a simple delete operation, but no exclusions or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_widgetDelete widgetA
Destructive
Inspect

Delete a widget by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID to delete (from list_widgets).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the widget was deleted from its page.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description does not need to repeat that deletion is destructive. It adds minimal behavioral context (e.g., that the ID comes from list_widgets), but does not disclose side effects, reversibility, or permissions beyond what annotations imply. This is acceptable given annotation coverage, but no extra value is added.

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 zero wasted words. It immediately states the action and target, making it efficient for an agent 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?

For a simple single-delete operation, the description, combined with annotations and the input schema, provides enough information for an agent to invoke it correctly. It does not mention return values, but an output schema is present (indicated by context signals). The lack of explicit guidance on side effects is covered by destructiveHint, so nothing critical is missing.

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 fully documents the single parameter 'id' with a clear description, so schema_description_coverage is 100%. The tool description does not add any additional meaning about the parameter beyond what the schema already provides, so the baseline of 3 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 'Delete a widget by ID' clearly states the action (delete), the resource (widget), and the identifying attribute (ID). It distinguishes itself from sibling delete_widgets (plural) and delete_page, so an agent can immediately recognize this is for a single widget deletion.

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 mention when to use this tool versus alternatives like delete_widgets (bulk deletion). It implies single-deletion via the singular 'a widget' and the ID parameter, but does not name any alternatives or conditions. This leaves the decision to the agent based on context rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_widgetsDelete multiple widgetsA
Destructive
Inspect

Delete multiple widgets by ID in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesArray of widget IDs to delete (from list_widgets).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation, and how many widgets were deleted.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is covered. The description adds the batching context ('one call') but does not disclose additional behavioral details like irreversibility or partial failure 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?

A single, front-loaded sentence with no wasted words. It states the action, target, mechanism, and batch nature efficiently.

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, an output schema, and annotations already signaling destructiveness. The description, combined with the schema, provides enough information for an agent to invoke the tool correctly.

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 100%, with the ids parameter already documented as 'Array of widget IDs to delete (from list_widgets).' The description only reinforces that deletion is by ID, adding no new parameter-level information.

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 ('multiple widgets'), and a precise method ('by ID in one call'). It also naturally distinguishes itself from the singular delete_widget sibling tool.

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: when multiple widgets need to be deleted in one batch operation. However, it does not explicitly state alternatives or exclusions, such as 'for a single widget, use delete_widget instead.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_datasourceDescribe datasourceA
Read-only
Inspect

Describe a datasource the way the report builder sees it, in one call: its data views, the advanced settings each view requires, its default view and defaults, and its metric and dimension catalogs with the flags that decide what can be combined — single (must be the only dimension), requires_metric (only offered once that metric is picked), deprecated, custom. A metric or dimension is only valid inside its own data_view. Use this before add_data_widget or update_data_widget.

ParametersJSON Schema
NameRequiredDescriptionDefault
data_viewNoScope the response to one data view, e.g. ACCOUNT
datasource_idYesDatasource alias (from datasources), e.g. ga4, gadw, fb-ads

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe datasource's data views, and for each one its metrics, its dimensions with their flags, and the advanced settings a query has to supply. A metric is only valid inside its own view — read this before configuring a widget.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, and the description goes beyond that by revealing the response's conceptual structure (data views, advanced settings, catalogs) and the non-obvious semantics of flags like single, requires_metric, deprecated, and custom, as well as the data-view scoping rule. No side effects are implied.

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 front-loaded with a clear verb and resource, and every clause carries substantive information; no filler. It is long, but the density is justified by the conceptual complexity of the returned metadata.

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 read-only, two-parameter tool with a full output schema, the description covers the key concepts an agent needs before calling it and explicitly ties it to the widget-building workflow. Nothing important appears missing.

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 100% and both parameters already have descriptions. The tool description adds contextual meaning about data_view scoping and flags, but it does not significantly enrich the parameter descriptions themselves, so a baseline 3 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 states a specific verb ('Describe') and resource ('datasource'), scoped to 'the way the report builder sees it', and enumerates the exact contents (data views, advanced settings, defaults, metric/dimension catalogs). It also distinguishes this from sibling listing tools by naming its downstream consumers, add_data_widget and update_data_widget.

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?

It explicitly says 'Use this before add_data_widget or update_data_widget', which gives a concrete trigger for choosing it. It does not explicitly say when not to use it or name alternatives like datasources or connected_datasources, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_assetDuplicate saved sectionBInspect

Duplicate an asset (and its widgets) under a new name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSource asset ID (from list_assets).
nameYesNew asset name.
tagsNoOptional new tag list (defaults to source).
descriptionNoOptional new description (defaults to source).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe copy — its own new id, plus the name, description and tags.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral detail—that widgets are duplicated along with the asset—but does not mention other side effects, whether the source remains unchanged, or any permission requirements. This is moderate additional context beyond the annotations.

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, tightly worded sentence that front-loads the core action and scope. Every word earns its place, and there is no filler or repetition of schema details.

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: 4 flat parameters, fully described in the schema, with an output schema present. The description covers the essential operation and widget behavior. It would be fully complete if it noted that the source asset is unchanged, but that is arguably covered by the non-destructive annotation. Still, a small gap remains.

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 100% description coverage, with each parameter (id, name, tags, description) clearly explained. The tool description only reiterates the 'under a new name' idea that maps to the name parameterholed, adding no new parameter-level insight. Baseline 3 is appropriate given the schema carries the param semantics.

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 states a clear action ('Duplicate'), a specific resource ('asset'), and a scope ('and its widgets') plus the target outcome ('under a new name'). It is specific enough to distinguish from unrelated tools, but it does not explicitly differentiate from sibling duplicate_* tools like duplicate_report or duplicate_goal, so it stops 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?

The description gives no guidance about when to use this tool versus the other duplicate_* siblings, nor any conditions, prerequisites, or exclusions. The only usage signal is the word 'asset' in the description, which is implied but not explicitly contrasted with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_calculated_metricDuplicate calculated metricBInspect

Duplicate a calculated metric, optionally with a new name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSource calculated metric ID (from list_calculated_metrics)
new_nameNoName for the copy

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe copy — its own new id, plus the name, formula and symbol.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-read, non-destructive operation, but the description adds no further behavioral context. It does not state that the original remains unchanged, whether the copy is independent, or if there are any side effects on 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 a single, front-loaded sentence with no filler. It states the action and the one optional modifier, making it appropriately concise for a simple two-parameter tool.

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, complete schema parameter coverage, and presence of an output schema plus annotations, the description is sufficient for correct invocation. It could mention the intended distinction from create/update, but the description is otherwise adequate for this simple 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 100%, so the schema already documents both parameters. The phrase 'optionally with a new name' adds mild clarity about new_name, but the description does not add significant meaning beyond what the schema already provides, warranting the baseline score.

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 and resource: 'Duplicate a calculated metric' with the optional rename behavior. It clearly distinguishes this from siblings like create_calculated_metric, update_calculated_metric, and archive_calculated_metric.

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 explain when to choose duplicate over create or update, nor does it mention prerequisites such as obtaining the ID from list_calculated_metrics. The only hint about usage comes from the schema's parameter description, not the tool description itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_custom_dataDuplicate custom datasetAInspect

Duplicate a custom-data dataset with a new name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSource custom-data ID (from list_custom_data)
new_nameYesName for the copy

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe copy — its own new id, plus the name, columns and rows.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write operation. The description adds minimal behavioral context: it implies creating a copy without modifying the source. It does not disclose side effects such as whether the copy is shallow/deep, whether permissions are copied, or if there are limits on naming. Given annotations cover the safety profile, a 3 is appropriate—the description adds some value but lacks rich behavioral details.

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 or redundant phrasing. It front-loads the primary action and object, making it immediately scannable. Every word contributes to the meaning, so it earns full marks for conciseness and structure.

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 with only two parameters, both documented in the schema, and an output schema exists so return values are covered. The description captures the core action. Minor gaps include whether the new name must be unique or if there are constraints on duplicating (e.g., limits), but these are not critical for an agent to call the tool correctly. Given the low complexity and existing structured data, the description is largely 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?

Schema description coverage is 100%: both parameters 'id' and 'new_name' have descriptive text in the schema. The tool description does not add any extra meaning beyond what the schema already provides. With full schema coverage, the baseline is 3, and the description does not exceed that.

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 the action clearly: 'Duplicate a custom-data dataset with a new name.' The verb 'duplicate' with the specific resource 'custom-data dataset' precisely identifies the operation and differentiates it from sibling duplicate tools like duplicate_asset or duplicate_report. The title aligns with the description, providing a distinct and unambiguous purpose.

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 no explicit guidance on when to use this tool versus alternatives or any exclusions. The purpose is clear enough that an agent can infer it should be used when duplicating a custom dataset, but no context is given about prerequisites, uniqueness of the new name, or when other duplicate tools might be more appropriate. This is implied usage rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_goalDuplicate goalAInspect

Duplicate a goal, optionally with a new name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSource goal ID (from list_goals)
new_nameNoName for the copy

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe copy — its own new id, plus the target, operator and query.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as non-read-only and non-destructive, and the description's 'Duplicate' is consistent with that. However, the description does not disclose details like whether the original is left untouched, whether the copy is independent, or what state/child objects are copied, so it adds little beyond the annotations.

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?

Eight words, no filler, purpose and optional behavior are front-loaded. Every part is informative.

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 (two scalar params, one required, output schema present), and the description plus schema cover the core invocation. It falls just short of fully contextual because it gives no usage caution or clarification about duplication behavior, but nothing critical is missing for a basic call.

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?

Both parameters are fully described in the schema, including id's source in list_goals and new_name as the copy name. The description only echoes the optionality of new_name, so it adds no semantic value beyond 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 names a specific action ('Duplicate') and resource ('a goal'), and adds the optional naming behavior. This clearly distinguishes it from sibling duplication tools like duplicate_report or duplicate_asset.

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 given about when to choose this over create_goal, update_goal, or archive_goal, nor are prerequisites stated. The only usage signal is inferred from the verb itself, which is no more than what the name already communicates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_reportDuplicate report or dashboardBInspect

Duplicate a report with a new name

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSource report ID (from list_reports)
nameYesName for the duplicated report

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe copy — its own new id, with every page and widget of the source cloned under it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-read-only, non-destructive mutation, so the safety profile is covered. The description adds that the operation creates a copy with a new name, but it does not disclose side effects, whether the original report is fully preserved, permissions required, or copy contents.

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 earns its place, and the core behavior is stated immediately.

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?

With 2 fully documented parameters, annotations, and an output schema, this is a minimally complete description for a simple operation. However, it leaves a notable gap by not addressing the dashboard case in the title and not clarifying what is included in the duplicated report.

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 100%, with both id and name documented as source report ID and name for the duplicated report. The description ('with a new name') only restates the name parameter and adds no additional semantics beyond the schema.

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 and resource: 'Duplicate a report with a new name,' which clearly identifies the operation and the required output naming. It does not explicitly distinguish itself from close siblings like duplicate_asset, and it omits the dashboard case mentioned in the title, so it is clear but not fully differentiating.

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 gives no guidance on when to choose duplicate_report over sibling tools such as duplicate_asset, duplicate_calculated_metric, or create_report_from_template. It simply states the action, leaving the agent to infer the use case from the tool name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_company_paletteGenerate company color paletteA
Read-only
Inspect

Generate a color palette from a hex color (read-only — computes shades, changes nothing).

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYes3-6 character hex color code (without #)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe generated palette — the shade scale computed from the given colour, keyed by shade step.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is fully carried by structured data and the bar for extra value is lower. The description adds that the tool 'computes shades,' giving useful context about the derived output, but discloses nothing about edge cases, limits, or determinism. The wording 'changes nothing' aligns with the annotations rather than contradicting them.

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?

One front-loaded sentence that leads with the verb and resource and confines the safety clarification to a parenthetical. Minor redundancy exists — 'read-only' and 'changes nothing' overlap — but there is no wasted phrasing overall.

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 one-parameter tool with 100% schema coverage, read-only annotations, and an output schema, the description plus structured data are sufficient to invoke the tool correctly. The only gap is a hint about when in the branding/theme workflow to use it relative to sibling update tools, which is a minor omission.

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 100%; the schema already documents hex as a '3-6 character hex color code (without #)'. The description mentions 'hex color' but adds no format, validation, or transformation details beyond the schema. Per the baseline rule for high schema coverage, a 3 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?

States a specific verb ('Generate') and resource ('color palette'), plus the input source ('from a hex color') and behavior ('computes shades') in a single sentence. The parenthetical read-only caveat sets it apart from the update_branding/update_theme mutation tools in the sibling list. No other sibling generates palettes, so an agent can identify this tool immediately.

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 natural use case — supply a hex color and receive a palette of shades — but provides no explicit when-to-use guidance, no exclusions, and no named alternatives. An agent must infer that this is a pure utility tool to invoke ahead of branding/theme work. It does not route between this and the adjacent get_branding/update_theme tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_pdfGenerate PDFAInspect

Queue a PDF render of a multi-page report. Returns a job_id — poll get_pdf_status until it completes, then download the URL. Dashboards have no pages to paginate and are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYesPage size: A4 or Letter
client_idYesClient the report belongs to (from list_clients)
report_idYesMulti-page report to render (from list_reports, type REPORT). A dashboard is rejected.
orientationYesportrait or landscape

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe queued job — job_id to poll with get_pdf_status, and its initial status.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as non-read-only and non-destructive. The description adds meaningful context beyond annotations: the operation is asynchronous ('Queue'), returns a job_id, requires polling, and rejects dashboards. This gives the agent a solid mental model of the lifecycle. It doesn't cover auth, rate limits, or error handling other than the dashboard rejection, but the core behavioral traits are 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?

Three short sentences with no filler. The first sentence states the action, the second explains the follow-up workflow, and the third gives the critical exclusion. Every sentence earns its place; the most important information is front-loaded.

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 description, combined with a rich schema and an output schema, covers the action, the async polling flow, and an important failure case. It omits other potential failure modes (e.g., invalid report_id, backend errors) and does not mention any rate limits, but those are not essential for a basic invocation. The core end-to-end usage is complete; a small gap remains around additional error scenarios.

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 100%: all four parameters have descriptive text, including report_id's note that dashboards are rejected. The description reinforces the multi-page report requirement and dashboard rejection, but does not add any semantic detail beyond the schema. Baseline 3 is appropriate when the schema fully documents 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 opens with a specific verb+resource: 'Queue a PDF render of a multi-page report.' It also immediately distinguishes the tool from its complementary sibling get_pdf_status by naming the polling flow wedre. The explicit rejection of dashboards further clarifies the exact input type. No ambiguity remains about what this tool does.

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 direct procedural guidance: 'poll get_pdf_status until it completes, then download the URL.' It also states an explicit when-not-to-use condition ('Dashboards have no pages to paginate and are rejected'). While no alternate PDF-generation tool exists, the workflow and exclusion are crystal clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_accountGet accountA
Read-only
Inspect

Get account details for the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe account — id, company name and details, onboarding state, and the plan it is on.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the 'authenticated user' scope but does not disclose additional behavioral traits such as required permissions or response format. It does not contradict the annotations.

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 or redundancy. It efficiently communicates the essential purpose and scope for a zero-parameter read-only tool.

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 no-parameter, read-only tool with an output schema and safety annotations, the description is largely sufficient for invoking the tool correctly. Minor ambiguity exists around what 'account' includes versus sibling tools, but the output schema can clarify return values.

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 100%, so there is no parameter documentation burden. The baseline of 4 applies because no parameter explanation is needed, and the description is consistent with the empty schema.

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?

Description clearly states a specific verb ('get'), resource ('account details'), and scope ('authenticated user'), making the tool's purpose understandable. It is not a tautology, but it doesn't distinguish itself from sibling getters like get_current_user or get_company.

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 'for the authenticated user' provides useful context about when this tool applies, suggesting it targets the caller's own account. However, it offers no explicit guidance on alternatives or when not to use it, leaving the choice somewhat 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.

get_account_usageGet account usageA
Read-only
Inspect

Get current account usage stats (clients, reports, users, storage)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoCurrent usage against the plan limits — counts of clients, reports and users, and storage used.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the 'current' snapshot aspect and the stats categories, but does not disclose any additional behavioral details such as caching, auth requirements, or interpretation of 'usage.' No contradiction exists.

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 operation and enumerates the relevant metric categories. Every word earns its place.

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 zero-parameter, read-only tool with an output schema and safety annotations, the description is sufficient. The agent can identify the tool, invoke it with no arguments, and rely on the output schema for return structure.

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 the baseline is 4. There is no parameter burden for the description to carry, and nothing about parameters is misleading or missing.

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 states a specific verb ('Get'), resource ('account usage stats'), and scope ('clients, reports, users, storage'). This is clear and distinguishes it from related tools like get_account or get_billing by naming the exact metrics, though it does not explicitly name or contrast a sibling.

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 only implied: an agent would infer 'use this when current account usage stats are needed.' There is no explicit guidance about when to prefer it over alternatives such as get_billing, count_clients, or get_account, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_archive_countsCount archived itemsA
Read-only
Inspect

Get the count of archived items per type.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoHow many archived items there are, keyed by archive type.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the operation returns counts grouped by type, which is mildly useful beyond the annotations. No contradiction or hidden behavior is disclosed, but there is also no extra depth about pagination, limits, or which types are counted.

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, front-loaded sentence with no filler. Every word earns its place, and the key concepts ('count', 'archived items', 'per type') appear immediately.

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—no parameters, an output schema present, and annotations covering read-only safety—the description is complete enough for an agent to select and invoke the tool correctly. Nothing essential 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?

The tool has zero parameters and the schema coverage is 100%, so there is nothing for the description to clarify about arguments. Per the baseline for zero-param tools, this is sufficient.

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 a clear resource ('count of archived items per type'). It is easy to tell apart from sibling count tools like count_clients or count_unread_notifications, though it does not explicitly contrast itself with list_archive or other archive-related tools.

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 it: when you need aggregate counts of archived items by type. However, it never explicitly states that this tool should be used over list_archive (which likely returns details) or other count tools. Usage guidance is present only by implication, not by explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_assetGet saved sectionA
Read-only
Inspect

Get a single asset by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID (from list_assets).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe saved section — id, name, description, tags and the datasources it draws on. Its widgets come from list_asset_widgets.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond what annotations provide—it doesn't mention error behavior, return format, or whether the asset must be unarchived. With annotations covering the safety profile, a 3 is appropriate: the description is consistent with annotations but adds minimal behavioral value.

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 waste. It front-loads the verb and resource, and the 'by ID' qualifier is the only necessary detail. This is appropriately concise for a simple lookup tool.

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 single-resource read tool with one parameter, an output schema, and read-only annotations, the description is nearly complete. The only minor gap is that it doesn't clarify whether the asset must be unarchived or whether archived assets are retrievable, but this is a minor edge case given the sibling archive_asset and restore_from_archive tools exist. The output schema presumably documents the return shape, so the description doesn't need to.

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 100%, so the schema already documents the single parameter. The description adds the hint that the ID comes from list_assets, which is a small semantic addition beyond the schema's 'Asset ID (from list_assets)'—actually the schema already includes this hint, so the description adds nothing beyond the schema. Baseline 3 is correct when schema does the heavy lifting.

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 'Get a single asset by ID' clearly states the verb (get), the resource (asset), and the lookup mechanism (by ID). It distinguishes itself from list_assets (which lists assets) and update_asset/archive_asset (which mutate assets), though it doesn't explicitly name those siblings. The title 'Get saved section' is somewhat confusing because it uses 'section' instead of 'asset', but the description resolves this by using the canonical resource name.

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 usage context: use this when you have an asset ID and need a single asset's details. It doesn't explicitly state when not to use it or name alternatives like list_assets for fetching multiple assets. The parameter description 'Asset ID (from list_assets)' provides a useful hint about where the ID comes from, which is a form of usage guidance, but there's no explicit exclusion of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_automation_historyGet automation send historyB
Read-only
Inspect

Get send history for an automation

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAutomation ID (from list_automations)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per run, newest first — when it ran, whether it sent or was skipped, who it went to, and the failure reason when it did not send.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond restating the purpose; it does not mention pagination, filtering, data scope, or any access requirements. No contradiction exists, but there is also no added 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 concise sentence with no filler or redundancy. It is appropriately sized for a simple read operation and gets straight to the point.

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 read-only nature, full schema coverage, and an output schema, this is minimally adequate. However, it lacks any usage guidance, behavioral nuance, or relationship to sibling operations, so an agent receives only the bare minimum needed to understand the tool's purpose.

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 100%, so the schema fully documents the single 'id' parameter and even notes it comes from list_automations. The description itself adds no parameter information, so the baseline of 3 is appropriate.

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 states a specific verb and resource: 'Get send history for an automation.' This is clear and unambiguous, though it does not explicitly differentiate itself from siblings like list_email_logs or get_widget_data. The title and description are nearly identical, which slightly reduces the added clarity.

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 gives no guidance on when to use this tool versus alternatives, no exclusions, and no mention of related tools like list_automations for obtaining the ID. Usage is only implied by the purpose statement itself, not explicitly explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_billingGet billing subscriptionA
Read-only
Inspect

Get the current billing summary for the account (plan, status, limits, trial).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe billing record — plan id and name, subscription status, billing interval, the client allowance and other plan limits, and the trial or period end date.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful context by specifying that this returns current account billing information including plan, status, limits, and trial, which goes beyond the bare annotation-provided safety profile.

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 sentence, front-loaded with the action and resource, and the parenthetical adds concrete detail without waste. Every word earns its place.

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 zero-parameter input, read-only annotations, and presence of an output schema, the description is complete enough for an agent to select and invoke the tool correctly. No ambiguity remains about what the call returns.

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 no parameters, so there is nothing for the description to explain beyond the empty schema. Per baseline for zero-parameter tools, this is sufficient; the description instead clarifies what the result represents.

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 a clear resource ('current billing summary for the account') and enumerates what it covers ('plan, status, limits, trial'). This clearly distinguishes it from related siblings like get_account, get_account_usage, and list_invoices.

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 use when the billing summary is needed, but it does not explicitly state when to prefer this tool over alternatives such as get_account_usage or list_invoices, nor does it provide any exclusions. The usage context is understandable but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_brandingGet account brandingA
Read-only
Inspect

Get the account's white-label branding (logo, favicon)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe account branding — logo_url (full logo) and favicon_url (square mark).
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds minor context by naming the returned items (logo, favicon), but it does not go beyond that into other behavioral details.

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, front-loaded sentence that conveys the essential scope and content with no filler or redundant phrasing.

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 0-parameter read-only tool with an output schema and annotations already covering side effects, this description is fully sufficient. No missing information is needed for an agent to call it 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?

The tool has zero parameters, and the schema is empty with full coverage. There is nothing for the description to clarify about arguments, so the 0-param baseline of 4 applies; the description adds no unnecessary param information.

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 a precise resource ('account's white-label branding') plus clarifying examples ('logo, favicon'). This clearly distinguishes it from related siblings like update_branding, remove_account_logo, and refresh_account_favicon.

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 use for reading account branding, but it does not explicitly state when to choose this over alternatives or mention that updates belong to update_branding. For a simple 0-parameter getter, this is adequate but lacks explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_clientGet clientA
Read-only
Inspect

Get a single client by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClient ID (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe client — id, name, website, currency, timezone, branding, theme_id, its folders and the datasources linked to it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral detail such as what happens for missing/archived IDs or authorization requirements, but for this simple read operation the annotations plus description are 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?

The description is a single front-loaded sentence: 'Get a single client by ID.' Every word earns its place and there is no filler or redundant detail.

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 one-parameter read operation with an output schema present and safe-read annotations, this description is complete. An agent has enough information to invoke the tool correctly without additional context.

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 100% and the id parameter already includes the helpful note 'Client ID (from list_clients)'. The description only repeats 'by ID' and adds no additional formatting, constraints, or edge-case meaning 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 states a specific verb ('Get'), a specific resource ('client'), and the exact retrieval mode ('by ID'). It is clearly distinguishable from siblings like list_clients, create_client, and update_client.

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?

'Get a single client by ID' clearly implies when to use this tool: when you need one specific client. It does not explicitly mention alternatives or exclusions, but the context is unambiguous enough for an agent to select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_companyGet company profileA
Read-only
Inspect

Get company settings

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe agency's own company profile — company_name, website, timezone, address, city, state, zip, country and phone.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the term 'settings' which suggests it returns configuration information, but provides no extra behavioral context beyond that. However, since annotations cover safety, a 4 is appropriate—the description is consistent and adds a little value.

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 with no fluff. It is front-loaded with the core purpose, achieving maximum conciseness.

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 (no parameters, read-only, output schema exists), the description is nearly complete. The output schema likely describes the return structure. The only minor gap is not naming any specific settings fields, but that is likely covered by the output schema. Overall, it's adequate.

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 0 parameters, so there is nothing to document. The description does not need to explain parameters. Baseline for 0 params is 4, which is met.

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 'Get company settings' clearly states a specific verb and resource, distinguishing it from siblings like get_client or get_account. It is concise and unambiguous, though 'settings' is slightly vague compared to 'profile' in the title.

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 it is for reading company-level settings, but it doesn't explicitly contrast with related tools like get_client or get_branding. In a large sibling list, some explicit guidance on when to choose this over alternatives would help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_userGet current userA
Read-only
Inspect

Get the currently authenticated user profile

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe signed-in user — id, email, fullname, role, avatar_url, language, and the client ids they are scoped to.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds no extra behavioral context beyond the literal statement, such as authentication requirements or what fields the profile contains. It is consistent with annotations but does not enrich them.

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, front-loaded sentence with zero redundancy. It states the action and the target resource efficiently, with no filler.

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 parameterless read operation with an output schema available and annotations covering side effects, the description is fully sufficient. An agent can call it without needing additional context about inputs or safety.

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 zero parameters and 100% schema coverage (the schema is empty), there is nothing for the description to explain. The baseline of 4 is appropriate because no parameter documentation is needed.

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 the resource 'currently authenticated user profile'. It unambiguously distinguishes this from sibling tools like get_account or get_client by specifying the current user, leaving no ambiguity about which resource is being accessed.

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 get_user, list_users, or update_my_profile. It does not mention exclusions (e.g., you cannot retrieve other users) or suggest when it is the preferred choice. An agent must infer its purpose from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_custom_dataGet custom datasetA
Read-only
Inspect

Get a single custom-data dataset by ID, including its parsed rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom-data ID (from list_custom_data)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe dataset — id, name, file_name, columns, and raw_data: the parsed rows, each an object keyed by column name.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds value by disclosing that the response includes parsed rows, which is a behavioral detail beyond the simple 'get' semantics and not obvious from annotations alone.

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 filler. The core action and key behavioral detail are front-loaded, and 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only tool with an output schema and full annotation coverage, the description is sufficient. It clearly communicates what the tool returns and how it is identified, leaving no critical gaps for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the id parameter is described as 'Custom-data ID (from list_custom_data)', so the schema already provides full parameter semantics. The description does not add significant meaning beyond restating 'by ID', so the baseline 3 applies.

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 a specific verb ('Get'), resource ('single custom-data dataset'), and scope ('by ID, including its parsed rows'). It distinguishes itself from list_custom_data and other custom-data tools by emphasizing the single-item retrieval plus parsed rows.

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 (retrieve a specific custom-data dataset by ID) and the schema notes the ID comes from list_custom_data, which is useful context. However, it does not explicitly contrast with alternatives or state when not to use it, 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.

get_email_providerGet email providerA
Read-only
Inspect

Get the account's active email provider.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe active provider — oviond (shared sending), resend (the account's own Resend) or smtp.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's main behavioral addition is the word 'active', implying it returns the currently configured provider rather than a historical or candidate one. This adds some context but does not describe response formatting or edge cases.

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 short, front-loaded sentence with no redundant words. Every part earns its place by specifying action, scope, and state.

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 zero-parameter, read-only lookup with an output schema and annotations covering safety, the description is sufficient. It could be slightly more explicit about what 'email provider' encompasses, but no critical calling 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 and schema coverage is trivially 100%, so the baseline is 4. The description adds the meaning that the provider is tied to 'the account', making it clear the tool operates on the current account context without requiring explicit input.

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', the resource 'email provider', and a specific modifier 'active' scoped to 'the account'. This distinguishes it from sibling tools like set_email_provider, list_email_domains, and get_email_template.

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?

No explicit when-to-use or alternatives are given, but the action verb 'Get' and the contrast with sibling set_email_provider implicitly signal this is the read-only retrieval counterpart. There are no exclusions or prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_email_templateGet email templateA
Read-only
Inspect

Get a single email template by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID (from list_email_templates)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe template — id, name, subject, message, button_text and button_top.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond fetching a single template by ID. It doesn't mention return format, error behavior, or any side effects, but for a simple read operation with annotations covering safety, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero waste. The description is front-loaded with the verb and resource, and every word 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 single-resource read tool with a fully documented schema, an output schema, and annotations covering safety, the description is complete enough. It could mention that the ID comes from list_email_templates, but that's already in the schema. Nothing critical is missing for an agent to call this correctly.

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 100%, and the only parameter 'id' is described as 'Template ID (from list_email_templates)'. The description adds no additional parameter meaning beyond what the schema already provides. Baseline 3 is appropriate when the schema fully documents the parameter.

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 states a clear verb and resource: 'Get a single email template by ID.' It is unambiguous about what the tool does. However, it doesn't explicitly distinguish itself from siblings like get_template or list_email_templates, though the resource 'email template' is specific enough to avoid major confusion.

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: call this when you need a single email template by ID. It doesn't explicitly state when to use alternatives like list_email_templates or get_template, but the context of 'email template' and the single-ID parameter make the intended use reasonably clear. No exclusions or alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_notification_preferencesGet notification preferencesA
Read-only
Inspect

Get the per-event notification delivery preferences (which channels fire for each event type).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe preferences map, keyed by event type, each saying whether in_app, email, slack and discord fire for it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, non-destructive, and closed-world behavior. The description adds meaningful behavioral context by clarifying that preferences are per-event and describe which channels fire for each event type, which goes beyond the generic readOnlyHint.

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 phrase adds semantic value, and the key scoping qualifier ('per-event') appears early.

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 zero parameters, a readOnlyHint, and an existing output schema, the description is sufficient for an agent to understand what the tool returns and when calling it is appropriate. No critical usage context 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?

The tool has zero parameters, so the baseline is 4. There is nothing additional to document, and the description correctly avoids inventing parameter-related content.

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'), names the exact resource ('per-event notification delivery preferences'), and adds clarifying detail ('which channels fire for each event type'). This distinguishes it from sibling tools like list_notification_channels and makes its purpose immediately identifiable.

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 explicitly state when to use this tool versus alternatives such as update_notification_preferences or list_notification_channels. It implies a read operation, but provides no cues about when not to use related tools or what conditions would select this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pdf_statusGet PDF generation statusA
Read-only
Inspect

Poll a PDF job. status is pending → processing → complete (with a url) or failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID from generate_pdf

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe job — status (pending, processing, complete or failed), the download url once it is complete, and the error when it failed.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and destructiveHint already provided, the description adds genuinely useful behavioral detail beyond the annotations: it discloses the exact status transitions and that a successful completion includes a url. This gives the agent a clear model of how polling behaves.

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 tight sentence that front-loads the action ('Poll a PDF job') and then packs the essential state machine into the rest. No redundant words or filler.

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 one-parameter polling tool with an output schema and safety annotations, the description covers everything an agent needs: when to poll, what statuses to expect, what success looks like, and what failure looks like. There is no meaningful gap.

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 100%, so the schema already documents job_id as 'Job ID from generate_pdf'. The description adds no additional parameter meaning, which is acceptable given the complete 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 ('Poll') with a clear resource ('a PDF job') and defines the full lifecycle: pending → processing → complete (with a url) or failed. This makes the tool's function immediately obvious and distinguishes it from PDF generation and other status-checking tools.

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 phrase 'Poll a PDF job' clearly implies this is the follow-up to generate_pdf, and the job_id parameter description reinforces that the ID comes from generate_pdf. It provides clear context, though it does not explicitly name an alternative 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.

get_reportGet report or dashboardB
Read-only
Inspect

Get a single report by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReport ID (from list_reports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe report — id, name, type, client_id, theme_id, date_range, its pages, and the cover / thank-you / password / PDF settings.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond fetching by ID, and with an output schema present, the return shape is documented elsewhere. No contradiction exists.

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, front-loaded sentence contains all essential information with zero wasted words. The structure is ideal for quick agent scanning.

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-only getter with one parameter and a rich output schema, the description is mostly complete. However, the title includes 'or dashboard' while the description only mentions report, leaving a mild ambiguity about whether dashboard IDs are also accepted.

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 100%, and the id parameter is described as 'Report ID (from list_reports)', which gives useful provenance. The description itself adds no parameter meaning beyond the schema, so the baseline score of 3 is appropriate.

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 states a specific action and resource: 'Get a single report by ID.' It is clear and distinguishes this from list operations like list_reports. However, it does not explain the title's 'or dashboard' scope and does not explicitly contrast with sibling getters such as get_asset or get_widget.

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 when-to-use guidance is provided. The description does not say when to prefer this over list_reports or other getters, and there are no exclusions or alternatives mentioned. The only hint is the id parameter description referencing list_reports, but the main description gives no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_templateGet templateA
Read-only
Inspect

Get a single template by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID (from list_templates)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe template — id, name, description, type, its pages, and the datasources it expects.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no additional behavioral context beyond the basic function. It does not mention return format, potential errors, permissions, or any edge-case behavior. It only restates what the name already implies.

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 zero wasted words. It states exactly what the tool does without filler. It is appropriately minimal for a simple get-by-ID operation.

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?

This is a very simple tool with one parameter, full schema coverage, an output schema, and read-only annotations. The description is sufficient for an agent to know its purpose and call it correctly. No critical information is missing; the only addition might be a note on error handling, but that is not necessary given the simplicity and available 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?

Schema coverage is 100%, and the parameter 'id' is documented with 'Template ID (from list_templates)'. The description adds no further meaning about the parameter's format, constraints, or usage. The description 'by ID' is redundant with the schema. Baseline 3 applies since schema carries the full semantic load.

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 template by ID' clearly states the verb (get), the resource (template), and the method (by ID). It unambiguously distinguishes this from list_templates, create_template, update_template, and archive_template, and from other get_* tools for different resources. No ambiguity.

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 schema description 'Template ID (from list_templates)' implies a workflow: first list templates to obtain an ID, then call this. However, the description itself does not explicitly state when to use this vs alternatives, nor does it mention any exclusions. Usage guidance is only implicit via the parameter hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_themeGet themeA
Read-only
Inspect

Get a single theme by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTheme ID (from list_themes)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe theme — id, name, tokens, cover_page, thank_you_page and is_default.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate that the operation is read-only and non-destructive. The description adds the behavioral scoping that it returns exactly one theme rather than a list, but does not disclose additional behaviors such as error outcomes or permission requirements.

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. It communicates the essential operation and selection mechanism in the fewest possible 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?

Given the tool's low complexity—one required parameter, an output schema, and read-only annotations—the description is fully sufficient for an agent to understand 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the id parameter is already documented as 'Theme ID (from list_themes)'. The description adds no new meaning beyond the schema, so the baseline score of 3 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 states a specific verb ('Get'), resource ('theme'), and selection criterion ('by ID'), clearly distinguishing it from list_themes and theme mutation tools. It leaves no ambiguity about what operation is performed.

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 makes the core usage clear: retrieve an individual theme when you have its ID. It doesn't explicitly mention list_themes as the alternative for fetching multiple themes, but the context is clear enough that no exclusion is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_widgetGet widgetA
Read-only
Inspect

Get a single widget by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe widget — id, name, type, chart, its datasource and query, its state, and its position.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond 'by ID', which merely restates the operation. No contradiction exists, but there is also no extra disclosure about error behavior or auth needs.

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, tight sentence with the key information front-loaded. Every word earns its place; there is no filler 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?

For a simple get-by-ID operation with one documented required parameter, an output schema, and safety annotations, the description plus schema fully cover what an agent needs to call it correctly. No critical context is missing.

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 100%, meaning the id parameter is fully described with 'Widget ID (from list_widgets).' The description itself adds no additional parameter detail, so the baseline score of 3 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 states the exact action ('Get'), resource ('widget'), and scope ('single ... by ID'), unambiguously distinguishing it from list_widgets and other widget-related operations. No ambiguity remains about what the tool does.

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 gives no explicit when-to-use guidance or alternatives. The only implicit hint is that an ID is required, and the schema notes it comes from list_widgets, but there is no direct routing to sibling tools like list_widgets or get_widget_data, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_widget_dataGet widget dataA
Read-only
Inspect

Read the numbers behind data widgets, for charting them. Returns one entry per widget: its name, its saved chart type, its state, and — once its fetch has landed — the metric and dimension labels, the period totals, the previous period's totals, and the rows. chart is the visualization the widget is saved as and the one the app renders: draw it as that. score is a single KPI value (read it from summary, not the rows), table is a table, map is geographic, and the rest are line / area / bar / column / pie / donut / funnel. Stored variants map to their family — spline and areaspline are line and area, stacked_ and 3d_ prefixes are the type they name. chart is present while a widget is still fetching too, so a placeholder can take the right shape. Pass widget_ids for the widgets a call touched, or source_id for every data widget on a report. A widget in state "loading" is still fetching and carries no rows yet — call again for it. "demo" means the datasource is not linked to the client and the numbers shown in the app are placeholders; "error" means its last fetch failed. Rows are capped at row_cap and truncated says whether any were cut. datasource_type says how to read the entry: a Static Value widget (CUSTOM_DATA) shows the value field and has no series; a GOALS widget plots its summary against the target, which list_goals holds; CALCULATION rows are keyed by the calculated metric id, whose name is the matching metric label. A metric that carries a symbol (percent, currency, decimal…) is formatted that way in the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoWait up to 15 seconds for in-flight fetches to land, returning as soon as they all have. Default true
row_capNoRows returned per widget (default 200)
source_idNoRead every data widget on this report instead (report id from list_reports)
widget_idsNoWidgets to read (ids from list_widgets, or widget_id from add_data_widget). Up to 200 — use source_id for a whole report

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne entry per widget — its name, state, the `chart` it is saved as, the metric and dimension labels, this period's summary totals, the previous period's, and the rows (capped at row_cap, with `truncated` saying whether any were cut). A widget in state "loading" is still fetching and carries no rows yet.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description goes far beyond that by explaining the full behavior: what fields are returned, how chart types map to families, how to interpret states like 'loading', 'demo', and 'error', row cap and truncation, and how different datasource types change the reading. This is exceptional behavioral disclosure that lets an agent predict exactly what to expect.

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?

Despite its length, every sentence in the description carries essential information. It is front-loaded with the core purpose, then systematically covers return fields, chart types, states, parameter usage, and datasource handling. There is no fluff or redundancy. The structure makes complex content easy to parse.

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 this level of complexity—multiple widget types, states, and return formats—the description is remarkably complete. It covers return structure, chart type mapping, loading and error states, row limits, and datasource-specific interpretation. It also references the output schema indirectly by describing the entry shape. An agent has everything needed to call the tool correctly and interpret results.

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 100%, so all four parameters are already documented. The description adds meaningful context beyond the schema: it explains the relationship between widget_ids and source_id (mutually exclusive use cases), references row_cap and wait indirectly, and clarifies that widget_ids comes from list_widgets or add_data_widget. This enriches the parameter semantics without repeating schema text.

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 ('Read') and a clear resource ('the numbers behind data widgets'), with an explicit purpose ('for charting them'). It distinguishes itself from siblings like get_widget or list_widgets by focusing on data values rather than configuration or listing. The level of specificity leaves no ambiguity about what the tool does.

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 usage conditions for the parameters: 'Pass widget_ids for the widgets a call touched, or source_id for every data widget on a report.' It also explains the purpose of the wait parameter and the row_cap, and describes the states that indicate when to re-call. It does not explicitly name alternative tools for comparison, but the usage context is strong enough for an agent to decide when 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.

invite_userInvite team memberA
Destructive
Inspect

Invite a new user to join the account. admin has full account access; clients gives read+write to assigned clients; readonly is view-only on assigned clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesRole to assign (admin, clients, or readonly)
emailYesEmail address to invite
clientsNoClient IDs the user can access, from list_clients (required for the "clients" and "readonly" roles)
fullnameYesFull name of the invitee
avatar_urlNoOptional starting avatar URL or path (e.g. a Media URL)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe invited user — id, email, fullname and role. They stay invite_pending until they accept the emailed invitation.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate that this is a mutating and potentially destructive action. The description adds useful access-role semantics (admin, clients, readonly) but does not disclose other behavioral consequences such as whether an invitation email is sent or whether the invitation can be revoked.

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: the first states the core purpose, and the second efficiently clarifies role permissions. There is no redundant or filler content.

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?

Combined with the detailed input schema, output schema, and annotations, the description provides enough context for an agent to invoke the tool correctly for the common cases. It could be slightly more complete by noting that the clients parameter is required for the clients and readonly roles, though that is already in the schema.

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 100%, but the description adds meaning beyond the schema by explaining what each role grants: admin has full access, clients has read/write on assigned clients, and readonly is view-only. This helps the agent choose the correct role value.

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 ('Invite a new user to join the account') and names the resource (user/account). It is specific enough to distinguish from most siblings, though it does not explicitly contrast with related tools like update_user or 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives such as update_user or remove_user. The role semantics imply appropriate use for assigning access, but there is no when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_activityList activity logA
Read-only
Inspect

List the account activity / audit log (who changed what), paginated and filterable.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
limitNoResults per page
searchNoFree-text search
sourceNoFilter by origin: app, api, mcp or system
resource_typeNoFilter by resource type (e.g. client, project, goal)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne entry per logged action, newest first — id, action, resource_type, resource_name, the user who made it, the source it came from (app, api, mcp, system) and created_at.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing a safe read-only operation. The description adds 'paginated and filterable' as behavioral traits beyond the annotations, and 'who changed what' gives a sense of the content. No side effects or contradictions are present, so it meets the lowered bar with mild additional context.

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 sentence, front-loaded with the verb and resource, then the content clarification and capabilities. Every word contributes to understanding; there is no redundancy or filler.

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 read-only list tool with 100% schema coverage, an output schema, and full annotations, the description is complete enough. It tells the agent what the tool does, its content, and its core capabilities. Nothing an agent needs to call it correctly is missing.

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 100%, so page, limit, search, source, and resource_type are all documented in the schema. The description's mention of 'paginated and filterable' loosely aligns with the parameters but adds no specific semantic detail beyond the schema. Baseline 3 applies.

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 'List', the resource 'account activity / audit log', and clarifies the content with 'who changed what'. This distinguishes it from sibling list tools like list_assets or list_reports, which list different resources. The qualifiers 'paginated and filterable' further set expectations without 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 provides clear context: use this tool to list account activity/audit log entries. The phrase 'who changed what' implies the use case of tracking changes. It doesn't explicitly name alternatives or exclusion scenarios, but the uniqueness of an audit log tool among the siblings makes when-to-use clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_api_keysList API keysA
Read-only
Inspect

List the account's API keys (prefixes + status only — the full key is never returned after creation).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per key — id, name, the key prefix, status, last_used_at and created_at. Never the key itself.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds valuable context: only prefixes and status are returned, and the full key is never exposed after creation. This goes beyond the annotations and helps set expectations.

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. It front-loads the core action ('List the account's API keys') and appends a concise parenthetical clarification. Zero wasted 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?

The tool has no parameters and an output schema exists (as indicated by context). The description covers the core behavior and the critical limitation (full keys never returned). Combined with annotations that cover safety, an agent has everything needed to call it 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?

There are zero parameters, so the description doesn't need to explain any. The schema is trivially covered (100%), and the baseline for 0 params is 4. The description adds no parameter info, but none is needed.

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 the action (list), the resource (the account's API keys), and adds a key scoping detail (prefixes + status only, full key never returned). This distinguishes it from create/delete/revoke siblings and 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 doesn't explicitly mention alternatives, but it's clear this is the listing operation for API keys. The limitation that full keys are never returned implicitly guides usage (don't expect full keys here). No exclusions are needed for such a straightforward read-only list tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_archiveList archived itemsA
Read-only
Inspect

List soft-deleted (archived) items across clients, reports, media, automations and templates.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
limitNoResults per page
orderNoasc or desc
typesNoRestrict to these archive types (default: all)
searchNoFilter by name
sort_byNoSort field (default deleted_at)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per archived item — id, name, its archive type (clients, projects, media, automations, templates) and deleted_at. Pass the id and type to restore_from_archive.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the 'soft-deleted' context, which clarifies that these items are not permanently deleted and can potentially be restored. However, it does not disclose pagination behavior, default ordering, or whether the response includes metadata like total counts. With annotations covering the safety profile, a 3 is appropriate.

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 core purpose ('List soft-deleted (archived) items') and then specifies the scope. Every word earns its place, and there is no redundant or filler content.

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 has an output schema, so return values are already documented. The description covers the core purpose and scope, and the annotations cover the safety profile. The only minor gap is that it doesn't mention pagination or default behavior, but given the output schema and the simplicity of the tool, the description is largely 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?

Schema description coverage is 100%, so the schema already documents all six parameters. The description adds the 'soft-deleted' context and the list of item types, which aligns with the 'types' parameter enum. However, it does not add meaning beyond the schema for parameters like page, limit, order, search, or sort_by. Baseline 3 is correct when the schema does the heavy lifting.

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 ('List'), a clear resource ('soft-deleted (archived) items'), and enumerates the item types covered ('clients, reports, media, automations and templates'). It distinguishes itself from the many sibling list_* tools by focusing specifically on archived items, and the title reinforces this. The description is not a tautology and clearly identifies what the tool does.

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 usage context: use this tool when you need to list soft-deleted/archived items across the specified types. It does not explicitly state when not to use it or name alternatives (e.g., restore_from_archive, get_archive_counts, or the specific list_* tools for non-archived items), but the scope is clear enough for an agent to select it. The sibling list includes many list_* tools, and the description's emphasis on 'archived' provides sufficient differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_assetsList saved sectionsA
Read-only
Inspect

List saved widget-section assets for the account (with optional filters).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter to assets containing this tag.
pageNoPage number (0-indexed). Default 0.
typeNoFilter by asset type (e.g. "chart").
limitNoResults per page (1-100). Default 20.
searchNoFilter by name (case-insensitive contains).
sourceNo'mine' (your account), 'standard' (templates), or 'all'.
sort_byNoSort field (default "created_at").
sort_orderNo-1 for DESC (default), 1 for ASC.
datasourcesNoOverlap-filter on these datasource ids (from datasources).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per saved section — id, name, description, tags, the datasources its widgets use, and how many widgets it holds.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that this lists account-level saved widget-section assets and accepts optional filters, which is useful but not deeply behavioral. It does not describe defaults, pagination behavior, or what an 'asset' is beyond the name, though the output schema helps fill that 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 that front-loads the action and resource, then mentions optional filters. There is no filler or redundancy; every word earns its place. It delegates parameter details to the schema, which is appropriate.

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 read-only list tool with an output schema, no required parameters, and fully documented input schema, the description provides sufficient high-level context. It could be slightly clearer about what qualifies as a 'widget-section asset' and how account scope interacts with the source filter, but the schema and annotations cover the major operational details.

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 100%, so the input schema fully documents all nine parameters with clear descriptions and enums. The description only says 'with optional filters', which adds no parameter-level meaning beyond the schema. This matches the baseline of 3 when the schema carries the semantic weight.

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 clear verb and resource: 'List saved widget-section assets for the account'. It clarifies the ambiguous title 'List saved sections' by specifying these are widget-section assets, and the account scope is helpful. However, it does not explicitly distinguish this from sibling tools like list_asset_widgets or get_asset, so it falls just 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the main use case: listing saved widget-section assets, optionally filtered. It gives no guidance on when to prefer this over related tools such as list_asset_widgets, list_widgets, or list_templates, nor does it mention exclusions. The context is clear enough for a reasonable agent, but the guidance is not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_asset_tagsList saved section tagsA
Read-only
Inspect

List every tag used across the account's saved sections (useful for filtering list_assets by tag).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoEvery tag in use across the account's saved sections.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by clarifying it lists 'every tag' across 'saved sections,' and its purpose in the filtering workflow. It doesn't mention edge cases like duplicate tags or ordering, but these are minor for a zero-parameter list 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?

A single sentence that is front-loaded with the core action ('List every tag'), followed by the usage hint. No filler, no repetition, and every clause adds 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?

Given zero parameters, an output schema exists, and the annotations cover safety, the description fully explains what the tool returns (a list of tags) and why it matters (filtering list_assets). Nothing an agent needs to invoke this tool correctly 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?

The tool has zero parameters, so the schema covers everything. Per the rubric, a zero-parameter tool gets a baseline of 4; no further parameter documentation is needed.

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 ('List') and resource ('every tag used across the account's saved sections'), and explicitly connects it to the sibling tool list_assets by saying it's 'useful for filtering list_assets by tag.' This makes the tool's purpose clear and distinct from its siblings.

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 clear use case (useful for filtering list_assets by tag), implicitly indicating when to call this tool. It does not explicitly mention when not to use it or name alternatives, but for a simple read-only enumeration with no parameters, this context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_asset_widgetsList saved section widgetsA
Read-only
Inspect

List the widgets that belong to an asset (useful for previewing what add_asset_to_page will instantiate).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID (from list_assets).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per widget in the section — id, name, type, chart, its datasource and query, and its size. This is what add_asset_to_page will instantiate.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds the asset-scoping and instantiation relationship, which is helpful context, but it does not disclose additional behavioral traits such as pagination, ordering, or output shape. With annotations present, this is adequate but not exceptional.

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 core action and resource, with a useful parenthetical purpose. No filler, repetition, or unnecessary detail.

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?

This tool has one well-documented required parameter, a read-only annotation profile, and an output schema. The description provides the essential purpose and relationship to add_asset_to_page, so an agent has everything needed to select and invoke it correctly.

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 100%, and the 'id' parameter is documented as 'Asset ID (from list_assets).' The description reinforces the asset context but adds no new parameter meaning beyond the schema. Baseline 3 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?

States a specific verb and resource: 'List the widgets that belong to an asset.' The parenthetical adds the purpose, 'previewing what add_asset_to_page will instantiate,' which distinguishes this from generic list_widgets or list_template_widgets. Clear and 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 communicates when to use the tool: when you need to see widgets for an asset, especially to preview what add_asset_to_page will create. It doesn't explicitly name alternatives or state exclusions, but the asset-scoped context and the add_asset_to_page link provide solid guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_automationsList automationsB
Read-only
Inspect

List automations with optional filtering by report or client

ParametersJSON Schema
NameRequiredDescriptionDefault
client_idNoFilter by client ID (from list_clients)
report_idNoFilter by report ID (from list_reports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per automation — id, name, the report it sends, frequency and send time with its timezone, recipients, the template and sender it uses, whether it is paused, and next_run_at.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description only restates the schema's filter options and adds no behavioral detail such as pagination, ordering, scope, or whether archived automations are included.

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. The action and filtering capability are front-loaded and every word 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 read-only list tool with two optional filters, an output schema, and clear parameter documentation, the description is largely sufficient. The only notable gap is lack of detail about what subset of automations is returned (e.g., active vs. archived, pagination behavior).

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 100%, with client_id and report_id already documented as filters. The description adds no meaning beyond what the schema provides, so the baseline 3 applies.

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 states a clear verb ('List') and resource ('automations'), with optional filtering by report or client. It is unambiguous, though it does not explicitly differentiate itself from sibling tools like get_automation_history or archive_automation.

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 'List automations with optional filtering' implies use when a listing of automations is needed. However, it gives no explicit guidance about when not to use it or when a sibling like get_automation_history would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_calculated_metricsList calculated metricsA
Read-only
Inspect

List calculated metrics for the account (custom KPI formulas).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per calculated metric — id, name, the formula tokens it is built from, and the symbol it renders as. Pass the id as a metric when adding a calculated-metric widget.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the account-level scope but does not elaborate on behavior such as pagination, ordering, or whether archived metrics are included. This is acceptable for a simple list operation but adds only modest behavioral context beyond the annotations.

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 sentence that front-loads the verb and resource, with a brief clarifying parenthetical. Every word earns its place and there is no redundancy with the title or annotations.

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, read-only list operation with an output schema available, the description is complete. It identifies the resource, scope (account), and semantic meaning (custom KPI formulas). Nothing essential is missing for an agent to invoke this tool 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?

The tool has zero parameters, so there is no parameter semantics burden on the description. The schema is complete at 100% coverage with an empty properties object. The baseline of 4 applies because no parameter clarification is needed.

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 a specific verb ('List') and resource ('calculated metrics'), and adds a clarifying parenthetical ('custom KPI formulas'). It clearly distinguishes this retrieval tool from related metric tools like create_calculated_metric, update_calculated_metric, and archive_calculated_metric.

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 obvious use case: retrieve account-level calculated metric definitions. However, it provides no explicit guidance about when to use this tool versus related list/create/update metric tools, nor any exclusions or prerequisites. The usage context is only implied by the tool name and resource phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_clientsList clientsA
Read-only
Inspect

List all clients with optional filtering and pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
limitNoResults per page
orderNoSort order: asc or desc
searchNoSearch by client name
sort_byNoField to sort by
folder_idNoFilter by folder ID (from list_folders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per client — id, name, website, currency, timezone, logo_url, the folders it is filed under, and its connected datasources.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the scope 'all clients' and mentions filtering/pagination, but does not disclose pagination defaults, sort behavior, or search semantics; with annotations present this is acceptable but not exceptional.

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 short, front-loaded sentence with no filler. It efficiently communicates the core purpose 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?

The rich input schema, output schema, and annotations cover most details an agent needs for correct invocation. The main gap is the absence of guidance on choosing this tool over get_client or count_clients, but nothing critical is missing for calling it successfully.

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 100%, with all six optional parameters documented including enums and folder_id provenance. The description's reference to 'optional filtering and pagination' generalizes the parameters but adds no meaning beyond what the schema already 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?

States a specific verb and resource: 'List all clients' with optional filtering and pagination. This clearly distinguishes it from get_client (single client), count_clients (count), and archive_clients (archive 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 explicit guidance on when to use this tool versus alternatives like get_client or count_clients. The description simply restates the operation without naming sibling tools or exclusions, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_dataList custom datasetsA
Read-only
Inspect

List uploaded custom-data (CSV) datasets for the account — summaries without the row data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per dataset — id, name, file_name, file_size, its column definitions and the row count. The rows themselves come from get_custom_data.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-destructive read operation. The description adds valuable behavioral context beyond those annotations by specifying that results are summaries, not row data, and that the scope is the account. This is sufficient for a zero-parameter read-only listing 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, well-structured sentence that leads with the action and resource, then adds the key qualifier about summaries. Every word earns its place with no redundant filler.

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 zero-parameter, read-only list operation with an output schema available, the description provides complete context: it identifies the resource type, the account scope, and the summary-only nature of the result. Nothing an agent needs to decide whether to call this tool 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?

The tool has zero parameters and the input schema is empty, so there is no parameter information for the description to clarify. The description correctly focuses on the tool's result semantics rather than inputs, earning the baseline score for a no-parameter tool.

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 identifies the resource ('uploaded custom-data (CSV) datasets for the account'). The clarifying clause 'summaries without the row data' distinguishes this listing tool from data-retrieval tools like get_custom_data, making its scope unambiguous.

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 a summary-level list of uploaded custom-data datasets is needed rather than the row data itself. However, it does not explicitly name alternatives such as get_custom_data or state when not to use this tool, leaving the routing decision partly implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_domainsList custom domainsA
Read-only
Inspect

List custom domains registered on the account, including DNS verification records

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per custom domain — id, domain, verification status, and the DNS records (type, name, value) the user has to add at their registrar.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is covered. The description adds useful behavioral context by noting the list is account-scoped and includes DNS verification records, but it does not address other behavioral aspects such as pagination, result limits, or authentication requirements. This is adequate but 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, front-loaded sentence with no filler. It states the action, scope, and an important output detail in under fifteen words, and every element earns its place.

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 zero-parameter read-only list tool with annotations covering safety and an output schema covering return structure, the description is complete. It identifies the resource, scope, and a notable output inclusion (DNS verification records), leaving no critical gap for an agent to call it 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?

The tool has zero parameters, so the 100% schema coverage is trivially complete and there is no parameter meaning for the description to add. The 0-parameter baseline of 4 applies, and the description further clarifies the result scope by mentioning 'registered on the account'. No parameter documentation burden exists.

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') with a clear resource ('custom domains') and adds useful scope ('registered on the account') plus a distinguishing detail ('including DNS verification records'). This separates it from sibling tools like add_domain, remove_domain, and list_email_domains without needing to inspect schemas.

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: call this when you need the account's custom domains and their DNS verification records. However, it does not explicitly contrast with sibling tools such as list_email_domains or verify_email_domain, nor does it state when not to use it, leaving some selection inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_email_domainsList sending domainsA
Read-only
Inspect

List verified sending domains.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per sending domain — id, domain, verification status, and the DNS records it needs. Mail only sends from a verified domain.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only behavior is covered. The description adds the 'verified' filter as a minor behavioral detail, but it does not explain whether unverified or pending domains are excluded or how pagination/ordering behaves.

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 sentence conveys the complete operation with no filler. The key qualifier 'verified' is front-loaded and every part of the description earns its place.

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 parameterless read-only list operation with an output schema present, this description is complete: the agent knows exactly what to run, and the output shape is available in the schema. Missing return-value explanations are excused by the output schema and annotations.

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 empty input schema fully describes that surface. With no parameters to document, there is nothing the description needs to add; the baseline of 4 applies.

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 a specific verb ('List') and resource ('verified sending domains'), which distinguishes it from siblings like list_domains and list_email_senders. The qualifier 'verified' adds scope beyond the title and 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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no indication of when to choose this tool over sibling alternatives such as list_domains, list_email_senders, or verify_email_domain. There is no context about use cases, exclusions, or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_email_logsList sent email historyA
Read-only
Inspect

List sent-email history / delivery logs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per sent email — recipients, sender name and address, subject, sent_at, and the delivery events (delivered, opened, bounced) with the last one called out.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds minimal extra context (delivery logs) but does not disclose other behaviors such as pagination or return format. With annotations covering the basics, this is adequate but not enriched.

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 line with no waste. It front-loads the core action and resource. Extremely efficient for a simple list operation.

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 (no parameters, output schema exists), the description fully covers what an agent needs to know to call it correctly. No additional context 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?

The tool has zero parameters, and schema coverage is 100% (empty). Baseline for 0 params is 4, and no parameter documentation is needed. The description adds no parameter info, which 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 sent-email history/delivery logs with a specific verb and resource. It distinguishes itself from siblings like list_email_senders and list_email_templates by focusing on delivery logs, which is unambiguous.

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—this is for viewing sent email history—but does not explicitly mention when to use it versus alternatives like list_activity or list_notifications. No exclusions or alternative routing are provided, so 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.

list_email_sendersList email sendersA
Read-only
Inspect

List configured "From" senders and the active provider.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe configured senders — each with its id, from_name, from_email, reply_to and whether it is the default — alongside the account's active email provider.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing a safe read operation. The description adds valuable context by specifying that the tool returns both the configured 'From' senders and the active provider, going beyond the tool name. No side effects or special behaviors are relevant, so the description is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

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 avoids unnecessary detail. It is appropriately concise for a simple, read-only list tool.

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 zero-parameter tool with an output schema, the description is sufficient. It explains the core function and the two key outputs. An agent can invoke it without further clarification. The only minor gap is that it doesn't specify whether the list is empty or what constitutes an 'active' provider, but the output schema should cover the response structure.

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 trivially 100%. The description does not need to explain parameters. It adds semantic value by indicating the content of the response (senders and provider), which is beyond the empty schema. The baseline of 4 for zero parameters 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 action ('List'), the resource ('configured From senders'), and the additional output ('active provider'). It is specific enough to distinguish from sibling list tools like list_email_templates or list_email_logs, and leaves no doubt about what the tool returns.

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?

No guidance is given about when to use this tool versus alternatives. While the purpose is unambiguous, there is no mention of related tools like get_email_provider or set_default_email_sender that might be relevant in different contexts. The description does not explicitly state when to prefer this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_email_templatesList email templatesA
Read-only
Inspect

List reusable email templates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per template — id, name, subject, the message body, its CTA button, and whether it is the account default.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the 'reusable' qualifier, which clarifies the scope of templates returned. It doesn't disclose pagination, ordering, or whether archived templates are included, but for a simple list tool with annotations covering safety, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no waste. The key qualifier 'reusable' is front-loaded and the sentence is immediately understandable.

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 zero-parameter list tool with an output schema present and annotations covering the safety profile, the description is nearly complete. It could mention whether the list is paginated or includes archived templates, but those are minor gaps given the tool's simplicity 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no schema burden to compensate for. The description's 'reusable' qualifier adds meaning about what kind of templates are listed, which is useful context beyond the empty schema. With 0 params, the baseline is 4, and the description meets it.

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 states a clear verb and resource: 'List reusable email templates.' It distinguishes from get_email_template (singular fetch) and create_email_template/update_email_template/delete_email_template (mutations). However, it doesn't explicitly differentiate from list_templates, which could be a broader listing of templates, so it's clear but not fully differentiated from that sibling.

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 a collection of reusable email templates. It doesn't explicitly state when to use this vs list_templates or get_email_template, nor any exclusions. The context is clear enough for a simple list tool, but no explicit routing guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_exportsList PDF exportsA
Read-only
Inspect

List PDF export history for a report (one row per generation attempt).

ParametersJSON Schema
NameRequiredDescriptionDefault
report_idYesReport to list exports for (from list_reports)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per generation attempt — id, report_id, status, the file url when it finished, and created_at.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it is safe. The description adds that each row corresponds to a generation attempt, which clarifies that failed attempts may also appear—useful context beyond annotations.

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?

Single concise sentence with no wasted words, and the key clarification about generation attempts is included.

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 list operation with one parameter and an output schema, the description is sufficient. It doesn't mention pagination or ordering, but those are not essential given the output schema and the tool's simplicity.

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 provides 100% coverage, including the report_id description that points to list_reports as the source. The tool description does not add further parameter information, so it relies on 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?

States a specific verb 'List' and a specific resource 'PDF export history for a report', with clarification that each row corresponds to a generation attempt. This clearly distinguishes it from generation (generate_pdf) and status-check (get_pdf_status) tools.

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?

Does not explicitly state when to use this vs alternatives like generate_pdf or get_pdf_status. The description implies it is for retrieving history, not creating or checking a single export, but lacks explicit exclusion or alternative naming, 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.

list_foldersList client foldersA
Read-only
Inspect

List all client folders for the account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per client folder — id and name.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as read-only and non-destructive, so the description does not need to restate that. It adds useful scoping with 'for the account' and 'all', but does not describe return format or pagination; this is acceptable for a simple list tool but is not rich behavioral context.

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 short, front-loaded sentence with no filler. Every word contributes meaning.

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 zero-parameter read-only list operation with an output schema present, the description is complete. It states the resource, the scope, and that all folders are returned.

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 an empty schema, so there is nothing for the description to document. The word 'all' clarifies that no filtering parameter exists and that the entire account folder collection is returned.

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 a specific resource, 'all client folders for the account', so the operation is unambiguous. It also distinguishes the tool from sibling list_media_folders and from create_folder/update_folder/delete_folder.

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 phrase 'for the account' gives clear context that this is the account-scoped listing of client folders. It does not explicitly name alternatives, but 'client folders' is enough to separate this from similar sibling tools like list_media_folders, and no exclusions or prerequisites are relevant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_goalsList goalsA
Read-only
Inspect

List goals for the account (targets tracked against a metric query).

ParametersJSON Schema
NameRequiredDescriptionDefault
client_idNoOnly goals bound to this client (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per goal — id, name, target_value, operator, goal_type, the metric query it measures, its symbol and the client it is bound to.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds contextual semantics: goals are account-scoped targets against a metric query, and client_id filters to a specific client. It doesn't contradict the annotations.

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 tight sentence with the core action and scope front-loaded and the clarifying definition in a parenthetical. No filler or redundancy.

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 an output schema available, return values don't need explanation in the description. The description covers purpose, scope, and the optional filter, and annotations cover read-only safety; nothing essential is missing for a simple list 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 coverage is 100%; the sole parameter client_id is already described in the schema with a pointer to list_clients. The tool description adds only the account-scoping context, not parameter-specific details, so the schema carries the semantic weight.

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') with a resource ('goals') and scopes it to the account, then clarifies the domain meaning as 'targets tracked against a metric query.' This distinguishes it from goal-mutating siblings like create_goal, update_goal, and archive_goal.

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?

It states the account-level scope and notes the optional client_id restriction, including a hint that client values come from list_clients. However, it doesn't explicitly name alternatives or state when-not-to-use, so agents must infer the usage from the verb 'List' versus mutation siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invoicesList billing invoicesA
Read-only
Inspect

List the account's invoices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per Stripe invoice — id, number, amount, currency, status, period and the hosted invoice / PDF links.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the scope 'account's invoices,' which is a useful but minimal behavioral detail. It does not disclose pagination, ordering, or completeness of the returned invoice set.

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 immediately states the action and resource without any filler or irrelevant detail.

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 zero-parameter, read-only list operation with an output schema present, the description is sufficient for an agent to invoke it correctly. Annotations cover safety, the output schema covers return values, and no additional parameters or prerequisites need explanation.

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 schema description coverage is 100%, so there is no parameter burden for the description to carry. The description's 'account's' scope clarifies that no account identifier is needed, which aligns with the empty input schema.

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 states a specific action ('List') and resource ('the account's invoices'), making the core purpose immediately clear. However, it does not explicitly distinguish this from related billing tools like get_billing among the many siblings, so it falls just 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?

The description gives no guidance about when to use this tool versus alternatives such as get_billing or list_reports. It relies entirely on the tool name and title to convey appropriate usage, with no exclusions or context about whether invoices are historical or current.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mediaList media filesC
Read-only
Inspect

List media files

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoResults per page
searchNoSearch term
folder_idNoFilter by folder ID (from list_media / folders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per file — id, name, url, mime_type, size and the folder it sits in. The url is what you pass to branding, themes or an image widget.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so this is a safe read operation. The description adds minimal behavioral context beyond that. It doesn't mention pagination, ordering, or that it might be the source of folder_id for filtering, which is implied but not explicit.

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 description is extremely short (three words), which is concise, but it lacks meaningful structure. It's front-loaded but under-specified. Every word is necessary, but more context could be added without verbosity.

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 4 optional params and an output schema, but the description gives no context on how parameters interact (e.g., whether search and folder_id can be combined, pagination defaults, or the shape of the response). The output schema exists, so return value details aren't needed, but usage context is missing.

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 100%, so every parameter has a schema description. The description itself adds no parameter semantics beyond what the schema provides. For example, 'Folder ID (from list_media / folders)' gives some cross-reference but the main description doesn't explain how search works. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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 on when to use this tool versus list_media_folders, list_assets, or other list tools. No mention of prerequisites or filtering options beyond what schema implies. Siblings like move_media_to_folder and rename_media_file suggest a broader media concept, but the description doesn't help select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_media_foldersList media foldersA
Read-only
Inspect

List the account's media folders.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per media folder — id and name.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the account-level scope and does not contradict the annotations, but it does not disclose ordering, pagination, or other behavior. Given the output schema, the missing details are not critical.

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 sentence that front-loads the verb and resource with no filler. Every word earns its place.

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 zero-parameter read-only tool with an output schema and annotations covering safety, the description fully specifies what the tool does. Nothing required to invoke it correctly 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?

The tool accepts zero parameters, so there is nothing for the description to add beyond the schema. The baseline of 4 applies because no parameter documentation is needed.

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?

States a specific verb ('List'), resource ('media folders'), and scope ('the account's'). It is distinct from sibling tools by naming the media-folder resource rather than generic folders or media files.

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 phrase 'the account's media folders' gives clear context for when this tool is the right choice: when the agent needs the account's set of media folders. It does not explicitly exclude alternatives like list_media or list_folders, but for a zero-parameter read-only list that omission is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notification_channelsList notification channelsA
Read-only
Inspect

List the account's configured Slack/Discord notification channels (webhook + enabled state).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per configured channel — which channel it is, its webhook URL and whether it is enabled. A channel being enabled does not make any event use it.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and destructiveHint=false. The description adds useful scope (account-level, Slack/Discord) and return-surface detail (webhook + enabled state), but does not cover pagination, rate limits, or auth expectations. No contradiction with annotations.

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 sentence that front-loads the verb, scope, and output fields with no filler or redundant restatement of the title.

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 parameterless, read-only list operation with an output schema present, the description gives enough context: what is listed, at what scope, and which details are exposed. No additional operational guidance is needed to make the call.

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 with 100% schema coverage, so the description has no parameter burden to carry. The baseline of 4 for a parameterless tool applies; no parameter semantics are needed.

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?

Description uses the imperative 'List' with a specific resource, 'the account's configured Slack/Discord notification channels', and names the key returned aspects ('webhook + enabled state'). This clearly differentiates it from mutation siblings like set_notification_channel/delete_notification_channel and from list_notifications, which concerns notification messages.

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?

No explicit when-to-use or when-not-to-use guidance is given. The phrase 'configured notification channels' implies a read-before-configuring context, but the description does not name alternatives or state when this should be chosen over get_notification_preferences or set_notification_channel.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notificationsList notificationsB
Read-only
Inspect

List in-app notifications for the account (paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
limitNoResults per page (max 50)
is_readNoFilter by read status
categoryNoFilter by category

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per notification — id, category, title, message, whether it has been read, and created_at.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the behavioral detail that the listing is 'paginated', which is useful context. However, it does not mention default ordering, whether both read and unread notifications are returned by default, or any other operational behavior beyond pagination. With annotations covering the read-only nature, a 3 is appropriate.

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 primary purpose ('List in-app notifications') followed by the scope and pagination detail. There is zero fluff or redundant wording, and every word earns its place.

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 that an output schema exists, the return format is covered. The description is minimal but sufficient for a simple list operation with well-documented optional parameters. It could add context about default filtering (e.g., whether unread notifications are shown by default) or mention that filtering by is_read and category is supported, but those are already in the schema. The description is adequate but not rich.

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 100%, so all four parameters (page, limit, is_read, category) are already documented with descriptions in the schema. The description only adds the word 'paginated', which hints at page and limit but does not add any new information beyond what the schema provides. Baseline 3 is correct for full schema coverage with minimal description contribution.

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 verb 'List' and the resource 'in-app notifications' with the scope 'for the account' and the qualifier 'paginated'. This distinguishes it from count_unread_notifications and clear_read_notifications, though it does not explicitly name alternatives like list_activity or list_notification_channels. The resource is specific enough for an agent to understand 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 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. It does not mention when to use count_unread_notifications for a count, mark_notifications_read for marking, or list_activity for activity logs. The usage context is only implied by the verb 'list', but no explicit when-to-use or when-not-to-use instructions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pagesList report pagesA
Read-only
Inspect

List pages for a report or template, ordered by position

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYesReport or template ID (from list_reports or list_templates)
source_typeNoSource type (defaults to "project")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per page, in display order — page_id, name, position and visible. Pass page_id to list_widgets to read what is on it.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds the behavioral detail of ordering by position, which goes beyond annotations. It doesn't contradict annotations, and provides useful context without being verbose.

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, clear sentence that front-loads the action and key details (pages, report/template, ordering). No waste or filler.

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 that an output schema is present, the description does not need to explain return values. It covers the purpose, scope, and ordering, which is sufficient for a simple listing tool. The input parameters are fully described in the schema, and the tool's behavior is adequately explained.

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 100%, so both parameters (source_id and source_type) are fully documented in the schema. The description adds nothing substantive about parameter meaning beyond what the schema already provides; it only reiterates the scope (report/template) that matches the source_type enum.

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 (pages), the scope (for a report or template), and the behavior (ordered by position). It distinguishes this tool from siblings like list_reports and list_templates, making it obvious what it returns.

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 by stating it lists pages for a report or template, giving context but not explicit alternatives or when-not-to-use. It doesn't mention that you should use this for retrieving page structure rather than other list tools, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_reportsList reports and dashboardsA
Read-only
Inspect

List reports and dashboards for the account, optionally filtered by client.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
limitNoResults per page
client_idNoFilter by client ID (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per report — id, name, type (REPORT or DASHBOARD), the client it belongs to, its theme, date_range and share settings.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the account-level scope and optional filtering, but does not disclose additional behavioral details such as pagination defaults, result ordering, or whether reports and dashboards are returned together or separately.

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 concise, front-loaded sentence with no wasted words. It states the action, the resource, the account scope, and the optional filter without repeating schema details.

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-only list tool, the description, combined with full schema coverage and an output schema, is mostly sufficient. The main gap is the absence of explicit guidance about when to prefer this tool over sibling listing tools, but that is more of a usage-guideline concern than a completeness failure.

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 100%, and the description only restates the client filter already documented in the schema. It adds no new meaning about parameter values, defaults, or how pagination parameters interact with the filter.

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 states a specific action and resource: listing reports and dashboards for the account, with an optional client filter. This distinguishes it from most sibling tools by the object type, though it does not explicitly contrast with closely related list_assets or get_report.

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 account-level reports or dashboards, optionally scoped to a client. However, it provides no explicit alternatives or when-not-to-use guidance, which would be helpful given the large number of sibling list_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesList templatesA
Read-only
Inspect

List report templates with optional filtering and pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
typeNoFilter by report type — DASHBOARD (live) or REPORT (point-in-time)
limitNoResults per page
searchNoSearch by template name
sourceNoWhich library: 'all' (both merged), 'standard' (Oviond templates), or 'mine' (this account's saved templates)
sort_byNoField to sort by
sort_orderNoSort order: asc or desc
datasourcesNoFilter to templates built for any of these datasources (ids from datasources)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per template — id, name, description, type (REPORT or DASHBOARD), the datasources it is built for, and its thumbnail.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool read-only and non-destructive, and the description's 'List' wording is consistent with that. The description adds little behavioral context beyond optional filtering/pagination, but no hidden side effects are implied and there is no contradiction.

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, front-loaded sentence with no filler or repetition of the schema. It communicates the resource, operation, and key capabilities 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?

The rich schema, output schema, and read-only annotations cover most invocation needs, so the minimal description is largely sufficient. It only lacks explicit routing to closely related sibling tools, which prevents a top score.

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?

All eight parameters are fully described in the input schema, including enums and explanatory text, so the description does not need to add parameter semantics. With 100% schema description coverage, the baseline of 3 is appropriate.

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 the specific verb 'List' with the resource 'report templates', and mentions optional filtering and pagination. This makes the operation clear and distinguishes it from get_template, though it does not explicitly contrast any sibling tool.

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 this is the general listing endpoint for templates, but it provides no explicit when-to-use guidance, exclusions, or alternatives such as get_template or list_reports. The intended use must be inferred from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_template_widgetsList template widgetsA
Read-only
Inspect

List the widgets that belong to a template (optionally filtered to a single page).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID (from list_templates).
page_idNoFilter to widgets on a single page, id from list_pages.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per widget in the template — id, name, type, chart, its datasource and query, and its position on the page.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the optional page-filtering behavior and clarifies the exact scope (widgets belonging to a template). It does not disclose edge cases like empty results, but for a read-only list with an output schema, this is sufficient.

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 primary action and includes the key optional filter. Every word contributes value; there is no redundant phrasing or excessive detail.

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 is complete for a read-only listing tool: it names the resource scope, the optional filter, and relies on the output schema for return details. With annotations covering the safety profile and schema covering parameters, nothing essential is missing for an agent to call it correctly.

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?

Both parameters are fully described in the schema, including provenance references (list_templates and list_pages). The tool description adds no additional semantic meaning beyond the schema, which already documents the parameters thoroughly. With 100% schema coverage, a baseline of 3 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 operation: listing widgets that belong to a template, with an optional filter to a single page. It distinguishes from other list tools by specifying the parent resource (template) and explicitly mentioning the optional page filter, making its 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 implies when to use this tool (when you need widgets of a specific template) but does not explicitly compare it with siblings like list_asset_widgets or list_widgets. However, the template-scoped semantics make the appropriate context clear, and the optional filter adds practical guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_themesList themesA
Read-only
Inspect

List all themes available to the account (own + shared)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per theme — id, name, its complete tokens map, the cover_page and thank_you_page config, and whether it is the account default.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds useful scope context ('own + shared') but does not mention return format, ordering, or pagination behavior. This is consistent with annotations and adds only modest behavioral detail.

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, front-loaded sentence that states the action, resource, and scope with no filler. Every word adds meaning.

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 zero-parameter, read-only list tool with an output schema present, the description is complete. An agent knows exactly what will happen and what set of items is returned.

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 100% schema description coverage, so the schema leaves nothing undocumented. The description appropriately focuses on behavior rather than 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 uses a specific verb and resource: 'List all themes available to the account (own + shared)'. It clearly differentiates from get_theme (single theme) and mutation tools like create_theme or update_theme by emphasizing the full set of themes.

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: use this tool when you need the complete set of account-available themes, including shared ones. It does not explicitly name get_theme as an alternative for single-theme retrieval, but the 'all themes' wording makes the intended scope unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_usersList team membersA
Read-only
Inspect

List all team members on the account

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (0-indexed)
limitNoResults per page

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per team member — id, email, fullname, role, avatar_url, the clients they can reach, and invite_pending while they have not accepted yet.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the scope detail 'all team members on the account', which clarifies coverage but does not mention pagination behavior or ordering. Given annotation coverage, this adds some value but is not rich, so a 3 is appropriate.

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 factual sentence with zero filler. The purpose and scope are front-loaded and immediately clear, 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 0-required-parameter read-only list operation with an output schema and annotations covering safety, the description is nearly complete. Pagination details are in the schema, and nothing essential for correct invocation is missing. It could mention default page size or that pagination is used, but this is minor.

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 100%, fully documenting 'page' and 'limit'. The description's word 'all' hints at the operation's scope but doesn't add meaning beyond the schema. Baseline 3 is correct since the schema does the heavy lifting for 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 uses a specific verb 'List' with the resource 'team members' and scope 'on the account'. This clearly distinguishes it from sibling list tools like list_clients and list_reports, which target different entities. An agent can immediately know what this tool does without opening the schema.

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. It does not mention that this is for account staff (team members) rather than clients, nor does it route to other user-related tools like get_current_user or invite_user. The agent must infer usage from 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.

list_widgetsList widgetsB
Read-only
Inspect

List all widgets for a source (report or template).

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idNoFilter by page ID (from list_pages).
source_idYesSource ID — report (from list_reports) or template (from list_templates) ID.
source_typeNo'project' or 'template'

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOne row per widget — id, name, type, chart, its datasource and query, its state, and its position on the page. Read the numbers themselves with get_widget_data.
metaNoPagination for the list — page, limit and the total row count.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds that it lists 'all' widgets and specifies the source type, which is some context. However, it does not disclose pagination, ordering, or whether it returns full widget data. Given the annotations, a 3 is appropriate – the description adds minimal value beyond annotations.

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, front-loaded sentence with no filler. Every word contributes to the purpose. It is as concise as possible while remaining informative.

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 exists, so return values are covered. However, the description lacks guidance on how this tool differs from sibling list tools and contains a minor terminology mismatch ('report' vs 'project' in the enum). For a simple list tool with many siblings, this is not fully complete – it should at least hint at when to use it.

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 description coverage is 100%, so parameters are already well documented. The description adds no additional meaning about parameters, just restates the source scope. Baseline 3 is correct because the schema does the heavy lifting.

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 states the verb 'List', the resource 'widgets', and the scope 'for a source (report or template)'. It clearly indicates what the tool does, though it does not differentiate from sibling tools like list_asset_widgets or list_template_widgets. The purpose is unambiguous but not explicitly contrasted with alternatives.

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 the many sibling list tools (e.g., list_asset_widgets, list_template_widgets). The description only states what it does, not when to choose it. An agent would have to infer from the name and schema, which is not sufficient for a tool with overlapping siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_notifications_readMark notifications readAInspect

Mark notifications as read — specific ids, or all of them.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoSet true to mark every notification read
idsNoSpecific notification IDs to mark read

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation, and how many notifications were marked read.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that the operation is not read-only and not destructive, so the description adds useful scoping context but no additional side-effect disclosure such as idempotency, irreversibility, or behavior when both all and ids are provided. The description does not contradict the annotations.

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 short, front-loaded sentence with no filler; every word earns its place and the key distinction (specific vs all notifications) is delivered immediately.

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 low-complexity tool with two fully described optional parameters, an output schema, and annotations, the description is nearly sufficient. The only small gap is that it does not state the effect of supplying neither all nor ids.

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 100%, and the schema already explains the boolean all flag and the ids array, so the description mostly paraphrases the schema. It adds no new parameter meaning such as the relationship between all and ids when both are supplied.

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?

Description states a specific action ('Mark notifications as read') on a specific resource ('notifications'), with the scoping options 'specific ids, or all of them.' This makes it semantically distinct from siblings like archive_notifications and clear_read_notifications without needing to open the schema.

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 'specific ids, or all of them' implies two usage modes and maps directly to the all and ids parameters, so an agent can infer when to use each. However, it gives no explicit guidance about when to prefer this tool over siblings such as clear_read_notifications or archive_notifications, nor what happens when no arguments are supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_client_to_folderMove client to folderAInspect

Move a client to one or more folders

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClient ID (from list_clients)
foldersYesTarget folder IDs (from list_folders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe client with its folder list replaced by the one you sent.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the tool is a mutation but not destructive. The description adds no further behavioral context—it does not clarify whether moving replaces existing folder assignments or adds to them, which could be important. It does not contradict annotations, but adds minimal value beyond them.

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, efficient sentence with no filler. It is front-loaded with the action and object, and every word earns its place.

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 is adequate for a simple move operation, and the presence of an output schema may cover return details. However, it lacks behavioral specifics (e.g., whether existing folder assignments are overwritten or added to), which could affect correct usage. It is minimally complete but not rich.

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 covers 100% of parameters with descriptions ('Client ID (from list_clients)' and 'Target folder IDs (from list_folders)'), so the description adds no additional parameter meaning. Baseline of 3 applies.

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 ('move'), a resource ('client'), and a target ('folders'), making the operation unambiguous. It is distinct from sibling tools like move_media_to_folder and move_widget because the resource type is clearly named.

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. Given the existence of move_media_to_folder and move_widget, a note such as 'for clients; use move_media_to_folder for media' would help, but it is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_media_to_folderMove media to folderAInspect

Move one or more media files into a media folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesMedia file IDs to move (from list_media)
folder_idYesTarget folder ID (from list_media_folders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation of the move, and how many files it covered.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=false and destructiveHint=false, signaling a mutating but non-destructive operation. The description adds that the action applies to one or more media files, which slightly enriches the batch aspect, but it does not disclose behavior like overwriting existing folder assignments, atomicity, or permission requirements.

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, fully front-loaded sentence that communicates the operation, the resource set, and the destination with zero filler. Every word 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 two-parameter tool with an output schema and clear parameter descriptions, the description plus schema covers everything needed to make a correct call. The only meaningful gap is the lack of usage context versus sibling media-management tools, but that does not make the definition incomplete for invoking the tool correctly.

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 100%, and both parameters already include helpful provenance ('from list_media' and 'from list_media_folders'). The description restates the concept of moving files into a folder but adds no unique semantic information beyond what the schema provides, so the baseline of 3 applies.

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 ('Move') with a clear resource ('media files') and destination ('media folder'), and the scope 'one or more' adds precision. This distinguishes it from sibling tools like move_widget and move_client_to_folder, which act on different resource types.

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 gives no guidance on when to use this tool versus alternatives such as rename_media_file, archive_media_file, or create_media_folder. There are no exclusions, prerequisites, or context cues for when this operation is preferred over other media management tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_widgetMove widgetAInspect

Move or resize a widget. Works for any widget type. Pass only the dimensions you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoNew x position (grid column 0-11).
yNoNew y position (grid row).
idYesWidget ID (from list_widgets).
widthNoNew width in grid columns.
heightNoNew height in grid rows.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe widget, at its new position and size, as saved, with the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a non-read-only, non-destructive mutation. The description adds useful partial-update context, but it does not go further to disclose validation behavior, failure modes, or how other properties are preserved.

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 short sentences with no filler. Purpose, applicability, and usage guidance are all front-loaded, and each sentence contributes value.

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 schema fully documents parameters and required fields, and an output schema exists, so the description does not need to repeat return details. The main omission is explicit guidance on when to choose this generic tool over the many per-type update_widget siblings.

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 100%, so the baseline is 3, but the description adds the key semantic that only supplied dimensions are changed. This is genuinely useful beyond the schema, though 'dimensions' is slightly ambiguous with respect to x/y position versus width/height.

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 ('Move or resize a widget') and notes it works for any widget type, so an agent can understand the tool's scope. It does not explicitly name sibling tools like update_*_widget, so it stops short of the highest differentiation bar.

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?

It gives practical guidance: pass only the dimensions you want to change, which clarifies partial updates and how to use the tool. It does not explicitly say when to prefer a type-specific update_*_widget instead, so it lacks full when-not/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pause_automationPause automationCInspect

Pause an automation

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAutomation ID (from list_automations)
parent_idYesParent report or client ID (from list_reports or list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe automation, now paused — it keeps its schedule but sends nothing until it is resumed.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, destructiveHint=false) already signal that this is a non-destructive mutation, so the bar for added context is present but unmet. The description adds no behavioral detail: it does not disclose that the automation can be resumed, what happens to triggers or history, or whether configuration is preserved. No contradiction with annotations exists, but the description contributes nothing beyond them.

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 description is four words with zero wasted text, which is maximally concise. However, it is so minimal that it almost restates the tool name and title, adding little informational value; a brief behavioral clause would make the size appropriate rather than under-specified.

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?

With a full output schema, documented required parameters, and annotations present, the structured data covers return values, safety profile, and parameter semantics. The remaining gap is behavioral context — what pausing actually does and how it is reversed — which matters for a mutating tool with sibling alternatives like archive_automation and unpause_automation. Minimally adequate but 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 100%, with both parameters documented including provenance ('from list_automations', 'from list_reports or list_clients'), so the schema carries the heavy lifting. The description adds no parameter-level meaning, which is acceptable given full coverage; the baseline of 3 applies.

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 states a specific verb and resource ('Pause an automation'), making the core action unambiguous. It is implicitly distinguished from siblings like unpause_automation and archive_automation by the choice of 'pause', but it does not explicitly explain how pausing differs from archiving or suspending, so it stops short of full sibling differentiation.

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 archive_automation, unpause_automation, or update_automation. No context indicates whether pausing is temporary, how it relates to scheduled runs, or when a user should choose pause over archive. The agent must infer usage purely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_account_faviconRefresh account faviconAInspect

Re-derive the account's favicon from its website, cache-bust it, save it and return the new URL. Requires a website on the account (set it with update_company).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe branding after the refresh, carrying the new favicon_url.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses concrete behavior beyond the annotations: it re-derives, cache-busts, saves, and returns a URL. It also states the prerequisite. It doesn't describe failure modes or permission needs, but for a simple zero-parameter mutation this is adequate and consistent with readOnlyHint=false.

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 efficient sentences: the first front-loads the action and result, the second supplies the prerequisite and points to the relevant sibling tool. No redundant words or schema 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?

For a zero-parameter tool with an output schema, the description adequately covers what the tool does, what it returns, and when it can be used. The mention of update_company closes the main contextual gap around setup.

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 and schema coverage is 100%, so the baseline is 4. The description adds no parameter-level detail, but none is needed because the tool takes no inputs.

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 ('Re-derive') and resource ('the account's favicon'), and explains the full action sequence: derive from website, cache-bust, save, return URL. This clearly distinguishes it from siblings like refresh_client_favicon and remove_account_favicon.

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?

It gives a clear contextual prerequisite: the account must have a website, and explicitly names update_company as the tool to set it. It does not explicitly contrast with refresh_client_favicon, but 'account's favicon' provides enough scope differentiation for an agent to choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_client_faviconRefresh client faviconAInspect

Re-derive a client's square favicon from its stored website (Google favicon service), cache-bust it, save it, and return the new favicon URL. Requires the client to have a website configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClient ID (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe client carrying the newly derived favicon_url.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, and the description adds important behavioral context: it saves the result and cache-busts the favicon. It also discloses the external Google favicon service dependency. However, it does not mention failure behavior when the website is invalid or unreachable, or whether the previous favicon is overwritten beyond the implied save.

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 sentence delivers the full behavior, external service used, side effect, return value, and prerequisite without any filler or redundancy. Every clause 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 one-parameter tool with an output schema, the description is largely complete: it states the action, the dependency, the mutation, the return value, and the required precondition. It could mention what happens if no website is configured, but the description already says the capability requires one, and the output schema covers return details.

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 100% and the only parameter, id, is documented as 'Client ID (from list_clients)'. The description adds no additional parameter-level meaning, but none is needed because the schema already fully covers 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 states a precise verb ('re-derive') and resource ('client's square favicon'), and fully spells out the pipeline: fetch from the stored website via Google favicon service, cache-bust, save, and return the new URL. Its client-specific scope makes it clearly distinct from refresh_account_favicon, remove_client_favicon, and refresh_client_screenshot.

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 clearly establishes a prerequisite: the client must have a website configured. However, it does not explicitly mention when this tool should be preferred over alternatives like refresh_account_favicon or refresh_client_screenshot, nor does it state conditions in which the tool should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_client_screenshotRefresh client screenshotAInspect

Re-take the screenshot of a client's website and save it, returning the new URL. The screenshot is generated server-side from the stored website, so the client needs one configured. Use this when the site has changed and the card looks stale.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClient ID (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe client carrying the freshly taken screenshot URL.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false; there is no contradiction. The description adds real value beyond those flags: the screenshot is 'generated server-side from the stored website,' the operation saves and returns a new URL, and the client must have a website configured. A statement about what happens when no website is configured (error vs. fallback) would have earned a 5.

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 with zero filler. The action and outcome lead the first sentence; mechanism, prerequisite, and trigger follow in the second. Every clause 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 one-parameter tool with full input schema coverage, an output schema, and safety annotations, the description covers action, mechanism, prerequisite, and when-to-use. The only material gap is the runtime failure behavior when the client lacks a configured website, which the agent would otherwise learn only by calling the 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 100%: the schema already documents id as 'Client ID (from list_clients)'. The description contributes prerequisite context (a configured website) but no additional parameter-level syntax or format details, so the baseline of 3 applies.

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: 'Re-take the screenshot of a client's website and save it, returning the new URL.' This unambiguously identifies the action and outcome, and distinguishes it from nearby siblings such as refresh_client_favicon, refresh_report, and refresh_account_favicon, whose resources differ.

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 an explicit trigger condition: 'Use this when the site has changed and the card looks stale.' It also states a prerequisite ('so the client needs one configured'), telling the agent when the call is viable. It does not explicitly name alternatives or exclusion cases, but for a single-purpose refresh tool 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.

refresh_reportRefresh report widgetsA
Idempotent
Inspect

Re-fetch every data widget on a report with its current config and the report date range, saving the results. Pass datasource_id to refresh only the widgets fed by one datasource — what you do after linking or unlinking it. Returns immediately; the fetches run in the background — call get_widget_data with source_id set to this report to read the numbers as they land.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReport ID (from list_reports)
datasource_idNoOnly widgets fed by this datasource (id from datasources)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoAcknowledgement that the refresh was accepted. The fetches run in the background — read the numbers with get_widget_data as they land.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by disclosing that the operation saves results, returns immediately, and runs fetches in the background. It also tells the agent how to observe the outcome ('call get_widget_data with source_id set to this report'), which is valuable behavioral context not present in annotations or 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?

Three sentences, each earning its place: the core action, the optional-parameter use case, and the async behavior with a follow-up call. The most important scoping information is front-loaded, and there is no redundant restatement of the title or schema.

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 two-parameter tool with an output schema and informative annotations, the description covers the action, the optional-parameter semantics, the async behavior, and how to retrieve results. Nothing essential is missing for an agent to call it 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 coverage is 100%, so the schema already documents both parameters. The description adds meaning by explaining when datasource_id matters ('after linking or unlinking it') and by framing get_widget_data's source_id as the way to read the refreshed numbers, which supplements the schema's bare field 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 ('re-fetch'), a clear resource ('every data widget on a report'), and precise scoping ('with its current config and the report date range'). It clearly distinguishes this report-level refresh operation from the sibling refresh_widgets by emphasizing 'every data widget on a report'.

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 concrete usage guidance: pass datasource_id specifically 'what you do after linking or unlinking it', and directs the agent to get_widget_data for reading results. It does not explicitly discuss when not to use this tool or contrast it with refresh_widgets, but the context is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_widgetsRefresh widgetsA
Idempotent
Inspect

Re-fetch specific widgets with their saved config and save the results. Configuring a widget with update_data_widget already refreshes it, so this is for re-reading without a config change. Returns immediately; the fetch runs in the background — call get_widget_data with the same widget_ids to read the numbers as they land. To refresh a whole report, use refresh_report.

ParametersJSON Schema
NameRequiredDescriptionDefault
timezoneNoIANA timezone the dates are read in. Defaults to the client's own timezone
client_idYesClient id the widgets belong to (from list_clients)
date_rangeYesThe date range to fetch against
widget_idsYesWidgets to refresh (ids from list_widgets)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoAcknowledgement that the refresh was accepted. The fetches run in the background — read the numbers with get_widget_data using the same widget_ids.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool returns immediately and the fetch runs in the background, and directs the agent to call get_widget_data to read results. This goes beyond the annotations (which only provide idempotentHint and openWorldHint) by adding the asynchronous behavior and retrieval pattern. No contradiction with annotations.

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 four sentences with zero fluff. It front-loads the purpose, then distinguishes from alternatives, explains the async behavior, and names the sibling for whole-report refreshes. Every sentence earns its place and is directly actionable.

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 moderately complex (4 params, nested object, output schema). The description covers the key behavioral aspects (immediate return, background fetch, how to retrieve results) and alternatives. It doesn't describe error handling or failure modes, but those are not essential given the output schema and the fact that the fetch is background. It is sufficiently complete for correct invocation.

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 100%, so all parameters are already documented in the schema. The description adds no new meaning to parameters like timezone or date_range beyond what the schema provides. It mentions widget_ids but only in the context of usage, not semantic enhancement, so baseline 3 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 states a specific verb ('re-fetch') and resource ('specific widgets with their saved config') and clarifies that it saves results. It explicitly contrasts with update_data_widget and refresh_report, making the tool's role distinct among siblings.

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 says when NOT to use it: 'Configuring a widget with update_data_widget already refreshes it, so this is for re-reading without a config change.' It also points to refresh_report for whole-report refreshes and to get_widget_data for reading results, giving clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_account_faviconRemove account faviconA
Destructive
Inspect

Remove the account's square logo (favicon). It falls back to the default Oviond branding.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe branding with favicon_url cleared.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already flag destructiveHint=true, and the description adds the valuable consequence that the account falls back to default Oviond branding after removal. This provides context beyond the annotation, though it does not mention irreversibility explicitly (covered by the destructive hint).

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 follows with the fallback behavior. No filler words; every part earns its place.

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 tool with an output schema present, the description covers the primary action and its consequence. It is complete for an agent to know what will happen when the tool is invoked, and there are no missing prerequisites or edge cases to clarify.

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 zero parameters, so the schema coverage is trivially 100%. The baseline for 0-parameter tools is 4, and the description adds no parameter info because none is needed. It correctly focuses on the action and outcome.

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 ('Remove') and a specific resource ('the account's square logo (favicon)'), and adds the fallback behavior to default Oviond branding. This clearly distinguishes it from related tools like remove_account_logo or refresh_account_favicon by explicitly naming the favicon.

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 gives no guidance on when to use this tool versus alternatives such as remove_account_logo or refresh_account_favicon. It does not mention exclusions or selection criteria, leaving the agent to infer the correct choice from the name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_client_faviconRemove client faviconB
Destructive
Inspect

Remove a client's square logo/favicon (favicon_url). It falls back to the agency branding.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClient ID (from list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe client with favicon_url cleared.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive and not read-only, and the description adds a meaningful consequence: removing the favicon falls back to agency branding. This adds context beyond the structured hints, though it does not address irreversibility, permissions, or effects on related branding fields.

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 with no filler: the action comes first, then the fallback consequence. Every clause adds meaningful information, 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter destructive tool with an output schema and a destructive annotation, the description is nearly complete: it states the resource, the operation, and the key outcome. It could mention whether the fallback depends on agency branding being configured, but that is a minor gap.

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 100% and the single parameter 'id' is already documented as 'Client ID (from list_clients)'. The description reinforces that the target is the client's favicon but adds no new parameter-level detail, so the baseline of 3 is appropriate.

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 names a specific operation ('Remove') and a specific resource ('client's square logo/favicon (favicon_url)'), so an agent can identify what the tool does. It does not explicitly contrast with closely related siblings such as remove_client_logo or remove_account_favicon, but the 'client favicon' wording is clear enough.

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 gives no guidance about when to choose this tool over alternatives like remove_client_logo or remove_account_favicon. The only implied use case is 'remove a client favicon,' which is essentially restating the tool's name and title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_domainRemove custom domainA
Destructive
Inspect

Remove a custom domain by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
domain_idYesDomain ID to remove (from list_domains)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the domain was removed — shared links stop resolving on it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond the destructiveHint already present in annotations. It doesn't mention irreversibility, downstream effects, or any side effects. With destructiveHint=true, the destructive nature is already declared, but the description contributes nothing additional.

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 front-loads the action and resource, and every word earns its place.

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 one-parameter destructive action, the description, destructiveHint, and schema fully cover what an agent needs to call it correctly. The schema documents where the ID comes from, and the output schema exists, so no return-value explanation is needed.

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 100%, and the domain_id parameter is already described as the ID to remove. The description's 'by its ID' only restates what the schema already says, so it adds no meaningful parameter semantics beyond the baseline.

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 and resource: 'Remove a custom domain by its ID.' It clearly distinguishes this from the sibling remove_email_domain by naming 'custom domain,' and the action is 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 makes the use case clear: use this when a custom domain should be removed by ID. It does not explicitly mention alternatives or exclusions, but the resource label 'custom domain' is enough to route an agent correctly against related siblings like add_domain and remove_email_domain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_email_domainRemove sending domainB
Destructive
Inspect

Remove a sending domain by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID (from list_email_domains)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the domain was removed. Senders on that domain can no longer send.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description aligns with the destructiveHint annotation and adds that the target is a sending domain identified by ID. It does not disclose whether the action is irreversible or whether it has side effects on related resources, but the destructiveHint annotation already communicates the core destructive nature. The description contributes modest context beyond the annotation.

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 filler or redundancy. It conveys the action, target, and identification method in the fewest possible words while remaining clear.

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 destructive operation with an output schema and destructiveHint annotation, the description is nearly complete: it names the action, target, and how to identify the domain. It could briefly note irreversibility or effects, but the low complexity and existing schema/annotation coverage make this a minor gap.

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 the only parameter, id, with the description 'Domain ID (from list_email_domains),' achieving 100% coverage. The tool description does not add meaning beyond the schema beyond restating 'by ID.' Baseline 3 is appropriate because the schema carries the semantic weight.

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 states a clear verb and resource: 'Remove a sending domain by ID.' It is specific enough to be understood as a deletion action and the 'sending domain' qualifier helps distinguish it from generic remove_domain. However, it does not explicitly contrast it with related domain tools like remove_domain or verify_email_domain.

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, nor any exclusions or prerequisites. The description only names the action and the ID parameter, leaving the agent to infer that it should be used whenever a sending domain needs removal. No alternative tools or conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_userRemove team memberB
Destructive
Inspect

Remove a team member from the account

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUser ID to remove (from list_users)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the user was removed and can no longer sign in.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds no behavioral detail beyond the raw verb—it does not disclose permanence, cascading effects, or whether the removal can be undone.

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 declarative sentence with no filler. The core action and target are front-loaded, making the description easy to parse quickly.

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 one-parameter tool with complete schema coverage, an output schema, and a destructiveHint annotation, the minimal description is nearly sufficient to select and invoke the tool correctly. It lacks explicit irreversibility wording, but the annotations and schema compensate for most of that gap.

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 100% and the id parameter is well described ('User ID to remove (from list_users)'). The description adds no parameter-level meaning, but the schema fully carries that burden, so baseline 3 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?

Description uses a specific verb ('Remove') and resource ('a team member from the account'), making the operation immediately clear. It also distinguishes itself from sibling user-related tools like invite_user, update_user, and list_users.

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 given on when to use this tool versus alternatives, and there is no warning that the action is permanent or irreversible. The description simply states the operation without context, exclusions, or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_connectionRename connected datasourceAInspect

Rename a datasource connection

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatasource connection ID (from connected_datasources)
nameYesNew name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation of the rename. Client links follow the connection, so nothing is unlinked by it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds little behavioral context beyond the mutation itself—no side effects, permissions, or reversibility—but it does not contradict the annotations.

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 or redundant qualification. Every word 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 low-complexity rename operation with 100% schema coverage, an output schema, and supportive annotations, this description is sufficient for an agent to invoke the tool correctly. It lacks richer usage and behavioral context, but nothing essential for a correct call is missing.

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 fully documents both parameters: id is described as the datasource connection ID from connected_datasources, and name is described as the new name. The description adds no parameter-level detail, but the schema already carries that burden.

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 states a specific action ('Rename') and a specific resource ('a datasource connection'), making the tool's purpose clear. It does not explicitly distinguish among the many connection-related siblings such as create_connection, link_datasource, or delete_connection, but the rename verb is unambiguous.

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: call this when the user wants to change the name of an existing datasource connection. There are no explicit exclusions, alternative tool suggestions, or prerequisites mentioned, but the verb alone is enough to signal the intended scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_media_fileRename media fileCInspect

Rename a media file

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMedia file ID (from list_media)
nameYesNew file name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe file as saved — id, name and url. The url does not change.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond what annotations already provide. It does not mention effects on references, permissions, name constraints, or reversibility. It is not misleading, but it also does not enrich the agent's understanding of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler or redundant detail. It is front-loaded and easy to parse, though it is minimal enough that it adds little beyond the tool title.

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 with an output schema and complete parameter descriptions, the description is minimally viable. However, it omits useful context such as name format constraints or whether renaming affects existing references, which would help an agent invoke it more safely.

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 already describes both parameters with 100% coverage: id as 'Media file ID (from list_media)' and name as 'New file name'. The description adds no additional parameter-level meaning, so the baseline score of 3 applies.

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 states a specific verb and resource: 'Rename a media file'. It is clear and distinguishes from siblings like rename_connection by naming the target resource, though it does not explicitly call out any sibling alternatives.

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 offers no guidance on when to use this tool versus alternatives such as archive_media_file, move_media_to_folder, or update_media_folder. It simply restates the operation without providing context, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_from_archiveRestore archived itemAInspect

Restore archived items of one type back to active.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesIDs to restore (from list_archive)
typeYesWhich entity kind these ids are

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the named items are active again.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false and destructiveHint=false. The description adds only the state transition to 'active' but does not disclose edge cases such as behavior when restoring already-active IDs, permission requirements, or atomicity across multiple IDs.

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 phrase ('of one type,' 'back to active') contributes meaning and is appropriately sized for the tool's simplicity.

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 only two required parameters, an enum, and an output schema, the description is largely complete. It could have mentioned constraints such as rejecting mixed types or already-active IDs, but the schema and annotations cover the main inputs and safety profile.

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 100%, with both ids and type already documented in the schema. The description adds no substantive parameter meaning beyond echoing the idea of 'one type,' so the schema carries the burden and the baseline of 3 applies.

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 'restore' with 'archived items' as the resource and clarifies the outcome: returning them 'back to active.' It is immediately distinguishable from the many archive_* sibling tools, which perform the opposite operation.

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: restore items that were previously archived. However, the description gives no explicit guidance about when to choose this tool over alternatives, when not to use it, or how it relates to archive_* or list_archive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_api_keyRevoke API keyA
Destructive
Inspect

Revoke an API key (soft — it stops working but stays listed as revoked).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAPI key ID (from list_api_keys)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the key was revoked and no longer authenticates.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds the key behavioral nuance that the key remains listed but stops working, which is beyond the annotations. It explains the soft-revocation effect clearly, adding context without contradicting the destructive hint.

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 sentence that front-loads the action and resource, then adds a parenthetical clarification. No wasted words, perfectly structured.

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 one-parameter tool with an output schema and annotations covering safety, the description is sufficient. It clearly communicates the behavioral effect and any prerequisites (id from list_api_keys) are covered by the 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?

Schema coverage is 100% and the id parameter is fully described with 'API key ID (from list_api_keys)'. The description does not add any parameter-specific detail, so it relies on the schema. Baseline 3 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 verb 'Revoke' and the resource 'API key', with a specific effect ('stops working but stays listed as revoked'). It distinguishes itself from a hard delete by labeling it 'soft', 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a distinction from delete_api_key by using 'soft', but it does not explicitly state when to choose this over deletion or mention alternatives. The 'soft' hint suggests a non-permanent action, but no direct guidance on selection criteria is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailSend emailA
Destructive
Inspect

Send an email. Either pass template_id (a saved template) OR subject+html (free-form). Sends are queued and paced; poll email logs for delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoFree-form send: HTML body
contextNoTemplate variable values
subjectNoFree-form send: subject
report_idNoColours the CTA button from this report's theme
sender_idNoSaved sender id (defaults to the account default)
recipientsYesRecipient email addresses (max 10)
template_idNoSaved email template id (templated send)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoAcknowledgement that the send was queued, and who it is addressed to. Delivery is paced and happens after the tool returns — check list_email_logs for what actually landed.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the annotations by disclosing that sends are queued, paced, and require polling email logs for delivery confirmation. This is consistent with readOnlyHint=false and destructiveHint=true.

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 with no filler; the core action is front-loaded, and each clause adds either a usage constraint or an important behavioral note.

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 output schema covers return values and the input schema covers parameter details, the description supplies the missing operational context: asynchronous queuing, pacing, and how to verify delivery. This is sufficient for an agent to invoke the tool 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 coverage is 100%, so the baseline is 3, but the description adds the important mutual-exclusion relationship between template_id and subject+html that the schema alone does not make explicit. It also implies that context belongs to templated sends.

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 ('Send an email') and immediately distinguishes the two send modes: template_id versus subject+html. No sibling tool shares this purpose, so it is 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?

It gives clear usage direction: choose either template_id or subject+html, and explicitly notes that sends are queued and paced with delivery status available in email logs. It does not name an alternative tool, but no direct alternative exists among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_default_email_senderSet default email senderBInspect

Make a sender the account default.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSender ID (from list_email_senders)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe sender, now the account default — every send that names no sender_id uses it.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate non-readOnly and non-destructive, which is minimal. The description adds no further behavioral details, such as whether the previous default sender is overwritten, whether verification is required, or any side effects. For a mutation tool, this is insufficient 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, efficient sentence with no filler words. The core action is front-loaded, making it immediately parseable. Perfectly concise for a simple 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?

For a simple setter with one parameter and an output schema, the description is minimally adequate. However, it omits any error-handling context (e.g., behavior when the sender ID is invalid) or confirmation of the change. Given the tool's mutation nature, a bit more context would improve completeness, but it is not severely lacking.

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 covers the single parameter 'id' with a clear description ('Sender ID (from list_email_senders)'), providing 100% coverage. The tool description adds no extra semantic meaning beyond what the schema already offers, so a baseline score of 3 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 'Make a sender the account default' clearly states the action (make), the resource (sender), and the scope (account default). It is specific and distinguishes from siblings like set_default_email_template, which targets a different resource. The tool name reinforces the email-sender context.

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 on when to use this tool versus alternatives. There is no mention of prerequisites, such as the sender needing to exist or be verified, nor any contrast with similar operations like set_email_provider. The agent is left to infer context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_default_email_templateSet default email templateBInspect

Make an email template the account default.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID (from list_email_templates)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe template, now the account default.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, so the description does not contradict them. The description states the action is to set a default, implying a state change, but it doesn't disclose side effects such as whether it overrides an existing default or affects future email sends. Given annotations carry the safety profile, the description adds only marginal behavioral context.

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, succinct sentence with no filler. It is front-loaded with the action and resource, making it easy to parse. There is 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?

Given the tool's simplicity (one parameter, full schema coverage, output schema present, and annotations), the description is largely adequate. It could mention that the default is account-level and that it affects outgoing emails, but the schema covers the required parameter and the output schema explains return values. Minor missing context prevents a 5.

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 100%: the only parameter 'id' is documented as 'Template ID (from list_email_templates)'. The description adds no additional meaning beyond the schema, so the baseline of 3 applies.

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 'Make an email template the account default' clearly identifies the action (setting a default) and the resource (email template). It is a specific verb+resource statement and is not a tautology. It doesn't explicitly differentiate from siblings like update_email_template, but the action is distinct enough to understand.

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 set_default_email_sender or create_email_template. It does not mention prerequisites like having a template ID from list_email_templates (though that is in the schema), nor does it state the effect of setting a default. No exclusions or alternative suggestions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_email_providerSet email providerBInspect

Set the account's email provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerYesoviond, resend or smtp

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe provider as saved. It takes effect on the next send — resend and smtp need their own credentials configured in the app first.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=false, so 'Set' is consistent. Description adds no extra behavioral context: no side effects, prerequisites, or consequences of changing provider. With annotations present, the absence of added detail keeps this at 2.

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?

Single, front-loaded sentence with zero wasted words. Perfectly concise for the simple 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?

For a one-parameter setter with full schema, output schema, and annotations, the description is minimally adequate but leaves usage context and behavioral side effects unmentioned. A clear gap for agent decision-making.

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 100% with a documented enum listing the three options. Description adds no parameter semantics beyond the schema; baseline 3 applies.

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?

States a specific verb ('set') and resource ('account's email provider'). It distinguishes from siblings like get_email_provider, set_default_email_sender, and send_email by naming the exact thing changed.

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 on when to use this tool versus alternatives. Doesn't mention that this replaces the current provider or that users should set up senders after changing provider. No exclusions or alternative references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_notification_channelSet notification channelAInspect

Configure a Slack or Discord notification channel with an incoming-webhook URL. Enabling a channel does not turn it on for any event — set that per event via update_notification_preferences.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesWhich channel to configure
enabledNoWhether the channel is active (default true)
webhook_urlYesIncoming webhook URL for the channel

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe channel as saved. Nothing is sent to it until an event opts in through update_notification_preferences.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a write operation and non-destructive. The description adds useful behavioral nuance beyond the schema: enabling or configuring a channel does not activate event notifications, which is a non-obvious consequence. It does not cover overwrite behavior or validation, but the most important behavioral caveat 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?

Two short, focused sentences with no wasted words. The core action is front-loaded, and the critical caveat about per-event preferences is placed at the end where it is easy to retain.

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 3-parameter tool with complete schema coverage, useful annotations, and an output schema, the description covers the purpose, the main behavioral caveat, and the correct sibling tool. Nothing necessary for correct invocation 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?

The schema already documents all three parameters, so the baseline is 3. The description adds meaning by clarifying the enabled parameter's semantics: enabling a channel does not turn on events for anything. It also reinforces that webhook_url is the incoming-webhook URL, adding enough beyond the schema to warrant a higher score.

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 and resource: 'Configure a Slack or Discord notification channel' with an incoming-webhook URL. It also distinguishes itself from related notification tools by clarifying that enabling a channel is not the same as enabling event notifications, which prevents conflation with update_notification_preferences.

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 tells the agent when this tool is appropriate and points to the correct alternative for per-event notification settings: 'set that per event via update_notification_preferences.' This is clear, actionable usage guidance and prevents a common misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_automationSend automation test emailB
Destructive
Inspect

Send a test email for an automation

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAutomation ID (from list_automations)
recipientsNoTest recipient email addresses. When omitted, the automation's stored recipients are used.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoConfirmation that the test email was sent, and who it went to. A test does not change the schedule or count as a run.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate destructiveHint=true and readOnlyHint=false, but the description only says 'send a test email', which doesn't clarify the nature of side effects or potential destructive implications. It does not disclose what happens to recipients, whether the automation's state changes, or any impact beyond sending. The description adds minimal behavioral context beyond the annotations.

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 concise sentence with no redundancy. It directly states the action and target, front-loading the key information.

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 has an output schema (not shown) and the parameter schema is complete, the description is minimal but arguably sufficient for a simple test email action. However, the destructiveHint annotation suggests more complex behavior that the description does not address, leaving some uncertainty about side effects. Overall, it is adequate but not comprehensive.

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 100%, with both parameters already well-described in the input schema. The description adds no additional parameter semantics. Baseline 3 applies as the schema carries the burden.

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 states a clear action (send a test email) and resource (an automation). It differentiates from the general send_email sibling by specifying 'for an automation', though it doesn't explicitly name alternatives. The title aligns with the description.

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 like send_email, nor any prerequisites (e.g., needing an existing automation). The parameter description hints that id comes from list_automations, but this is not in the tool description. There is no mention of use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_connectionTest datasource connectionAInspect

Test whether a stored datasource connection is still working (e.g. the OAuth token is valid). Records the outcome on the connection, so its status reflects this test.

ParametersJSON Schema
NameRequiredDescriptionDefault
auth_idYesConnection id — the `id` of a row from connected_datasources
datasource_idYesDatasource alias of that connection (from datasources)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe test outcome — whether the connection still authenticates, and the vendor's error when it does not. The result is written back onto the connection's status.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and destructiveHint=false, but the description adds the key behavioral detail that the outcome is recorded on the connection, mutating its status. This goes beyond what the annotations alone convey. The description does not contradict the annotations; recording a test result is non-destructive and aligns with readOnlyHint=false. It lacks deeper details like network behavior or failure handling, but the provided side-effect context is valuable.

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 purpose and then disclose the side-effect. No redundant phrases or filler words; every part earns its place. It is compact while still covering both the primary function and an important behavioral consequence.

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 only two required parameters, no nested objects, high schema coverage, and an output schema present, the description is sufficiently complete. It explains the core action and the status-recording side-effect, but does not explicitly state what happens on failure (e.g., return vs. status update) – though the output schema likely covers response details. Overall, nothing critical is missing for a simple test 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 100%, so both auth_id and datasource_id already have meaningful descriptions linking them to connected_datasources and datasources. The tool description does not add further parameter-specific meaning beyond what the schema provides. Baseline 3 is appropriate since the schema carries the explanatory burden and the description adds no extra 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 a specific verb ('test') and resource ('stored datasource connection'), and adds an example use case (OAuth token validity). It clearly distinguishes itself from siblings like test_automation and describe_datasource by focusing on connection status testing. The side-effect of recording the outcome is also stated, 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 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 verify a connection) but does not explicitly contrast it with alternatives. It gives a concrete example (OAuth token validity) but lacks explicit 'when not to use' guidance or references to sibling tools like connected_datasources or test_automation. Usage context exists but is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unpause_automationResume automationB
Destructive
Inspect

Unpause an automation

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAutomation ID (from list_automations)
parent_idYesParent report or client ID (from list_reports or list_clients)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe automation, live again, with next_run_at showing when it will next send.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a read-write, potentially destructive operation, so the description does not need to restate that. The description adds a basic state-change meaning (paused to unpaused) but does not disclose side effects, prerequisites, or consequences of resuming an automation. There is no contradiction with the annotations.

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 description is extremely short with no filler words and is easy to parse. However, it is under-specified: it omits the state context that the automation must be paused and does not clarify the effect of resuming it.

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 with a complete schema, annotations, and an output schema, the description is minimally adequate. But it does not explain that the automation must already be paused, what resuming it does, or what side effects may occur, leaving an agent with incomplete information for judging consequences.

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 already provides 100% parameter coverage, including where to obtain each ID (list_automations, list_reports, or list_clients). The tool description itself adds no parameter-specific meaning, so the baseline score of 3 is appropriate.

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 'Unpause an automation' states a clear action and resource, and the verb directly contrasts with the sibling pause_automation. However, it is essentially a restatement of the tool name and title, adding no extra detail about what unpausing entails.

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 say that the tool is for previously paused automations, that it reverses pause_automation, or when it should be selected over related automation tools. The only signal is the inferred antonym relationship with pause_automation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_assetUpdate saved sectionBInspect

Update asset metadata. Only include fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAsset ID (from list_assets).
nameNoNew name.
tagsNoNew tag list (replaces current tags).
descriptionNoNew description.
is_recommendedNoPromote this asset to the top of the default "Recommended" sort.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe saved section as saved — id, name, description and tags.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false (non-destructive). The description adds the partial-update behavior ('Only include fields you want to change'), which is not in the annotations. However, it does not disclose any side effects or special behaviors beyond that, so it adds modest value.

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 with no filler. The purpose is front-loaded and the usage hint is concise. Every word 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 metadata update tool, the description covers the essential purpose and the partial-update rule. The output schema exists, and the input schema documents all fields and requirements. It lacks guidance on alternatives but that is a usage-guideline gap rather than a completeness issue for this 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 100%, so all parameters (id, name, tags, description, is_recommended) are already explained. The description's 'Only include fields you want to change' provides a global usage note but does not add per-parameter meaning beyond the schema. Baseline 3 is appropriate.

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 states a clear verb ('Update') and resource ('asset metadata'), and the title 'Update saved section' aligns with the asset context. It distinguishes from siblings like create_asset and archive_asset by focusing on metadata updates, though it doesn't explicitly name an alternative.

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 instruction 'Only include fields you want to change' provides a partial-update guideline but offers no guidance on when to use this tool versus alternatives like create_asset, get_asset, or archive_asset. No exclusions or alternative routing are given, which is a gap given the large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_automationUpdate automationA
Destructive
Inspect

Update an existing automation — only include the fields you want to change

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAutomation ID (from list_automations)
dayNoDay of send: weekday name (weekly) or day-of-month (monthly)
nameNoAutomation name
hoursNoHour of send (e.g. "9")
customNoRequired when template_id === "custom"
minutesNoMinute of send (e.g. "00")
timezoneNoIANA timezone
date_textNoDate-range preset label for the report
frequencyNoSend frequency
sender_idNoSaved email sender id
recipientsNoRecipient email addresses
template_idNoSaved email template id, or "custom" with a `custom` payload
time_formatNoMeridiem for the send time

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe automation as saved — schedule, recipients and the recomputed next_run_at.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations set readOnlyHint=false, destructiveHint=true, warning of mutation. The description adds that updates are partial ('only include the fields you want to change'), which is a key behavioral trait beyond annotations. It does not detail side effects, idempotency, or whether validation errors occur, but the annotations already disclose the destructive nature.

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?

A single concise sentence that delivers the key usage rule. The partial-update guidance is front-loaded and relevant. No filler. It could have been improved by naming the id or referencing the sibling create_automation, but it is efficient and clear.

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 13-parameter mutation tool, the schema covers parameter semantics and the annotations cover safety. The description adds the critical partial-update behavior. Given the rich schema and annotations, this is fairly complete. It doesn't mention how id is obtained (though the schema says from list_automations), and it doesn't discuss validation or effect on schedule, but that is covered by schema and annotations.

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 100%, so the schema already explains every parameter. The description only adds the partial-update instruction, which applies to all parameters. The description correctly avoids repeating schema details. Baseline 3 is appropriate when the schema does the heavy lifting.

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 says 'Update an existing automation', which is a specific verb and resource. It distinguishes from create_automation, archive_automation, pause_automation, and test_automation, though it doesn't name them explicitly. The partial-update hint adds useful specificity.

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 says 'only include the fields you want to change', which is essential guidance for the update pattern. Context signals show schema is fully documented, but no explicit when-not-to-use or alternatives are given. The partial-update instruction is clear and prevents the common mistake of sending the full object or omitting fields.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_brandingUpdate account brandingAInspect

Update branding settings — only include the fields you want to change. For logo_url and favicon_url, use list_media to look up a URL from uploaded media. (Brand color is no longer configurable — theming is per-report.)

ParametersJSON Schema
NameRequiredDescriptionDefault
logo_urlNoLogo URL (use list_media to find an uploaded image URL)
favicon_urlNoFavicon URL (use list_media to find an uploaded icon URL)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe branding as saved — logo_url and favicon_url.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=false and destructiveHint=false McDonald's the safety profile. The description adds behavioral context beyond annotations: partial-update semantics ('only include the fields you want to change') and a legacy constraint ('Brand color is no longer configurable — theming is per-report'). No contradiction with annotations.

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?

Three concise sentences, front-loaded with the key behavior (partial update), then the prerequisite for parameter values, then the deprecated field note. Every sentence earns its place and there is no fluff.

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 with only two optional paramsley and no required fields. The description covers how to use it, the URL requirement, and what is no longer configurable. Combined with the output schema and annotations, this is nearly complete; only a explicit statement about what happens when no fields are provided is missing, but it is implied.

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 100% – both logo_url and favicon_url already describe the list_media hint. The description restates this hint and adds the partial-update behavior, but provides no additional per-parameter meaning beyond the schema, so baseline 3 is appropriate.

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?

States a specific verb and resource ('Update branding settings'), so an agent knows the tool mutates account branding. It does not explicitly differentiate from siblings like get_branding or update_company, but the resource is unambiguous and the verb distinguishes it from read-only operations.

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 context: use partial updates ('only include the fields you want to change') and a precondition for parameter values ('use list_media to look up a URL from uploaded media'). It also excludes brand color and points to per-report theming, though it does not name the sibling tool that handles theming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_button_widgetUpdate button widgetCInspect

Update a BUTTON widget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
linkNoNew click-through URL.
textNoNew button label.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe button widget as saved, with the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations (readOnlyHint=false, destructiveHint=false) already establish that this is a non-destructive write operation. The description adds no behavioral context beyond the annotations — nothing about partial vs. full updates, return behavior, or effects on omitted fields. It does not contradict the annotations, but it contributes zero additional transparency.

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 four-word sentence wastes no words and front-loads the verb. However, the brevity is a symptom of under-specification rather than disciplined editing — there is essentially no substantive content, so it cannot be considered appropriately sized for the communicative job it should perform.

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 (3 flat parameters, 1 required, no nested objects or enums), the schema documents all parameters, annotations establish the safety profile, and an output schema exists, so much of the burden is already covered by structured data. The remaining gaps — usage context and behavioral specifics — are real but modest, making this minimally viable rather than 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?

Schema description coverage is 100%: id is documented with provenance ('from list_widgets'), and link and text have clear meanings ('New click-through URL', 'New button label'). With the schema carrying full parameter documentation, the baseline of 3 applies; the description neither adds nor detracts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update a BUTTON widget' is a near-verbatim restatement of the tool name and title, differing only by emphasizing the word BUTTON, which already appears in the name. It conveys no substantive information about what updating a button widget entails (e.g., changing its label or click-through URL). This is a tautology rather than a clarifying verb+resource statement.

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 for when to use this tool or when to prefer an alternative. The sibling list contains numerous update_*_widget tools (text, image, title, embed, goal, etc.), yet the description offers no criteria for selecting this one, and the only hint of its purpose comes from the schema's parameter names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_calculated_metricUpdate calculated metricBInspect

Update a calculated metric. Full replacement — you must send name, formula AND symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCalculated metric ID (from list_calculated_metrics)
nameYesMetric name
symbolYesDisplay format: numbers, decimal, % or currency
formulaYesFormula as an ARRAY of tokens in evaluation order. CTR = clicks ÷ impressions × 100 is: [{id:"t1",type:"METRIC",query:{datasource_id:"gadw",data_view:"ACCOUNT",metrics:[{value:"clicks"}]}}, {id:"t2",type:"OPERATOR",operator:"÷"}, {id:"t3",type:"METRIC",query:{datasource_id:"gadw",data_view:"ACCOUNT",metrics:[{value:"impressions"}]}}, {id:"t4",type:"OPERATOR",operator:"×"}, {id:"t5",type:"NUMBER",number:100}]

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe calculated metric as saved — id, name, formula and symbol.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=false already signals this is a write operation, and destructiveHint=false indicates it is not destructive. The description adds one useful behavioral detail: 'full replacement' meaning all fields are overwritten. This goes beyond the annotations by clarifying the semantics of the update, but it does not disclose other potential behaviors such as whether the operation is atomic, reversible, or has side effects on dependent widgets.

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 purpose and the most important operational requirement (full replacement) without any filler. It is extremely concise and efficient, earning every word. The key information is placed at the start, making it easy for an agent to scan.

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 schema is extensive, especially for the formula parameter, and includes detailed descriptions and an example. Since an output schema exists (per context signals), the description does not need to explain return values. However, for a tool with such a complex input structure, the description offers minimal high-level guidance. It communicates the update and replacement requirement but does not, for instance, mention that the formula is a token array or provide an overview of the nested structure, relying entirely on the schema. This is adequate given the schema's thoroughness, but it leaves the agent to infer the operational context from the schema alone.

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 100%, so every parameter is already documented in the schema. The description's note 'you must send name, formula AND symbol' reinforces the required fields but adds no new meaning beyond what the schema's 'required' array already states. It does not elaborate on the formula structure or the meaning of the symbol enum, which the schema already covers in detail. Given the high coverage, a baseline of 3 is appropriate.

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 verb 'Update' and the resource 'calculated metric', and it adds the critical constraint of full replacement. It does not explicitly distinguish itself from create_calculated_metric, but the verb 'update' makes the intent unambiguous. The resource is specific enough to separate it from update_calculated_metric_widget, which targets a widget rather than the metric itself.

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 does not mention that this is for modifying existing metrics as opposed to creating new ones, nor does it mention any prerequisites such as obtaining the ID from list_calculated_metrics. The only operational note is the full-replacement requirement, which is more of a parameter requirement than a usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_calculated_metric_widgetUpdate calculated metric widgetAInspect

Point a Calculated Metric widget at a saved formula. Ids come from list_calculated_metrics. The series is re-fetched in the background — call get_widget_data with this id to read the numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
nameNoDisplay name.
chartNoChart type.
dimensionNoTime dimension to trend by. A formula is evaluated over the report's date range, so this is what makes it a series rather than a single number.
calculated_metric_idNoCalculated metric id (from list_calculated_metrics).
calculated_metric_nameNoThe metric's name (from the same list) — labels the series, and names the widget while the name is still auto-generated.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe widget as saved, now pointed at that formula. The series is re-fetching in the background — read it with get_widget_data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the minimal annotations (readOnlyHint false, destructiveHint false), the description discloses that the series is re-fetched in the background and that you must call get_widget_data to see the results. This adds useful behavioral context about asynchrony and the need for a separate read call.

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 with no filler. The core purpose is front-loaded, and the behavioral note is concise. Every word 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?

The description covers the essential steps: what the tool does, where to get the required IDs, and what to do afterward. An output schema exists, so return values don't need explanation. Minor gap: it doesn't explicitly note that this updates an existing widget (only the name implies it), but overall it's sufficiently 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?

Schema description coverage is 100%, and the schema already explains each parameter (including that calculated_metric_id comes from list_calculated_metrics). The description adds little new parameter-level detail; it only reinforces the source of IDs, which is already in 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 states a specific verb ('point') and resource ('Calculated Metric widget') plus the target ('a saved formula'), clearly distinguishing it from sibling update_*_widget tools. It also names the ID source (list_calculated_metrics), leaving no ambiguity about what the tool does.

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?

It gives a clear context for using the tool: IDs come from list_calculated_metrics, and after the update you should call get_widget_data to read the refreshed numbers. It does not explicitly contrast with add_calculated_metric_widget or other alternatives, but the purpose is distinct enough that the guidance is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_clientUpdate clientAInspect

Update an existing client — only include the fields you want to change

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClient ID (from list_clients)
nameNoClient name
foldersNoFolder IDs (from list_folders)
managerNoManager user ID (from list_users)
websiteNoClient website URL
currencyNoCurrency ISO 4217 code, e.g. "USD" — the server fills in symbol + country iso
theme_idNoTheme ID (use list_themes to find one)
timezoneNoIANA timezone
domain_idNoWhite-label domain ID (from list_domains)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe client as saved. Changing the website re-derives its branding, so the theme_id may come back different.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, so the update behavior is expected. The description adds useful behavioral context by stating that omitted fields are not changed, which is important for callers. It also clarifies lack of destructive intent consistently with destructiveHint=false.

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 front-loads the action and then conveys the most important usage nuance. No filler or repetition of schema information.

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 100% schema description coverage, an output schema, and annotations that rule out destructive behavior, the description is complete enough for an agent to call the tool correctly. It could add an explicit 'use for modifying existing clients' exclusion, but the current text is adequate.

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 already covers all 9 parameters with descriptions, so the baseline is 3. The description adds cross-cutting parameter semantics: only include fields to change, which clarifies how the optional properties behave during a partial update.

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 ('Update'), a specific resource ('existing client'), and the partial-update semantics ('only include the fields you want to change'). This clearly distinguishes it from create_client, get_client, list_clients, and archive_client.

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 phrase 'Update an existing client' gives clear context for when the tool applies, and 'only include the fields you want to change' signals a patch-style workflow. It does not explicitly name excluded alternatives, but the resource and action make the intended use obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_companyUpdate company profileCInspect

Update company settings

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoZip/postal code
cityNoCity
phoneNoPhone number
stateNoState/province
addressNoStreet address
countryNoCountry — must be one of the curated list the company-profile picker offers
websiteYesCompany website URL
timezoneYesIANA timezone (e.g. America/New_York)
company_nameYesCompany name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe company profile as saved.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is not a read-only or destructive operation, so the description adds little behavioral context. It does not disclose whether the update replaces all fields, whether optional fields are preserved, whether permissions are required, or whether there are side effects. No contradiction with annotations exists, but no meaningful behavior beyond 'update' is revealed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is front-loaded, but it essentially restates the tool name/title and provides no additional information. This is under-specification rather than effective conciseness; every word adds little value.

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 a rich schema and an output schema, the description is inadequate for guiding selection and invocation in context. It lacks usage scenarios, behavioral semantics, and any distinction from closely related company/client/profile update tools. The schema covers parameters, but the description fails to complete the operational picture for a mutation 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 100%, so the input schema documents every parameter thoroughly. The description itself adds no parameter-level meaning beyond the generic 'settings' term, but the schema carries the burden, earning the baseline score of 3.

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 states a specific verb and resource: 'Update company settings.' It is clear enough to indicate the tool's purpose, but it does not explicitly differentiate from siblings like update_branding or update_client, and 'settings' is somewhat broad compared to the title 'Update company profile.'

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 about when to use this tool versus alternatives such as update_branding, update_client, or get_company. There are no exclusions, prerequisites, or context cues beyond the verb 'update.' An agent selecting among the many update_* siblings gets no help here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_custom_dataUpdate custom datasetAInspect

Update a custom-data dataset — send only the fields you want to change (e.g. { raw_data, columns }).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustom-data ID (from list_custom_data)
nameNoDataset name
columnsNoReplacement column definitions — send alongside raw_data when the shape changed
raw_dataNoReplacement rows, each an object keyed by column name — replaces every stored row
file_nameNoOriginal file name
file_sizeNoFile size in bytes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe dataset as saved — id, name, file_name and columns.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide only readOnlyHint=false and destructiveHint=false, so the description carries the burden for behavioral context. It clearly conveys partial-update (PATCH-like) semantics, which is a meaningful behavioral trait beyond the annotations. It does not go into side effects like full replacement of rows, but that is documented in the schema for raw_data.

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 efficient sentence with no filler. The core action and the partial-update behavior are front-loaded, and the example payload is compact and useful without 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 moderate-complexity update tool, the combination of the description, fully documented schema, and output schema covers the essentials: what the tool does, partial-update semantics, and parameter meaning. It could be more complete by naming when to use it versus creating or archiving a dataset, but nothing critical is missing for invoking it correctly.

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 100%, so the baseline is 3. The description's example list '{ raw_data, columns }' adds little beyond the schema's own field descriptions, since both parameters are already fully documented there.

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 states a clear verb and resource: 'Update a custom-data dataset'. It also communicates the key semantic distinction from creation tools by noting 'send only the fields you want to change'. However, it does not explicitly differentiate from sibling tools like create_custom_data or archive_custom_data beyond the verb itself.

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 'send only the fields you want to change' implies the tool is for partial updates to an existing dataset, which is useful context. But there is no explicit guidance about when to choose this tool over alternatives such as create_custom_data, duplicate_custom_data, or archive_custom_data, nor any stated exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_custom_data_widgetUpdate custom data widgetAInspect

Point a Custom Data widget at an uploaded CSV dataset and choose its columns. The dataset id comes from list_custom_data and the column names from get_custom_data — a dataset has no fixed catalog, so its own column names are the metrics and dimensions. The series is re-fetched in the background.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
nameNoDisplay name.
chartNoChart type.
metricsNoValue columns to plot, e.g. [{ column: "Revenue", format: "currency" }] — names exactly as get_custom_data reports them.
dimensionsNoLabel column(s) to break down by, e.g. ["Channel"] — names exactly as get_custom_data reports them.
custom_data_idNoCustom-data dataset id (from list_custom_data).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe widget as saved, now pointed at that dataset and its columns. The series is re-fetching in the background — read it with get_widget_data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the sparse annotations: 'the series is re-fetched in the background' and 'a dataset has no fixed catalog' explain side effects and data model nuances. It doesn't contradict annotations (readOnlyHint=false, destructiveHint=false).

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 primary action, and the supplementary context (provenance and re-fetch) is placed second. No wasted words.

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 presence of an output schema and fully documented parameters reduces the burden on the description. However, for an update tool, it doesn't state whether omitted fields remain unchanged or get reset—a critical gap. The main workflow and data sourcing are covered, but the update semantics are ambiguous.

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 100% with detailed descriptions and examples for all properties. The description adds sourcing provenance for ids and column names, but this is auxiliary rather than necessary—the schema already documents parameter semantics. Baseline 3 is appropriate.

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 ('point') and resource ('Custom Data widget') and explains the action ('choose its columns'), which clearly distinguishes it from generic data widgets. It doesn't explicitly name sibling tools, so it misses the extra differentiation credit, but the action is unambiguous.

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?

It tells the agent where to source dataset IDs and column names (from list_custom_data and get_custom_data), which is helpful usage context. However, it doesn't explicitly contrast with add_custom_data_widget or update_data_widget, nor state conditions for 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.

update_data_widgetUpdate data widgetAInspect

Update a DATA widget — its name, datasource, data view, metrics, dimensions, filters, advanced settings, chart type, date range, sort and row limit. Applies the report builder's rules: a new datasource or data view clears the selections below it and re-applies defaults, per-metric renames and formats are kept, the combination is validated, and the series is re-fetched with the new config. Discover ids with datasources → describe_datasource. The re-fetch runs in the background — call get_widget_data with this id to read the new numbers.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
nameNoDisplay name. Omit to use the generated one ("Clicks & Impressions by Date")
chartNoChart type: table, score (KPI), area, line, bar, column, pie, donut, funnel, or map. 'score' shows a single value, so it takes exactly one metric
filtersNoRow filters. Every row needs a field, an operator and a value
metricsNoMetrics to display, e.g. [{ value: "clicks" }] — ids from describe_datasource. Must belong to the chosen data view. Only `value` is required; the server fills the rest
sort_byNoMetric or dimension id to sort rows by. Defaults to the first dimension
advancedNoDatasource-specific settings (Meta attribution, SEM Rush region, Mailchimp audience…). Several datasources require keys here — describe_datasource lists them per data view. Merges with existing settings
currencyNoPer-widget currency code override; falls back to the client currency
data_viewNoDatasource data view (from describe_datasource), e.g. ACCOUNT. Changing it clears metrics and dimensions
row_limitNoRows to keep (default 'all')
date_rangeNoPer-widget date range (overrides the report range) — also set show_custom_date_range
dimensionsNoBreakdown dimensions, e.g. [{ value: "DATE" }] — ids from describe_datasource. A widget needs at least one; a dimension flagged `single` must be the only one
sort_orderNoSort direction (default 'asc')
datasource_idNoDatasource alias (from datasources), e.g. gadw. Changing it clears the data view, metrics, dimensions, filters and advanced settings, then applies that datasource's defaults. A datasource the client has not connected renders demo data until the connection is made — connected_datasources shows what is connected. The internal sources take no metrics/dimensions and are configured through `advanced` instead: 'CUSTOM_DATA' (Static Value — advanced.value), 'GOALS' (advanced.goal_id from list_goals), 'CUSTOM_IMPORT' (advanced.custom_data_id from list_custom_data), 'CALCULATION' (a calculated metric id as the single metric)
show_custom_date_rangeNoUse the widget date_range instead of the report range

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe data widget as saved, with the builder's rules applied — cleared selections, re-applied defaults and the regenerated name. When the selection changed the series is re-fetching in the background; read it with get_widget_data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses side effects beyond annotations: changing datasource/data_view clears dependent selections and re-applies defaults, validates the combination, and re-fetches the series in the background. Also tells the agent to call get_widget_data to read new numbers. No contradiction with readOnlyHint/destructiveHint.

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?

Four dense sentences, each earning its place: field scope, update semantics, id discovery, and post-update fetch. Front-loaded with the field list; no filler.

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 15-param mutation tool with nested objects, the description plus schema fully covers prerequisites, behavior, and how to observe results. Output schema exists, so return-value documentation isn't needed; nothing critical 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?

Though schema coverage is 100%, the description adds cross-parameter semantics: which changes cascade (datasource/data_view), which settings are preserved (per-metric renames/formats), and where to discover ids (datasources → describe_datasource). It also highlights that internal datasources are configured via advanced instead of metrics/dimensions.

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?

States a specific verb (Update) + resource (DATA widget) and enumerates the configurable fields (datasource, data view, metrics, dimensions, filters, chart type, etc.). The capitalized 'DATA widget' distinguishes it from siblings like update_button_widget, update_custom_data_widget, and update_static_value_widget.

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?

Gives clear operational context: it's for updating an existing widget, with a discovery flow (datasources → describe_datasource) and a follow-up call (get_widget_data). It does not explicitly name alternatives like add_data_widget for creation, so it is clear context rather than explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_email_senderUpdate email senderBInspect

Update a sender — only the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSender ID (from list_email_senders)
cityNoPostal city for the email footer
addressNoPostal street address for the email footer
countryNoPostal country for the email footer
nicknameNoInternal label for this sender, shown in the sender list
reply_toNoReply-To address, when replies should go somewhere other than from_email
from_nameNoDisplay name recipients see
from_emailNoFrom email address

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe sender as saved — id, from_name, from_email and reply_to.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, and the description confirms mutation. It adds the partial-update behavior (only provided fields change), which is useful context beyond the schema. However, it does not disclose error handling, idempotency, or any side effects on other resources, so it only partially covers behavioral disclosure.

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 filler. It efficiently communicates the core behavior (partial update) in minimal words. It could be slightly more explicit about usage context, but as a concise definition it earns its place.

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 and the presence of an output schema and full parameter descriptions, the description is adequate for a basic update operation. It lacks details on error scenarios, validation rules, or whether the update is atomic, but for a straightforward mutable operation with 100% schema coverage, it covers the essentials.

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 100% description coverage for all 8 parameters, so the baseline is 3. The description adds the semantic that only specified fields are updated, reinforcing the partial-update intent. It doesn't add per-parameter detail, but that's already in the schema, so this is adequate.

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 verb (update), resource (sender), and implies a partial-update semantic ('only the fields you want to change'). It is distinct from create/delete senders, though it doesn't explicitly name sibling alternatives. The purpose is unambiguous.

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 like create_email_sender or delete_email_sender. The context of 'update' is implied but not contrasted with creation or deletion, leaving the agent to infer the appropriate scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_email_templateUpdate email templateAInspect

Update an email template — only the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID (from list_email_templates)
nameNoTemplate name
messageNoEmail body
subjectNoEmail subject
button_topNoPlace the button above the message instead of below it
button_textNoCTA button label; an empty string removes the button

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe template as saved — id, name, subject and message.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the key behavioral detail that only provided fields are updated, which is not conveyed by the annotations. This goes beyond the structured data and is valuable for the agent. No contradiction with annotations.

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 action and resource, and it adds the key partial-update behavior without waste. Every word earns its place, and it is easy to parse quickly.

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 mutation tool with six parameters and an output schema, the description covers the core purpose and the important partial-update semantics. The output schema handles return value details, and annotations cover safety. The description could mention any prerequisites (e.g., the template must exist) but the schema hints at that via the id description. Overall, the information is sufficient for correct invocation, though slightly more context on expected behavior after update could be added.

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 100%, and the description does not add any parameter-specific semantics beyond what the schema already provides. The schema's descriptions for each parameter (e.g., 'Template ID (from list_email_templates)') are adequate. The description's mention of partial updates is more of a general behavior than per-parameter clarification, so the baseline of 3 applies.

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 clear action ('Update') on a specific resource ('email template') and adds the nuance 'only the fields you want to change,' which distinguishes it from create/delete operations and clarifies the partial-update nature. This is specific and differentiates it from siblings like create_email_template and delete_email_template.

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 modifying an existing template but does not explicitly state when to use it over alternatives or when not to use it. It mentions the partial-update behavior, which is a usage hint, but there is no explicit guidance about prerequisites, fallback tools, or exclusion conditions. Given the sibling list includes update_template (generic), the description could have clarified the email-specific scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_embed_widgetUpdate embed widgetBInspect

Update an EMBED widget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
link_urlNoNew embed source URL.
embed_typeNoNew embed mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe embed widget as saved, with the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutating but not destructive operation. The description adds no behavioral context beyond the schema—no mention of whether existing settings are replaced, whether the update is partial or full, or any side effects. With annotations covering the basic safety profile, a 3 is fair.

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 short sentence that is front-loaded and free of fluff. It earns its place by naming the specific widget type, though it could arguably be even more informative without becoming verbose.

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 update tool with a full schema and an output schema, the description is minimally adequate. However, it doesn't clarify whether the update replaces the entire embed configuration or just the provided fields, and it doesn't mention any constraints (e.g., whether link_url and embed_type must be provided together). The output schema exists, so return values are covered, but the behavioral gap keeps this at a 3.

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 100%, so the schema already documents all three parameters (id, link_url, embed_type) with descriptions. The tool description adds no additional meaning beyond what the schema provides, so the baseline 3 applies.

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 'Update an EMBED widget.' clearly identifies the verb (update) and resource (EMBED widget), distinguishing it from other update_*_widget siblings like update_button_widget or update_text_widget. However, it doesn't elaborate on what aspects of an embed widget can be updated beyond the schema, and the capitalization of EMBED is stylistic rather than informative.

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 by naming the resource type, and the schema's required 'id' field (from list_widgets) gives a hint about how to target the widget. But there is no explicit guidance on when to use this tool versus alternatives like update_data_widget or add_embed_widget, nor any mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_folderUpdate client folderAInspect

Rename a client folder

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFolder ID (from list_folders)
nameYesNew folder name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe folder as renamed — id and name.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false (a write operation) and destructiveHint=false. The description adds no additional behavioral context, such as effect on existing clients or permissions. It does not contradict the annotations, so a baseline score of 3 is appropriate since it adds no extra value beyond the structured fields.

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 zero wasted words. It communicates the action and target resource efficiently, 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple rename operation with two fully described parameters and an output schema, the description is sufficient. It covers the core action and resource; the schema handles parameter details and the output schema defines the return value. There is no missing critical context that would prevent correct invocation.

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 100% description coverage; both 'id' (Folder ID from list_folders) and 'name' (New folder name) are well documented. The description 'Rename a client folder' does not add any parameter-specific meaning beyond the schema, so the baseline of 3 is correct.

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 'Rename a client folder' uses a specific verb (rename) and a clear resource (client folder). It clearly distinguishes from siblings like create_folder, delete_folder, list_folders, and move_client_to_folder, making 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating the operation, but it does not explicitly contrast with alternatives. For instance, it does not say 'to create a new folder, use create_folder' or 'to move a client between folders, use move_client_to_folder.' However, the sibling names make the distinction fairly obvious, so the guidance 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.

update_goalUpdate goalAInspect

Update a goal — only include the fields you want to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGoal ID (from list_goals)
nameNoGoal name
queryNoThe metric query the goal measures — replaces the stored one outright
symbolNoDisplay format: numbers, decimal, % or currency; null clears it
operatorNoSuccess comparison: >= (at or above), = (equal), <= (at or below)
client_idNoBind the goal to a client (from list_clients); null makes it account-wide
goal_typeNostatic (fixed target) or change (delta over the period)
descriptionNoOptional description; null clears it
target_valueNoTarget value to measure against

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe goal as saved, with every field after the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only operation. The description adds the meaningful behavioral detail that this is a partial update—fields omitted are left unchanged. This prevents the agent from assuming a full replacement, which is valuable context beyond what the annotations provide. Side effects and error behavior are not mentioned, but the annotations cover the safety profile.

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 front-loaded sentence with zero wasted words. It states the operation and the most important usage rule efficiently. No redundant repetition of schema details.

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 complex schema (9 parameters, nested query object), 100% parameter coverage, presence of an output schema, and annotations, the description provides sufficient orientation. The one omission—mentioning that prerequisites like the goal id come from list_goals—is covered by the schema's id description, so the description does not need to repeat it. The tool is well-specified overall.

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 100%, so the baseline is 3. The description adds a cross-cutting semantic: only id is required and all other fields are optional partial-update fields, meaning omitted values are preserved. This PATCH-like behavior is not explicitly stated in the schema properties and meaningfully changes how the agent should construct the request.

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 ('Update') and resource ('a goal') with an added key semantic: 'only include the fields you want to change'. This clearly distinguishes it from sibling tools like create_goal, archive_goal, and duplicate_goal, and from other update_* tools for different resource types.

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 choose this tool versus alternatives (e.g., create_goal for new goals, list_goals to obtain an id). The partial-update instruction is about how to call the tool, not when to use it. No prerequisites or exclusions are mentioned, leaving the agent to infer from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_goal_widgetUpdate goal widgetAInspect

Point a Goal widget at a saved goal. Ids come from list_goals. The goal carries its own metric query, target and comparison, so nothing else is needed; the gauge is re-fetched in the background.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
nameNoDisplay name. Omit to show the goal's own name.
goal_idYesGoal id (from list_goals).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe widget as saved, now pointed at that goal. The gauge is re-fetching in the background — read it with get_widget_data.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description reveals useful behavior: the goal owns its metric configuration and the gauge is re-fetched in the background. This sets agent expectations about side effects and the scope of the update better than the annotations alone.

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?

Three short, front-loaded sentences with no filler. Each sentence contributes either to the primary purpose, ID sourcing, or behavioral expectations.

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 moderate-complexity update tool, the description covers purpose, ID provenance, the absence of extra configuration, and background refresh behavior. An output schema exists, so return-value explanation is not required.

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 100%, so the baseline is 3. The description adds extra meaning by explaining why only a widget id and goal id are needed ('the goal carries its own metric query, target and comparison'), which helps the agent avoid providing unnecessary 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?

States a specific verb and resource: 'Point a Goal widget at a saved goal.' This clearly distinguishes the tool from update_goal (which edits the goal itself) and other widget-update siblings.

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 context: the operation targets an existing Goal widget, IDs come from list_goals, and no metric query/target/comparison fields are needed. It does not explicitly name alternative tools or 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.

update_image_widgetUpdate image widgetCInspect

Update an IMAGE widget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
linkNoNew click-through URL.
link_urlNoNew image source URL — use list_media to find an uploaded image.
image_fitNoNew CSS object-fit class.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe image widget as saved, with the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond the word 'Update', which is already implied by readOnlyHint=false. It does not explain what properties are affected, whether the operation is idempotent, or what errors might occur. Annotations provide the only behavioral signal, and the description fails to add any context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one sentence) but it is under-specified to the point of being functionally empty. It lacks any structural information such as usage scoping or parameter grouping, and the single sentence simply repeats the name.

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?

With a large family of sibling widget-update tools and no explanatory context, this description is insufficient for an agent to correctly select or invoke the tool. The schema documents parameters, but the description provides no higher-level context about the tool's role or typical usage.

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 provides complete descriptions for all four parameters, so the baseline is 3. The description does not add any additional parameter semantics, but the schema already carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an IMAGE widget' merely restates the tool name and title, providing no new information about what 'update' entails or what distinguishes an image widget update from other widget updates. It is a tautology rather than a functional explanation.

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 the many sibling update_* tools, nor any mention of prerequisites or typical use cases. An agent cannot discern from the description when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_media_folderRename media folderAInspect

Rename a media folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesFolder ID (from list_media_folders)
nameYesNew folder name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe folder as renamed — id and name.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the operation is a mutation (readOnlyHint=false) and not destructive (destructiveHint=false), and the description does not contradict them. However, the description adds no extra behavioral detail, such as whether folder contents or IDs remain unaffected by the rename, so transparency is adequate 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 with no filler or repetition. Every word earns its place, and it is appropriately sized for a simple rename operation.

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 two-parameter rename tool with fully described parameters, annotations, and an output schema, the one-sentence description is nearly sufficient. The only notable gap is the absence of any note on post-rename semantics (e.g., uniqueness or impact on references), but this is minor for this simple 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?

The input schema fully documents both parameters: id is described as coming from list_media_folders, and name is described as the new folder name. With 100% schema description coverage, the description does not need to add parameter-level detail, meeting the baseline.

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 ('Rename') and a specific resource ('a media folder'), making the tool's purpose immediately clear. It also distinguishes this from sibling tools like rename_media_file, create_media_folder, and delete_media_folder by naming the target resource.

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 given about when to use this tool versus alternatives, and no exclusions or prerequisites are mentioned. The intended use is only implied by the action phrase; the description adds no decision context beyond the tool's name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_my_avatarUpdate user avatarAInspect

Update the authenticated user's profile picture

ParametersJSON Schema
NameRequiredDescriptionDefault
avatar_urlYesProfile picture URL or path — optionally a Media URL, or any image URL

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe profile carrying the new avatar_url.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write-nature is clear. The description adds the scoping detail 'authenticated user's', which is useful behavioral context not in the annotations. However, it does not disclose any side effects, validation rules, or effects on existing avatars, so it only moderately adds beyond annotations.

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 sentence with zero waste. The verb 'Update' is front-loaded, the resource is specific, and the intended user scope is included without unnecessary detail.

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 one-parameter tool with full schema coverage and an output schema present, the description is adequate. It states the action and the target user. The only minor omission would be explicit mention of accepted formats or side effects, but the schema's 'any image URL' and presence of an output schema reduce the need.

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 100% and the parameter description already explains that avatar_url is 'Profile picture URL or path — optionally a Media URL, or any image URL'. The tool description adds minimal extra meaning by clarifying it is the authenticated user's profile picture, but does not need to compensate for schema gaps. Baseline 3 applies.

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 and resource: 'Update the authenticated user's profile picture'. It clearly distinguishes this tool from siblings like update_my_profile (profile fields) and update_user (admin updates other users) by specifying it targets the avatar of the authenticated 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 the tool is for the authenticated user's own avatar but does not explicitly state when to use it versus alternatives like update_my_profile or update_user. No exclusions or conditional guidance is provided, so the usage context is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_my_profileUpdate user profileAInspect

Update the authenticated user's profile — only include the fields you want to change

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoUI theme
fullnameNoFull name
languageNoUI language code

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe profile as saved — fullname, language and theme.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint=false) and not destructive (destructiveHint=false). The description adds the behavioral detail that only provided fields are changed, which is useful. However, it does not mention any side effects, permissions, or what happens to omitted fields (beyond implying they are unchanged). Given the annotations cover the safety profile, a 3 is appropriate.

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, clear sentence that front-loads the purpose and includes the key usage hint. 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?

For a simple partial-update tool with an output schema present (so return format is not required), the description covers the essential behavior and scope. It could explicitly mention that the update applies only to the authenticated user (already implied) or differentiate from 'update_user', but the current description is largely sufficient. A 4 is appropriate.

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 100% coverage with descriptions for all three parameters (theme, fullname, language). The description adds no additional parameter-specific meaning beyond the schema, so the baseline of 3 is correct.

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 verb ('Update') and the resource ('the authenticated user's profile'), which distinguishes it from generic 'update_user' by specifying the scope (self). However, it does not explicitly differentiate from siblings like 'update_my_avatar' or 'update_notification_preferences', so it falls 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a useful guideline: 'only include the fields you want to change', which clarifies partial updates. But it does not explicitly state when to use this tool versus alternatives such as 'update_user' (for other users) or 'update_my_avatar' (for avatar only). The context 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.

update_notification_preferencesUpdate notification preferencesAInspect

Change how you are notified for specific events. Pass only the events — and only the channels — you want to change; this reads your current preferences, applies the overrides, and saves the full set back, so untouched events keep their settings. Each event can toggle in_app, email, slack and discord (slack/discord must first be configured with set_notification_channel). Returns the updated preferences.

ParametersJSON Schema
NameRequiredDescriptionDefault
preferencesYesPer-event channel overrides to apply, keyed by event type.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe complete preferences map after the merge — the events you changed, and every other event still carrying its previous setting.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the read-modify-write behavior ('reads your current preferences, applies the overrides, and saves the full set back') and notes the return value. It also surfaces the prerequisite for slack/discord. Annotations already indicate this is not read-only or destructive, and the description adds specific merge semantics beyond that.

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?

Three concise sentences with no filler; the purpose is stated first, followed by usage and behavior. Each sentence contributes essential information, and the description is appropriately sized for a tool with one parameter.

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 one nested parameter, the description covers the merge behavior, the channel prerequisites, and the return value. The schema and output schema fill in the field-level details, so an agent has everything needed to invoke it 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?

The schema already describes each channel field, but the description adds crucial semantic information about the partial-override behavior and the fact that only specified events/channels are changed. This directly addresses the single 'preferences' parameter and clarifies how to use it, which is 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 opens with a specific verb and resource ('Change how you are notified for specific events') and clearly distinguishes from read-only retrieval by describing the override-and-save behavior. It also differentiates from channel configuration tools by noting the prerequisite with set_notification_channel.

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 explicit guidance on partial updates ('Pass only the events — and only the channels — you want to change') and explains the merge behavior that preserves untouched settings. It also states the prerequisite for slack/discord, but does not explicitly contrast with alternative tools like get_notification_preferences or set_notification_channel, so usage context is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_pageUpdate report pageAInspect

Update a page — only include the fields you want to change

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoPage name
page_idYesPage ID (from list_pages)
visibleNoShow or hide the page
positionNoReorder the page to this position

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe page as saved — page_id, name, position and visible.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false) and non-destructive nature (destructiveHint=false). The description adds the key behavior that only specified fields are updated ('only include the fields you want to change'), which is a meaningful behavioral trait not captured in the annotations.

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 immediately states the action and the key usage rule. 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?

For a simple update tool with four parameters (one required) and full schema coverage plus an output schema, the description covers the essential behavioral note. It does not mention error cases or return details, but those are reasonably handled by the schema and output schema, so the description is adequate.

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 100% and each parameter has a description. The tool description adds the crucial semantic that parameters are optional and only included fields get changed, which is not conveyed by the individual parameter descriptions. This enriches understanding of how to use the parameters correctly.

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 ('Update a page') with a specific resource. It is unambiguous and distinct from sibling tools like create_page, delete_page, and list_pages. The additional note about partial updates further clarifies the tool's role.

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 (updating an existing page) but does not explicitly contrast with alternatives or state prerequisites (e.g., page must exist, page_id from list_pages). While the schema mentions page_id from list_pages, the description itself offers no guidance on when to choose this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_reportUpdate report or dashboardBInspect

Update a report — only include the fields you want to change

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReport ID (from list_reports)
nameNoReport name
passwordNoPassword
theme_idNoTheme ID (use list_themes to find one)
descriptionNoReport description
pdf_enabledNoEnable PDF download
show_cover_pageNoShow cover page
cover_page_titleNoCover heading, overriding the theme's. Null clears the override and inherits the theme again.
password_enabledNoEnable password protection
cover_page_subtitleNoCover subheading, overriding the theme's. Null clears the override and inherits the theme again.
thank_you_page_titleNoThank-you heading, overriding the theme's. Null clears the override and inherits the theme again.
cover_page_pattern_idNoGenerated artwork for the cover, overriding the theme's. Null clears the override and inherits the theme again.
show_table_of_contentsNoShow table of contents
thank_you_page_subtitleNoThank-you message, overriding the theme's. Null clears the override and inherits the theme again.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe report as saved, with every field after the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, destructiveHint=false) already establish that this is a mutating but non-destructive operation. The description adds the partial-update behavior, but does not cover side effects, validation, or return behavior.

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?

A single, front-loaded sentence with no filler. It earns its place but is terse for a 14-parameter tool with a dashboard scope in the title.

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 schema and output schema carry most of the load, but the description omits the 'dashboard' scope from the title and gives no usage context. It is minimally viable but leaves the agent to infer when this tool is the right choice.

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?

Input schema describes all 14 parameters, so the description has little to add. 'Only include fields you want to change' usefully clarifies that all fields except id are optional, which is implied but not spelled out in the schema.

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 names a specific verb and resource ('Update a report'), immediately locating the operation among many update_* siblings. It does not mention the 'dashboard' scope found in the title, so the full scope is only partially stated.

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 instruction 'only include the fields you want to change' gives a useful partial-update guideline and implies that omitted fields remain unchanged. However, it does not state when to prefer this over sibling update tools or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_static_value_widgetUpdate static value widgetAInspect

Set the value on a Static Value widget — a number, an amount like "R50", or free text like "Active". It has no datasource and never fetches, so the value is shown exactly as passed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
nameNoLabel shown above the value.
valueYesThe value to display.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe widget as saved, holding the value inline. Nothing is fetched, so it is already showing what you passed.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive 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?

描述仅两句话,第一句说明操作和对象,第二句提供关键行为上下文。没有冗余,信息密度高。

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?

对于一个小型更新操作,描述涵盖了核心功能和行为。架构中已包含id来源和参数描述,输出模式存在。缺少的是与替代工具的明确对比,但整体足够完整。

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?

虽然架构已覆盖所有参数,但描述通过示例(数字、金额'R50'、文本'Active')为'value'参数增加了语义,并确认了'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?

描述以明确的动词'Set the value'和资源'Static Value widget'开头,并澄清了该小部件没有数据源且从不获取数据,从而与其他小部件类型区分开来。这为代理提供了清晰的目标和范围。

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?

描述通过说明没有数据源且从不获取来确定使用上下文,暗示此工具用于显示固定值,而不是基于数据的小部件。它没有明确命名替代品,但提供了足够的上下文,让代理可以推断何时使用它。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_templateUpdate templateAInspect

Update a template — only include the fields you want to change

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTemplate ID (from list_templates)
nameNoTemplate name
descriptionNoTemplate description

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe template as saved — id, name and description.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description correctly aligns with a non-destructive mutation. The description adds behavioral context beyond the annotations by stating that only provided fields are changed, implying omitted fields remain untouched. This is valuable for an agent to understand the update semantics, and no contradiction exists.

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 delivers the core purpose and a key usage note without any fluff. Every word earns its place, and it is appropriately minimal for a simple update tool.

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 only three parameters, a fully described schema, and an output schema (as indicated by context signals), the description is complete. It covers the essential behavior (partial update) and the resource, and nothing an agent needs to call it correctly is missing. The presence of an output schema means the description need not explain return values.

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 input schema covers all three parameters (id, name, description) with descriptions, so schema coverage is 100%. The description's instruction to 'only include the fields you want to change' directly enhances the meaning of the optional parameters (name, description) by clarifying that they are partial-update fields, not required full replacements. This adds value beyond the schema's basic field 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 the specific verb 'Update' with the resource 'a template', clearly distinguishing this from sibling tools like create_template, archive_template, get_template, and list_templates. The phrase 'only include the fields you want to change' adds precision about the operation's partial-update nature, leaving no ambiguity about what the tool does.

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 tells users to include only fields they want to change, which is a clear usage guideline for partial updates. It implies this tool is for modifying existing templates rather than creating or deleting them, but it does not explicitly name alternatives or state when not to use it. The guidance is useful but not fully explicit about exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_text_widgetUpdate text widgetBInspect

Update a TEXT widget. Replaces the entire text content.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
textYesNew plain-text content. Replaces existing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe text widget as saved, with the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the entire text content is replaced, which is a useful behavioral detail beyond the annotations. However, this fact largely repeats the schema's text parameter description ('Replaces existing'), and no additional side effects, permissions, or reversibility information is provided.

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 very short and front-loaded with the key operation and behavior. The first sentence is somewhat redundant with the tool name and title, but the overall entry remains concise and scannable 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?

For a simple two-parameter tool with an output schema and clear annotations, the description is nearly sufficient: it names the target resource and the full-replace behavior. The main missing piece is sibling differentiation and usage guidance, which is relevant given the large family of update_* widget 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 100%, with both required parameters already documented. The description's mention of replacing the entire text content only restates the schema's existing parameter descriptions, so it does not add meaningful semantic value beyond the baseline.

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 names the exact operation ('Update') and resource ('TEXT widget'), and adds a concrete behavioral detail ('Replaces the entire text content'). This clearly identifies what the tool does, though it does not explicitly contrast it with sibling tools such as update_title_widget or update_button_widget.

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 about when to use this tool versus alternatives. The description never mentions sibling tools or conditions for use, so the agent must infer applicability solely from the resource name. This is effectively no usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_themeUpdate themeAInspect

Update a theme — only include the fields you want to change. Supply the full tokens map when changing visual properties (partial token updates replace the entire map). Update cover_page or thank_you_page to change the chosen background images. Flip is_default true/false to manage the account default (only one default per account).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTheme ID (from list_themes)
nameNoTheme name
tokensNoComplete token map — replaces the entire stored token set. Include all tokens when updating visual properties.
cover_pageNoCover-page configuration: background image URL plus title and subtitle overlays (variable-substituted at render time).
is_defaultNoMark/unmark this theme as the account default
thank_you_pageNoThank-you-page configuration: background image + title + subtitle.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe theme as saved — id, name, tokens and page config.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already signaling readOnlyHint=false and destructiveHint=false, the description adds valuable behavioral nuance: partial token updates replace the entire token map, and only one default is allowed per account. These are non-obvious side effects not captured by the annotations or schema fields alone, making the tool safer to invoke correctly.

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 focused sentences, each with a clear purpose: the first states the update behavior and partial-update rule, the second warns about token-map replacement, and the third covers cover/thank_you and is_default. No redundancy or filler; it is front-loaded with the most critical usage guidance.

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 6-parameter update tool with a rich schema and an output schema, the description covers the key behavioral pitfalls (token map replacement, default constraint, page background update) while leaving detailed parameter documentation to the schema, which is present. It is complete enough for an agent to call the tool correctly without additional context.

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 100%, so the baseline is 3. The description adds extra meaning by stating the partial-update rule ('only include the fields you want to change') and the token-map replacement caveat, which are not fully communicated by the schema descriptions alone. It also reinforces which parameters to use for specific visual changes, going beyond simple schema repetition.

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 'Update a theme', a specific verb+resource, and immediately clarifies the partial-update behavior ('only include the fields you want to change'). This distinguishes update_theme from create_theme and archive_theme and tells an agent exactly what the tool does.

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 explicit usage guidance for tokens, cover/thank_you_page, and is_default, including the constraint that only one default exists per account. It does not explicitly name sibling alternatives or say 'instead of create_theme', but the context of an update operation and the partial-update rule provides clear context for when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_title_widgetUpdate title widgetCInspect

Update a TITLE widget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWidget ID (from list_widgets).
titleNoNew title text.
headingNoNew heading level.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe title widget as saved, with the update applied.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond what annotations already convey (readOnlyHint false, destructiveHint false). It does not state whether omitted optional parameters preserve current values, what happens if only id is provided, or any side effects. It is consistent with annotations but offers no extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While the description is short, it is under-specified rather than concise. 'Update a TITLE widget.' repeats the title with no added value; every sentence should earn its place, and this one does not.

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 the tool's simple but updateable fields (title, heading) and the existence of many sibling widget-update tools, the description is too thin. It does not clarify scope, optionality, or relationship to get_widget/list_widgets, leaving the agent without sufficient context to invoke it appropriately.

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 100%, so the input schema already documents id, title, and heading with descriptions. The description itself does not mention any parameters, but the baseline of 3 applies because the schema carries the full semantic weight and the description adds nothing beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update a TITLE widget.' is essentially a restatement of the tool name and title, providing no additional information about what updating a title widget entails or how it differs from sibling update_*_widget tools. It lacks a specific outcome or scope beyond the tautology.

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 like update_text_widget or other widget updaters. The description does not mention that this tool is for modifying title text/heading level on an existing title widget, nor any preconditions such as obtaining the widget ID via list_widgets (though that appears in the schema).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_userEdit team memberAInspect

Edit a team member — only include the fields you want to change

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUser ID to edit (from list_users)
roleNoRole to assign (admin, clients, or readonly)
clientsNoClient IDs the user can access, from list_clients (for the "clients" and "readonly" roles)
fullnameNoFull name

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe team member as saved — id, fullname, role and their client scope.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations signal that this is not read-only and not destructive, and the description adds the valuable behavioral trait that omitted fields remain unchanged. This partial-update semantic is not directly provided by the annotations or schema and is important for an agent to call the tool correctly.

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 states the core purpose and the most important usage constraint immediately, making it easy for an agent to parse.

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 low complexity, full schema coverage, and presence of an output schema, the description is sufficient. The partial-update directive is the one non-obvious piece of context, and it is clearly included.

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 100%, so all four parameters already carry clear descriptions. The description's partial-update guidance complements the schema but does not add any parameter-specific meaning beyond what is already documented.

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 ('Edit') and resource ('a team member'), and adds the key nuance that only the included fields are changed. It clearly states what the tool does, though it does not explicitly differentiate itself from sibling tools like invite_user or update_client.

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 instruction 'only include the fields you want to change' gives useful guidance on how to call the tool as a partial update. However, it does not explicitly state when to use this tool instead of invite_user, remove_user, or update_client, leaving that distinction to naming inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_email_domainVerify sending domainBInspect

Re-check DNS and verify a sending domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain ID (from list_email_domains)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoThe domain after the re-check — its status, and which DNS records are still missing when it did not pass.
successYesTrue when the call succeeded. A failure comes back as an error result instead.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are sparse, so the description adds some value by revealing that the tool re-checks DNS records. However, it doesn't disclose whether verification updates a stored status, whether it is asynchronous, or whether it requires special permissions. No contradiction with annotations.

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?

At one sentence, the description is compact and front-loaded with the action ('Re-check DNS'). The tail 'verify a sending domain' partly mirrors the title, but the sentence is still free of filler and easy to scan.

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 one-parameter tool with an output schema, the description is largely sufficient, but it omits the intended trigger (e.g., after DNS setup) and any side-effect caveats. The input schema covers id, and the output schema can cover the result, so the remaining gap is usage context rather than parameter handling.

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, and the schema already documents it fully with 'Domain ID (from list_email_domains)'. The description repeats the resource (sending domain) but adds no new parameter-level constraints, defaults, or formatting.

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?

Description uses a concrete verb-resource pairing ('Re-check DNS and verify a sending domain') that clearly conveys an action on a domain. It is distinct from sibling domain operations like add_email_domain, list_email_domains, and remove_email_domain, though it does not explicitly name them. 'Re-check' adds specificity beyond the title.

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 conditional language, prerequisites, or alternative routing to sibling tools. It doesn't state 'use when DNS records have been updated' or 'instead of add_email_domain'. The only prerequisite (Domain ID from list_email_domains) lives in the schema, not the description.

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. 188 tool updates
    • First observedadd_asset_to_page
    • First observedadd_button_widget
    • First observedadd_calculated_metric_widget
    • First observedadd_custom_data_widget
    • First observedadd_data_widget
    • First observedadd_domain
    • First observedadd_email_domain
    • First observedadd_embed_widget
    • First observedadd_goal_widget
    • First observedadd_image_widget
    • First observedadd_report_section
    • First observedadd_static_value_widget
    • First observedadd_text_widget
    • First observedadd_title_widget
    • First observedarchive_asset
    • First observedarchive_automation
    • First observedarchive_calculated_metric
    • First observedarchive_client
    • First observedarchive_clients
    • First observedarchive_custom_data
    • First observedarchive_export
    • First observedarchive_goal
    • First observedarchive_media_file
    • First observedarchive_media_files
    • First observedarchive_notification
    • First observedarchive_notifications
    • First observedarchive_report
    • First observedarchive_reports
    • First observedarchive_template
    • First observedarchive_theme
    • First observedaudit_report_health
    • First observedchange_my_email
    • First observedchange_report_date_range
    • First observedclear_read_notifications
    • First observedconnected_datasources
    • First observedcount_clients
    • First observedcount_unread_notifications
    • First observedcreate_asset
    • First observedcreate_automation
    • First observedcreate_calculated_metric
    • First observedcreate_client
    • First observedcreate_client_with_report
    • First observedcreate_connection
    • First observedcreate_custom_data
    • First observedcreate_email_sender
    • First observedcreate_email_template
    • First observedcreate_folder
    • First observedcreate_goal
    • First observedcreate_media_folder
    • First observedcreate_page
    • First observedcreate_report
    • First observedcreate_report_from_template
    • First observedcreate_template
    • First observedcreate_theme
    • First observeddatasource_resources
    • First observeddatasources
    • First observeddelete_api_key
    • First observeddelete_connection
    • First observeddelete_email_sender
    • First observeddelete_email_template
    • First observeddelete_folder
    • First observeddelete_media_folder
    • First observeddelete_notification_channel
    • First observeddelete_page
    • First observeddelete_widget
    • First observeddelete_widgets
    • First observeddescribe_datasource
    • First observedduplicate_asset
    • First observedduplicate_calculated_metric
    • First observedduplicate_custom_data
    • First observedduplicate_goal
    • First observedduplicate_report
    • First observedgenerate_company_palette
    • First observedgenerate_pdf
    • First observedget_account
    • First observedget_account_usage
    • First observedget_archive_counts
    • First observedget_asset
    • First observedget_automation_history
    • First observedget_billing
    • First observedget_branding
    • First observedget_client
    • First observedget_company
    • First observedget_current_user
    • First observedget_custom_data
    • First observedget_email_provider
    • First observedget_email_template
    • First observedget_notification_preferences
    • First observedget_pdf_status
    • First observedget_report
    • First observedget_template
    • First observedget_theme
    • First observedget_widget
    • First observedget_widget_data
    • First observedinvite_user
    • First observedlink_datasource
    • First observedlist_activity
    • First observedlist_api_keys
    • First observedlist_archive
    • First observedlist_asset_tags
    • First observedlist_asset_widgets
    • First observedlist_assets
    • First observedlist_automations
    • First observedlist_calculated_metrics
    • First observedlist_clients
    • First observedlist_custom_data
    • First observedlist_domains
    • First observedlist_email_domains
    • First observedlist_email_logs
    • First observedlist_email_senders
    • First observedlist_email_templates
    • First observedlist_exports
    • First observedlist_folders
    • First observedlist_goals
    • First observedlist_invoices
    • First observedlist_media
    • First observedlist_media_folders
    • First observedlist_notification_channels
    • First observedlist_notifications
    • First observedlist_pages
    • First observedlist_reports
    • First observedlist_template_widgets
    • First observedlist_templates
    • First observedlist_themes
    • First observedlist_users
    • First observedlist_widgets
    • First observedmark_notifications_read
    • First observedmove_client_to_folder
    • First observedmove_media_to_folder
    • First observedmove_widget
    • First observedpause_automation
    • First observedrefresh_account_favicon
    • First observedrefresh_client_favicon
    • First observedrefresh_client_screenshot
    • First observedrefresh_report
    • First observedrefresh_widgets
    • First observedremove_account_favicon
    • First observedremove_account_logo
    • First observedremove_client_favicon
    • First observedremove_client_logo
    • First observedremove_domain
    • First observedremove_email_domain
    • First observedremove_user
    • First observedrename_connection
    • First observedrename_media_file
    • First observedrestore_from_archive
    • First observedrevoke_api_key
    • First observedsearch
    • First observedsend_email
    • First observedset_default_email_sender
    • First observedset_default_email_template
    • First observedset_email_provider
    • First observedset_notification_channel
    • First observedtest_automation
    • First observedtest_connection
    • First observedunlink_datasource
    • First observedunpause_automation
    • First observedupdate_asset
    • First observedupdate_automation
    • First observedupdate_branding
    • First observedupdate_button_widget
    • First observedupdate_calculated_metric
    • First observedupdate_calculated_metric_widget
    • First observedupdate_client
    • First observedupdate_company
    • First observedupdate_custom_data
    • First observedupdate_custom_data_widget
    • First observedupdate_data_widget
    • First observedupdate_email_sender
    • First observedupdate_email_template
    • First observedupdate_embed_widget
    • First observedupdate_folder
    • First observedupdate_goal
    • First observedupdate_goal_widget
    • First observedupdate_image_widget
    • First observedupdate_media_folder
    • First observedupdate_my_avatar
    • First observedupdate_my_profile
    • First observedupdate_notification_preferences
    • First observedupdate_page
    • First observedupdate_report
    • First observedupdate_static_value_widget
    • First observedupdate_template
    • First observedupdate_text_widget
    • First observedupdate_theme
    • First observedupdate_title_widget
    • First observedupdate_user
    • First observedverify_email_domain

Publisher details

Operator
Oviond · Publisher source
Operator website
https://oviond.com
Vendor relationship
First-party · Publisher source
Restrictions
Requires an Oviond account. The platform is subscription-based with a free trial available at oviond.com. No admin approval, no regional limits, and no custom OAuth app required. The MCP server acts on your own Oviond workspace, so it is only useful with an active account and at least one client or project set up. · Publisher source

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Hosted MCP server that gives AI agents read and write access to your full marketing & ecommerce stack — Google Analytics, Search Console, Google & Meta Ads, Shopify, WooCommerce, Shopware, Slack and LinkedIn. 100+ tools across 10 connectors. BYOK, OAuth 2.1.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A unified MCP server that gives AI assistants direct access to Google Analytics 4, Google Search Console, Google Ads and Google Merchant Center data using OAuth2 user credentials.
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    An MCP server that gives your AI assistant read + write access to Google Ads and GA4 — with safety guardrails that prevent accidental spend.
    91
    459 PyPI
    264
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Hosted MCP server connecting Shopify, Klaviyo, GA4, Meta Ads, Google Ads, Xero, Gorgias and 20+ e-commerce data sources so AI assistants can answer merchant questions that span every source at once.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources