Skip to main content
Glama
Advernue MCP

Advernue MCP

Official
by advernue

@advernue/mcp

A stdio MCP server for the Advernue API: one request shape over ~200 ad platforms, exposed as tools to any MCP client. Built on @advernue/sdk.

@advernue/sdk is installed from GitHub (github:advernue/advernue-node#main) until it is on npm; switch to the published semver range then.

Use

{
  "mcpServers": {
    "advernue": {
      "command": "npx",
      "args": ["-y", "@advernue/mcp"],
      "env": { "ADVERNUE_API_KEY": "adv_..." }
    }
  }
}

ADVERNUE_API_KEY is required for tool calls; ADVERNUE_BASE_URL optionally overrides https://api.advernue.com.

Related MCP server: google-meta-ads-ga4-mcp

Tools

One tool per API operation, named <tag>_<operation> (for example campaigns_list, analytics_compare, crosspost_launch). Inputs are JSON Schema taken from the OpenAPI spec: path and query parameters are top-level fields, the request body is the body field.

  • Reads (GET, plus analytics and preview/simulate style POSTs) are annotated readOnlyHint: true and run immediately.

  • Writes default to a dry run. Where the API supports dry_run, a write without confirm: true is sent as a dry run (validate and preview only). For writes without a server-side dry run, nothing is sent and the tool returns a preview of the request. Set confirm: true to execute for real.

  • Writes also accept idempotencyKey (generated when omitted).

  • API errors come back as tool results with isError: true and the { status, code, message, details } envelope.

License

MIT

Available Tools

176 tools
actions_getGet an actionC
Read-only

Get an action (GET /v1/actions/{id}).

NameRequiredDescriptionDefault
idYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered structurally. The description adds nothing beyond that: no note on what an action contains, whether the record can be missing, how errors surface, or whether the call has side effects or remote latency implications.

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?

A single short sentence that is front-loaded and free of padding, but its brevity comes from omission rather than discipline. The parenthetical endpoint is arguably the only sentence with real informational content.

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?

There is no output schema, so the description should describe what a returned action looks like or what fields matter; it does not. For a fetch-by-id tool with an undefined resource name, an agent lacks the context needed to use the result meaningfully.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for the single id parameter. The path template '(GET /v1/actions/{id})' does imply id is a path identifier, but it says nothing about format, where the id comes from (presumably actions_list), or validation behavior.

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 pairs a verb and resource ('Get an action') and adds the underlying endpoint (GET /v1/actions/{id}), which confirms it is a single-record fetch rather than a list. However, 'action' is never defined, so an agent cannot tell what domain object is being retrieved, and there is no explicit contrast with the sibling actions_list.

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 given. The implied distinction from actions_list (single item vs collection) must be inferred entirely from the verb, and there are no stated prerequisites, exclusions, or alternative tools.

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

actions_listList actions (status is comma-separated)C
Read-only

List actions (status is comma-separated) (GET /v1/actions).

NameRequiredDescriptionDefault
limitNo
statusNoComma-separated ActionStatus values.
clientIdNo
parentIdNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and reach are covered. Beyond that the description only echoes the HTTP method and endpoint; it says nothing about default page size, pagination, ordering, or what happens when status/clientId/parentId are omitted. For a list endpoint where defaults drive the result set, that is a meaningful gap.

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 short and front-loaded, which is good, but its single informative clause duplicates the schema and the title, and it still leaves the tool underspecified. Brevity here reflects thinness rather than disciplined editing.

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 four optional parameters, 25% schema coverage, and no output schema, the description carries the burden of explaining filter semantics and return shape and fails to do so. An agent cannot tell what a default call returns or how clientId and parentId narrow the results.

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

Parameters2/5

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

Schema description coverage is only 25%, so the description needs to compensate for clientId, parentId, and limit — it does not. The one note it offers ("status is comma-separated") is already stated verbatim in the schema for the status property, so it adds no meaning beyond structured data.

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?

"List actions" names a specific verb and resource, and the GET endpoint confirms it is a read/list operation. However, it does nothing to distinguish it from the sibling actions_get, and the parenthetical mostly restates the title. An agent knows roughly what it does but not how it differs from the individual-action fetch tool.

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 statement of when to use this tool versus actions_get or other list tools such as audit_list or alerts_list. No prerequisites, no exclusions, and no indication of what the listing is scoped to (workspace, client, parent).

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

adAccounts_getGet one ad accountC
Read-only

Get one ad account (GET /v1/ad-accounts/{id}).

NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the REST path (GET /v1/ad-accounts/{id}), which restates the read nature rather than adding context such as auth requirements, error behavior for unknown ids, or whether the response includes synced metrics.

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 sentence, front-loaded with the action, with the endpoint in parentheses as secondary detail. Nothing is wasted, though the brevity borders on under-specification rather than tightness.

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 single-parameter read tool this is close to minimally adequate: an agent knows to pass an id and expects one account back. With no output schema and no schema descriptions, the agent still lacks the id format and any notion of what the returned object contains, which the description could have supplied in one clause.

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

Parameters2/5

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

Schema description coverage is 0% and the single property 'id' is a bare string with no documentation. The description only shows '{id}' embedded in the endpoint path, hinting that it is a path parameter, but says nothing about format (numeric vs. platform-prefixed) or where the agent obtains a valid id.

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 ('Get one ad account'), and the singular 'one' implicitly separates it from sibling adAccounts_list, which returns many. It stops short of naming adAccounts_list or adAccounts_manage explicitly, so the differentiation is inferable rather than stated.

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 guidance beyond the implicit need to already hold an account id. Nothing tells the agent when to prefer adAccounts_list (discovery), adAccounts_manage (mutation), or adAccounts_sync (refresh), all of which appear in the sibling list.

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

adAccounts_listList ad accounts, optionally by connection or managed flagC
Read-only

List ad accounts, optionally by connection or managed flag (GET /v1/ad-accounts).

NameRequiredDescriptionDefault
managedNo
connectionIdNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-facing behavior are covered. Beyond that the description only repeats the HTTP endpoint (GET /v1/ad-accounts) and says nothing about pagination, result ordering, or what a listing contains, despite there being no output schema.

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?

A single short sentence with no filler and the filter dimensions front-loaded after the verb. It is efficient, but the brevity comes at the cost of substance rather than being tight-but-complete.

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 simple read-only list tool this is thin: no output schema exists, so the description should at minimum indicate the returned shape and pagination behavior, and it should say how this differs from adAccounts_get/manage/sync. None of that is present, leaving the agent with little more than the tool name.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden. It maps the two parameters at a name level (connectionId filters by connection, managed filters by managed flag) but never explains what a 'connection' is, what 'managed' means for an ad account, or that the values are the strings 'true'/'false' rather than booleans.

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?

States the verb and resource ('List ad accounts') and names the two filter dimensions, so the basic purpose is clear. However, it is nearly a verbatim restatement of the title and gives no differentiation from nearby siblings such as adAccounts_get, adAccounts_manage, or adAccounts_sync, which an agent must distinguish before choosing this tool.

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 word 'optionally' hints that both parameters can be omitted, but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives like adAccounts_get for a single account or adAccounts_sync for refreshing data. The agent is left to infer routing entirely from tool names.

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

adAccounts_manageAssign an ad account to a client and set whether Advernue manages itA

Assign an ad account to a client and set whether Advernue manages it (PATCH /v1/ad-accounts/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), it discloses the important trait that nothing is sent without confirm: true and that there is no server-side dry run — a genuine behavioral fact the annotations do not convey. It stops short of describing permission requirements or reversibility of the assignment.

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, then the critical safety constraint and endpoint. No filler and nothing buried.

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 write tool with no output schema but with a confirm-gated preview flow documented in the schema, this covers the essentials an agent needs to call it safely. Missing only permission/error context and clarification of the untouched body fields.

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 50%: confirm and idempotencyKey are already documented in-schema, while id, body.clientId and body.managed are bare. The description maps 'clientId' to 'client' and 'managed' to the managed flag, adding marginal meaning, but says nothing about what id refers to or any constraints on the nested body.

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+resource ('Assign an ad account to a client') plus the second effect ('set whether Advernue manages it') and even gives the PATCH endpoint. It is clearly distinguishable from adAccounts_list/get/sync siblings, though it never names 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 Guidelines3/5

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

The description gives a gating condition (must pass confirm: true) which is operational guidance, but it offers no when-to-use vs when-not guidance relative to siblings like adAccounts_sync or adAccounts_get. Usage is implied from the verb rather than spelled out.

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

adAccounts_syncSync entities and metrics for an ad account from the platform nowA

Sync entities and metrics for an ad account from the platform now (POST /v1/sync/{adAccountId}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
adAccountIdYes
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, so the description's real contribution is the confirmation contract: nothing is executed without confirm=true and there is no server-side dry run, which tells the agent the preview is mandatory. It stops short of saying what data is overwritten, whether the sync is destructive to existing entities, or whether the call is long-running/rate-limited.

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 compact sentences, with the write/confirm warning placed prominently at the end where it is hard to miss. 'Now' and the endpoint parenthetical are slightly redundant with the title but still earn their space as routing cues.

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 three-parameter write tool with no output schema and open-world behavior, the definition covers the safety gate but says nothing about what gets synced (which entities, what time window), what the preview response contains, or how errors surface. The essentials for calling it safely are present; the essentials for predicting its effects are not.

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 67%: confirm and idempotencyKey are already documented in the schema, and the description only adds that adAccountId appears in the request path. It contributes little meaning beyond what the structured fields already provide.

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 (sync) and resource (entities and metrics for an ad account) plus the underlying endpoint POST /v1/sync/{adAccountId}, which lets an agent separate it from adAccounts_get/list/manage. It does not, however, distinguish it from adjacent sync-style siblings such as audiences_sync or connections_importMetrics.

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 word 'now' implies an on-demand pull, and the confirm gate signals this is a deliberate write action, but there is no explicit statement of when to choose this over adAccounts_manage or the other sync tools. The agent must infer the usage context.

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

adGroups_createCreate an ad group under a campaign (created paused unless status is given)A

Create an ad group under a campaign (created paused unless status is given) (POST /v1/ad-groups). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds real behavioral context the annotations do not: the entity is created paused unless status is supplied, and the call is a dry run unless confirm=true. That default-paused and preview-by-default behavior is exactly the kind of pre-call surprise worth disclosing. It stops short of covering idempotency behavior 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.

Conciseness4/5

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

Two tightly packed sentences with the action and the write protocol front-loaded, and no filler. Minor cost: stacked parentheticals and a phrase lifted almost verbatim from the title make it slightly denser than it needs to be.

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 write tool with a deeply nested body (Bid/Money/Budget/Targeting) and no output schema, the description covers creation semantics and the dry-run gate but says nothing about what comes back (e.g., the new ad group ID) or how to recover it. Adequate to avoid a wrong call on safety, thin on the result side.

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 67%, so the schema already documents confirm and idempotencyKey. The description adds meaning only for the status field ('created paused unless status is given'); it says nothing about campaignId, targeting, bid, or budget semantics, so it does not meaningfully beat 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?

States a specific verb and resource ('Create an ad group') plus the parent scope ('under a campaign') and the backing endpoint (POST /v1/ad-groups). This clearly separates it from adGroups_list and adGroups_update in the sibling set.

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 the execution protocol (dry run by default, set confirm: true to actually write), which is genuine usage guidance for the call itself. However, it never says when to reach for this versus adGroups_update or campaigns_create, nor what prerequisites exist (campaign must exist, targeting required).

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

adGroups_listList ad groupsC
Read-only

List ad groups (GET /v1/ad-groups).

NameRequiredDescriptionDefault
statusNo
campaignIdNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered structurally. The only added context is the REST endpoint 'GET /v1/ad-groups', which tells the agent nothing about pagination, result size, default ordering, or whether filters are ANDed. For a list tool whose output shape is undocumented, that is thin.

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?

A single sentence with no wasted words and the endpoint front-loaded, so structure is fine. However the brevity is under-specification rather than discipline; there is no second sentence carrying the filtering or return-value context an agent needs.

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?

Two optional filters with no output schema and no parameter descriptions mean the description should explain what is returned and how the filters combine, and it does neither. Against a many-sibling tool family, this leaves the agent guessing at default behavior.

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

Parameters2/5

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

Schema description coverage is 0% and the description mentions neither 'status' nor 'campaignId'. The enum values under EntityStatus are the only hint, and the description does not compensate for the coverage gap, so meaning beyond the raw schema is essentially absent.

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?

Names a specific verb and resource: 'List ad groups'. That is enough to separate it from adGroups_create, adGroups_update and ads_list without opening schemas. It stops short of stating scope (all ad groups vs. filtered), so it is clear but not distinctive.

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 call this versus adGroups_create/adGroups_update or ads_list, and no mention of whether the filters are optional narrowing or required context. The agent must infer that this is the read/discovery entry point 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.

adGroups_updateUpdate an ad group (name, status, budget, targeting, bid)A

Update an ad group (name, status, budget, targeting, bid) (PATCH /v1/ad-groups/{id}). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds the genuinely non-obvious fact that calls are dry-run unless confirm:true is passed, which prevents accidental live mutations. It stops short of saying whether omitted body fields are preserved (PATCH merge) or cleared, and what the dry-run preview returns.

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, front-loaded with the action and the write-safety caveat, with no filler. The opening phrase duplicates the tool title verbatim, which is minor waste but not harmful.

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 mutation tool with a deeply nested body (bid strategies, budget types, targeting arrays) and no output schema, the description covers the safety mechanism but not update semantics, validation behavior, or what a dry-run returns. Adequate but leaves real gaps an agent would need to guess at.

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 50%: confirm and idempotencyKey are documented in the schema itself, while id and body are not. The description lists the body fields (name, status, budget, targeting, bid) but only mirrors the schema's property names without adding format, currency/micros semantics, or partial-update behavior. 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 an ad group") plus the concrete mutable fields and the underlying PATCH route, so the agent knows exactly what is being modified. It does not distinguish itself from siblings such as adGroups_create or campaigns_update, leaving that to the tool name alone.

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 clear execution guidance (dry run by default; confirm: true to execute), which is the most common failure mode for write tools. However, it offers no guidance on when to choose this over adGroups_create or campaign-level updates, and no prerequisites or exclusions.

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

ads_createCreate an ad under an ad group (created paused unless status is given)A

Create an ad under an ad group (created paused unless status is given) (POST /v1/ads). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description supplies far more: the created entity defaults to paused, execution is a dry run unless confirm: true is set, and the underlying write endpoint is named. It stops short of mentioning permissions, rate limits, or what the dry-run preview returns.

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 dense sentences with zero filler; the resource, the default paused state, and the dry-run safety gate are all front-loaded before the endpoint citation.

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 a nested body, no output schema, and only 3 parameters, this covers the essentials an agent needs: what it creates, under what parent, and the dry-run-to-execute safety step. It lacks detail on the return payload and required body fields, but the schema carries those.

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 67% and the description adds essentially nothing beyond the schema—the 'created paused unless status is given' note duplicates the schema's status description. Body fields such as adGroupId, name, creativeId and destinationUrl are left to the nested 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?

The description states a specific verb and resource ('Create an ad under an ad group'), adds the key behavioral detail that it is created paused unless a status is given, and cites the endpoint (POST /v1/ads). It implicitly separates itself from ads_list/ads_update, but never names those siblings explicitly.

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 explicit when-to-use or when-not-to-use guidance, and no routing to alternatives such as ads_update or adGroups_create. The only implied guidance is that an adGroupId is needed (from schema) and that the tool defaults to a dry run.

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

ads_listList adsC
Read-only

List ads (GET /v1/ads).

NameRequiredDescriptionDefault
statusNo
adGroupIdNo

TDQS

C2.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known without the description. The description adds nothing beyond the HTTP path — no filter semantics, no result shape, no pagination, no rate-limit 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?

It is short and front-loaded with no filler, but the brevity comes from omission rather than efficiency. A single sentence that conveys almost no information is not 'concise' in a useful sense.

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 two-parameter list tool with no output schema and zero schema descriptions, the description should at minimum explain the filters and what is returned. It does neither, leaving the agent to guess at behavior before calling.

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

Parameters1/5

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

Schema description coverage is 0% for two parameters (status, adGroupId), so the description carries the full burden of explaining them — yet it says nothing. The enum values in $defs are visible, but how filtering by status or adGroupId behaves (multi-value? defaults? archived included?) is completely undocumented.

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 names a verb and resource ('List ads') and the underlying endpoint (GET /v1/ads), so the basic operation is identifiable. But it is essentially a restatement of the tool title and gives no distinction from siblings like ads_create, ads_update, or adGroups_list beyond the word 'list'.

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, no mention of prerequisites, scoping, or pagination expectations. The agent must infer everything from the name and the sibling list.

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

ads_updateUpdate an ad (name, status, creative, destination URL)B

Update an ad (name, status, creative, destination URL) (PATCH /v1/ads/{id}). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.2/5.0
Behavior3/5

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

The description discloses the most important non-obvious behavior: it is a write that runs as a dry run unless confirm: true is passed, which annotations (readOnlyHint=false, openWorldHint=true) do not convey. It does not disclose whether the update is a partial merge, whether null values clear fields like creativeId/destinationUrl, or whether idempotency is otherwise enforced.

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 tight sentences, with the write/dry-run warning front-loaded where it matters most. The parenthetical field list duplicates the title almost verbatim, which is the only wasted space.

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 nested-body mutation tool with no output schema, the safety model is covered, but the semantics of the nested object are thin: platformNative is unexplained and null-handling on creativeId/destinationUrl is unstated, leaving an agent unsure whether passing null clears or ignores a field.

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 50%; confirm and idempotencyKey are already documented in the schema, and the description's 'set confirm: true' largely repeats that. It names four of the five body fields but omits platformNative entirely, and adds no meaning about nullable fields or merge 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?

States a specific verb and resource ('Update an ad') and enumerates the mutable fields (name, status, creative, destination URL), plus the underlying endpoint PATCH /v1/ads/{id}. That is enough to distinguish it from ads_create and ads_list, though the sibling adGroups_update is never acknowledged.

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 explicit when-to-use guidance, no statement about which existing ads are eligible, and no contrast with ads_create or adGroups_update. The only procedural guidance is invocation mechanics (dry run by default), not tool selection.

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

alerts_listList alertsC
Read-only

List alerts (GET /v1/alerts).

NameRequiredDescriptionDefault
openNo
clientIdNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. Beyond that the description adds only the HTTP path; it says nothing about what an alert represents, whether results are paginated or time-bounded, or how many are typically returned.

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

Conciseness3/5

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

The single sentence is front-loaded and free of padding, but its brevity comes from under-specification rather than discipline. There is no wasted wording, yet almost nothing is said.

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 no output schema, two undocumented parameters, and no description of return shape, the definition leaves an agent guessing about what it will get back and how to filter. The annotations cover safety only, so the description needed to carry more of the load.

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

Parameters1/5

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

Schema description coverage is 0% for both parameters, and the description compensates with nothing. In particular it never explains that 'open' is a string enum of "true"/"false" rather than a boolean, nor what clientId scopes the listing to.

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: 'List alerts', plus the underlying endpoint GET /v1/alerts, which confirms it is a read of the alerts collection. The only sibling in the alerts family (alerts_resolve) is clearly a different operation by name, so differentiation is implicit but adequate.

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 call this versus alerts_resolve, no mention of defaults, and no indication of what filters are useful in practice. The agent must infer everything from the tool name and the endpoint path.

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

alerts_resolveResolve an alertA

Resolve an alert (POST /v1/alerts/{id}/resolve). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses the important behavioral trait that nothing is sent unless confirm: true and that no server-side dry run exists, plus that a preview is returned otherwise via the schema. It stops short of describing what resolving changes (status semantics, reversibility) or the effect of the idempotency key.

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 compact sentences with the destructive-gating warning front-loaded right after the operation statement. Nothing is padded, though the 'WRITE:' label style is slightly terse and the endpoint path is somewhat redundant with the tool name.

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 mutation tool with no output schema, the description covers the safety mechanism and target resource but omits what the resolved state means, whether the action is reversible, and what the preview response contains. Adequate to call safely, but an agent still lacks context on outcomes.

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 67% and both optional parameters (confirm, idempotencyKey) already carry descriptions in the schema. The description reinforces the confirm gating but adds no new syntax, defaults, or constraints beyond what the schema states, so it is roughly 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?

States a specific verb and resource ('Resolve an alert') and even names the underlying endpoint (POST /v1/alerts/{id}/resolve), so the agent knows exactly what operation is performed. It does not explicitly differentiate itself from the sibling alerts_list, but the verb makes the distinction obvious.

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 makes clear this is a write that only executes with confirm: true and notes there is no server-side dry run, which is useful execution guidance. However, it gives no guidance on when to resolve versus listing/inspecting alerts (alerts_list), nor any preconditions such as required permissions or valid alert states.

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

analytics_breakdownMetrics split by a dimension (country, device, placement, age, gender, hour), across platformsC
Read-only

Metrics split by a dimension (country, device, placement, age, gender, hour), across platforms (POST /v1/analytics/breakdown).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the HTTP endpoint (POST /v1/analytics/breakdown), which is marginal for an agent, and says nothing about how results are grouped, the 500-row limit behavior, currency handling, or whether platforms default to all connected accounts.

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; the scope (dimension) and endpoint come first. Its brevity is under-specification rather than verbosity, so it loses a point only because the space saved was not reallocated to useful detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a read-only analytics query with no output schema, the definition is minimally viable: an agent knows roughly what it returns and that a dimension is required. But with a deeply nested body, seven optional fields, and a huge platforms enum all undocumented, an agent cannot call this correctly without reading the schema closely.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, yet it only touches the 'dimension' field and omits from/to, limit, clientId, currency, platforms, and byPlatform entirely. The dimension list it does give is incomplete (no 'creative' or 'ad') and uses 'country' where the schema requires 'geo_country', which could actively mislead.

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 concrete operation (metrics split by a dimension) and enumerates example dimensions, so an agent can tell this is a dimensional breakdown/grouping query. It does not distinguish itself from siblings like analytics_timeseries or analytics_compare, and its dimension list ('country', plus omitted 'creative'/'ad') only loosely matches the enum ('geo_country'), 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?

There is no guidance on when to pick this over analytics_timeseries, analytics_compare, analytics_pacing, or analytics_digest, and no mention of prerequisites such as a connected platform or clientId. The reader must infer the use case entirely from the name and the dimension list.

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

analytics_compareCompare metrics grouped by platform, account, campaign, cross-campaign or dateC
Read-only

Compare metrics grouped by platform, account, campaign, cross-campaign or date (POST /v1/analytics/compare).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already cover the safety profile (readOnlyHint=true) and openness (openWorldHint=true). Beyond that the description adds only the HTTP route, saying nothing about whether comparison requires a lookback window, what comparePrevious changes, or how results are shaped when groupBy=cross_campaign.

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?

A single front-loaded sentence with no filler, but it is largely a copy of the title plus an endpoint path, so much of its brevity comes from saying almost nothing. The endpoint reference is the only content not already present in structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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

For a tool whose sole argument is a nested object with nine undocumented properties, no output schema, and a real ambiguity around comparison semantics, one sentence is far from sufficient. An agent cannot determine valid date ranges or the effect of lookbackDays and comparePrevious without guessing.

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

Parameters1/5

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

Schema description coverage is 0% across a nine-property nested body, and the description rescues none of it: clientId, currency, firstParty, lookbackDays and comparePrevious get no meaning at all, and from/to date formats and range limits are unstated. The only parameter content is a restatement of the groupBy enum that the schema already enumerates explicitly.

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 ("Compare") and resource ("metrics") plus the available grouping axes, which is enough to distinguish this from list-style siblings like analytics_breakdown or analytics_timeseries. It never explicitly differentiates itself from those siblings, 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?

There is no statement of when to choose this over analytics_breakdown, analytics_timeseries, analytics_pacing or analytics_digest, and no prerequisites or exclusions. The only usage signal is the implied "use this when you want comparison", which the agent must infer from the grouping options alone.

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

analytics_digestDaily digest preview per client: spend, ROAS, movers, alerts, pending approvalsB
Read-only

Daily digest preview per client: spend, ROAS, movers, alerts, pending approvals (GET /v1/digest).

NameRequiredDescriptionDefault
dateNo
clientIdNo

TDQS

B3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds that this is a preview and lists the sections included, but it does not disclose permissions, data freshness, rate limits, or whether alerts and approvals are returned as counts or full records.

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 definition is a single front-loaded sentence with no filler beyond the endpoint reference. It is appropriately brief, though the endpoint suffix may be unnecessary for tool selection.

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 lists the digest contents but is incomplete for correct invocation because it does not explain date/clientId behavior or output shape. With no output schema and 0% parameter documentation, more detail 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.

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the two parameters. It only hints at clientId via 'per client' and never explains date syntax, defaults, or whether either parameter is optional.

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 definition states a specific resource and scope: a daily digest preview per client, including spend, ROAS, movers, alerts, and pending approvals. This distinguishes it from generic analytics siblings like analytics_breakdown or analytics_timeseries, though it does not use an explicit retrieval verb.

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 siblings such as alerts_list, approvals_list, reports_get, or other analytics endpoints. The word 'preview' hints at a preview use case, but the description never states when-not-to-use it or what alternative to choose.

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

analytics_forecastForecast spend, conversions and value for N days (seasonal naive or Holt); needs 14+ daysB
Read-only

Forecast spend, conversions and value for N days (seasonal naive or Holt); needs 14+ days (POST /v1/analytics/forecast).

NameRequiredDescriptionDefault
bodyYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the endpoint, modeling options, and the 14+ day history requirement, but it does not disclose auth or rate limits, how models are selected, or return behavior. Beyond annotations, it adds moderate 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 with no filler; method options, duration, minimum history, and endpoint are compactly stated. The endpoint parenthetical is the only arguable redundancy, but it is brief.

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 forecasting tool with a nested request body, no output schema, and zero schema descriptions, the definition is incomplete: it does not explain grouping, date cutoffs, currency, client or campaign scoping, or the response. It covers the high-level operation and a key data precondition but not enough for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% for a nested body with fields such as groupBy, asOf, currency, platform, campaignId, and crossCampaignId. The description only hints at horizonDays ('N days') and historyDays ('14+ days' minimum), leaving most parameter meanings and the required groupBy undocumented.

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 specific operation (forecast), the metrics (spend, conversions, value), the horizon (N days), and modeling methods (seasonal naive or Holt). It clearly distinguishes this as the forecasting endpoint, though it does not explicitly contrast it with sibling analytics 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?

It provides a precondition (needs 14+ days of history), which implies when this tool is valid. However, it gives no explicit guidance on when to use it versus analytics_timeseries, analytics_compare, or other analytics tools, and it does not explain how to choose between seasonal naive and Holt.

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

analytics_pacingBudget pacing: spend vs expected to date, projected end, on_track/under/over (5% default)C
Read-only

Budget pacing: spend vs expected to date, projected end, on_track/under/over (5% default) (POST /v1/analytics/pacing).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. Beyond that, the description only adds the endpoint path and the 5% tolerance default; it says nothing about the response shape, the meaning of the on_track/under/over classification boundaries, or whether 'expected to date' is prorated by day or month. For a metrics tool whose output semantics matter, that is thin.

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?

It is a single compact line that front-loads the resource and the output contents. The endpoint path in parentheses is mostly redundant with the tool name, but nothing else is wasted.

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 nested-body analytics tool with 0% schema coverage, no output schema, and six sibling analytics tools, the description leaves too much unresolved: no scope selection guidance, no parameter meaning, and no sense of the returned pacing figures. It is readable but not sufficient for confident invocation.

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

Parameters2/5

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

Schema description coverage is 0% and the body object nests seven undocumented properties (asOf, clientId, currency, platform, tolerance, campaignId, crossCampaignId). The description only explains the tolerance default of 5%, leaving asOf date semantics, currency format expectations, and whether campaignId and crossCampaignId are mutually exclusive entirely unaddressed.

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 analytics resource and enumerates what the response covers: spend vs expected to date, projected end, and on_track/under/over status. That is more specific than a bare resource name and distinguishes it from analytics_forecast and analytics_breakdown. It does not explicitly say how it differs from those siblings, keeping it at 4 rather than 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?

There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (analytics_forecast, analytics_breakdown, analytics_timeseries, analytics_digest) that an agent could pick instead. The only usage-like hint is the '(5% default)' tolerance note, which describes a parameter rather than when to select this tool.

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

analytics_reallocationAdvisory budget reallocation equalizing marginal ROAS at the same total; never writesC
Read-only

Advisory budget reallocation equalizing marginal ROAS at the same total; never writes (POST /v1/analytics/reallocation).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.7/5.0
Behavior3/5

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

The description usefully reinforces the annotations by declaring the tool 'advisory' and 'never writes', which resolves the confusion of a POST endpoint that is actually read-only. Beyond that it says nothing about what the response contains, how the marginal-ROAS equalization is constrained, or what the minFactor/maxFactor bounds do to results.

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 the key qualifier ('advisory', 'same total') up front and the endpoint appended as reference. Dense with jargon like 'marginal ROAS' but nothing is wasted or redundant.

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 tool whose only input is a large nested object with zero documented fields and no output schema, a one-line description is far from sufficient to invoke it correctly. An agent cannot determine valid date ranges, budget units, or the meaning of the factor bounds from the provided text.

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

Parameters1/5

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

Schema description coverage is 0% on a deeply nested body with from/to dates, clientId, platform, campaignId, crossCampaignId, currency, min/maxFactor and a totalDailyBudget micros object. The description supplies no parameter meaning whatsoever, leaving an agent to guess date semantics, currency format, and budget units.

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 resource and operation: advisory budget reallocation that equalizes marginal ROAS while holding total spend constant. That is distinguishable from the other analytics_* siblings (breakdown, pacing, forecast, synergy, saturation), though no sibling is named explicitly.

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 choose this over analytics_forecast or analytics_saturation, no stated prerequisites (e.g., that it needs a date range and a total budget), and no note on whether the caller should follow up by actually applying changes elsewhere.

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

analytics_saturationDiminishing-returns fit per platform or campaign with marginal ROAS and a confidence flagC
Read-only

Diminishing-returns fit per platform or campaign with marginal ROAS and a confidence flag (POST /v1/analytics/saturation).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only the HTTP path (POST /v1/analytics/saturation) and a hint at returned fields; it does not say whether the fit requires a minimum data volume, how confidence is derived, whether results are cached, or what happens for sparse campaigns. Marginal added context beyond structured data.

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?

It is one short, front-loaded sentence with no filler, which is good, but the brevity comes at the cost of under-specification rather than efficiency. Nothing extraneous, yet nothing that earns additional credit.

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 no output schema, an eight-field nested body at 0% description coverage, and no sibling differentiation, the definition is too thin for an agent to call this correctly. Key facts an agent needs (valid date conventions, whether groupBy must match the provided platform/campaignId, expected response shape) are all absent.

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

Parameters2/5

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

Schema description coverage is 0% and the single body parameter is a nested object with eight undocumented fields (from/to, groupBy, clientId, currency, platform, campaignId, crossCampaignId). The description only implies the groupBy choice via 'per platform or campaign' and says nothing about the date range semantics, currency handling, or how platform/campaignId/crossCampaignId interact.

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 names the analytical artifact (a diminishing-returns fit with marginal ROAS and a confidence flag) and the grouping dimension (platform or campaign), which is more specific than a bare label. However it is essentially the title plus an endpoint path, with no verb describing the operation and no differentiation from sibling analytics tools such as analytics_forecast, analytics_pacing, or analytics_reallocation that an agent could use to pick the right one.

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 guidance: nothing states which questions this fit answers that analytics_forecast or analytics_reallocation do not, nor any prerequisite (date range bounds, client context, minimum spend). Usage can only be inferred from the phrase 'diminishing-returns fit', which leaves the agent guessing among many sibling analytics endpoints.

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

analytics_synergyBlended MER, platform overlap and assists, lagged spend correlation (not causal)C
Read-only

Blended MER, platform overlap and assists, lagged spend correlation (not causal) (POST /v1/analytics/synergy).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. Beyond that the description only adds the '(not causal)' caveat about how to read the lagged correlation, and says nothing about the POST body requirement, computation cost, or the lag/platform caps that shape results.

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?

It is a single short fragment with no wasted words, but the space saved is space that should have been used; the only structural element is the trailing endpoint path, which is metadata rather than guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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

This is a complex analytics endpoint with a ten-property nested request body, no output schema, and no annotation-level detail about returns. The description does not explain required date range semantics, defaults for maxLag/maxPlatforms, or what the response contains, leaving the agent unable to call it correctly from the definition alone.

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

Parameters1/5

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

Schema description coverage is 0% and the single top-level parameter is a nested body with ten undocumented properties (maxLag, lookbackDays, maxPlatforms, currency, platform, campaignId, crossCampaignId, clientId). The description supplies no meaning for any of them; only faint topical hints ('lagged' -> maxLag, 'platform overlap' -> maxPlatforms) exist, which is far short of compensating for the coverage gap.

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 names the analytics concepts the endpoint produces (blended MER, platform overlap, assists, lagged spend correlation) which does differentiate it from siblings like analytics_breakdown or analytics_pacing. However it is a bare noun phrase copied from the title with no verb and no statement of what the tool actually returns or computes, so the agent must infer the operation.

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 guidance, no exclusions, and no reference to the many adjacent analytics siblings (analytics_compare, analytics_timeseries, analytics_saturation, analytics_reallocation). The parenthetical '(not causal)' hints at interpretation limits but says nothing about when this tool should be selected over alternatives.

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

analytics_timeseriesDaily metrics for entities over a date range, in the reporting currencyC
Read-only

Daily metrics for entities over a date range, in the reporting currency (POST /v1/analytics/timeseries).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful facts not in the annotations: daily granularity, that values are expressed in the reporting currency, and the underlying POST endpoint. It says nothing about how missing data days, currency conversion, or entity defaults are handled.

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 zero redundancy and no filler. It is efficient, though the brevity comes at the cost of omitted parameter guidance rather than being a model of tight prose.

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?

A read-only analytics query with a seven-field nested body, no output schema and no parameter documentation leaves the agent guessing about defaults, row shape and optional filters. For this complexity the description should say at minimum what entityIds omission means and what a response row looks like.

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

Parameters2/5

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

Schema description coverage is 0% and the body nests seven properties, yet the description only gestures at date range and currency. It adds no meaning for entityType (campaign/ad_group/ad), entityIds, firstParty or lookbackDays, including what happens when entityIds is omitted, which is the most consequential ambiguity here.

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 resource (daily metrics for entities), a scope (over a date range) and a unit (reporting currency), plus the REST endpoint. That is enough for an agent to know what the tool returns, but it never distinguishes it from siblings such as analytics_breakdown, analytics_compare or analytics_pacing, which all operate on the same entity/metric space.

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 the near-identical analytics_* siblings. An agent has to infer from the name alone whether this or analytics_breakdown is the right call.

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

apiKeys_createMint an API key (session only)B

Mint an API key (session only) (POST /v1/api-keys). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

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 openWorldHint=true, so the mutation profile is known. The description usefully adds that the operation has no server-side dry run and is gated on confirm, but the schema's confirm field already says it returns a preview, and it never clarifies what "session only" means, whether the key secret is returned once, or that minted credentials persist until apiKeys_revoke.

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 and endpoint front-loaded and zero filler. The telegraphic style ("WRITE: not executed unless confirm: true") is terse but still parses cleanly.

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 credential-minting mutation with a nested body, no output schema, and only sparse annotations, an agent still lacks critical context: what the returned key material looks like, whether it is shown once, and what "session only" constrains. Adequate as a pointer but not complete for correct, safe 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 67%, so the schema carries most of the load for confirm and idempotencyKey. The description adds no meaning about the nested body fields (scopes, clientId, expiresAt, guardrailIds) or least-privilege scope selection, which would be the highest-value thing a minting tool could explain.

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 ("Mint an API key") plus the concrete endpoint POST /v1/api-keys, which distinguishes it from the read/revoke siblings apiKeys_list and apiKeys_revoke. It does not name those siblings explicitly, so differentiation is inferable rather than 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 confirm:true requirement and the note that nothing executes without it give usable invocation guidance. However, there is no explicit when-to-use versus alternatives (e.g., how this differs from appCredentials_set or tracking_createIngestKey for other credential types), and no prerequisites such as required scopes to mint a key.

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

apiKeys_listList API keys (no secrets)B
Read-only

List API keys (no secrets) (GET /v1/api-keys).

NameRequiredDescriptionDefault

No parameters

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 openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact — that secrets are not returned — but says nothing about pagination, ordering, or what metadata each key carries.

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 short sentence, front-loaded with the action and resource. The '(no secrets)' and endpoint parenthetical are compact, though the endpoint adds little for an agent that already has the tool name.

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 zero-parameter read tool with annotations covering safety, the description is close to sufficient, but with no output schema it does not say what fields a listed key exposes (id, name, created date, last used). That gap is minor but real.

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, so there is nothing for the description to disambiguate; baseline 4 applies. The parenthetical endpoint reference is harmless but adds no parameter meaning.

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 ('List API keys') and adds a scope qualifier ('no secrets') that tells the agent the response is redacted. It is clearly distinct from the sibling apiKeys_create and apiKeys_revoke, though the phrasing largely restates 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?

There is no explicit when-to-use guidance, no prerequisites, and no named alternative. The agent must infer that this is the read-only counterpart to apiKeys_create/apiKeys_revoke 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.

apiKeys_revokeRevoke an API keyA
DestructiveIdempotent

Revoke an API key (DELETE /v1/api-keys/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, so the safety profile is partly covered, but the description adds genuinely new information: nothing is sent without confirm: true, there is no server-side dry run, and a request preview is returned otherwise. What it omits is the effect of revoking (immediate invalidation of the key, irreversibility).

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, front-loaded with the action and the write gate, with zero filler. The 'WRITE:' marker makes the mutation status scannable at a glance.

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 destructive, idempotent-keyed mutation with no output schema, the description covers the confirmation flow but leaves out consequences (does the key stop working immediately, is revocation permanent, can it be undone by creating a new key) and doesn't mention that idempotencyKey is auto-generated. Minimum 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 coverage is 67% and the schema itself already documents confirm and idempotencyKey in detail, so the description's mention of the confirm gate largely restates structured data. The bare `id` parameter gets no explanation in either place, and at 3 params the 3 baseline 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 gives a specific verb+resource ('Revoke an API key') and even the underlying endpoint (DELETE /v1/api-keys/{id}), so the agent knows exactly what is being affected. It doesn't explicitly contrast with siblings like apiKeys_list or apiKeys_create, but the verb 'revoke' is unambiguous enough to separate it.

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 explains the execution mechanics (must pass confirm: true) but gives no guidance on when to revoke versus other options, no prerequisites such as required scopes or ownership, and no warning about verifying the key id first. Usage is implied by the tool name rather than stated.

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

appCredentials_listBYO app credentials: stored platforms with field names, and the fields each acceptsB
Read-only

BYO app credentials: stored platforms with field names, and the fields each accepts (GET /v1/app-credentials).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the underlying endpoint (GET /v1/app-credentials) and, more usefully, indicates the response shape is platform entries with their field names and accepted fields. It says nothing about whether only configured platforms or all supported platforms are returned, nor about auth/workspace scoping.

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 compact sentence with the endpoint in parentheses — no padding or repetition. It loses a point only because the sentence is noun-phrase shaped rather than leading with an action, which makes the purpose slower to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

A no-param, no-output-schema read is a simple tool, and the description does sketch what comes back. However, for a 'list what's stored' tool the critical question — configured-only vs. all available platforms, and the shape of each entry — is left ambiguous, which is where an agent would most likely misread the result.

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, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies. The parenthetical endpoint reference is a harmless extra detail.

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 title/description conveys the resource (BYO app credentials) and what is returned (stored platforms plus field names and accepted fields), but it omits an explicit verb — an agent has to infer 'list' from the tool name suffix. It is distinguishable from appCredentials_set/remove by the 'stored' framing, but that differentiation is implicit rather than stated.

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 guidance and no mention of the obvious alternatives, appCredentials_set (to configure a platform) and appCredentials_remove (to delete one). An agent reading only the description gets no cue about which of these three to pick.

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

appCredentials_removeRemove a workspace app credential (204)A
DestructiveIdempotent

Remove a workspace app credential (204) (DELETE /v1/app-credentials/{platform}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
platformYes
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds genuinely new behavior: nothing is sent without confirm:true, and crucially there is no server-side dry run, so the preview is the only safety net. The 204 also tells the agent to expect an empty body. It stops short of describing auth/scope requirements or what happens if the credential does not exist.

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 compact, front-loaded sentences with zero filler; the destructive gating is stated up front. The only waste is the redundant "(204)" repeated from the title and again as the response code context.

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 three-parameter destructive call with no output schema, the definition covers the safety gate well. What is missing is the platform selector's meaning and any failure-mode behavior for a credential that does not exist, which matters because there is no server-side dry run to catch mistakes.

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 67%, so confirm and idempotencyKey are already documented in the schema, and the description's note about confirm largely restates that. The required platform parameter, backed by a very large enum with no description, gets no semantic explanation in the description — nothing about which credential is targeted or what happens if the platform has no stored credential.

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 ("Remove a workspace app credential") and pins down the exact endpoint (DELETE /v1/app-credentials/{platform}) plus the expected 204 response. It is clearly distinguishable in intent from appCredentials_list and appCredentials_set, though it never names those siblings explicitly.

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 by the verb and HTTP method; there is no explicit statement of when to use this versus appCredentials_set (e.g. whether set overwrites or this is the only way to revoke). The confirm:true requirement is the one concrete operative instruction.

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

appCredentials_setSet a workspace app credential for a platform (write-only values; session only)A
Idempotent

Set a workspace app credential for a platform (write-only values; session only) (PUT /v1/app-credentials/{platform}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYesfield name to value, write-only
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
platformYes
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Adds meaningful context beyond annotations: values are write-only, the effect is "session only", and there is explicitly no server-side dry run, so the confirm path returns a preview rather than a real validation. Annotations already declare the write and idempotent profile, and the description stays consistent with them; it stops short of stating what happens to pre-existing credential fields on overwrite or what permissions are required.

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 tightly packed sentences: purpose and endpoint first, then the write-gating constraint. Nothing is redundant and the most safety-critical fact (confirm required) is front-loaded in the second sentence.

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 credential-writing tool with a free-form nested body object, no output schema, and 25% of parameters undocumented, the description omits the things an agent most needs: which body keys are required per platform, whether a set replaces or merges existing values, and what "session only" implies for persistence.

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 75% and the schema already explains confirm, idempotencyKey and the write-only body, so the description largely restates structured content. It adds no meaning about which body field names the platform expects or how the platform enum value maps to the stored credential.

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?

Specific verb+resource: "Set a workspace app credential for a platform", reinforced by the concrete endpoint PUT /v1/app-credentials/{platform}. It is clearly distinguishable from appCredentials_list and appCredentials_remove by verb alone, though it never names those siblings.

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 only usage condition given is the mechanical gate: "not executed unless confirm: true". There is no guidance on when to prefer this over connections_createWithCredentials or connections_create, which also appear to store credentials, so the agent must infer the boundary.

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

approvals_approveApprove (id = action id)A

Approve (id = action id) (POST /v1/approvals/{id}/approve). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.5/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true, so the description earns credit for disclosing that this is a WRITE that is not executed unless confirm: true and that there is no server-side dry run. It still omits what the approval actually does downstream and whether it is reversible, keeping it below 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.

Conciseness4/5

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

Two compact sentences with the mutation warning front-loaded, and no filler. The repeated parenthetical from the title is slightly redundant but not costly.

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 write tool with no output schema, it covers the critical safety mechanic (confirm gate, no dry run) but says nothing about required permissions, what the returned preview contains, or side effects of approving. Adequate minimum, with clear 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 coverage is 67%, with the undocumented parameter being id; the description fills exactly that gap by defining id as the action id. The confirm explanation largely restates the schema text, but the id clarification plus the execution gate adds real meaning beyond the structured fields.

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 plus the underlying endpoint (POST /v1/approvals/{id}/approve), and clarifies that the id is an action id rather than an approval id. It does not explicitly distinguish itself from siblings like approvals_reject or approvalLinks_decide, 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?

There is no statement of when to approve versus reject, or when to use approvalLinks_decide instead. The only conditional guidance is the confirm flag, which is about execution mechanics, not tool selection.

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

approvals_commentComment on an actionA

Comment on an action (POST /v1/approvals/{id}/comments). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, so the write nature is known. The description adds genuinely useful context beyond that — the confirm gate and the fact that there is no server-side dry run — but says nothing about whether comments are editable or deletable, who may post them, or what state changes.

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 clauses, front-loaded with purpose and immediately followed by the one behavioral constraint that matters. Nothing is wasted.

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 write tool with a nested body and no output schema, the definition covers the execution gate but leaves the payload semantics (what 'id' identifies, body formatting/limits beyond the schema's maxLength) and the returned preview unexplained. Adequate but with visible 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 50%: confirm and idempotencyKey are already documented in the schema, and the description's confirm note merely restates that. The undocumented 'id' and nested 'body' parameters get no added meaning from the description, though the endpoint path weakly implies id is the approval request id.

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 ('Comment on an action') and even pins the endpoint POST /v1/approvals/{id}/comments, which cleanly separates it from approvals_listComments, approvals_approve and approvals_reject. It stops short of naming those siblings explicitly, which keeps it from 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?

It gives one concrete precondition — the write is not executed unless confirm: true — which is real usage guidance. But there is no guidance on when to comment versus approve/reject, no statement that the action must be pending, and no permission prerequisites.

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

approvals_listList approvals (default: pending)B
Read-only

List approvals (default: pending) (GET /v1/approvals).

NameRequiredDescriptionDefault
statusNo

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only the raw endpoint path, disclosing nothing about pagination, ordering, result volume, or whether results are scoped to the current workspace — behavior an agent would need for a cross-account listing.

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 short sentence that front-loads the resource and the default behavior, with no filler. The parenthetical HTTP path is arguably waste for an agent caller, but it costs little.

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-optional-parameter read tool with no output schema, the definition is minimally viable. It still leaves open return shape, pagination, and whether the list is workspace-scoped, which matter given openWorldHint=true.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the burden. It does add one genuinely useful fact absent from the schema — that omitting status yields pending — but it explains nothing about the approved/rejected/expired values or any filtering interactions.

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 clear verb and resource ('List approvals') and adds the useful qualifier that listing defaults to pending status. It does not distinguish itself from siblings such as approvals_listComments or approvalLinks_decide, but the operation itself 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 'default: pending' note implies the primary use case (reviewing the pending approval queue) and that passing a status widens the query, but there is no explicit when-to-use versus when-to-use-a-sibling guidance or any statement of scope.

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

approvals_listCommentsList commentsC
Read-only

List comments (GET /v1/approvals/{id}/comments).

NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description contributes nothing further: no pagination or ordering behavior, no indication of what a comment record contains, and no note on whether comments are public or scoped to approvers.

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 clauses with zero filler and the resource and endpoint front-loaded. It is efficient, though it leans heavily on the URL path as its information carrier instead of stating the scope in prose.

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 read-only list tool with annotations covering the safety profile, the definition is minimally sufficient to invoke correctly. With no output schema, however, the description should at least hint at the returned shape and whether results are paginated, and it does not.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden for the single 'id' parameter, and it partially does so by revealing through the URL path that id is an approval ID rather than a workspace or comment ID. However, it gives no format or example value for that ID.

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 pairs a specific verb ('List') with a specific resource ('comments') and, via the embedded endpoint path GET /v1/approvals/{id}/comments, makes clear the comments are scoped to one approval. That implicitly separates it from the sibling approvals_comment (which writes a comment), though the description never names that sibling explicitly.

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 call this versus alternatives such as approvals_list or approvals_comment, and no stated preconditions (e.g., that the approval must be visible to the caller). The embedded endpoint path is the only hint about context.

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

approvals_rejectReject (id = action id)B

Reject (id = action id) (POST /v1/approvals/{id}/reject). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.1/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds genuinely useful behavior the annotations cannot convey — that nothing is sent unless confirm: true and that there is no server-side dry run, so the preview is the only safety net. It stops short of stating whether a rejection is reversible or who gets notified.

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 compact clauses, front-loaded with the verb and the critical security constraint. The telegraphic "WRITE:" prefix and repeated endpoint syntax are slightly cryptic but cost almost nothing in length.

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 an irreversible mutation with no output schema and no destructive hint, the description covers the execution gate but omits consequences (irreversibility, notifications, effect on the approval workflow) and leaves body.reason unexplained. An agent could invoke it correctly, but not predict what happens after.

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

Parameters3/5

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

With 50% schema coverage, the description contributes meaning for two parameters: it clarifies that id is an action id (not an approval id) and explains the confirm gate. It says nothing about the nested body.reason field or idempotencyKey, leaving half the surface documented only by the schema.

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?

"Reject" supplies a verb and the endpoint path plus a parenthetical that the id is an "action id", so the agent knows this targets an approval action. However, it never states that it rejects a pending approval request, nor what rejecting entails, so the purpose is only inferable from the tool name and the sibling set.

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 choose this over approvals_approve or approvalLinks_decide, and no statement of preconditions (e.g., must the approval be pending, must the caller be a designated approver). The only conditional mentioned is the confirm gate, which is an execution safeguard rather than a use-case rule.

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

approvers_deleteRemove an approverA
DestructiveIdempotent

Remove an approver (DELETE /v1/approvers/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already flag destructiveHint=true and idempotentHint=true, but the description adds genuinely new behavior: nothing executes without confirm: true and there is no server-side dry run, so the confirm flag is a real enforcement gate rather than an optional nicety. It does not say what happens to pending approvals already routed to a removed approver, which keeps it below 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 short sentences with zero filler: the operation and endpoint come first, followed immediately by the write-safety constraint. Nothing is repeated from the schema beyond what adds meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a destructive single-parameter delete with no output schema and rich annotations, the definition covers what the agent most needs: the gate flag and the absence of a server-side dry run. It could still state irreversibility and the effect on in-flight approvals, which is the main remaining 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 67%, with confirm and idempotencyKey already documented in the schema; the description reinforces confirm as an execution gate ('not executed unless confirm: true'). The required id parameter carries no description in either place, so the semantics of what identifier is expected (approver id vs. user id) remains ambiguous.

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 ('Remove an approver') and pins it to an endpoint (DELETE /v1/approvers/{id}), so the agent can distinguish it from approvers_list and approvers_registerSelf. It stops short of explicitly naming those siblings, so it is clear but not fully differentiated.

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 by 'Remove an approver' and the confirm gate tells the agent how to actually execute, but there is no explicit when-to-use versus alternatives guidance, no mention of prerequisites (permissions, whether the approver must be inactive), and no warning about irreversibility.

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

approvers_listList approval-by-link approversB
Read-only

List approval-by-link approvers (GET /v1/approvers).

NameRequiredDescriptionDefault

No parameters

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 openWorldHint=true, so the safety profile is covered. The description adds only the underlying HTTP endpoint, which conveys nothing beyond that — no indication of result ordering, scope (workspace-wide vs. per-link), or pagination behavior for a list endpoint.

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 the verb and resource stated first, and no filler. The parenthetical endpoint is arguably redundant but costs little.

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 zero-parameter read-only list with no output schema, the description is minimally adequate but thin: an agent cannot tell what an 'approver' record contains or whether the list is scoped to one link or the whole workspace. Adding one clause on scope would close the gap.

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, so there is nothing for the description to disambiguate; baseline is 4. No misleading parameter guidance is present.

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 ('List') and resource ('approval-by-link approvers'), which distinguishes it from approvals_list and approvers_registerSelf/approvers_delete. It does not explicitly name those siblings or explain the boundary, but the scope wording is specific enough to route an agent.

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 call this versus approvals_list, approvers_registerSelf, or approvers_delete. The description gives no preconditions, no exclusions, and no alternative routing, leaving usage entirely to inference.

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

approvers_registerSelfRegister yourself as approverA

Register yourself as approver (POST /v1/approvers/me). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4/5.0
Behavior4/5

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

Annotations only give readOnlyHint=false and openWorldHint=true; the description adds genuinely new behavior: nothing is sent unless confirm:true, and there is no server-side dry run, so the preview is the only safety net. It stops short of describing what registration does to existing approver state or any 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?

Two short sentences, front-loaded with the action and endpoint, then the write-gate caveat. Nothing redundant and the most decision-relevant fact (confirm required) is stated up front.

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-endpoint mutation with no output schema, the definition covers the action, the endpoint, and the confirm/preview contract, which is what an agent needs to invoke it safely. Minor gaps remain around auth/permission requirements and the meaning of the slackUserId body field.

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 67% and confirm/idempotencyKey are already documented in the schema, so the description adds little. The nested body.slackUserId is only constrained by a regex pattern and the description never explains whose Slack ID it should be or what happens when omitted.

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 ('Register yourself as approver') and pins the exact endpoint (POST /v1/approvers/me). This clearly separates it from the sibling read/delete operations approvers_list and approvers_delete.

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 only implied by the 'register yourself' phrasing; there is no explicit statement of when an agent should call this versus approvers_list or an invite flow, nor any prerequisite (auth/role/workspace) guidance. The confirm gating is explained, but that is execution mechanics rather than when-to-use guidance.

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

audiences_addMembersAdd contacts to a customer list (consent required)A

Add contacts to a customer list (consent required) (POST /v1/audiences/{id}/members). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only state readOnlyHint=false and openWorldHint=true; the description adds real behavioral context by flagging that nothing is executed without confirm: true and that there is no server-side dry run, so the preview is client-side only. It stops short of saying what happens on partial failures or whether duplicates are merged.

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 operation stated first and the write gate second, so the critical safety fact is easy to spot. The stacked parentheticals (title repeated, then endpoint, then WRITE warning) make it slightly denser than necessary.

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 write tool with a nested body, no output schema, and a 4-parameter surface, the description covers the safety model but leaves the operational picture thin: no row format, no batching limit, no idempotency behavior, and no description of what the preview response contains.

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

Parameters3/5

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

With schema description coverage at 50%, confirm and idempotencyKey are already documented in the schema, so the description only reinforces the confirm gate. It adds nothing about the 'id' parameter being the audience/list identifier, the per-row email/phone shape, defaultCountryCode, or the maxItems constraint on rows.

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 gives a specific verb and resource ('Add contacts to a customer list') plus the underlying endpoint POST /v1/audiences/{id}/members. It is clearly distinguishable from audiences_removeMembers and audiences_sync by the 'add' verb, though it never names those siblings explicitly.

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 consent requirement and the confirm: true gate imply when the tool is usable and what must be done before calling, which is useful guidance. However, there is no explicit statement of when to prefer this over siblings (e.g., sync vs addMembers), no prerequisites about the list existing, and no mention of the 50,000-row batch ceiling.

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

audiences_createListCreate a customer-list audience from contacts with confirmed consent (201)A

Create a customer-list audience from contacts with confirmed consent (201) (POST /v1/audiences). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds the meaningful facts that the call is gated behind confirm: true and that omitting it returns a request preview rather than executing. It does not cover failure behavior on consent rejection or the 201 response semantics, but it substantially exceeds the annotation coverage.

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

Conciseness4/5

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

Two short sentences with the resource and endpoint front-loaded and the write-gate warning immediately after. The parenthetical '201' and repeated title phrasing are slightly redundant but cost little.

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 write tool with a nested object payload and no output schema, the definition covers the safety gate well but leaves the body shape — row limits, email/phone requirements, consent basis — entirely to the schema. An agent knows how to execute safely but not what a valid payload looks like beyond required fields.

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 67%, with confirm and idempotencyKey already documented in the schema; the description reinforces confirm's gating role. The nested body fields (rows, consent.basis, clientId, defaultCountryCode) get no added meaning beyond 'contacts with confirmed consent', leaving the largest part of the payload unexplained.

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 — creating a customer-list audience from contacts with confirmed consent — and pins it to POST /v1/audiences. The phrase 'customer-list audience' implicitly separates it from audiences_createLookalike and audiences_addMembers, though no sibling is named explicitly.

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 gives a strong execution precondition: nothing is sent unless confirm: true, and there is no server-side dry run. However, it never says when to choose this over audiences_addMembers (adding to an existing list) or audiences_createLookalike, so the routing decision is only implied.

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

audiences_createLookalikeCreate a lookalike of a synced customer list on an ad account (Action)B

Create a lookalike of a synced customer list on an ad account (Action) (POST /v1/audiences/lookalikes). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.3/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds genuinely new context by flagging the tool as a WRITE, stating that nothing is sent unless confirm: true, and noting there is no server-side dry run. What is still missing is the blast radius (new audience created on the ad account) and any rate-limit or async-processing 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?

Two compact sentences with the write-safety caveat front-loaded into the second sentence; nothing is padded. It does largely restate the title verbatim, which costs a little value but no clarity.

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 creation tool with a nested required body of five undocumented fields and no output schema, the description leaves a lot unstated — what the returned preview looks like, what constraints apply to ratio, and how idempotency behaves on retry. The write-gating note is helpful, but the parameter surface remains opaque.

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

Parameters2/5

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

Schema coverage is 67% but only for the top-level confirm and idempotencyKey, both of which already have schema descriptions. The nested body's five required fields (name, adAccountId, sourceAudienceId, countries, ratio) carry no descriptions in either the schema or the description, and the description never explains the ratio range, country-code format, or what sourceAudienceId must reference.

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 gives a specific verb, resource, and scope ("Create a lookalike of a synced customer list on an ad account") plus the HTTP endpoint, which clearly separates it from audiences_createList or audiences_addMembers. It stops short of explicitly naming a sibling, but the distinctive "lookalike" resource makes the intent 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 confirm: true requirement makes the invocation contract concrete, but there is no guidance on when to choose this over audiences_createList or when a source audience must first be synced. Prerequisites (source audience existence/sync state) and exclusions are left to inference.

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

audiences_getGet one audience with its linksB
Read-only

Get one audience with its links (GET /v1/audiences/{id}).

NameRequiredDescriptionDefault
idYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the '(GET /v1/audiences/{id})' suffix only reinforces that read-only nature. The description adds no context beyond annotations: it doesn't say what 'links' contains, what happens on a missing audience, or whether related expansions 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.

Conciseness4/5

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

A single front-loaded sentence with the verb and resource first and the endpoint appended. Nothing is wasted, though the raw endpoint reference is of limited value to an agent that cannot call HTTP directly.

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 read tool with no output schema, the definition is nearly sufficient: it names the record fetched and its links, and annotations cover the safety profile. What's missing is any description of the returned audience/links shape, which matters somewhat since no output schema exists.

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

Parameters3/5

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

Schema coverage is 0% for the single required 'id' parameter, so the description must compensate. The path template '{id}' does establish that the parameter is an audience identifier, but it gives no format, source, or example beyond that minimal hint.

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 ('Get one audience') and scopes it to a single record, which implicitly distinguishes it from audiences_list. The added 'with its links' signals extra payload, though what 'links' means is never explained.

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 only implied: fetch a single audience by id. It never names audiences_list as the alternative for browsing, nor says when a detail fetch is preferable to list, and gives no preconditions such as requiring a known id.

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

audiences_listList audiences with their ad-account links (never member data)B
Read-only

List audiences with their ad-account links (never member data) (GET /v1/audiences).

NameRequiredDescriptionDefault
clientIdNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds a genuine data-scope guarantee (member data is never included) and the underlying endpoint path, but says nothing about pagination, result caps, or ordering for a list operation across an open-world system.

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 compact sentence with the scope statement front-loaded and no filler. The nested parentheses around the exclusion and the endpoint path make it slightly harder to parse than necessary.

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 read-only list tool with annotations and no output schema, the description covers identity and scope but leaves the only parameter and all return-shape expectations (fields per audience, pagination) unexplained. Adequate, not complete.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions the single parameter clientId, so its meaning (client/workspace scoping, whether omission means "all clients") is undocumented everywhere. This is the clearest gap in the definition.

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?

Names a specific verb and resource ("List audiences") and states the payload scope ("with their ad-account links"), plus an explicit exclusion ("never member data") that separates it from audiences_addMembers/removeMembers/get without reading their schemas. It stops short of naming those siblings, so it is not 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 exclusion "never member data" implies that member-level data lives behind a different tool, but the description never names the alternative or states a positive when-to-use condition. Usage is inferable from the verb rather than spelled out.

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

audiences_removeDelete an audience (204)A
DestructiveIdempotent

Delete an audience (204) (DELETE /v1/audiences/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

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, idempotentHint=true and readOnlyHint=false. The description adds genuinely new behavior: the two-phase preview/execute model and the absence of a server-side dry run, which materially changes how an agent must call it. It stops short of saying what is destroyed alongside the audience (members, campaign references).

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 dense sentences, front-loaded with the action and endpoint, then the safety constraint. Minor waste in repeating the title verbatim ("Delete an audience (204)") and in the doubled parentheses, but no sentence is superfluous.

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 three-parameter destructive delete with no output schema, the definition covers the endpoint, the required confirm flag, the preview fallback and the 204 result. Only the blast radius of the deletion is unstated, which is a modest gap rather than a blocking one.

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 67% and both confirm and idempotencyKey are documented in the schema, so the schema carries most of the weight. The description restates the confirm contract but adds nothing about the id parameter or when to supply an idempotencyKey. Baseline 3 for a largely self-documenting 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 and resource ("Delete an audience") plus the underlying HTTP endpoint (DELETE /v1/audiences/{id}) and success status (204). That is enough to distinguish it from nearby siblings such as audiences_removeMembers or audiences_list without opening a schema.

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?

Explicitly explains the execution gate: nothing is executed unless confirm: true, and there is no server-side dry run, so the only preview path is the client-side one. It does not spell out when to prefer this over e.g. trimming members, but for a destructive delete the invocation condition is the useful guidance and it is present.

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

audiences_removeMembersRemove matching contacts locally; push with sync mode replaceA

Remove matching contacts locally; push with sync mode replace (POST /v1/audiences/{id}/members/remove). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the readOnlyHint=false/openWorldHint=true annotations, it discloses that nothing is sent unless confirm is true, that there is no server-side dry run, and that the removal is staged locally then pushed via sync mode replace. That is genuinely useful mutation context; it stops short of saying what happens to non-matching rows or whether removals are 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?

Two compact sentences with the action first and the write-gate second; no filler. The inline raw endpoint path is slightly noisy but earns some place as a routing cue.

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 nested-body write tool with no output schema and only 50% parameter coverage, it adequately covers the safety/dry-run story but omits matching semantics, partial-match behavior, and the shape of the returned preview. Enough to call it, not enough to predict the outcome.

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

Parameters3/5

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

With 50% schema coverage, the description only reinforces the confirm flag and 'matching contacts', which loosely implies rows match by email/phone. It adds nothing about defaultCountryCode, idempotencyKey, the 50,000-row cap, or matching semantics for rows, leaving half the parameters to the schema alone.

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 ('Remove matching contacts locally') plus the endpoint, and the phrase 'push with sync mode replace' distinguishes the local removal from the server-side push behavior. It does not name a specific sibling (audiences_addMembers, audiences_remove, audiences_sync) for contrast, 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 confirm: true gate implies when the call actually executes, and 'push with sync mode replace' hints at a relationship with sync, but no alternative tool is named and no explicit when-not-to-use condition is given. Usage must largely be inferred by comparing with audiences_addMembers/audiences_sync.

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

audiences_syncPush the list to an ad account: audience.create the first time, then audience.syncA

Push the list to an ad account: audience.create the first time, then audience.sync (POST /v1/audiences/{id}/sync). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Beyond readOnlyHint=false and openWorldHint=true, the description adds genuinely useful behavior: this is a WRITE, it will not execute unless confirm is true, and there is no server-side dry run, so confirming is the only safeguard. It stops short of saying what replace mode does to existing audience membership, which is the most consequential unknown for a write.

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 sentences, front-loaded with the action, ending with the safety warning. Slightly awkward API-style dotted naming ('audience.create') forces the reader to translate to tool names, but otherwise there is no wasted wording.

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 four-parameter mutation with a nested body, openWorldHint, and no output schema, the description covers the lifecycle and the confirm gate but leaves the mode semantics and the consequence of a replace sync unexplained. An agent can call it, but could plausibly wipe membership by choosing replace without any warning here.

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?

Coverage is 50%: confirm and idempotencyKey are documented in the schema, and the description partially compensates by revealing via the POST path that 'id' is the audience list id and by framing 'body' as targeting an ad account. However, the add-vs-replace 'mode' enum — the single most important semantic choice for a sync — is explained nowhere.

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 concrete verb and resource ('Push the list to an ad account') and distinguishes the sync step from the initial create step in the audience lifecycle. It does not name the actual sibling tools (audiences_createList, audiences_createLookalike), so an agent must infer the mapping from 'audience.create'/'audience.sync' to the hyphen-free tool names.

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 supplies clear routing context: use create the first time, use sync on subsequent pushes. It also states the hard precondition that nothing is sent without confirm: true. It lacks explicit exclusions (e.g., when to use audiences_remove or audiences_addMembers instead) and never names the sibling tools directly.

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

audit_listAudit log entriesD
Read-only

Audit log entries (GET /v1/audit).

NameRequiredDescriptionDefault
limitNo
actionIdNo
entityIdNo
entityTypeNo

TDQS

D1.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds nothing beyond that — no indication of default limit, ordering, retention window, or pagination behavior for a log-listing endpoint.

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?

It is a single short sentence with no padding, but the brevity comes from omission rather than discipline; there is no front-loaded statement of what the tool returns or how to narrow results.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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

For a four-parameter filtered log query with no output schema and no field documentation anywhere, the description leaves the agent unable to construct a meaningful call beyond a bare request.

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

Parameters1/5

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

Schema description coverage is 0% across four parameters (limit, actionId, entityId, entityType), and the description compensates for none of it — not even what entityType values are accepted or what limit defaults to.

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?

"Audit log entries (GET /v1/audit)" restates the tool title and name with no verb, no scope, and no statement of what an audit entry contains. The parenthetical endpoint adds nothing an agent can use to distinguish it from sibling security/members_audit tools.

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 when-to-use guidance at all, and no mention of alternatives such as members_audit or security_verifyAudit, which an agent could easily confuse with this listing tool.

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

auth_logoutEnd the dashboard sessionA

End the dashboard session (POST /v1/auth/logout). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description adds real value by disclosing the confirm gate and the important fact that there is no server-side dry run — explaining why the preview exists. It falls short of describing the effect on the credential (immediate invalidation, re-auth requirement) or idempotency 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?

Two sentences, no waste: the operation and endpoint come first, followed by the execution gate and its rationale. 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 two-parameter mutation with no output schema, the definition covers the safety gate and the preview behavior an agent needs to call it correctly. Minor gaps remain around the effect on the session token and repeated-call behavior, which the annotations do not cover either.

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 confirm and idempotencyKey are already documented in the schema. The description reinforces confirm's semantics and adds the 'no server-side dry run' rationale, but says nothing about when to supply idempotencyKey. Baseline 3 applies when the schema carries the detail.

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 ('End the dashboard session') plus the underlying endpoint POST /v1/auth/logout, which unambiguously separates it from read-oriented siblings like auth_me. It does not explicitly name auth_switchWorkspace as the contrasting session operation, but the purpose is clear on its own.

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 login-session context implies when to reach for this tool, and the confirm gate implies when the call actually executes. There is no explicit when-to-use versus alternative guidance (e.g., switching workspaces vs terminating the session) and no stated prerequisites or post-logout expectations.

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

auth_meThe caller, workspace, scopes and membershipsC
Read-only

The caller, workspace, scopes and memberships (GET /v1/auth/me).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

readOnlyHint and openWorldHint already establish this as a non-mutating external read, so the description's remaining burden is light. It nonetheless adds nothing beyond annotations: no note that it requires a valid bearer token, whether it reflects the token's scopes vs. stored user scopes, or what an error means when the session is expired.

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 short sentence with the endpoint in parentheses — nothing wasted and nothing buried. It is efficient, though it is largely a restatement of the title rather than added 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?

With no parameters, no output schema, and annotations covering the safety profile, the tool is simple enough that a terse description is not fatal. Still, since no output schema exists, the description is the only place that could say what the response looks like (user id, workspace id, scope array, membership records), and it only gestures at categories.

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, so there is nothing for the description to disambiguate and the baseline is 4. The schema coverage figure is trivially 100% on an empty object.

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 names what comes back (caller, workspace, scopes, memberships) and anchors it to GET /v1/auth/me, so an agent can infer this is an identity/context lookup. But it is phrased as a noun list lifted from the title rather than a verb+resource statement, and it draws no line against siblings like members_list or workspaces_create.

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 guidance at all: no mention of calling it first to establish workspace/scope context before other calls, and no exclusion pointing to members_list for other users' data. The agent must infer the call's role 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.

auth_switchWorkspaceSwitch workspaceA

Switch workspace (POST /v1/auth/switch-workspace). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds the crucial client-side gate that nothing is sent unless confirm: true and that there is no server-side dry run. That is real behavioral context an agent cannot get from the annotations. It stops short of describing side effects on the current session or tokens.

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 tight sentences with the write/gate warning front-loaded after the action statement; every clause carries information. It is arguably too terse on outcomes, but nothing is wasted.

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 mutation with a nested body, no output schema, and a 67% coverage rate, the definition covers the safety gate but omits permissions required, what happens to existing credentials/session state, and what the successful response contains or how the preview is shaped.

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 67% and both confirm and idempotencyKey are already documented in the schema, including the preview behavior. The description's confirm sentence largely restates the schema, and workspaceId — the required nested field — gets no additional meaning anywhere. Baseline 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?

"Switch workspace" names a specific verb and resource, and the description adds the underlying endpoint (POST /v1/auth/switch-workspace). It is clearly separable from siblings such as auth_me, auth_logout, and workspaces_create, though it never explicitly contrasts itself with them.

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 confirm gate implies the calling convention (preview first, then execute), but there is no explicit when-to-use guidance, no mention of when a workspace switch is appropriate versus, say, creating a workspace via workspaces_create, and no stated prerequisites.

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

billing_checkoutStart a Stripe checkout for a plan; returns the hosted URLA

Start a Stripe checkout for a plan; returns the hosted URL (POST /v1/billing/checkout). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses that this is a WRITE, that nothing is sent without confirm: true, and that there is no server-side dry run — material behavior for a mutating billing call. It stops short of stating side effects such as subscription creation or idempotency 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?

Two tight sentences, front-loaded with the action and return value, followed by the write-safety caveat. No filler, though the parenthetical route path is of marginal value to an agent.

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 mutating, open-world billing call with a nested body and no output schema, the description covers the return value and the confirm safety requirement. It leaves gaps on what planId accepts and what the preview response contains, which matter 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 coverage is 67%: confirm and idempotencyKey are already documented in the schema, and the description mainly restates the confirm semantics. The required nested field body.planId has no explanation anywhere, and the description adds no meaning about accepted plan identifiers.

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 ('Start a Stripe checkout for a plan') plus the outcome ('returns the hosted URL') and even the underlying route. It doesn't explicitly distinguish itself from billing_portal or billing_overview, 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 Guidelines3/5

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

The confirm gate gives a concrete execution rule and warns there is no server-side dry run, which is useful usage context. However, it offers no guidance on when to pick this over the sibling billing_overview/billing_portal tools, leaving that 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.

billing_overviewPlan, standing, this month usage against limits and the running charge (admin)C
Read-only

Plan, standing, this month usage against limits and the running charge (admin) (GET /v1/billing).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description's only additional behavioral signal is the '(admin)' marker, implying elevated permission is required, plus the GET verb confirming a read; it says nothing about rate limits, workspace scoping, or what the 'running charge' represents (estimate vs settled).

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?

It is a single short line, so nothing is padded, but it is front-loaded with a duplicate of the title and then the raw HTTP path. Every token is already available in structured fields, so no sentence earns extra value.

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 zero-parameter read tool with no output schema, the description does list the data categories returned, which is the minimum an agent needs to judge relevance. It stops short of describing the response shape or how 'standing' and 'running charge' are computed, which matters for a billing tool where an agent may need to report numbers accurately.

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, so the baseline is 4 and there is no parameter meaning for the description to add. Schema coverage is 100% and empty, so nothing is left undocumented.

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 enumerates the resource's contents (plan, standing, usage against limits, running charge) and appends the endpoint, which lets an agent infer this is a read-only billing summary rather than an action. However it is a noun phrase with no verb, and it is essentially a verbatim restatement of the title, so the reader gains no framing beyond the label.

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 the nearby billing_checkout, billing_portal, or billing_referral tools. The agent must infer from names alone that this is the read path and those are the mutation/payment paths.

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

billing_portalOpen the Stripe customer portal; returns the hosted URLA

Open the Stripe customer portal; returns the hosted URL (POST /v1/billing/portal). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Beyond readOnlyHint=false and openWorldHint=true, the description discloses the POST endpoint, the confirm:true execution gate, and the absence of a server-side dry run. These details substantially clarify execution safety, although authorization prerequisites and URL or session limitations are not 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?

One compact statement front-loads the purpose and result, then provides the endpoint and execution safeguard. There is no filler, and the dry-run caveat 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, the description covers the operation, result, endpoint, and execution guard, including return information that is absent from an output schema. It could still clarify prerequisites, whose Stripe customer is used, URL or session behavior, and when to prefer it over the other billing 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 coverage is 100%, and both confirm and idempotencyKey are already documented there. The description mostly repeats confirm's role, adding only the useful clarification that there is no server-side dry run.

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 the action and resource—opening the Stripe customer portal—and states that it returns the hosted URL. It does not explicitly distinguish this flow from billing_checkout, billing_overview, or billing_referral.

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 confirm gate explains how to preview versus execute, but that is primarily invocation mechanics rather than guidance about when this flow is appropriate. No alternatives or exclusions are named, so selection among the billing siblings remains implied.

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

billing_referralRefer and earn: the signed-in admin partner link and stats from Referalli (admin)B
Read-only

Refer and earn: the signed-in admin partner link and stats from Referalli (admin) (GET /v1/referral).

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior3/5

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

readOnlyHint=true and openWorldHint=true already tell the agent this is a safe external read, so the description's burden is lighter. It adds two useful facts beyond the annotations: the data belongs to the currently signed-in admin and it originates from a third-party service (Referalli). It says nothing about auth failure modes, rate limits, or what happens when no referral program is active.

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?

It is a single short sentence with no padding, which is good, but the content is near-verbatim duplication of the title plus an HTTP method and path that add little decision value for an agent. The most useful phrase, 'signed-in admin', is buried mid-sentence rather than front-loaded.

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 zero-parameter, read-only lookup with no output schema, the description covers the essentials: who the data belongs to and where it comes from. However, with no output schema to describe the return shape, the description should say more about what 'link and stats' actually contains.

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, so there is nothing for the description to disambiguate and the baseline is 4. The description correctly implies no inputs are required by framing the result as 'the signed-in admin' context, which is derived from the session rather than an argument.

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 does name the resource (the signed-in admin's partner link and stats, sourced from Referalli), so an agent knows roughly what comes back, but the verb is only implied by the parenthetical 'GET /v1/referral' and the text largely restates the title. It gives no basis for distinguishing this from adjacent billing tools such as billing_overview, billing_checkout, or billing_portal.

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 guidance, no precondition stated beyond 'signed-in admin', and no mention of any alternative or exclusion. The agent must infer that this is a read-only referral-program lookup purely from the annotation set.

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

branding_getWhite-label branding (defaults when unset)B
Read-only

White-label branding (defaults when unset) (GET /v1/branding).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral detail — unset fields fall back to defaults — but says nothing about workspace scoping, permissions, or what the returned branding comprises.

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?

Extremely short and front-loaded, with the useful "defaults when unset" caveat placed early. The parenthetical path duplicates information already implied by the tool name, but the total cost is minimal.

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 zero-parameter read with annotations covering the safety profile, the definition is minimally adequate. However, with no output schema, the description should indicate what a branding payload contains (logo, colors, custom domain, etc.) so an agent knows whether the default fallback covers its need.

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, so there is nothing for the description to disambiguate and the baseline is 4. Schema description coverage is 100% with an empty properties object, leaving no gap to compensate for.

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?

"White-label branding" restates the tool name and title, and the only specificity comes from the parenthetical HTTP path (GET /v1/branding), which implies a read. It does not explicitly state that it returns the workspace's branding configuration, nor distinguish itself from the sibling branding_set beyond the implicit get/set split.

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 guidance and no mention of the obvious alternative, branding_set. An agent must infer the read-vs-write routing purely from the naming convention rather than from any stated condition.

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

branding_setReplace the workspace branding (admin)A
Idempotent

Replace the workspace branding (admin) (PUT /v1/branding). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and idempotentHint=true but say nothing about execution gating; the description adds that without confirm: true no request is sent and a preview is returned, and that there is no server-side dry run. 'Replace' also signals full overwrite rather than a partial patch, which is meaningful for a 6-field required body. It could go further on reversibility or what the preview contains.

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, front-loaded with the action and the safety gate. The opening clause largely restates the title, which is minor waste, but nothing else is extraneous.

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 mutation tool with a nested object body, no output schema and full-overwrite semantics, the description covers the execute gate but leaves gaps: it does not say whether the body fully replaces all branding fields (wiping anything unset), what the preview response looks like, or what permissions/plan tier are required beyond 'admin'.

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 67%, so the baseline is 3. The description reinforces the meaning of confirm (the write gate) but adds nothing about the nested body's six required fields, their formats, or whether omitted/null values clear existing settings — those rely entirely on schema patterns and nullability.

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 ('Replace the workspace branding') plus the underlying endpoint (PUT /v1/branding) and an admin qualifier, so the agent knows exactly what is mutated. It does not explicitly distinguish itself from the sibling branding_get, but 'replace' versus read 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 conveys the critical gate (nothing executes without confirm: true), which implicitly tells the agent when the write actually happens. It gives no guidance on when to use this versus branding_get for inspection, nor any prerequisites such as required admin role beyond the parenthetical label.

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

campaigns_createCreate a campaign on an ad account (created paused unless status is given)A

Create a campaign on an ad account (created paused unless status is given) (POST /v1/campaigns). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds the crucial behavior that calls are simulated unless confirm is true, and that campaigns land in paused state unless status is supplied. What it does not cover is permission requirements, validation failure behavior, or what the dry-run preview returns.

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 tight sentences with the safety-critical dry-run rule placed prominently at the end. The opening sentence largely duplicates the tool title, which is minor redundancy but does no harm.

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 mutation tool with no output schema, the description covers the two things an agent could get wrong: accidental execution (dry run by default) and unexpected entity state (created paused). The remaining details are carried by a rich, mostly documented input 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 description coverage is 67%, and the description only elaborates on two things the schema already documents: the status default and confirm/idempotency semantics. The nested body fields (bid, budget, platformNative, destinationUrl) get no explanation in the description beyond inline schema text.

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?

Names a specific verb and resource (create a campaign on an ad account) and states the endpoint POST /v1/campaigns. The default-paused clause narrows behavior usefully, but the description never distinguishes this from siblings such as campaigns_update or campaigns_setStatus.

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 dry-run-by-default rule plus 'set confirm: true to execute' is genuinely actionable guidance on how to invoke it safely. However, there is no stated when-to-use versus alternatives (e.g., campaigns_update for existing campaigns, crosspost_launch for multi-platform deployment), so routing between siblings is left to inference.

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

campaigns_getGet one campaignC
Read-only

Get one campaign (GET /v1/campaigns/{id}).

NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only the REST path, saying nothing about behavior when the campaign is missing, permission/workspace scoping, or response shape — modest 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?

One sentence, front-loaded, zero padding. It is appropriately terse for a simple single-entity read, though the terseness borders on under-specification rather than optimal density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

The tool is simple (one required param, no output schema), so a short description is defensible, and the annotations carry the read-only profile. Still, for an open-world external-facing fetch, the agent gets no hint about identifier format or failure 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 0% for the single parameter, but the description does show it as a path placeholder ({id}) for a campaign, which adds a small amount of meaning beyond the bare 'id: string'. It does not state whether the id is a numeric internal id, a slug, or a platform-level id.

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 ('Get') and resource ('one campaign'), which cleanly distinguishes retrieval of a single record from the sibling campaigns_list. The HTTP endpoint notation reinforces that this is a single-item fetch keyed by an id.

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 phrase 'one campaign' implicitly contrasts with campaigns_list, but there is no explicit when-to-use guidance, no mention of what happens when the id is unknown, and no routing advice among the many campaign siblings (campaigns_update, campaigns_setStatus, campaigns_list). The agent must infer usage.

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

campaigns_listList campaigns, optionally filtered by client, platform, ad account or statusA
Read-only

List campaigns, optionally filtered by client, platform, ad account or status (GET /v1/campaigns).

NameRequiredDescriptionDefault
statusNo
clientIdNo
platformNo
adAccountIdNo
crossCampaignIdNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the backing endpoint (GET /v1/campaigns), which is modestly useful for debugging, but says nothing about ordering, default result limits, or pagination behavior for what is likely an unbounded list.

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; the filter list comes before the endpoint annotation. Slightly dense but appropriately sized for a list endpoint.

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?

Wait—reflecting complexity: with a read-only list tool, 5 optional params, no output schema, and annotations covering safety, the description is close to sufficient, but the undocumented crossCampaignId and absent pagination note leave real gaps. Score 3 (minimum viable plus), not 4.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load. It names four of the five filters (client, platform, ad account, status) and maps them to clear meanings, but omits crossCampaignId entirely, leaving an unexplained parameter, and gives no ID format or enum guidance 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 gives a specific verb and resource ("List campaigns") plus the four filter axes, so an agent immediately knows this is a read-many endpoint. It stops short of distinguishing itself from siblings such as campaigns_get or analytics_breakdown, which also surface campaign data.

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?

"Optionally filtered by" implies the filters can be combined or omitted, giving implicit guidance on scoped vs. bulk listing. There is no explicit statement of when to prefer campaigns_get, no note on result volume or pagination, and no exclusions.

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

campaigns_setStatusSet a campaign status (pause, resume, archive)A

Set a campaign status (pause, resume, archive) (POST /v1/campaigns/{id}/status). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses important behavior beyond the annotations: it is a WRITE operation and defaults to a dry run unless confirm is true. This aligns with readOnlyHint=false and adds meaningful execution context, though consequences of each status change and permission requirements are not described.

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 core action and endpoint front-loaded, followed by the critical dry-run behavior. There is no unnecessary wording.

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 four parameters, a nested body object, and minimal annotations, but the description covers only the high-level action and dry-run semantics. It is adequate for a status-setter but leaves gaps around id semantics, status enum coverage, and the effects of destructive statuses like archived or deleted.

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 50%, with confirm and idempotencyKey already documented in the schema. The description adds some meaning by naming actions like pause, resume, and archive, but it does not explain the id parameter or fully map those actions to the enum values (active, paused, archived, deleted, pending).

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 verb and resource: set a campaign status, with explicit examples (pause, resume, archive) and the POST endpoint. It is immediately distinguishable from sibling tools like campaigns_update or campaigns_create.

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 operational usage guidance for execution: it is a write operation, dry run by default, and requires confirm: true to execute. However, it does not explicitly say when to use this tool versus campaigns_update or campaigns_get, leaving alternative selection implied.

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

campaigns_updateUpdate a campaign (name, budget, schedule, status, platformNative)A

Update a campaign (name, budget, schedule, status, platformNative) (PATCH /v1/campaigns/{id}). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond the annotations: annotations only say readOnlyHint=false and openWorldHint=true, while the description discloses the critical safety behavior that the call is a dry run by default and only executes when confirm: true is set. It does not say whether the body is a partial merge or full replacement, or what the dry-run preview contains, which keeps it from 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 short sentences with zero waste: purpose and target fields first, then the write/safety constraint. The most consequential detail (dry run by default) is stated plainly and last, which still reads cleanly.

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 a nested body, no output schema, and two required parameters, the description covers the essentials: the endpoint, the writable surface, and the confirm gate. Remaining gaps are patch semantics (are omitted fields preserved?) and permission requirements, which matter for a destructive-capable write on an open-world API.

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 only 50%, so the description should compensate more than it does. It does enumerate the writable fields (name, budget, schedule, status, platformNative), which helps map intent to the nested body, but it uses 'schedule' where the schema has startAt/endAt and says nothing about the nested budget micros/currency shape or platformNative's free-form contents.

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 (Update), resource (campaign), the mutable field groups, and the underlying endpoint (PATCH /v1/campaigns/{id}). It does not distinguish itself from the sibling campaigns_setStatus, which also changes status, so an agent cannot tell from the description alone which of the two to pick for a status change.

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 only implied by the verb 'update' – there is no statement of when to prefer this over campaigns_setStatus, campaigns_create, or campaigns_get. The dry-run/confirm sentence is operational guidance for invoking this tool, not guidance for selecting among alternatives.

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

clients_createCreate a client (admin)B

Create a client (admin) (POST /v1/clients). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.4/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true) the description discloses that nothing is sent unless confirm: true and, importantly, that there is no server-side dry run — a real behavioral caveat an agent would otherwise miss. It does not describe the preview payload or whether the write 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?

Two short sentences, front-loaded with the action and immediately followed by the write gate. The only slightly redundant element is repeating the title verbatim before the endpoint.

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 critical safety gate is covered, but for a nested-body creation tool with no output schema the description never indicates what a successful call returns (the created client, its id) or that the preview response shape differs from the executed one. Adequate but with clear gaps for an agent handling the result.

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 67% and both confirm and idempotencyKey already carry their own schema descriptions, so the description adds no parameter-level meaning. The nested body fields (name, reportingCurrency, timezone) are left entirely to the schema, which is acceptable but not additive.

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 ('Create a client') plus the admin scope and underlying endpoint (POST /v1/clients), which is enough to separate it from clients_list and clients_update by name alone. It stops short of explicitly positioning it against those siblings.

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 statement of when to use this versus clients_update or clients_list, and no note on prerequisites such as admin role or workspace context. The only conditional given is the confirm gate, which is execution mechanics rather than tool-choice guidance.

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

clients_listList clientsB
Read-only

List clients (GET /v1/clients).

NameRequiredDescriptionDefault

No parameters

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 openWorldHint=true, so the safety profile is covered. The description adds only the HTTP endpoint path; it says nothing about result volume, pagination, ordering, or whether the listing is workspace-scoped — behavior an agent would need before calling.

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 short sentence with the endpoint in parentheses — front-loaded, zero filler, nothing redundant. It is terse to the point of thinness, but no sentence is wasted.

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 zero-parameter read tool with annotations and no output schema, the essentials are present, but the description never indicates the shape or volume of the returned client list. An agent knows what it does but not what to expect back.

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 schema is empty, so there is no parameter meaning to convey. Baseline 4 applies because nothing is left undocumented.

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 ("List clients") plus the underlying endpoint GET /v1/clients, so the operation is unambiguous. It does not, however, distinguish this read from the sibling clients_create or clients_update, nor note that it returns all clients regardless of filtering.

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 versus the sibling clients_create/clients_update tools, and no mention of prerequisites such as workspace scoping or pagination. The agent must infer that this is the read-only listing counterpart purely from the name.

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

clients_updateChange a client timezoneA

Change a client timezone (PATCH /v1/clients/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds that there is no server-side dry run and that omitting confirm returns a preview instead of sending the request. That is meaningful behavior beyond the annotations and consistent with them. It still does not say what the preview or success response contains.

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 clauses, front-loaded with the verb, resource, and endpoint, followed by the safety gate. No redundant restatement of the name or title and nothing that could be cut.

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-field mutation with a confirm gate and no output schema, the description covers the essentials: what changes, that it is a write, that nothing executes without confirm, and that a preview is returned. It leaves unaddressed what the preview/response looks like and whether the change is reversible, which is a small residual 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 50% — confirm and idempotencyKey are documented in the schema, while id and body.timezone are bare. The description clarifies the confirm gate (no send without it, preview otherwise) but adds nothing about id, the timezone value format, or idempotency-key semantics, so it only partially compensates for the coverage gap.

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 (Change) and resource (a client timezone) plus the underlying endpoint PATCH /v1/clients/{id}, which pins down that this is a narrowly scoped field update rather than a general client edit. It would be a 5 if it explicitly distinguished itself from clients_create or a broader client update, but an agent can already tell what it 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 gives a hard execution prerequisite — nothing is sent unless confirm: true is passed — which is real usage guidance. It offers no when-to-use vs when-not guidance relative to siblings and no prerequisites (auth scope, client existence), so usage is only partially covered.

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

connections_createCreate a connection from a platform and credentials (201); write-onlyA

Create a connection from a platform and credentials (201); write-only (POST /v1/connections). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations, the description discloses important write behavior: the operation is not executed unless confirm is true, and there is no server-side dry run. It does not cover broader behavior such as authentication requirements or the exact success response, but it materially improves safety awareness for a write 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 short, front-loaded, and every sentence contributes useful information. The endpoint, write-only nature, confirmation requirement, and lack of server-side dry run are all stated without unnecessary wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a write tool with a nested body, a large platform enum, and no output schema, the description provides the key operational context: confirm-to-execute and no server-side dry run. It could say more about the success response or credentials handling, but the schema and annotations cover enough that the definition 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 coverage is 67%, so the schema carries much of the parameter documentation burden. The description adds meaning by naming platform and credentials and by emphasizing confirm: true, but it omits the required label field and does not explain the credentials object or idempotencyKey beyond what the schema already says.

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 a specific verb and resource: create a connection from a platform and credentials, and identifies the POST endpoint. It is clear on its own, but it does not distinguish itself from close siblings such as connections_createWithCredentials or connections_oauthStart, which can matter in this tool family.

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 explains the confirmation gate but gives no explicit guidance on when to use this tool versus alternatives. With siblings like connections_createWithCredentials and connections_oauthStart present, the lack of routing guidance is a meaningful gap.

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

connections_createWithCredentialsConnect a non-OAuth platform with write-only credentials (201)A

Connect a non-OAuth platform with write-only credentials (201) (POST /v1/connections/credentials). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds the genuinely important behavioral fact that the write is not executed unless confirm: true and that there is no server-side dry run, which materially changes how an agent must call it. The 'write-only credentials' phrasing also hints that stored secrets are not readable back, though it is not spelled out.

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 operation and the safety gate front-loaded; nothing superfluous. The '(201)' and duplicated endpoint path are mild noise but not obscuring.

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 nested-body creation tool with no output schema, the description covers the mutation gate but leaves the agent guessing about the shape of the credentials map per platform and about what the preview response contains. Adequate for a safe call, not complete for a correct one.

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 67%, so the schema already documents confirm and idempotencyKey. The description reinforces the confirm gate and adds 'write-only' meaning to the credentials object, but says nothing about what credential keys a given platform expects, which is the hardest part of the freeform credentials field.

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?

Names a specific verb and resource: connect a non-OAuth platform using write-only credentials, plus the underlying endpoint POST /v1/connections/credentials. The 'non-OAuth' qualifier implicitly separates it from connections_oauthStart and connections_create, but it never names those siblings explicitly.

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 scope 'non-OAuth platform' implies when to use it, and the confirm gate implies a preview-first workflow, but there is no explicit statement like 'use this instead of connections_oauthStart for platforms without OAuth' nor any prerequisites or exclusions.

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

connections_discoverAccountsDiscover and store the ad accounts reachable through a connectionA

Discover and store the ad accounts reachable through a connection (POST /v1/connections/{id}/discover). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses two non-obvious behaviors: the write is gated on confirm being true, and there is no server-side dry run, so the confirm preview is the only safety net. That is genuinely useful context an agent cannot infer from the annotation flags; it stops short of saying what happens to previously stored accounts or how repeat runs behave.

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: the operation and endpoint come first, the write-safety caveat second. Nothing is redundant and the most decision-relevant fact (the confirm gate) is front-loaded right after the purpose.

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?

There is no output schema, so the description carries the burden of explaining what comes back, and it only implies the preview via the confirm caveat — the discovered account payload and what 'store' means for existing records are unstated. For a mutation that both reads external state and persists it, this leaves a 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 coverage is 67%, below the 80% threshold where the schema alone justifies a baseline of 3. The description reinforces the meaning of 'confirm' and adds the 'no server-side dry run' caveat that the schema lacks, but it says nothing about 'id' (which connection is targeted) or how idempotencyKey interacts with a repeated discovery.

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 pairs a specific verb ('Discover and store') with a specific resource ('ad accounts reachable through a connection') and even names the endpoint, so an agent knows exactly what the call does. It does not explicitly distinguish itself from nearby siblings like adAccounts_list, adAccounts_sync, or connections_health, which keeps it below 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 only usage guidance is the confirmation gate ('WRITE: not executed unless confirm: true'), which tells the agent how to invoke it but not when to choose it over adAccounts_list or adAccounts_sync. There is no statement of prerequisites (e.g., that the connection must already exist and be healthy) 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.

connections_healthPer-connection health: status, token expiry, scopes and sync freshnessC
Read-only

Per-connection health: status, token expiry, scopes and sync freshness (GET /v1/connections/health).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered elsewhere. Beyond that, the description adds only the endpoint path (GET /v1/connections/health); it says nothing about what happens for expired tokens, whether unhealthy connections cause errors or per-item results, or the shape of the response. Since there is no output schema, that gap is on the description.

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 compact clause with zero filler, and the resource is front-loaded. It is a fragment rather than a sentence, and the parenthetical endpoint duplicates nothing but adds little for an agent that cannot make raw HTTP calls.

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 zero-parameter read tool with safety covered by annotations, this is close to adequate — it says which fields come back. But with no output schema, an agent still does not know whether results are per-connection objects or aggregated, nor whether expiry/scopes are flagged as problems.

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, which is the baseline-4 case: there is nothing for the description to disambiguate. The description correctly implies a workspace-wide sweep with no filtering arguments.

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 names the resource (per-connection health) and enumerates the four data points returned: status, token expiry, scopes, sync freshness. However, it is verb-less and essentially restates the title plus an HTTP route, so the distinction from siblings like connections_list or auth_me relies on the reader inferring 'health' means diagnostics rather than listing.

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 call this versus connections_list (which would show connections exist) or ops_health (service-level health). No preconditions, no mention of which connections are covered, and no exclusions. The agent must guess the diagnostic intent 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.

connections_importMetricsImport daily campaign metrics (CSV or rows) into a manual, no-API connectionA

Import daily campaign metrics (CSV or rows) into a manual, no-API connection (POST /v1/connections/{id}/import-metrics). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYesexactly one of csv or rows
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true. The description adds genuinely non-obvious behavior: the call is destructive-on-confirm with no server-side dry run, and it degrades to a request preview when confirm is absent. It does not cover partial-failure behavior, sync vs async, or idempotency semantics, which are relevant for a bulk mutation.

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

Conciseness5/5

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

Two tight sentences: purpose and endpoint first, then the write-safety warning. Nothing is repeated and the critical gating constraint is not buried.

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 nested-body mutation with no output schema, the description supplies the safety model an agent most needs before calling. It could say more about what the response contains (import job, counts, rejected rows) and about large-import behavior, but it is broadly sufficient.

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 75% and the nested body already documents csv-or-rows exclusivity, row requirements, and confirm's preview behavior. The description only restates the CSV/rows choice and confirm gating, adding no format or sizing 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.

Purpose4/5

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

States a specific verb (Import), resource (daily campaign metrics), and target (a manual, no-API connection), plus the underlying endpoint. The qualifier 'manual, no-API connection' separates it from OAuth/credential-based connection siblings, though no sibling such as revenue_importCsv or tracking_ingest is named explicitly.

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?

Gives one concrete usage rule: the write is not executed unless confirm: true, and without it a preview is returned. That is a real precondition, but there is no guidance on choosing this over adjacent ingestion tools (revenue_importCsv, tracking_ingest) or on when a manual connection is the right target.

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

connections_listList platform connections (no credentials are ever returned)B
Read-only

List platform connections (no credentials are ever returned) (GET /v1/connections).

NameRequiredDescriptionDefault

No parameters

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 openWorldHint=true, so safety is covered. The 'no credentials are ever returned' clause is a genuinely useful behavioural assurance about the payload, but it is repeated from the title and nothing is said about pagination or result volume for an open-world listing.

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 the verb and resource first, plus the HTTP route as a trailing detail. The parenthetical credentials note duplicates the title, which is mild redundancy rather than bloat.

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 parameterless read endpoint this is close to adequate, but with no output schema the description never indicates what a 'connection' record contains or whether the response is paginated. A single clause on the return shape would close the gap.

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 schema is fully specified, so there is nothing for the description to compensate for. Baseline 4 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?

States a specific verb plus resource (list platform connections) and disambiguates from the mutation siblings (connections_create, connections_createWithCredentials) by making clear this is the read path. It does not explicitly name a sibling alternative, 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 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 at all. An agent gets no signal on how this differs from connections_health, platforms_list, or connections_discoverAccounts, which are the closest neighbouring read operations.

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

connections_oauthCallbackComplete an OAuth connect flow with the code and state from the redirect (201)A

Complete an OAuth connect flow with the code and state from the redirect (201) (POST /v1/connections/oauth/{platform}/callback). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
platformYes
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4.3/5.0
Behavior5/5

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

This is the strongest part of the description, as it adds critical safety behavioral traits not covered by annotations. It explicitly warns that the operation is a WRITE and has no server-side dry run, which is crucial for an agent attempting an OAuth connection.

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 definition is extremely concise and efficient. Both sentences serve a clear purpose: describing the functionality and issuing a critical operational warning, avoiding any unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given the complexity of the platform enum and nested body structure, the description successfully covers the functional and safety requirements. It informs the agent exactly *how* this tool must be used in the overall OAuth workflow to avoid unintended consequences.

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?

While the schema is technically detailed, the description provides essential technical meaning, such as the use of a POST request and the specific API endpoint structure. It also explains the functional role of the `confirm` boolean 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 clearly identifies the tool's purpose as completing an OAuth flow using specific inputs like code and state. By naming the method and endpoint structure, it clearly defines its function within the API flow. It is distinguished from starting the flow, which would be in a 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 Guidelines4/5

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

It provides excellent guidance by contextualizing the use case (redirect handling) and emphasizing the required `confirm: true` for actual execution. This strongly implies that if this parameter is omitted, the tool acts as a validation/preview rather than an execution tool.

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

connections_oauthStartStart an OAuth connect flow; returns the authorize URL to openB
Read-only

Start an OAuth connect flow; returns the authorize URL to open (GET /v1/connections/oauth/{platform}/start).

NameRequiredDescriptionDefault
platformYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the tool returns an authorize URL to open, which is useful behavioral context, but omits important flow details like the need for user interaction and the subsequent callback.

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. The key verb, resource, return value, and endpoint are all stated compactly.

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 one-parameter tool, the description covers purpose and return value, but it lacks parameter explanation, usage guidance, and flow context. Given the missing output schema and 0% parameter coverage, a complete definition should say more about the platform argument and the OAuth sequence.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only embeds '{platform}' in the endpoint path without explaining the platform parameter, its required status, or what the enum values represent, adding no 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?

The description states a specific verb and resource: 'Start an OAuth connect flow; returns the authorize URL to open'. This distinguishes it from most siblings like connections_list or connections_create, though it does not explicitly contrast with connections_oauthCallback or connections_createWithCredentials.

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 mention alternatives such as connections_createWithCredentials or the required follow-up call to connections_oauthCallback, leaving the agent to infer the full flow from tool names alone.

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

conversions_listDeliveriesList conversion deliveries, newest firstB
Read-only

List conversion deliveries, newest first (GET /v1/conversions/deliveries).

NameRequiredDescriptionDefault
limitNo
statusNocomma separated delivery statuses
integrationIdNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds the useful behavioral fact that results come newest-first. It omits other traits that matter for this endpoint, such as whether results are capped at the 500 limit with no paging, and what a delivery record contains.

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 tight sentence with the ordering and endpoint front-loaded and no filler. It is arguably over-terse, but nothing is redundant.

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 a simple read-only tool with three optional params and no output schema, the description is minimally adequate, but it leaves real gaps: status value vocabulary, the meaning of integrationId, and the absence of pagination beyond limit=500. Those matter for calling this correctly on a newest-first listing.

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

Parameters2/5

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

Schema coverage is only 33% — only status carries a schema description, while limit and integrationId are bare typed fields. The description adds nothing about any parameter: not the valid status strings, not whether integrationId narrows to a single source, and not that limit caps at 500 with no cursor.

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 gives a specific verb and resource ("List conversion deliveries") plus the sort order, and the resource name distinguishes it from the sibling deliveries tools notifications_listDeliveries and reports_listDeliveries. It does not, however, contrast with conversions_listIntegrations or conversions_requeue, so sibling routing still requires inference.

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 guidance at all — nothing says whether this is for auditing failed sends, checking delivery status, or monitoring a specific integration. No exclusions or alternatives (e.g. conversions_requeue, notifications_retryDelivery) are named, so the agent must guess 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.

conversions_listIntegrationsList conversion API integrations per ad accountB
Read-only

List conversion API integrations per ad account (GET /v1/conversions/integrations).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds only the GET endpoint path. It does not explain return shape, pagination, authentication needs, rate limits, or whether results are scoped to the current workspace or all ad accounts.

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 wording. The endpoint parenthetical is compact and does not obscure the purpose.

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 no-parameter list tool with annotations and no output schema, the description is adequate but thin. It leaves unclear what is actually returned and how results are scoped, which matters for an open-world integration-listing operation.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to clarify; the baseline is 4. The phrase 'per ad account' might suggest scoping, but there is no corresponding input parameter to document.

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: list conversion API integrations per ad account, and includes the underlying GET endpoint. It is clear enough to distinguish this from mutation siblings such as conversions_setIntegration, though it does not explicitly name 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 explicit when-to-use or when-not-to-use guidance. The name implies listing, but the description does not say how this differs from siblings like conversions_listDeliveries, conversions_requeue, or revenue_listIntegrations.

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

conversions_requeueRetry a dead or needs_review delivery with a fresh budgetA

Retry a dead or needs_review delivery with a fresh budget (POST /v1/conversions/deliveries/{id}/requeue). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds the critical safety fact that this is a WRITE which will not execute without confirm: true and that there is no server-side dry run, so the preview is purely client-side. It does not say whether requeue resets attempt counters, discards prior delivery state, or what permissions are required.

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, both load-bearing: the action and endpoint come first, the write-safety caveat second. No filler, no 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 mutating retry endpoint with a nested body object, no output schema and a 50% documented schema, the description covers the essential decision points: what qualifies for requeue and the confirm gate. Gaps remain around post-requeue state (budget reset, idempotency on repeated calls) and error conditions.

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 50%, with confirm, idempotencyKey and acceptStale already documented inline. The description's confirm/write note largely restates the schema's own confirm description and adds no meaning for 'id', 'body', 'acceptStale' or idempotency behavior, so it only marginally compensates for the coverage gap.

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

Purpose5/5

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

States a specific verb (retry), a specific resource (a dead or needs_review delivery), and the effect (fresh budget), plus the underlying endpoint POST /v1/conversions/deliveries/{id}/requeue. The state qualifier 'dead or needs_review' distinguishes it from conversions_send and conversions_listDeliveries without opening either schema.

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 preconditions for use are explicit: the delivery must be in a dead or needs_review state. That is stronger than implied usage. However, it never names alternatives (e.g. re-sending via conversions_send, or notifications_retryDelivery for the notification-delivery domain) or states when not to requeue.

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

conversions_sendFan one stored event out to every enabled conversion integration (202)B

Fan one stored event out to every enabled conversion integration (202) (POST /v1/conversions/send). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare a non-read-only, open-world mutation, and the description usefully adds the 202-style fan-out behavior plus the fact that omitting confirm returns a preview and that no server-side dry run exists. It does not disclose what the 202 response contains at the delivery level, whether fan-out is partial-failure tolerant, or whether idempotency matters for retries — meaningful gaps for a fan-out write.

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 dense sentences, front-loaded with the purpose and endpoint, then the write gate — no filler. The stacked parentheticals make it slightly clunky to parse but nothing is redundant with 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?

For a nested-body write with no output schema, the description covers the critical execution gate and the preview return path, which is the highest-value information. It stops short on the fan-out semantics an agent would need — partial failure behavior, per-integration results, and what the consent/adAccountIds fields actually control.

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 67%, so the schema already documents confirm and idempotencyKey; the description only reinforces the confirm gate rather than adding new meaning. The nested body fields (consent, userData identifiers, adAccountIds, sourceUrl) — the parameters most likely to be misused — receive no treatment in the description, which is the main shortfall.

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 ("Fan one stored event out to every enabled conversion integration") plus the HTTP operation (POST /v1/conversions/send), so an agent knows exactly what the call does. It implicitly separates itself from conversions_listDeliveries and conversions_requeue, but never names an alternative, so it falls 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 Guidelines3/5

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

The only explicit usage constraint is the write gate: nothing is sent unless confirm is true, and there is no server-side dry run. There is no guidance on when to prefer this fan-out over conversions_requeue for redelivery or conversions_setIntegration for configuration; the agent must infer that from the tool names.

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

conversions_setIntegrationEnable or configure conversion API delivery for an ad accountA
Idempotent

Enable or configure conversion API delivery for an ad account (PUT /v1/conversions/integrations/{adAccountId}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
adAccountIdYes
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Goes meaningfully beyond the annotations by disclosing the confirm: true gate and that the operation has no server-side dry run, which is exactly the kind of safety context an agent needs before a mutation. It does not say what happens to an existing config when enabled is toggled, nor what the preview response contains.

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, no filler, with the action and endpoint front-loaded and the write-safety caveat immediately after. Every clause 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?

For a mutation tool with a nested free-form config object, no output schema, and only 50% schema coverage, the description leaves the most consequential parameter (config) undefined. The confirm/no-dry-run disclosure is valuable, but an agent still cannot tell what config shape to supply.

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 50%, and the description only echoes the confirm requirement already documented in the schema while the path template hints at adAccountId's role. The body fields (enabled, config, eventTypes) — including a free-form config object — get no explanation in the description.

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+resource (enable or configure conversion API delivery) and anchors it to the concrete endpoint PUT /v1/conversions/integrations/{adAccountId}. This separates it from conversions_listIntegrations by HTTP method, though the description never names the sibling it is not.

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 by the purpose statement and the confirm gate clarifies the execution condition, but there is no explicit guidance on when to prefer this over revenue_createIntegration, conversions_send, or conversions_listIntegrations, and no stated prerequisites.

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

creativeLibrary_contentDownload the stored file (content type is the file mime)B
Read-only

Download the stored file (content type is the file mime) (GET /v1/creative-library/{id}/content).

NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the response content type follows the file's MIME type, which is useful behavioral context, but says nothing about binary payload handling, size limits, or authorization requirements.

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 short sentence with the action front-loaded and the endpoint appended. The parenthetical about MIME type is somewhat awkwardly nested but still earns its place; nothing is padded.

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 no output schema, the description does carry some burden for describing the return value, and it does mention that the response is the file content typed by its MIME. However, it leaves unresolved how to obtain a valid id and how the binary response is delivered, which matters for a download tool.

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

Parameters2/5

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

Schema description coverage is 0% for the single 'id' parameter, and the description only echoes the path template. It does not clarify whether 'id' is the creative-library item id, the file id, or which of the sibling listing tools supplies 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 specific verb and resource ('Download the stored file') and pins it to an endpoint (GET /v1/creative-library/{id}/content), so an agent can tell it retrieves file bytes rather than metadata. It does not explicitly contrast with the nearby creativeLibrary_file or creativeLibrary_get siblings, which keeps it below 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?

There is no guidance on when to call this versus creativeLibrary_file, creativeLibrary_get, or creativeLibrary_list. The agent must infer from names alone that this is the binary-download path while the others return metadata.

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

creativeLibrary_fileSigned, expiring link platforms fetch an uploaded creative from (bytes)C
Read-only

Signed, expiring link platforms fetch an uploaded creative from (bytes) (GET /v1/creative-files/{id}).

NameRequiredDescriptionDefault
idYes
wsYes
expYes
sigYesHMAC signature, the credential

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: the link is signed and time-limited, and the payload is raw bytes rather than a JSON document. It stops short of explaining what happens when the signature expires or fails, or what error shape is returned.

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?

It is a single short sentence, so there is no padding, but the wording is awkward and self-interrupting ('from (bytes)', a parenthetical dropped mid-clause), which makes it harder to parse than a clean verb-resource statement. It is brief without being well-structured.

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 four required parameters and no output schema, the description carries real explanatory burden that it does not meet: it never says the parameters are supplied by the signed URL rather than chosen by the caller, nor what the byte payload is (image? zip? content type), nor how expiry failures surface. For a byte-stream retrieval endpoint that is a meaningful gap.

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

Parameters2/5

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

Schema description coverage is only 25% — only 'sig' (HMAC signature, the credential) is documented, leaving id, ws, and exp bare. The description compensates only minimally by showing {id} in the path template and signaling via 'signed, expiring link' that exp is an expiry timestamp, but ws and the exp semantics/units are left for the agent to infer.

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 sentence names a concrete verb ('fetch') and resource ('uploaded creative ... bytes') and includes the endpoint path GET /v1/creative-files/{id}, so the operation is identifiable. However, the phrasing is garbled ('link platforms fetch an uploaded creative from (bytes)') and it never distinguishes this from close siblings like creativeLibrary_content or creativeLibrary_get, so an agent can't route between them from this text.

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 explicit when-to-use guidance, no mention of when not to use it, and no reference to the alternative tools (creativeLibrary_content, creativeLibrary_get, creativeLibrary_list) that also expose creative data. The only implied cue is 'signed, expiring link', which hints at pre-authorized URL access but is not framed as a selection rule.

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

creativeLibrary_getGet one library itemC
Read-only

Get one library item (GET /v1/creative-library/{id}).

NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the raw endpoint path; it says nothing about what a fetched item contains, whether missing ids error, or how this differs from the content/file variants.

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 with the endpoint in parentheses — no wasted words. It is efficient but borders on under-specified rather than merely concise.

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 one-parameter read with readOnly annotations, little explanation is strictly required. However, with no output schema and three sibling tools in the same namespace, the description should at least indicate what an item record is versus a file/content fetch.

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

Parameters2/5

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

Schema coverage is 0%, so the single required `id` is undocumented. The path template `{id}` implies it is the library item identifier, which is a small gain, but nothing states the expected format (numeric, UUID) or where an agent obtains a valid id.

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 gives a specific verb and resource ("Get one library item") plus the underlying endpoint, so an agent knows exactly what is fetched. It does not distinguish this from close siblings like creativeLibrary_content or creativeLibrary_file, which likely return the asset itself rather than an item record.

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 versus creativeLibrary_list (browse many) or creativeLibrary_content/file (retrieve the asset). The agent must infer the choice from names alone.

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

creativeLibrary_listList library itemsC
Read-only

List library items (GET /v1/creative-library).

NameRequiredDescriptionDefault
tagNo
kindNo
limitNo
clientIdNo

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. Beyond that, the description only restates the HTTP endpoint; it says nothing about pagination, default limits, ordering, empty results, or whether all items or only the caller's items are returned.

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 short sentence plus the endpoint path, front-loaded and free of filler. It is concise, though its brevity reflects under-specification rather than disciplined editing.

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 four undocumented optional parameters, no output schema, and no notes on filtering or result shape, the definition leaves too much unspecified for a listing endpoint an agent may need to filter or paginate. It should at least explain what tag, kind, limit, and clientId filter.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides zero information about the four parameters (tag, kind, limit, clientId). The agent gets no meaning for 'tag' scoping, the image/video enum, or how limit interacts with pagination.

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 names a specific verb+resource ('List library items') and adds the endpoint path, so the basic action is unambiguous. However, it gives no differentiation from siblings like creativeLibrary_get, creativeLibrary_content, or creativeLibrary_file, leaving the agent to infer that this is a collection-level listing rather than a single-item fetch.

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 creativeLibrary_get (single item) or creativeLibrary_content (content retrieval). 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.

creativeLibrary_planResizeCrop boxes per platform placement; touches no pixelsB
Read-only

Crop boxes per platform placement; touches no pixels (POST /v1/creative-library/{id}/resize-plan).

NameRequiredDescriptionDefault
idYes
bodyYes

TDQS

B3.1/5.0
Behavior3/5

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

The readOnlyHint=true annotation is consistent with 'touches no pixels', and the description reinforces that no destructive write occurs. However it does not disclose what the endpoint returns, whether the plan is persisted, or any limits, so it adds only modest 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.

Conciseness4/5

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

A single tight sentence plus endpoint with zero filler and the non-destructive guarantee front-loaded. It is telegraphic rather than explanatory, but nothing is wasted.

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 no output schema, 0% parameter descriptions, and a nested body containing enums and a coordinate object, this tool needs much more than one clause. The description leaves the return shape (what a crop box looks like) and nearly all parameter semantics unaddressed.

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

Parameters2/5

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

Schema description coverage is 0% and the body is nested with four undocumented fields: mode (cover/contain), focal x/y, platforms, and placements. The description explains none of these — notably the distinction between 'platforms' and 'placements' and that focal coordinates are normalized — leaving the agent to guess 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 concrete operation — computing crop boxes per platform placement — and adds the crucial qualifier that no pixels are modified, plus the endpoint. Combined with the title it is clearly distinguishable from creativeLibrary_resize, though it never names that sibling explicitly.

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?

'Touches no pixels' implies a dry-run/preview usage ahead of an actual resize, but the description never says when to call this instead of creativeLibrary_resize or what to do with the result. Usage is inferable rather than stated.

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

creativeLibrary_publishValidate against the account platform, then upload the item as a creative (Action)A

Validate against the account platform, then upload the item as a creative (Action) (POST /v1/creative-library/{id}/publish). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses genuinely useful behavior: the operation is a real write that only fires with confirm:true, there is no server-side dry run, and omitting confirm returns a request preview rather than executing. What is not covered is failure semantics - whether a validation failure aborts before any upload, and whether a partial publish is possible.

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 sentences, front-loaded with the action and its gate, with the endpoint appended. The parenthetical '(Action)' and the restated title add little, but nothing is padded or buried.

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 nested-body mutation with no output schema, the definition covers the confirm gate and the preview return but omits what a successful publish returns, permission requirements, and what happens when platform validation fails. Adequate to call safely, but not 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 coverage is 50%: confirm and idempotencyKey are documented in the schema, while id and body.adAccountId are not. The description explains the confirm gate and the absence of a dry run (which motivates confirm), but says nothing about what id refers to (a creative library item id) or what adAccountId governs for this call, so it only partly compensates for the coverage gap.

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 two-step action (validate against the account platform, then upload as a creative) and pins it to POST /v1/creative-library/{id}/publish, so the agent knows exactly what resource is being acted on. It is weakened slightly by reuse of the verbs 'validate' and 'upload', which are also dedicated sibling tools (creativeLibrary_validate, creativeLibrary_upload), without saying how this differs from calling them separately.

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: this is the step that turns a library item into a live creative on an ad account. However, it never states when an agent should prefer creativeLibrary_validate or creativeLibrary_upload instead, nor any prerequisite such as the item already being uploaded or the account being connected.

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

creativeLibrary_removeDelete a library item and its stored file (204)A
DestructiveIdempotent

Delete a library item and its stored file (204) (DELETE /v1/creative-library/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is largely covered. The description nevertheless adds material context beyond them: the 204 response, the fact that this is a write gated behind confirm, and critically that there is no server-side dry run, meaning the confirm gate is the only safeguard.

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, front-loaded with the action and the confirm requirement, with no filler. The stacked parentheticals '(204) (DELETE /v1/creative-library/{id})' are slightly cluttered but each fragment carries distinct 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 three-parameter destructive tool with no output schema, the definition covers the essentials: what is destroyed (item plus stored file), the success status (204), and the client-side gating. It omits whether deletion is reversible and what errors occur when the ID is missing or referenced elsewhere, which keeps it short of 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 coverage is 67%: confirm and idempotencyKey are documented in the schema, while id has no description in either place. The description adds the confirm gating semantics but says nothing about what `id` refers to or its format, so it does not compensate for the remaining coverage gap. Baseline 3 is appropriate when the schema carries most of the 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?

States a specific verb+resource ('Delete a library item and its stored file') and disambiguates scope by noting the stored file is removed too, with the concrete endpoint DELETE /v1/creative-library/{id}. It is clearly distinct from read siblings like creativeLibrary_get, creativeLibrary_file, and creativeLibrary_content, though it does not explicitly contrast itself with any 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?

Implies the two-step usage pattern via 'WRITE: not executed unless confirm: true', so an agent learns the tool will not act without a confirmation parameter. It never states when to use this versus another route (e.g. unpublishing vs deleting) or any prerequisites/permissions required.

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

creativeLibrary_resizePlan and, if a resize engine is installed, create resized variants (images only)B

Plan and, if a resize engine is installed, create resized variants (images only) (POST /v1/creative-library/{id}/resize). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.4/5.0
Behavior3/5

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

Annotations only cover readOnlyHint=false and openWorldHint=true, so the description usefully fills in the write gate, the absence of a server-side dry run, and the fact that output degrades to a request preview when confirm is omitted or no engine is installed. It stops short of what the preview looks like, what happens to existing assets when variants are created, or whether repeat calls duplicate work despite the idempotency key.

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 tight sentences, front-loaded with the action and the execution condition, no filler. The parenthetical path at the end is low value to an agent but harmless.

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 4-parameter mutation with a nested object and no output schema, the description needs to carry more weight than it does. The safety story is reasonably covered, but the body parameters that determine what resize is produced are entirely undocumented, and the 'resize engine installed' condition is left unexplained.

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 50%: confirm and idempotencyKey are already documented in the schema, and the description only restates the confirm gate. The nested body is completely opaque in both places — mode's cover/contain choice, focal x/y as normalized coordinates, and how platforms vs placements differ get no explanation anywhere. That is the main semantic gap for a request-shaping tool.

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 ('create resized variants'), names the endpoint, and constrains scope to images only. The dual 'plan and, if a resize engine is installed, create' framing is a bit murky about what the tool actually returns, and the description never distinguishes it from the sibling creativeLibrary_planResize, which has an almost identical name and likely overlapping job.

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

Usage Guidelines3/5

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

It gives a concrete execution gate ('not executed unless confirm: true') and an implicit read/plan precondition, so the agent knows how to run it safely. But with a sibling literally named creativeLibrary_planResize, the definition never says when to call this one versus that one, which is the central routing decision an agent faces here.

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

creativeLibrary_tagAdd and remove tags (20 max)B

Add and remove tags (20 max) (PATCH /v1/creative-library/{id}/tags). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds genuinely useful behavior the agent could not otherwise infer: the call is a no-op unless confirm:true is supplied, and there is no server-side dry run, so the preview is client-side only. It stops short of disclosing whether removals are irreversible, what happens when the 20-tag ceiling is exceeded, or whether permission scopes are required.

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 compact sentences, front-loaded with the operation and immediately followed by the safety gate, with zero filler. Minor redundancy: '20 max' is duplicated from the title and could instead be used for a more informative detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a mutating tool with a nested body and no output schema, the description covers the critical confirm/preview contract, which is the most important omission risk. However, it leaves out the tag-count boundary behavior, the failure semantics of remove, and any authorization notes, so an agent still lacks a full picture of 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?

Schema description coverage is 50%, and the schema already documents confirm, idempotencyKey, and the add-item character set, so the baseline is 3. The description's '20 max' restates the schema's maxItems=20 rather than adding meaning, and it says nothing about the id path parameter or the semantics of the remove array (e.g., whether removing a non-existent tag errors).

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 pair and resource (add/remove tags on a creative-library item) and anchors it to the PATCH /v1/creative-library/{id}/tags endpoint, so the agent can distinguish it from read-only siblings like creativeLibrary_get and creativeLibrary_list. It does not explicitly name a sibling alternative, but no sibling overlaps in function, so ambiguity is low.

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 beyond the confirm gate. Nothing tells the agent when to prefer this over creativeLibrary_upload, creativeLibrary_file, or creativeLibrary_remove, nor what prerequisites (permissions, existing tags) are needed. The 20-max limit is stated but not framed as a decision constraint.

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

creativeLibrary_uploadUpload a creative as raw bytes (100 MB max, Content-Length); 200 if duplicateA

Upload a creative as raw bytes (100 MB max, Content-Length); 200 if duplicate (POST /v1/creative-library/upload). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYesraw file bytes
nameYes
tagsNocomma separated
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
clientIdNo
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses that the call is gated on confirm, that there is no server-side dry run, the 100 MB/Content-Length transport constraint, and that a duplicate returns 200 rather than erroring. These are real behavioral facts an agent needs. It stops short of saying what the preview response contains or what happens on non-duplicate conflicts.

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 dense sentences with the operation, constraints, and endpoint front-loaded and no filler. The telegraphic semicolon style is compact and readable, though the interleaving of format, limits, and status codes makes it slightly scannable-hostile.

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 six-parameter binary upload mutation with no output schema, the description covers the critical items: size limit, transport framing, the confirm gate, no dry run, and duplicate handling. Missing only secondary detail such as accepted content types and what the preview payload looks like.

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 67% and the description only reinforces the confirm gate, which the schema already explains. The meaning of name, tags, clientId, and idempotencyKey is left entirely to the schema, so the description adds little parameter-level meaning 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?

States a specific verb+resource ('Upload a creative as raw bytes') plus the wire format (raw bytes, Content-Length) and the endpoint path, which is concrete. It does not distinguish itself from nearby siblings like creativeLibrary_file or creatives_upload, so an agent cannot tell from the description alone which upload path applies.

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 an important execution condition ('not executed unless confirm: true') and notes there is no server-side dry run, which implies the preview-then-execute pattern. It offers no guidance on when to pick this tool over creativeLibrary_file or creatives_upload, so sibling selection is left to inference.

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

creativeLibrary_validateCheck the item (and optional copy) against each platform creative specB
Read-only

Check the item (and optional copy) against each platform creative spec (POST /v1/creative-library/{id}/validate).

NameRequiredDescriptionDefault
idYes
bodyYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-dependency behavior are covered. The description adds the useful nuance that this is a POST that only 'checks' (i.e., does not mutate), but says nothing about what the validation returns, whether it calls out to platform APIs, or what happens on failure.

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?

One front-loaded sentence with no padding, but the parenthetical HTTP path and method consume half the text without helping an agent decide or call correctly. Space that could have gone to output or parameter meaning is spent on an internal endpoint reference.

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 a two-parameter, read-only validation tool with no output schema, the description plus annotations cover the core contract adequately: check an item (and optional copy) against platform specs. What is missing is the shape of the result (per-platform pass/fail) and platform-name semantics, which moderately limits usefulness.

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

Parameters2/5

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

Schema description coverage is 0% for a nested body with body, headline and platforms, so the description carries the burden and largely fails it. Only '(and optional copy)' hints that body/headline are ad copy fields; the platforms array, string length limits, and whether id is the creative item or something else are never clarified.

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

Purpose4/5

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

The description states a specific verb ('Check') and resource ('the item ... against each platform creative spec'), which is enough to distinguish it from siblings such as creativeLibrary_get, creativeLibrary_content or creativeLibrary_resize. It is clear what the tool does, even if the notion of a 'spec check' is left undefined.

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 guidance: nothing says whether to run this before publish, before resize, or as a standalone audit, and no alternative tool is named. The agent must infer its place in the workflow 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.

creatives_uploadUpload a creative to an ad account from asset URLsB

Upload a creative to an ad account from asset URLs (POST /v1/creatives). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

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 openWorldHint=true, so the write nature is partly covered; the description nonetheless adds real value by stating 'WRITE' explicitly and disclosing that calls are dry-run by default and require confirm: true to actually execute. It stops short of stating what gets created, whether the operation is reversible, or what permissions/scope the ad account requires.

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 action and endpoint front-loaded and the safety-critical dry-run default placed immediately after. Every clause carries information an agent needs before calling.

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 write tool with a nested body and no output schema, the description covers the essentials an agent must know to avoid an unintended real upload, which is the highest-risk aspect here. The remaining omission is what the response contains (e.g. the created creative's ID), but with a create-and-preview flow 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 description coverage is 67%, so the schema carries most of the load for the nested body/assets structure, and the description adds essentially nothing about adAccountId, type, assets, or platformNative. Only the asset-URL source is echoed ('from asset URLs'), which is already visible in the schema. Baseline 3 is appropriate for mid 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?

States a specific verb and resource ('Upload a creative to an ad account') plus the source of content ('from asset URLs') and the backing endpoint (POST /v1/creatives). It is clear what the tool does, but it does nothing to distinguish itself from the near-identically named sibling creativeLibrary_upload, which an agent could easily confuse.

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 never says when to use this tool rather than creativeLibrary_upload, creativeLibrary_file, or creativeLibrary_validate. The only guidance is the dry-run mechanic, which is about how the call behaves, not when to select it. With three plausibly competing upload/create siblings, this gap is material.

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

crosspost_launchLaunch one campaign across platforms; children are created paused, then activatedA

Launch one campaign across platforms; children are created paused, then activated (POST /v1/crosspost/launch). WRITE: dry run by default; set confirm: true to execute.

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute for real. Without it this runs as a dry run (validate and preview only).
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds meaningful behavior beyond that — default dry-run safety, the explicit opt-in flag, and the two-phase side effect where children are created paused before activation. It stops short of describing failure behavior for invalid briefs, partial platform failures, or what the launch response reports.

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, the destructive-triggering detail front-loaded, and no filler. The endpoint path is a useful anchor and costs almost nothing.

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 critical semantics (default-safe dry run, confirm, paused children) are covered, so an agent can call it safely. But for a high-complexity fan-out write with a large required brief and no output schema, the description says nothing about required brief contents, what a dry run returns, or idempotency behavior.

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

Parameters2/5

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

The only parameter insight (confirm triggers real execution) merely restates the schema's own description for confirm, and idempotencyKey is not mentioned at all. The 'body' CampaignBrief — a large, deeply nested object with essentially no field descriptions — is left entirely unexplained, so the description does not compensate for the schema gap on the parameter that matters most.

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 scope: launch ONE campaign across multiple platforms, verbatim 'Launch one campaign across platforms'. The added lifecycle note ('children are created paused, then activated') tells an agent exactly what the operation produces, which distinguishes it from crosspost_preview/crosspost_resolve without opening a schema.

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 the crucial conditional: dry run by default, set confirm: true to actually execute. That is real when/when-not guidance for a write. It does not name alternatives (e.g., crosspost_preview for inspection, campaigns_create for single-platform) or state prerequisites like a valid connection per target platform.

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

crosspost_previewPlan a cross-platform launch without sending anything (dry run); returns the planB
Read-only

Plan a cross-platform launch without sending anything (dry run); returns the plan (POST /v1/crosspost/preview).

NameRequiredDescriptionDefault
bodyYes

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, and the description is consistent with them by confirming nothing is sent. It adds only that a plan is returned; it says nothing about validation failure behavior, whether a failed preview still returns a partial plan, or what the plan contains. Given annotations carry the safety profile, this is adequate but thin.

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 with no filler, ending with the endpoint path. It is efficient, though it spends words restating the title and gives the endpoint before any substantive body guidance.

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 tool whose input is a large nested campaign brief and whose output is an undescribed 'plan' (no output schema), the description omits the two things an agent most needs: what the request body must contain and what the returned plan looks like (per-platform issues, warnings, resolved IDs). "Returns the plan" is not enough given the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0% and there is one deeply nested body parameter (CampaignBrief with split policies, micros/currency budgets, platformOverrides keyed by ~400 platforms, and an acceptUnknownSpec toggle). The description mentions none of this, so it does not compensate for the coverage gap at all — an agent must reverse-engineer the entire contract from the schema structure alone.

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 definition states a specific verb and resource — plan a cross-platform launch in dry-run mode — plus the REST endpoint it maps to. "Without sending anything" implicitly contrasts it with crosspost_launch, but the sibling is never named, so the differentiation relies on inference.

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 dry-run framing implies when to use it (validate a plan before committing), but there is no explicit instruction such as "use before crosspost_launch" and no statement about when preview is unnecessary or what to do with the returned plan. Usage must be inferred from the phrase 'without sending anything'.

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

crosspost_resolveResolve a partial launch: retry failed children, activate the succeeded, or discardA

Resolve a partial launch: retry failed children, activate the succeeded, or discard (POST /v1/crosspost/{id}/resolve). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYesthe parent launch action id
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the safety profile is thin; the description adds materially by flagging WRITE semantics, the confirm:true gate, and the important fact that there is no server-side dry run — meaning the preview is a client-side request echo, not a validated simulation. What it omits is the blast radius of each op: 'discard' presumably destroys child launches, and no reversibility or permission information is given.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the purpose and the action set, followed by the endpoint and the critical write/confirm caveat. No filler, and the most decision-relevant constraint is placed where it will be read.

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 destructive-capable, nested-body write tool with no output schema and openWorldHint=true, the description covers the confirm gate and the absence of a dry run but leaves out the effects and reversibility of each op, what the preview response contains, and whether retrying is bounded. Enough to call it safely-ish, not enough to call it confidently.

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 75% and the schema itself documents id, confirm, and idempotencyKey, so the description's confirm note largely restates the field description. Its real contribution is mapping the three enumerated op values to their effects, but that mapping is only lexical ('retry failed' vs. 'discard') and does not explain consequences such as whether discard deletes children or what state activate_succeeded leaves them in.

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 concrete verb ('Resolve') on a concrete resource ('a partial launch') and enumerates the three possible actions (retry failed children, activate the succeeded, discard), so the agent knows exactly what outcome space it is choosing from. It also pins the endpoint POST /v1/crosspost/{id}/resolve. It does not explicitly contrast itself with the sibling crosspost_launch / crosspost_preview, so sibling differentiation is inferred rather than 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 trigger condition ('a partial launch') is implied clearly enough that an agent can infer this is post-launch recovery, not initial launching. However, there is no explicit when-not-to-use guidance, no pointer to crosspost_launch for fresh launches or crosspost_preview for inspection, and no guidance on which of the three ops to pick in a given failure state.

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

fx_listFX rates used by cap math (global data)C
Read-only

FX rates used by cap math (global data) (GET /v1/fx-rates).

NameRequiredDescriptionDefault
baseNo
limitNo
quoteNo

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and data-source scope are covered structurally. The description adds nothing beyond an endpoint path — no pagination behavior, no rate-limit or freshness notes, and no indication of what the global dataset contains. Against the lower bar set by annotations, it still contributes almost nothing.

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

Conciseness3/5

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

The single sentence is short and free of padding, so there is no verbosity problem. But it is a fragment that duplicates the title verbatim and appends a path, meaning its brevity comes from under-specification rather than tight editing.

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 three-parameter, no-required-args tool with no output schema, an agent needs at least to know whether omitting base/quote returns a full matrix and what limit bounds. None of that is covered. The definition is callable only by guessing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the full burden for three parameters (base, quote, limit). It says nothing about them. However, the rules state that 0-param baseline is 4; here there are three parameters with constraints in the schema (3-char ISO codes, limit 1-500) that are inferable from types, which keeps this just above the floor rather than at 1-2.

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 is a verbatim restatement of the title plus an HTTP path: "FX rates used by cap math (global data) (GET /v1/fx-rates)." It signals the resource (FX rates) but uses a passive participle rather than a verb, so it never states the operation an agent performs (list/retrieve). No sibling is distinguished, even though operator_loadFxRates is closely related.

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 guidance, no exclusions, and no mention of the obvious alternative, operator_loadFxRates. The parenthetical "used by cap math" hints at consumption context but does not tell an agent when to call this versus the operator tool. Usage must be entirely inferred.

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

invites_createInvite someone by emailA

Invite someone by email (POST /v1/invites). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds the important detail that the write is gated behind confirm: true and that there is no server-side dry run, which an agent cannot infer from the annotations. It still says nothing about required permissions or error behaviour for an open-world mutation.

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, front-loaded clauses with no wasted wording; the write-safety caveat comes before any subordinate detail. It is arguably too terse rather than padded, but nothing is redundant.

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 no output schema, the description should say more about what comes back (preview payload vs. created invite) and about authorization requirements for an open-world write. For a nested-body mutation tool, the current two sentences are minimal but not wrong.

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 67%, and the confirm and idempotencyKey parameters are already documented in the schema, so the description's mention of confirm largely restates structured data. The nested body fields (role enum values, clientId, permissions) are unexplained in both places, leaving the gap unfilled.

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 gives a specific verb and resource ("Invite someone by email") plus the underlying endpoint POST /v1/invites, so the action is unambiguous. It does not name the neighbouring invites_preview or invites_revoke tools, so sibling differentiation is only implied by the verb.

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 clearly states the precondition for execution (confirm: true) and that otherwise nothing is sent, which is real usage guidance. It never points to invites_preview as the way to inspect an invite or to invites_list for existing invites, so the when-to-use-this-vs-alternatives guidance is inferred rather than explicit.

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

invites_listList invitesC
Read-only

List invites (GET /v1/invites).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured fields. The description adds nothing beyond the endpoint path: no return shape, no pagination behavior, no indication of what 'invites' includes (pending/expired), and no auth context for an open-world listing.

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 a parenthetical endpoint, no filler or redundancy. It is as short as it can be, though brevity here edges into under-specification rather than efficiency.

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 zero-parameter read-only list tool with annotations covering safety, the definition is minimally sufficient to invoke. However, with no output schema and no statement about result contents, ordering, or pagination, an agent cannot anticipate what it will receive.

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 has zero parameters at 100% coverage, so there is nothing for the description to disambiguate. Baseline 4 applies; the endpoint annotation is a small extra.

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?

"List invites" states a verb and resource, but it essentially restates the tool name and title; the only added information is the HTTP endpoint GET /v1/invites. It does not distinguish the tool from siblings like invites_preview or invites_create beyond what the name already implies.

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 versus invites_preview or invites_create, no mention of required permissions, and no note on pagination or result limits for this open-world read. The agent must infer all of this 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.

invites_previewPreview an invite linkC
Read-only

Preview an invite link (GET /v1/auth/invites/{token}).

NameRequiredDescriptionDefault
tokenYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description only restates the read nature by showing a GET path; it does not say what the preview returns (workspace name, inviter, expiry), whether invalid tokens error or return empty, or whether the call is unauthenticated — meaningful behavioral gaps for an open-world read.

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 short, front-loaded sentence with no filler, and the endpoint is placed parenthetically where it does not obstruct scanning. It is efficient, though efficiency here partly reflects under-specification rather than disciplined editing.

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 no output schema and only minimal annotations, the description carries the burden of explaining the return payload and error behavior, and it does neither. For a preview endpoint whose entire value is the inspected metadata, this leaves the agent unable to anticipate results.

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

Parameters2/5

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

Schema coverage is 0% and the single token parameter has no description, type detail, or format. The description only echoes '{token}' inside the endpoint path, which hints that the token is an invite identifier but adds no sourcing, format, or validity information beyond what the schema shows.

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 gives a specific verb (preview) and resource (an invite link) plus the concrete endpoint GET /v1/auth/invites/{token}, which distinguishes it from siblings like invites_create, invites_revoke, invites_list, and invites_list. It does not explicitly name those siblings, so it stops short of full 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 rather than invites_list or the invite-acceptance flow, no prerequisites (e.g. whether the caller must be authenticated or a workspace member), and no statement about what a valid vs. expired token means. The agent must infer all usage context.

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

invites_revokeRevoke an inviteA
DestructiveIdempotent

Revoke an invite (DELETE /v1/invites/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

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 idempotentHint=true, so the safety profile is known; the description adds the non-obvious fact that this destructive write has no server-side dry run and is intercepted client-side by confirm. That is meaningful context beyond the structured fields, though it says nothing about reversibility or required permissions.

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, front-loaded with the action and endpoint, followed immediately by the write-safety constraint. Nothing is padded or restated.

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 destructive three-parameter mutation with no output schema, the description covers the essential unknowns: endpoint, confirm gating, and the absence of a server-side dry run, including what happens without confirm (a request preview is returned). Only error behavior, permissions, and permanence of the revocation are unaddressed.

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?

At 67% schema coverage, the confirm and idempotencyKey parameters are already documented in the schema and the description only restates the confirm gate. The required id parameter carries no description in the schema; the endpoint template /v1/invites/{id} implies it is the invite identifier, which is useful but thin compensation.

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 (revoke) and resource (an invite) and pins it to the exact endpoint DELETE /v1/invites/{id}. The resource name alone separates it from invites_list, invites_create, and invites_preview in the sibling set, so an agent can route without opening a 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 description gives a hard invocation condition (confirm: true or nothing is executed), which is real usage guidance, but it never contrasts the tool with invites_preview or explains when revoking is the right action versus simply letting an invite expire. Usage is implied by the resource name rather than stated.

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

members_auditRole and access changes, newest firstB
Read-only

Role and access changes, newest first (GET /v1/members/audit).

NameRequiredDescriptionDefault

No parameters

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 openWorldHint=true, so the safety profile is covered and the bar is lower. The description adds the ordering guarantee ('newest first') and the HTTP path, which is modest but real context; it says nothing about pagination, time-range limits, or retention, which matter for an audit feed.

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 short sentence with the ordering fact front-loaded; nothing is padded. The trailing endpoint reference is mild noise for a non-HTTP consumer but is cheap and often useful.

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 zero-parameter read tool this is close to sufficient, but with no output schema the description should still say roughly what each audit entry contains and whether results are paginated or capped. An agent can call it, but cannot predict the shape or volume of the response.

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, so there is no schema-level parameter semantics to compensate for; baseline 4 applies. The description implicitly confirms the call takes no filters (no date range or user argument is mentioned).

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 resource and content clearly (role and access changes) and adds the ordering ('newest first') plus the underlying endpoint GET /v1/members/audit, so an agent knows this is a read of a member audit log. It does not distinguish itself from siblings like audit_list or security_verifyAudit, so the verb and scope are only implicitly scoped to members.

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 explicit statement of when to use this versus members_list, audit_list, or security_verifyAudit. The 'newest first' ordering hints at recency-checking use, but no conditions, exclusions, or alternatives are offered.

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

members_listList workspace members (admin session)C
Read-only

List workspace members (admin session) (GET /v1/members).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and openness are covered. The description adds only the 'admin session' permission hint and the raw GET path, saying nothing about pagination, result size, or response shape for what is presumably an open-world collection endpoint.

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?

It is one short sentence with no wasted clauses, but the brevity comes from under-specification rather than economy of expression. The '(GET /v1/members)' fragment is the only content not already present in 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 parameterless list tool with no output schema, the description should at minimum indicate what fields a member record contains or whether results are paginated. Neither is present, and the 'admin session' qualifier is never explained.

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, so there is no parameter semantics to explain; the schema carries no burden here. Baseline 4 applies for a parameterless tool.

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 is essentially the title repeated: 'List workspace members (admin session)' restates the tool name members_list with no additional specificity. It does not distinguish itself from siblings like members_audit, members_update, or members_remove, which an agent must choose between when handling member-related tasks.

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 explicit guidance on when to use this versus members_audit or the other member tools. The parenthetical 'admin session' faintly signals a privileged context but never states prerequisites, exclusions, or alternatives.

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

members_removeRemove a memberA
DestructiveIdempotent

Remove a member (DELETE /v1/members/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint, idempotentHint, and readOnlyHint=false, so the safety profile is covered. The description still adds genuine value by disclosing that the call is a no-op without confirm: true and that there is no server-side dry run, meaning the preview is purely client-side — context an agent cannot get from 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 short sentences, zero filler. The identity of the operation comes first and the critical execution gate is front-loaded in caps, which is exactly the right emphasis for a 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?

For a destructive three-parameter tool with no output schema, the description covers the essentials: what it does, the endpoint, and the confirm gate. It stops short of stating whether removal is permanent/reversible or what side effects occur (audit entries, cascading access loss), which would fully close the gap for a destructive 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 67% and the schema itself already explains confirm ('Set true to execute... a preview of the request is returned') and idempotencyKey. The description mostly echoes the confirm semantics while adding the 'no server-side dry run' nuance; it adds nothing about the `id` parameter, so it sits at the schema-driven baseline rather than above 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?

States a specific verb+resource ('Remove a member') and pins it to the REST endpoint DELETE /v1/members/{id}, which unambiguously separates it from members_list, members_update, and members_audit. It does not explicitly name a sibling to avoid, but the destructive verb makes the boundary self-evident.

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 confirm-gating sentence tells the agent how to actually trigger the write, which is useful operational guidance. However, it gives no guidance on when to prefer this over alternatives such as members_update (deactivate/role change) or invites_revoke, and no prerequisites or permission requirements are mentioned.

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

members_updateChange role, client or grantsA

Change role, client or grants (PATCH /v1/members/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Goes meaningfully beyond the annotations (readOnlyHint=false, openWorldHint=true) by disclosing that nothing is executed without confirm:true and that there is no server-side dry run — critical for an irreversible remote mutation. It does not state permission requirements or what the preview/response contains, which would have pushed this higher.

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 dense sentences: the operation and endpoint first, the safety constraint second. No filler, and the most important caveat is front-loaded in caps.

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 nested-body mutation with no output schema, the essential missing piece for correct invocation — the confirm preview gate — is covered. Gaps are secondary: no mention of what the preview returns, no authorization notes, no idempotency guidance.

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 50%; the description's 'role, client or grants' informally maps to role, clientId and permissions, which helps the agent interpret 'grants'. However idempotencyKey is untouched and no value constraints (allowed roles, maxItems 2) are added — those live purely 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?

States a specific verb plus the mutable fields ('Change role, client or grants') and pins the resource with 'PATCH /v1/members/{id}'. It is clearly a membership mutation, distinct from members_list/members_audit, though it never names a sibling to contrast with members_remove.

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?

Implicitly tells the agent this is the update path for an existing member, but gives no when-to-use vs. members_remove or invites_create, and no prerequisites (e.g., who may change owner role). The confirm gate is presented as a procedural rule rather than usage guidance.

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

notes_createPin a note to a date, client or campaignA

Pin a note to a date, client or campaign (POST /v1/notes). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds the materially important behavior that the write is gated behind confirm:true and that there is no server-side dry run, with a preview returned instead. That is genuine disclosure beyond structured fields, though it omits auth requirements, duplicate-prevention semantics, and any limits on note volume or rate.

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 and the endpoint front-loaded and the safety constraint immediately after. The parenthetical about no server-side dry run is dense but 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.

Completeness4/5

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

For a gated write tool with no output schema, the description covers the critical agent-facing facts: it is a write, it needs confirm:true, and a preview comes back otherwise. The remaining gap is the undocumented nested body fields, which neither schema nor description explains, but a caller can still invoke the tool correctly from what is given.

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 67%, so the baseline is 3; the confirm and idempotencyKey parameters are already documented in the schema and the description only repeats the confirm behavior. The nested body object (body, date, clientId, campaignId) carries no descriptions in the schema and the description adds no meaning about which pinning target should be supplied or whether they are mutually exclusive.

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 gives a specific verb and resource ("Pin a note") plus the target dimensions (date, client, campaign) and the underlying endpoint POST /v1/notes. It is clearly distinct from notes_list/notes_update/notes_delete by implication, but it never names those siblings explicitly, so the differentiation is inferred rather than 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?

There is real guidance on the confirm gate ("not executed unless confirm: true"), which is effectively a when-to-use rule for the execution path. However, nothing tells the agent when to use notes_create versus notes_update (e.g., for adding a note to an existing entity) or what prerequisite data it needs first, so the routing guidance is only partial.

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

notes_deleteDelete a note (author or admin)A
DestructiveIdempotent

Delete a note (author or admin) (DELETE /v1/notes/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructive, non-read-only, idempotent, and open-world, so the safety profile is covered. The description adds genuinely new behavior: the two-phase confirm gate, that nothing is sent without confirm, that there is no server-side dry run, and that a request preview is returned instead — none of which the annotations convey.

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 compact clauses, front-loaded with purpose and the endpoint, then the execution gate. The '(author or admin)' phrase largely repeats the title, which is minor waste but not harmful.

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 destructive mutation with a preview mode, the description covers purpose, permission scope, endpoint, and the confirm behavior; there is no output schema and the schema explains the preview itself. It stops short of saying whether the note is hard-deleted or recoverable, which is the one remaining 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 67%, with the confirm and idempotencyKey parameters already documented in the schema. The description reinforces the confirm gate but adds no meaning for the required 'id' parameter or for how idempotencyKey interacts with retries, so it only marginally exceeds 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 and resource ('Delete a note'), the authorization scope ('author or admin'), and the underlying endpoint (DELETE /v1/notes/{id}). This unambiguously distinguishes it from the adjacent notes_list, notes_create, and notes_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?

It gives the prerequisite that the caller must be the author or an admin, and states the execution precondition (confirm: true). It does not, however, point to any alternative (e.g., an archive/soft-delete path or notes_update) or state when deletion is inappropriate, so no real exclusions are offered.

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

notes_listList timeline notesC
Read-only

List timeline notes (GET /v1/notes).

NameRequiredDescriptionDefault
toNo
fromNo
limitNo
clientIdNo
campaignIdNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond restating the HTTP method and path — no mention of default page size, ordering, whether results are capped at 500, or what happens when no filters are supplied.

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?

One short, front-loaded sentence with zero filler, so nothing is wasteful. However, this is terseness by omission rather than disciplined conciseness — the definition is undersized for a five-parameter filtered list.

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?

No output schema exists, so the description should carry more of the burden, yet it says nothing about return shape, ordering, pagination, or filter semantics. For a listing tool with five undocumented optional parameters, an agent cannot determine correct invocation from this definition alone.

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

Parameters1/5

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

Schema description coverage is 0% and five parameters (to, from, limit, clientId, campaignId) are completely undocumented. The description's only parameter-adjacent content is the endpoint path, which explains nothing about date-range boundaries, pagination via limit, or what clientId/campaignId scope to.

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 ("List") and resource ("timeline notes") plus the backing endpoint GET /v1/notes, which clearly separates it from the notes_create/update/delete siblings. It lacks any explicit sibling reference, but the read-only framing 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?

There is no when-to-use guidance at all — no statement of what a timeline note is in this product, when an agent should list them versus using reports/audit/actions tooling, or how the date filters should be chosen. Usage is only inferable from the verb "List".

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

notes_updateEdit a note (author or admin)B

Edit a note (author or admin) (PATCH /v1/notes/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description carries most of the behavioral burden and does so well: it labels the operation as a WRITE, states that nothing is executed without confirm: true, notes that a request preview is returned instead, and warns there is no server-side dry run. It loses a point because the confirm/preview behavior is partly duplicated in the confirm parameter's own schema description.

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, front-loaded sentences with no filler; the write-safety warning follows immediately after the identity of the operation. The stacked parentheticals make it slightly dense to parse, but nothing is wasted.

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 mutation tool with a nested request body, minimal annotations (no destructiveHint) and no output schema, the definition covers the safety gate well but leaves the editable payload undocumented. An agent knows how to arm the call but not what a valid body looks like beyond the raw JSON schema.

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

Parameters2/5

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

Schema description coverage is only 50%, and the undocumented half is the important part: the nested body object with its body/date sub-fields has no descriptions in either schema or description, so an agent learns nothing about what can actually be edited, length or date-format constraints from the prose. The description only restates the confirm gate, which the schema already documents.

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 ("Edit a note") and adds an authorization qualifier ("author or admin") plus the underlying endpoint PATCH /v1/notes/{id}. It is clearly distinct from notes_create, notes_delete and notes_list by resource and verb, though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

The description gives a real precondition (caller must be the note author or an admin), which helps an agent decide whether it can use the tool at all. It does not say when to prefer this over alternatives such as notes_create or notes_delete, nor what happens on partial edits, so the when-to-use guidance is only implied.

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

notifications_createChannelAdd a channelA

Add a channel (POST /v1/notification-channels). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses the key behavioral trait that the call is inert without confirm: true and that there is no server-side dry run, so the client-side preview is the only safety net. It stops short of describing side effects such as whether the channel is immediately active or how the secret is stored.

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, zero filler, with the write-safety constraint front-loaded immediately after the action statement. Every clause carries information the agent needs before invoking a mutating endpoint.

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 write tool with a nested required body and no output schema, the description covers the crucial execution gate but omits what the response looks like on preview versus execution, and what payload shape is expected for slack/email/webhook kinds. It is minimally sufficient 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 a moderate 67%, and the confirm parameter is already fully documented in the schema, so the description's statement about confirm mostly restates structured data. The nested body fields (kind, name, config, secret) and idempotencyKey behavior get no additional meaning from the description, leaving the 'secret' requirement unexplained.

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 gives a specific verb and resource ('Add a channel') plus the underlying endpoint (POST /v1/notification-channels), so the agent knows this creates a notification channel. It is distinguishable from siblings like notifications_updateChannel and notifications_deleteChannel by the 'Add' verb, though it never names those alternatives explicitly.

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 only implied: it states the call is not executed unless confirm: true, which effectively tells the agent it must opt in to perform a real write. There is no explicit guidance on when to create a new channel versus updating an existing one, or on preconditions such as required workspace permissions.

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

notifications_createRouteAdd a routeA

Add a route (POST /v1/notification-routes). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds substantive behavior beyond that: this is a write, it is gated on confirm: true, and critically it has no server-side dry run, so the client-side preview is the only safety net. That is exactly the kind of risk context an agent needs before a mutation. It stops short of describing side effects (notifications firing) or error behavior.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and endpoint, then the execution gate. The endpoint parenthetical is mildly redundant but aids traceability; nothing else is wasted.

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 mutation tool with no output schema and a nested required body, the description covers the write-gate well but omits what a created route contains, what the preview response looks like, and how the events/minSeverity fields shape routing. Adequate but leaves real gaps 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 coverage is 67% and the description reinforces the most consequential parameter, confirm, which the schema also documents. But the required nested body object (channelId, events, minSeverity, clientId) receives no explanation in the description, so an agent gets no extra meaning about what a route's event filter or severity threshold does beyond the raw 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 verb and resource ("Add a route") and pins it to the concrete endpoint POST /v1/notification-routes, which distinguishes it from sibling route tools like notifications_listRoutes and notifications_deleteRoute. It does not explicitly contrast itself with notifications_createChannel, but the resource noun 'route' is unambiguous enough for selection.

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 conveys the key usage condition for the confirm gate (nothing executes without confirm: true), which is genuinely useful for an agent deciding whether to act. However, it gives no guidance on prerequisites (e.g. needing a channelId from notifications_listChannels) or when to choose a route over a channel subscription.

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

notifications_deleteChannelDelete a channelA
DestructiveIdempotent

Delete a channel (DELETE /v1/notification-channels/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the description's real contribution is the confirm-gate behavior and the note that this endpoint has no server-side dry run, which prevents an agent from assuming a safe server-side preview exists. It stops short of saying what collateral state (routes, deliveries) is affected by the deletion.

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, front-loaded with the verb and resource, then the safety gate. No filler and nothing redundant enough to slow an agent down.

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 destructive, open-world mutation with three parameters and no output schema, the definition covers the execution gate but omits consequences: whether deletion cascades to routes or deliveries, whether it is reversible, and what the preview payload looks like. Annotations carry the safety profile, so the omission is not fatal but is a real 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 67% and the confirm and idempotencyKey parameters are already documented in the schema nearly verbatim to the description's wording. The one piece of added meaning is that any preview is client-side rather than server-side; the id parameter's format and expected values remain undocumented in both places.

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 ('Delete a channel') plus the underlying endpoint (DELETE /v1/notification-channels/{id}), which pins down exactly which object family is affected versus the route siblings. It does not explicitly contrast itself with notifications_updateChannel or notifications_deleteRoute, so an agent must infer the boundary from the noun alone.

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 destructive intent and the confirm gate imply when this should be used, but there is no explicit guidance on when not to delete (e.g., disabling via updateChannel instead) or on what happens to routes that reference the channel. The agent is left to infer the decision rule.

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

notifications_deleteRouteDelete a routeA
DestructiveIdempotent

Delete a route (DELETE /v1/notification-routes/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the bar is lower; the description adds the non-obvious fact that nothing is sent unless confirm: true and that there is no server-side dry run, a meaningful constraint not present in the annotations. It stops short of saying whether deletion is recoverable or what happens to routes referenced by existing deliveries.

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, action and endpoint front-loaded, then the write gate. No filler, no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a destructive, open-world delete with no output schema, the definition covers the safety gate but not the blast radius: no mention of whether deletion is permanent, whether in-flight deliveries or references are affected, or what the returned preview contains. Adequate to call correctly, insufficient to call confidently.

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 67% and the confirm and idempotencyKey parameters are already documented in the schema, including the preview behavior. The description adds only the qualifier 'no server-side dry run' on top of that, while the required id parameter remains undocumented in both places.

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?

Specific verb plus resource ('Delete a route') anchored by the HTTP endpoint DELETE /v1/notification-routes/{id}, which lets an agent distinguish it from notifications_deleteChannel and notifications_listRoutes without opening the schema. No explicit sibling naming, but the resource 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 on when to delete a route versus updating or disabling it, no prerequisite (e.g. list routes first), and no statement about permanence or effect on pending deliveries. Only the confirm gate is mentioned, which is invocation mechanics rather than tool selection guidance.

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

notifications_listChannelsList channelsB
Read-only

List channels (GET /v1/notification-channels).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered without the description. Beyond restating the endpoint path, the description discloses nothing about scope (workspace-level vs account-level), ordering, or whether an empty list is possible.

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 short sentence plus the endpoint reference, with nothing wasted and no burying of key information. It is arguably too terse rather than too verbose, but structurally it is clean and front-loaded.

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 zero-parameter read-only list with no output schema, the description is minimally adequate: an agent knows what to call but not what comes back (channel fields, pagination, ordering). The annotations and empty schema keep the bar low, so this lands at minimum viable rather than inadequate.

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, so the schema carries all the burden and there is nothing for the description to disambiguate. Baseline 4 applies; no parameter-related value could be added here.

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 gives a specific verb and resource ('List channels') and even pins the HTTP endpoint, so the operation itself is unambiguous. It does not differentiate from close siblings such as notifications_listRoutes or notifications_listDeliveries, leaving the agent to infer the distinction from the name alone.

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 guidance, no prerequisites, and no mention of alternatives. With three listing siblings in the notifications family, a sentence on when channels (vs routes or deliveries) is the right call would materially help selection.

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

notifications_listDeliveriesDelivery log and dead letters (payloads omitted)C
Read-only

Delivery log and dead letters (payloads omitted) (GET /v1/notification-deliveries).

NameRequiredDescriptionDefault
limitNo
statusNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description does add one genuinely useful behavioral note — payloads are omitted and dead letters are included — but it says nothing about ordering, pagination, or whether retry metadata accompanies dead entries.

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?

It is short and front-loaded, but almost the entire sentence duplicates the title and then appends a raw HTTP path, which adds little for an agent that already knows the tool name. No wasted length, but low information density.

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 no output schema, the description carries the burden of describing what a delivery record looks like — yet it only notes that payloads are omitted. For a log-inspection tool where the agent must interpret statuses and decide on retries, this leaves significant gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so both parameters (limit, status) are undocumented beyond their types and the status enum. The description does not explain that limit caps result count (max 500) or that status filters to pending/delivered/dead, leaving the agent to guess default behavior and default limit.

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 text identifies the resource — notification deliveries, including dead letters, with payloads omitted — and the GET path implies a read/list operation. But it is essentially the title repeated verbatim with an endpoint appended, and it never clarifies how it differs from the many other list/listDeliveries siblings (conversions_listDeliveries, reports_listDeliveries) or from notifications_retryDelivery.

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; nothing says whether this is for auditing failures, monitoring delivery health, or that dead letters should be followed up with notifications_retryDelivery. The agent must infer all routing decisions 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.

notifications_listRoutesList routesC
Read-only

List routes (GET /v1/notification-routes).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the raw HTTP path (GET /v1/notification-routes), which is a mapping detail rather than agent-relevant behavior such as pagination, result ordering, or whether the list is workspace-scoped.

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 short sentence, front-loaded with the operation. It is efficient, though the parenthetical endpoint restates the operation rather than adding information the agent can act on.

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?

This is a simple read-only list tool with no output schema, so the description should at minimum state what the returned routes represent and how they relate to channels. It stops at the endpoint name, leaving the agent to infer the payload.

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, so there is nothing for the description to disambiguate. The baseline of 4 applies; a note that no filtering or pagination inputs exist would be the only possible addition.

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 gives a specific verb and resource ("List routes"), which is better than a tautology, but it does not distinguish this from sibling notification tools such as notifications_listChannels, notifications_createRoute or notifications_deleteRoute. An agent cannot tell from this text whether a "route" is the same concept as a "channel" or how the two relate.

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 call this versus the other notification-management tools, and no stated prerequisites or exclusions. The agent must infer usage entirely from the name.

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

notifications_retryDeliveryRe-queue a dead-lettered deliveryA

Re-queue a dead-lettered delivery (POST /v1/notification-deliveries/{id}/retry). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds the concrete gating rule that nothing executes without confirm: true and that no server-side dry run exists, which is genuinely useful pre-call context. It still doesn't say what retrying does to attempt counters, rate limits, or whether the delivery can be retried more than once.

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: purpose plus endpoint first, then the write-gate constraint. Nothing redundant or buried.

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 mutation with no output schema, the description covers the execution gate but not the outcome — what a successful retry returns or what state the delivery moves into. It also leaves undefined what qualifies as 'dead-lettered' and how an agent obtains a valid id.

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 67% and already documents both `confirm` and `idempotencyKey` inline, including the preview-on-omit behavior. The description's only added nuance is 'no server-side dry run,' which clarifies that the preview is client-side, so it adds marginal 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?

Names a specific verb and resource ('Re-queue a dead-lettered delivery') and pins it to the exact endpoint POST /v1/notification-deliveries/{id}/retry. That is clearly distinguishable from sibling read tools like notifications_listDeliveries.

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 'dead-lettered delivery' scopes usage to failed deliveries awaiting retry, which implicitly excludes healthy deliveries or listing operations. It stops short of explicitly naming the sibling used to find a dead-lettered id (notifications_listDeliveries) or stating when not to retry.

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

notifications_testChannelSend a test notification; returns the delivery (null when deduplicated)A

Send a test notification; returns the delivery (null when deduplicated) (POST /v1/notification-channels/{id}/test). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the readOnlyHint=false/openWorldHint=true annotations, it discloses that the call is gated behind confirm:true, that there is no server-side dry run, and that the return is a delivery object or null when deduplicated. That is meaningful write-path and return-shape context an agent cannot get from 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?

Two compact sentences, front-loaded with what the tool does and its return value, followed by the write-safety constraint. The endpoint path is a useful anchor and nothing is wasted.

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 three-parameter write tool with no output schema, the description covers the safety gate, the absence of a dry run, and the return semantics including the null/deduplicated case. Only the identity of the required id parameter and idempotency behavior are left implicit.

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 67%, and the schema already documents confirm and idempotencyKey, so most parameter meaning is structured. The description reinforces the confirm gate but says nothing about the required id path parameter or the deduplication role of idempotencyKey, so it adds only marginal value over 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 gives a specific verb and resource ('Send a test notification') plus the underlying endpoint POST /v1/notification-channels/{id}/test, which pins down that it targets a single channel. It is clearly distinct from siblings like notifications_listChannels or notifications_retryDelivery, though it never names an alternative explicitly.

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 states a concrete precondition ('not executed unless confirm: true') and warns there is no server-side dry run, which is real usage guidance. However, it never says when to choose this over a real delivery retry (notifications_retryDelivery) or when a test is inappropriate, so the when-not side is left to inference.

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

notifications_updateChannelUpdate a channelA

Update a channel (PATCH /v1/notification-channels/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses the mutation gate and the no-dry-run constraint, so the agent knows a call without confirm returns a preview rather than executing. It omits whether the PATCH on config/secret merges or replaces existing values and whether specific permissions are needed, which are meaningful gaps for a write tool.

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

Conciseness5/5

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

Two short sentences, front-loaded with purpose and the endpoint, followed immediately by the write-gating constraint. Nothing is redundant or padded.

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 nested-body mutation with no output schema, the confirm/preview behavior is covered, but the description leaves open how partial updates affect config/secret and what a successful response contains. Adequate to avoid a wrong call, but not complete for a write operation of this shape.

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

Parameters2/5

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

Schema description coverage is only 50% — confirm and idempotencyKey are documented in the schema, but id and the entire nested body (name, config, secret, enabled) are undocumented there. The description adds no meaning about the body fields, no explanation of update/merge semantics for config and secret, and no clarification of the id parameter, so it fails to compensate for the coverage gap.

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 a channel') plus the underlying endpoint PATCH /v1/notification-channels/{id}, which pins down exactly which object is mutated among the notifications_* siblings. It does not explicitly contrast with notifications_createChannel or notifications_testChannel, but the verb makes the distinction obvious enough.

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?

Gives a concrete execution rule — the call does nothing unless confirm: true, and there is no server-side dry run — which is real usage guidance. It stops short of telling the agent when to prefer this over siblings like notifications_testChannel or notifications_createChannel, so guidance is implied rather than complete.

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

operator_loadFxRatesLoad FX rates (X-Operator-Token)B
Idempotent

Load FX rates (X-Operator-Token) (PUT /v1/fx-rates). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

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, idempotentHint=true and openWorldHint=true, so the write nature and idempotency are covered upstream. The description does add real value by stating there is no server-side dry run and that confirm gates execution, but it omits what the write does to existing rate data (upsert versus replace) and what the token requirement actually entails beyond the title's parenthetical.

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, front-loaded with the action and the write gate. The parenthetical repeats of the auth header and HTTP path sit in the title and the first sentence respectively, which is mild redundancy but costs little.

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 mutating tool with no output schema, the description conveys the confirmation gate and the absence of a server-side dry run, which is the critical safety information. It still leaves an agent guessing about overwrite semantics for existing rates, limits on batch contents, and the auth-token requirement, which is meaningful for a write that can carry 1000 records.

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 sits at 67%, and the confirm and idempotencyKey properties already carry their own descriptions that the body text only echoes. The nested body.rates array — up to 1000 base/quote/date/rate entries — is described nowhere beyond raw JSON Schema patterns, so the description does not compensate for the coverage gap, though the schema constraints themselves are reasonably expressive.

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 ("Load FX rates") and pins the endpoint (PUT /v1/fx-rates), which unambiguously identifies a write of rate data. It does not, however, distinguish this from the sibling fx_list or explain what loading actually does relative to that read 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?

It gives a concrete execution precondition — nothing is sent unless confirm: true — which tells the agent how to actually run the tool versus previewing. It offers no when-to-use/when-not guidance and never points at fx_list as the read-side alternative, so selection against siblings is left to inference.

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

ops_healthLiveness probeC
Read-only

Liveness probe (GET /health).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered structurally; the description adds only the endpoint path. It does not say what a success or failure looks like, whether it requires authentication, or whether failures return non-200 versus an error body — the key behavior for a probe.

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?

A single short sentence with zero filler, but it is under-specified rather than efficient — the terseness costs information rather than saving it. Front-loading is fine; the issue is that nothing meaningful follows.

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 no output schema and no annotations about return values, the description carries the burden of explaining what the probe returns and how to interpret it, and it does not. For a diagnostic tool whose entire value is the response signal, this is a meaningful gap.

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 schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline for a parameterless tool is 4.

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 identifies a health/liveness check and gives the concrete endpoint (GET /health), so the agent knows what resource is touched. However, it largely restates the title and does nothing to distinguish it from the sibling ops_ready (readiness probe), leaving the two probes ambiguous.

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 call this versus ops_ready or connections_health, and no stated prerequisites or frequency expectations. The agent must infer that a liveness probe is used to check process aliveness rather than dependency readiness.

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

ops_readyReadiness (database, queue); 503 when failingB
Read-only

Readiness (database, queue); 503 when failing (GET /ready).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description does add real behavioral value by disclosing that failure is signalled via HTTP 503 and that the probe covers database and queue dependencies, but it omits what a success response contains, whether per-dependency detail is returned, and whether failures include diagnostic messages.

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?

It is a single front-loaded line with no filler, and the endpoint notation is the most compact possible way to convey the route. It is arguably too terse rather than padded, which is the safer failure mode for a probe.

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 no-parameter, no-output-schema health probe the definition covers the essentials: what is checked and how failure manifests. What it lacks is the success condition and any hint of return payload shape, which matters because there is no output schema to fall back on.

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, so there is nothing for the description to disambiguate; the baseline for a parameterless schema applies. No gaps in parameter meaning remain.

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 identifies the resource as a readiness probe and names the two dependencies checked (database, queue), plus the failure signal (503). However, it is essentially the title restated with the endpoint path appended, and it never contrasts itself with the sibling ops_health tool, so an agent cannot tell which probe to call from the text alone.

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 versus ops_health, no indication of whether it is meant for pre-deploy gating, polling, or incident triage, and no mention of call frequency or caching. Usage must be inferred entirely 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.

platform_platformConfigPublic ids of the integrated platformsC
Read-only

Public ids of the integrated platforms (GET /v1/platform-config).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and network scope are covered. The description adds only the HTTP route, without stating whether ids cover all supported platforms or only currently connected ones, whether auth/workspace scope matters, or what the payload shape is.

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?

One short sentence with no wasted words, but the brevity reflects under-specification rather than discipline—the parenthetical route is the only substantive content.

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 zero-parameter read tool with annotations covering safety, this is close to sufficient, but the absence of an output schema means the description should clarify what 'public ids' means (a list of strings? platform keys?) and how it differs from platforms_list. As written, an agent can invoke it but cannot predict the result or confirm it is the right tool.

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

Parameters4/5

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

The tool takes zero parameters and the schema is trivially complete, so there is nothing to document beyond what the schema provides. The description does not mislead about inputs.

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 is a noun phrase that essentially restates the title ('Public ids of the integrated platforms'), with no verb describing what the tool does. The only added information is the endpoint path 'GET /v1/platform-config', which hints at a read but does not distinguish it from sibling tools such as platforms_list, conversions_listIntegrations, or revenue_listIntegrations.

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 call this versus alternatives. Given siblings like platforms_list (which sounds like a fuller platform listing) and the various *_listIntegrations tools, an agent has no basis for choosing this tool over them.

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

platforms_listRegistered connectors (?catalog=true: all)C
Read-only

Registered connectors (?catalog=true: all) (GET /v1/platforms).

NameRequiredDescriptionDefault
catalogNo

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. Beyond that the description adds only the endpoint path; it does not say whether results are paginated, scoped to the current workspace, or what 'catalog=true' actually changes behaviorally.

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?

It is short and front-loaded, but the one sentence is largely redundant with the title and the '?catalog=true: all' fragment is telegraphic rather than informative. There is no wasted length, but also almost no content.

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 simple list tool this could be adequate, but with no output schema the description should describe the shape of returned connectors, and with a 0%-covered parameter it should explain the catalog toggle. Neither is present, and the relationship to sibling list endpoints is unstated.

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

Parameters2/5

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

Schema description coverage is 0% for the single 'catalog' enum parameter, so the description carries the full burden. The cryptic '?catalog=true: all' at least implies true returns all connectors, but it never explains the false/default behavior or the string-typed boolean convention.

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 text is a verbatim restatement of the title plus the HTTP route (GET /v1/platforms), so the only real content is 'list platforms/connectors'. There is no verb phrase and no differentiation from the many sibling list tools (connections_list, adAccounts_list, clients_list), so an agent cannot tell what a 'platform' is here.

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 and no named alternative. The fragment '?catalog=true: all' hints that the flag widens the result set, but it never states when to set it or what the default (false) returns, so the choice between the two modes is left to guesswork.

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

publicReports_getShared report summaryC
Read-only

Shared report summary (GET /v1/public/reports/{token}).

NameRequiredDescriptionDefault
tokenYesadvshare_ share token (the credential).

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds nothing beyond them: it does not say whether the token is validated, whether access can fail for revoked links, or what form the "summary" takes. Only the endpoint path is new, which is low-value for an agent.

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 definition is a single short sentence with no filler, but it is under-specified rather than concise. The parenthetical HTTP route is the only added information and is of marginal use to an agent choosing between tools.

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 no output schema and one required credential parameter, the description must at least convey what is returned; it does not. It also leaves the relationship to the html/pdf variants unresolved, which is the key ambiguity given these siblings.

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 a single parameter with 100% schema description coverage ("advshare_ share token (the credential)"), so the schema already carries the semantics. The description merely echoes the {token} path placeholder and adds no format, sourcing, or error information. Baseline 3 applies.

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 restates the title verbatim ("Shared report summary") and appends the HTTP route. There is no verb describing the operation, and nothing distinguishes it from the sibling publicReports_html and publicReports_pdf tools, whose names suggest near-identical token-based retrieval.

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 given. An agent cannot tell from this text whether to call publicReports_get, publicReports_html, or publicReports_pdf for a given token, nor whether the token must first be obtained from shareLinks_create.

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

publicReports_htmlShared report (HTML)C
Read-only

Shared report (HTML) (GET /v1/public/reports/{token}/html).

NameRequiredDescriptionDefault
tokenYesadvshare_ share token (the credential).

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description contributes nothing further: it does not say whether the token grants unauthenticated access, whether the response is raw HTML or a URL, or whether token expiry produces an error.

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?

It is a single front-loaded fragment with no wasted words, and the route is useful orientation. The brevity is a virtue structurally even though the content is thin.

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?

There is no output schema, so the description carries the burden of explaining what comes back — inline HTML, a redirect, a signed URL — and it says nothing about that. For a public, credential-bearing retrieval endpoint, this leaves a 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?

Only one parameter, and the schema already documents it fully (100% coverage) as the advshare_ share token acting as the credential. The description adds no syntax, format, or expiry information 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.

Purpose3/5

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

The description restates the title and adds the HTTP route (GET /v1/public/reports/{token}/html), which hints that this retrieves an HTML rendering of a shared report. However, it never explicitly says 'returns the rendered HTML of a shared report' and does not distinguish itself from close siblings publicReports_get and publicReports_pdf, so an agent must infer the difference from name suffixes alone.

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 guidance at all. With publicReports_get and publicReports_pdf in the sibling list, the obvious selection question — HTML vs PDF vs raw data — is left entirely unanswered.

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

publicReports_pdfShared report (PDF)C
Read-only

Shared report (PDF) (GET /v1/public/reports/{token}/pdf).

NameRequiredDescriptionDefault
tokenYesadvshare_ share token (the credential).

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond the endpoint path: it does not state that the token is an unauthenticated public share credential, that the response is binary PDF content, or any rate/expiry behavior on share tokens.

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?

Extremely short and front-loaded with the resource and format, so there is no filler. But the brevity comes at the cost of substance – the parenthetical endpoint is the only additional information and the whole definition is two fragments.

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 simple one-parameter tool this could be adequate, but without an output schema the description should say that the call returns PDF bytes rather than JSON, and should hint at what the shared report contains. The public/unauthenticated nature of the endpoint is also left 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?

With a single parameter at 100% schema description coverage, the schema already explains that token is the 'advshare_ share token (the credential)'. The description adds no further meaning about token format, validity, or scope, so the baseline of 3 applies.

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?

Names the resource ('Shared report') and the output format ('PDF'), plus the underlying endpoint GET /v1/public/reports/{token}/pdf, which implies a retrieval. However, the verb is only implied and the wording largely restates the title; it never explicitly says 'download/retrieve the PDF' or explicitly contrasts with publicReports_html and publicReports_get.

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 at all. Nothing tells the agent to prefer this over publicReports_html or publicReports_get, nor under what conditions a PDF rendering is the right choice (e.g., print/archive vs inline viewing).

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

reportSchedules_createCreate a scheduleA

Create a schedule (POST /v1/report-schedules). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and openWorldHint=true, and the description adds real value beyond that: the operation is gated on confirm: true, returns a preview rather than executing otherwise, and explicitly has no server-side dry run. That last point is a meaningful safety disclosure an agent could not infer. It stops short of saying whether the created schedule takes effect immediately or what identifiers come back.

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, zero waste. The action and endpoint come first, followed immediately by the safety gate, which is the most decision-relevant fact for an agent.

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 behavior of the confirm gate is fully covered, but for a nested-body creation tool with no output schema there is a gap: the description never indicates that frequency drives whether weekday or dayOfMonth applies, nor what the preview response contains. Adequate to avoid a destructive mistake, but thin for constructing a valid schedule.

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 67%, and the description adds little beyond restating the confirm gate that the schema already documents. The nested body object, which carries most of the semantic weight (frequency enum, weekday/dayOfMonth ranges, recipients cap, enabled default), receives no explanation in the description.

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 ('Create a schedule') and anchors it to the endpoint POST /v1/report-schedules. It does not explicitly distinguish itself from reportSchedules_update or reportSchedules_delete, but the create semantics are 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 WRITE/confirm gate is genuine usage guidance: the agent learns it must pass confirm: true or nothing happens. However, there is no explicit guidance on when to create a new schedule versus modifying an existing one with reportSchedules_update, nor any prerequisites such as needing a templateId/clientId pair that already exists.

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

reportSchedules_deleteDelete a scheduleA
DestructiveIdempotent

Delete a schedule (DELETE /v1/report-schedules/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is largely covered. The description still earns credit by disclosing two non-obvious behaviors the annotations cannot express: the confirm-gated preview mode and the warning that there is no server-side dry run, meaning the only preview is client-side. It stops short of saying whether deletion cascades to associated deliveries or is recoverable.

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: identity and endpoint first, then the gating condition. Every clause carries information an agent needs before calling a destructive operation, and nothing is padded or 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?

For a single-resource destructive mutation with no output schema and only three parameters, the definition covers the essential decision points: what is deleted, how it is executed, and that no server-side simulation exists. The remaining gap is downstream impact — what happens to scheduled deliveries or reports tied to a deleted schedule — which the annotations' destructiveHint gestures at but does not specify.

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 67%, with 'id' self-explanatory and 'confirm' plus 'idempotencyKey' documented in the schema. The description's confirm sentence largely restates the schema text verbatim rather than adding new semantics, and idempotencyKey is not mentioned at all, so this sits at the expected baseline for a partially covered 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 gives a specific verb ('Delete') plus the resource ('a schedule') and even pins the underlying endpoint (DELETE /v1/report-schedules/{id}). The verb alone separates it from the sibling reportSchedules_list, reportSchedules_create, and reportSchedules_update tools, so an agent can select it 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?

Usage context is limited to the mechanics of the confirm flag ('not executed unless confirm: true'), which tells the agent how to invoke but not when this tool is the right choice versus reportSchedules_update or reportTemplates_delete. There are no explicit when-not or alternative-routing statements, so guidance is only implied by the tool name.

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

reportSchedules_listList report schedulesB
Read-only

List report schedules (GET /v1/report-schedules).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered, but the description adds nothing beyond the raw endpoint path. It says nothing about pagination, result ordering, whether schedules are workspace-scoped, or what a schedule object contains — context an agent cannot get from 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?

A single short sentence with the purpose front-loaded and no filler. The parenthetical HTTP path is largely redundant for an agent that selects tools by name, but it does no harm and is brief.

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 no parameters, no output schema, and read-only annotations, the definition covers the minimum needed to invoke the tool correctly. It leaves open whether results are paginated or filtered by workspace, which matters for a list operation in a multi-tenant ad platform, 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.

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to explain; the baseline of 4 applies. The description correctly implies a parameterless full-list call by naming only the endpoint.

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 gives a specific verb and resource ('List report schedules'), which cleanly separates it from reportSchedules_create/update/delete and from reports_list. It does not explicitly contrast with the similarly named reportTemplates_list or reports_list, so it falls short of the sibling-differentiation bar for 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?

Usage is only implied by the verb 'List' — there is no statement of when to prefer this over reports_list or reportTemplates_list, nor any prerequisite or scope note. For a simple enumeration endpoint the implication is probably enough for an agent, but nothing is spelled out.

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

reportSchedules_updateUpdate a scheduleA

Update a schedule (PATCH /v1/report-schedules/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

The description discloses the confirm-gate write behavior and, importantly, that there is no server-side dry run — context the readOnlyHint=false annotation does not convey. It still omits what a PATCH does to fields not supplied, permission requirements, and rate limits.

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

Conciseness4/5

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

Two compact sentences, front-loaded with the operation and endpoint, with the safety warning immediately after. No filler, though the parenthetical about missing dry run could be folded into the same sentence for tighter flow.

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 write tool with a nested body, no output schema and 50% parameter coverage, the description covers the critical safety gate but leaves the body shape, update semantics, and preview return value (mentioned only in the confirm param's schema text) unaddressed.

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 50%: confirm and idempotencyKey are already documented in the schema, and the description only reinforces confirm's meaning with the no-dry-run note. The nested body object (7 fields: hour, weekday, frequency, dayOfMonth, recipients, templateId, enabled) gets no explanation in the description, so the gap is not compensated.

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 a schedule') and pins it to the HTTP operation (PATCH /v1/report-schedules/{id}), so an agent can tell it modifies an existing schedule rather than creating or deleting one. It stops short of naming the sibling tools (reportSchedules_create/delete) it must not be confused with.

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 only implied: 'Update' plus the PATCH path tells the agent this is for modifying an existing schedule. There is no guidance on when to prefer reportSchedules_create or reportSchedules_delete, no prerequisites, and no note about partial-body semantics.

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

reports_deliverDeliver a report to recipientsA

Deliver a report to recipients (POST /v1/reports/{id}/deliver). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds genuinely useful behavior beyond that: the write is gated on confirm: true, there is no server-side dry run, and unconfirmed calls return a request preview. It stops short of saying what delivery actually does (e.g., emails recipients), whether it is irreversible once sent, or any rate/recipient limits.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and endpoint, then the critical WRITE gating constraint. The 'WRITE:' label and the parenthetical about the missing dry run make the key risk 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 mutation tool that reaches outside the system (openWorldHint) with no output schema, the description covers the safety gate and preview-return behavior but omits the delivery mechanism, irreversibility, and recipient constraints. It is enough to avoid an accidental send, but not enough to predict the outcome of a confirmed 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?

Schema coverage is 50%: confirm and idempotencyKey already carry schema descriptions, and the description merely reinforces the confirm gate rather than adding new meaning. The undocumented parameters (`id` as report identifier and the nested `body.recipients` semantics, including the 1–20 limit and what a recipient value looks like) are left unexplained in both places, so the description does not compensate for the coverage gap.

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?

Names a specific verb and resource ('Deliver a report to recipients') and pins it to the endpoint POST /v1/reports/{id}/deliver, so an agent can identify the action without opening the schema. It does not explicitly distinguish itself from nearby siblings such as reports_listDeliveries, reports_generate, or reportSchedules_create, so the differentiation is only implicit.

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 one strong operating condition — nothing is executed unless confirm: true — which effectively tells the agent to preview first. However, it offers no guidance on when to use this versus alternatives (scheduled delivery via reportSchedules_create, or sharing via shareLinks_create), and no prerequisites or exclusions are stated.

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

reports_generateGenerate a report for a client and periodA

Generate a report for a client and period (POST /v1/reports). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true, so the write nature and external side effects are already flagged. The description adds real value beyond that: it marks the operation as WRITE, explains the confirm gate, notes there is no server-side dry run, and states that omitting confirm returns a request preview. It stops short of describing what gets created (a report record, an async job?) or whether repeat calls with the same idempotency key are safe.

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, zero filler, and the critical safety information (WRITE, confirm gate, no dry run) is front-loaded immediately after the purpose statement. Nothing is repeated or 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?

For a no-output-schema write tool with a nested body, the definition covers the highest-risk unknowns: that it writes, that it will not execute without confirm, and that a preview is returned otherwise. The remaining gap is what the successful response contains (report id, status, async completion) and how templateId relates to reportTemplates_list.

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 67%, with confirm and idempotencyKey already documented in the schema itself, and the description merely restates the confirm behavior. The nested body fields (clientId, from, to, templateId, title) receive no semantic explanation in either place, so the description adds little meaning beyond the structured fields.

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 ('Generate a report') plus the scope ('for a client and period') and even the endpoint POST /v1/reports. It does not, however, distinguish itself from closely related siblings such as reports_renderPdf, reports_renderHtml, or reports_deliver, so an agent must infer that this creates a report record rather than rendering or sending 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 does give one concrete usage rule: the call is a no-op unless confirm: true is supplied. That is genuinely useful gating. But it offers no guidance on when to choose this tool over reports_renderHtml/reports_renderPdf/reports_deliver, nor any prerequisites such as a valid templateId or client permissions.

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

reports_getGet a report with its snapshot dataB
Read-only

Get a report with its snapshot data (GET /v1/reports/{id}).

NameRequiredDescriptionDefault
idYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the response bundles snapshot data (the report plus its captured metrics), which is real behavioral context, but it says nothing about permissions, error cases, or whether the snapshot is a frozen point-in-time capture.

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 short sentence with the verb and the resource front-loaded, and the HTTP path parenthetical is compact and useful. It is efficient, though the extreme brevity leaves real gaps rather than trimming waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

The tool is simple (one required param, no nesting) and annotations cover safety, so the short description is close to adequate. However, with no output schema and no documentation of the id parameter, the agent gets no sense of what a "snapshot" contains or how to distinguish this call from reports_list.

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

Parameters3/5

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

Schema description coverage is 0% for the single parameter, so the schema only supplies a bare string type. The endpoint path "GET /v1/reports/{id}" implies that id is the report identifier, which adds a little meaning, but nothing about its format (slug, UUID, numeric) is stated.

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 ("Get a report") plus the returned payload ("with its snapshot data"), which is more informative than the title alone. It does not distinguish itself from nearby siblings such as reports_list, reports_generate, or publicReports_get, so the agent must infer the boundary.

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 guidance: nothing says when to fetch a single report versus calling reports_list or reports_generate. No prerequisites, no exclusions, and no alternative named.

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

reports_listList reports (snapshot data omitted)C
Read-only

List reports (snapshot data omitted) (GET /v1/reports).

NameRequiredDescriptionDefault
limitNo
clientIdNo

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond restating the HTTP method — no pagination behavior, no ordering, no explanation of what 'snapshot data omitted' means for the response.

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?

It is short and front-loads the tool's purpose, but '(snapshot data omitted)' duplicates the title verbatim and consumes space without adding information. Efficient in length, weak in content.

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 0% parameter coverage, no output schema, and many report-related siblings, the description leaves an agent unable to decide between reports_list, reports_get, and publicReports_get or to use the filters correctly.

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

Parameters1/5

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

Schema description coverage is 0% for both parameters. The description never mentions 'limit' or 'clientId', so an agent gets no meaning for what clientId filters or what the limit default is; the schema alone leaves both undocumented.

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 verb+resource pair 'List reports' is clear, and the GET endpoint confirms it is a read/list operation. However, '(snapshot data omitted)' is cryptic and unexplained, and nothing distinguishes this from siblings like reports_get, reports_listDeliveries, or reportSchedules_list.

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 guidance, no prerequisites, and no mention of alternatives such as reports_get for a single report. An agent must infer usage entirely from the name.

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

reports_listDeliveriesDelivery state per recipientC
Read-only

Delivery state per recipient (GET /v1/reports/{id}/deliveries).

NameRequiredDescriptionDefault
idYes

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the endpoint path, which confirms a read on a report subresource; it says nothing about pagination, result limits, retention window for delivery records, or what fields a 'delivery state' contains. No contradiction, but little incremental disclosure.

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?

One short sentence with zero filler, and the endpoint is a useful compact scoping cue. However, being a noun-phrase fragment, it is under-specified rather than genuinely concise in the informative sense.

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 listing tool with an ambiguous single parameter and no output schema, the description should at minimum say what a delivery record looks like (recipient, channel, status, timestamps) and whether results are paginated. None of that is present, so an agent must call blind to discover the response shape.

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

Parameters3/5

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

Schema coverage is 0%, so the description carries the burden for the single 'id' parameter. It partially compensates by embedding {id} in the /v1/reports/{id}/deliveries path, making clear the id is a report identifier rather than a user, workspace, or delivery id. It does not state the id format (numeric vs. UUID) or how to obtain one.

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 is essentially the title restated ('Delivery state per recipient') plus an HTTP endpoint. The endpoint path does add that this is a read scoped to a specific report ({id}/deliveries), which makes the resource identifiable, but there is no verb and no differentiation from siblings such as reports_get, reports_deliver, notifications_listDeliveries, or conversions_listDeliveries.

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 at all. With at least three sibling tools that also surface 'deliveries', the agent is given no rule for choosing this one (e.g. 'use after reports_deliver to check per-recipient send status').

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

reports_renderHtmlRender a report as HTML (not JSON)B
Read-only

Render a report as HTML (not JSON) (GET /v1/reports/{id}/html).

NameRequiredDescriptionDefault
idYes

TDQS

B3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only the raw endpoint path (GET /v1/reports/{id}/html) and says nothing about what the returned HTML contains, whether the report must exist first, or any size/expiry constraints.

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 short sentence that is front-loaded with the action and resource. The parenthetical '(not JSON)' is slightly repetitive with the title but carries real disambiguation value.

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 one required parameter, no output schema, and a read-only annotation, the minimal needs are covered. However, the description gives no hint about where a valid report id comes from or what the HTML response represents, which are the two things an agent would still need.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter, and the description only gestures at its meaning by embedding '{id}' in the URL template. It never states that id is a report identifier from reports_list or reports_generate, nor its expected format.

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 ('Render a report as HTML') and the parenthetical '(not JSON)' distinguishes it from the JSON report fetch path. It does not explicitly point at siblings like reports_renderPdf or publicReports_html, so differentiation is partial.

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 '(not JSON)' qualifier implies the choice condition: use this when you want HTML output rather than structured JSON. There is no explicit when-not guidance, no mention of PDF rendering as an alternative, and no prerequisites stated.

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

reports_renderPdfDownload a report PDF (binary body)C
Read-only

Download a report PDF (binary body) (GET /v1/reports/{id}/pdf).

NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description earns credit for the one genuinely useful addition: the response is a binary body (not JSON), which affects how the agent must handle the result. It omits error behavior for missing/not-yet-generated reports, leaving a gap.

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

Conciseness3/5

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

It is one short sentence with the resource type front-loaded and no filler, but it is minimal to the point of being a restated title; the parenthetical endpoint adds only slight value. There is no waste but also little substance.

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 single-parameter download tool with no output schema, the description covers the essential fact that the response is binary. It still omits what an agent needs for correct invocation: where the id comes from, failure modes when the PDF is not yet available, and how this differs from the HTML/public render variants.

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

Parameters2/5

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

There is a single required 'id' parameter with 0% schema description coverage. The embedded path '/v1/reports/{id}/pdf' implies the id is a report identifier used as a path segment, which is a small but real clarification. Beyond that, it says nothing about the id's format or source (e.g. from reports_list/reports_get).

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 a concrete verb+resource ('Download a report PDF') and the underlying endpoint path, so the basic action is clear. However, it does nothing to distinguish this from nearby siblings such as reports_renderHtml, reports_get, or publicReports_pdf, which an agent must choose between. It is essentially the title plus a path.

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 instead of reports_get (metadata), reports_renderHtml (inline HTML), or publicReports_pdf (public variant), nor any prerequisite such as whether the report must be generated first. The agent must infer the selection rule from the tool names alone.

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

reportTemplates_createCreate a report templateA

Create a report template (POST /v1/report-templates). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already flag readOnlyHint=false and openWorldHint=true. The description usefully adds the confirm gating and the absence of a server-side dry run, which the annotations don't convey. It stops short of describing the preview response or side effects on existing templates.

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 tight sentences, front-loaded with the core action and the write safety constraint. No redundant restatement of the title, though it could be marginally more economical.

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 a nested body schema and no output schema, the description covers the critical safety behavior (confirm gate, no dry run). It is adequately complete, with only return/preview shape left implicit.

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 67% and both confirm and idempotencyKey are already documented in the schema. The description reinforces the confirm gate but adds nothing about the body object's name/sections requirements beyond what the schema states, so baseline 3 fits.

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+resource (create a report template) and even cites the HTTP endpoint, so the agent knows exactly what it builds. It is distinct from the reportTemplates_list/update/delete siblings by the verb, though it never names them.

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 makes clear this is a write that only fires with confirm: true and warns there is no server-side dry run. It does not, however, guide the agent on when to prefer this over reportSchedules_create or reports_generate, leaving alternative-selection to inference.

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

reportTemplates_deleteDelete a templateA
DestructiveIdempotent

Delete a template (DELETE /v1/report-templates/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, yet the description still adds real value: it discloses the client-side confirmation gate and explicitly notes there is no server-side dry run, which prevents an agent from assuming a safe preview exists. It stops short of saying what collateral damage occurs (for example, whether report schedules bound to the template break), which is the one behavioral fact a caller most 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?

Two dense clauses, no filler, with the resource and endpoint front-loaded and the execution gate immediately after. The telegraphic "WRITE:" label is terse but unambiguous in context.

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 three-parameter destructive delete with no output schema, the definition covers the identity of the resource, the invocation gate, and the dry-run caveat. The gap is downstream impact of deletion and what the preview payload contains, neither of which is inferable from annotations or 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 67%, with confirm and idempotencyKey fully documented in the schema itself. The description's only added semantic is confirming that {id} is the template identifier in the request path, which is modest but real; the id parameter carries no other explanation of format anywhere.

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 ("Delete a template") and pins it to the exact endpoint DELETE /v1/report-templates/{id}. That resource naming distinguishes it from the many other delete siblings such as reportSchedules_delete, savedViews_delete and notes_delete without the agent needing to open a 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?

Usage is implied by the name and the endpoint, and the confirm gate tells the agent how to invoke it safely, but there is no statement of when to prefer this over reportTemplates_update (e.g., to disable rather than remove) or any prerequisite/consequence guidance. An agent gets the mechanics but not the routing rationale.

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

reportTemplates_listList report templatesB
Read-only

List report templates (GET /v1/report-templates).

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered externally. The description adds only the raw endpoint path, with no information on pagination, result volume, workspace scoping, or whether templates include system defaults. With this bar lowered by annotations, the marginal disclosure is thin.

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 or redundancy. It is arguably under-specified rather than bloated, which is penalized elsewhere rather than here.

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?

There is no output schema, so the description should explain the shape of returned templates and whether results are paginated or scoped to a workspace, and it does none of that. For a parameterless list endpoint the surface is small, but the missing return context is a real gap.

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, so there is no parameter semantics to explain and the baseline of 4 applies. Nothing in the description misleads about inputs.

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 pairs a specific verb ("List") with a specific resource ("report templates"), so the operation is unambiguous. It does not distinguish itself from siblings such as reportTemplates_create/update/delete or reportSchedules_list, but the name-plus-verb combination is already readable.

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 guidance beyond the implicit read operation, no mention of when to prefer reportSchedules_list or reports_list, and no stated prerequisites. An agent must infer everything about selection from the tool name alone.

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

reportTemplates_updateUpdate a templateA

Update a template (PATCH /v1/report-templates/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description earns credit for disclosing the two-phase confirm behavior and the notable fact that there is no server-side dry run. It omits other mutation-relevant behavior, such as whether PATCH partially merges or replaces the template and whether omissions clear existing sections.

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 dense clauses with zero filler: the operation and endpoint come first, followed immediately by the execution gate. Nothing is repeated from annotations or restated from 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?

For a write tool with nested body objects, an open-world hint, and no output schema, the preview-vs-execute contract is well covered. The main residual gap is update semantics for the nested sections array, which neither the description nor annotations clarify.

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 50%: confirm and idempotencyKey already carry their own descriptions, and the description reinforces confirm's effect. The body and id parameters are undocumented in both schema and description, and the description adds no meaning about how the nested name/sections payload is applied.

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 template') and pins it to PATCH /v1/report-templates/{id}, which clearly separates it from reportTemplates_create, reportTemplates_delete, and reportTemplates_list. It stops short of explicitly contrasting with those siblings, but the operation 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 states the confirm gate ('not executed unless confirm: true') and that omitting confirm returns a preview, which is real when-to-use guidance. However, it offers no alternatives or exclusions, such as when to use reportTemplates_create instead, leaving routing to the sibling names.

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

revenue_backfillFetch orders and refunds from the store API, incrementally from the stored cursorA

Fetch orders and refunds from the store API, incrementally from the stored cursor (POST /v1/revenue/integrations/{id}/backfill). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds the crucial detail that nothing executes without confirm: true, that there is no server-side dry run, and that a request preview is returned otherwise. It stops short of describing rate limits, resumability on failure, or what the preview contains.

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

Conciseness5/5

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

Two tight sentences: the operation and endpoint come first, then the write-safety caveat. No filler, and the most decision-relevant constraint (confirm gate) is front-loaded in the second sentence.

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 mutating, open-world tool with a nested body and no output schema, the description covers the safety gate but leaves gaps: what 'since' means relative to the cursor, whether the call is resumable, and what the preview response looks like.

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 50%: confirm and idempotencyKey are already documented in the schema, and the description only reinforces the confirm gate. The 'since' field inside the nested body has no description anywhere, and the description does not explain how it interacts with the stored cursor.

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 ('Fetch orders and refunds from the store API'), the incremental cursor semantics, and even the underlying endpoint POST /v1/revenue/integrations/{id}/backfill. This clearly separates it from siblings like revenue_importCsv and revenue_listIntegrations.

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 'incrementally from the stored cursor' phrasing implies when this tool is appropriate (ongoing sync rather than a one-off import), but it never explicitly contrasts with revenue_importCsv or revenue_listIntegrations, nor does it state prerequisites such as an existing integration id.

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

revenue_createIntegrationCreate a revenue integration (201); all secrets are write-onlyA

Create a revenue integration (201); all secrets are write-only (POST /v1/revenue/integrations). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, and the description adds meaningful context on top: the two-step confirm gate, the absence of a server-side dry run, the 201 response, and the fact that secrets are write-only after creation. It stops short of stating required auth scopes, what happens to an existing integration with the same label, or how the returned preview is shaped.

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

Conciseness5/5

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

Two tight sentences: the operation and endpoint first, then the write-gate constraint. No filler, no restatement of the schema, and the most safety-critical information (confirm gate) is front-loaded after the core 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 creation tool with no output schema and a nested body, the description covers the critical gaps: it is a write, it needs explicit confirmation, there is no dry run, and secrets are never returned. What is missing is field-conditional guidance across the three integration kinds and any indication of error or conflict 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 coverage is 67%, and confirm and idempotencyKey already carry their own schema descriptions, so the schema does most of the work. The one real addition is "all secrets are write-only," which tells the agent that webhookSecret, apiKey, accessToken, and similar body fields cannot be read back. The nested body properties (shopDomain, clientId, consumerKey, baseUrl) remain undocumented in both places, and which fields are required per kind is never explained.

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 gives a specific verb and resource ("Create a revenue integration"), plus the HTTP method and path (POST /v1/revenue/integrations) and the expected 201 outcome. It does not, however, distinguish this tool from nearby siblings such as revenue_listIntegrations, connections_create, or conversions_setIntegration, so an agent must infer where this belongs from the name alone.

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 clearly states the execution precondition ("not executed unless confirm: true") and warns there is no server-side dry run, which is genuinely actionable. It gives no guidance on when to pick this over the connections_* or conversions_setIntegration tools, and no prerequisites or field-per-kind requirements are mentioned, so usage is only partially framed.

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

revenue_importCsvImport orders from CSV text (1 MiB max); the same sourceId is idempotentA

Import orders from CSV text (1 MiB max); the same sourceId is idempotent (POST /v1/revenue/csv). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description goes well beyond that by disclosing the 1 MiB payload cap, the confirm gate, the absence of a server-side dry run, and sourceId-based idempotency. It does not cover auth/permission requirements or what happens on partial/row-level CSV failures, which keeps it short of 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 tight sentences, zero filler, with the write-gating warning and size limit front-loaded before the endpoint detail. Every clause carries actionable 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 nested-body write tool with no output schema, it covers the safety profile, size limit, idempotency, and confirm preview behavior — enough to call it correctly. Row-level error handling and response contents are the remaining gaps, though the schema documents the preview-on-no-confirm behavior.

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 67%, and the description adds real meaning for the two most consequential parameters: sourceId drives idempotency, and confirm gates actual execution versus a preview. clientId and currency are left entirely to the schema, so it compensates only partially for the coverage gap.

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+resource ('Import orders from CSV text') and adds a concrete constraint (1 MiB max) plus the underlying endpoint (POST /v1/revenue/csv). It is clearly distinguishable from write-adjacent siblings such as revenue_backfill or tracking_ingest, though it never names those alternatives 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?

It gives clear operational context: the call is a WRITE that only executes with confirm: true, there is no server-side dry run, and reusing sourceId is idempotent. What it lacks is explicit routing guidance — when to prefer this over revenue_backfill or conversions_send is left to inference.

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

revenue_listIntegrationsList revenue integrations (Shopify, Stripe, WooCommerce); secrets are never returnedA
Read-only

List revenue integrations (Shopify, Stripe, WooCommerce); secrets are never returned (GET /v1/revenue/integrations).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds meaningful context beyond that: secrets are never returned, so the agent knows credentials will not appear. It also pins the underlying GET endpoint, confirming a non-mutating call, but says nothing about pagination or result shape.

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 the resource named first and the security guarantee second. The trailing '(GET /v1/revenue/integrations)' is mildly redundant with the verb but cheap and useful for endpoint mapping.

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 tool with no output schema, what an agent needs is covered: what it lists, which providers, and that secrets are excluded. Missing is any hint about result fields or whether the list is paginated, which matters more given there is no output schema to fall back on.

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, so the baseline is 4 and there is no parameter semantics the description could add. The parenthetical endpoint mapping is the only supplemental detail.

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+resource ('List revenue integrations') and enumerates the covered providers (Shopify, Stripe, WooCommerce). The verb alone separates it from siblings like revenue_createIntegration and revenue_importCsv, though it does not state the distinction explicitly.

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 only implied: listing integrations is self-evidently the read counterpart to revenue_createIntegration, revenue_backfill and revenue_importCsv, but the description never says when to prefer this tool or what prerequisite it satisfies. No alternatives or exclusions are named.

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

rules_createCreate a guardrail or automationA

Create a guardrail or automation (POST /v1/rules). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, and the description usefully adds that nothing is sent without confirm:true and that there is no server-side dry run. That is real added context. But it omits what a preview returns, whether the created rule is immediately active, and whether existing rules with the same name conflict.

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, front-loaded with the verb and resource and immediately followed by the write-safety constraint. No filler and nothing redundant.

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 write tool with a nested free-form body and no output schema, the definition is thin: the caller is left guessing what goes into 'definition' and what the response looks like on success versus preview. The critical dry-run gate is covered, which keeps it at a minimum-viable 3 rather than lower.

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 67%, so the confirm and idempotencyKey parameters are already documented in the schema and the description only restates the confirm behaviour. The nested body object is the weak point: 'definition' is an untyped empty schema and the description says nothing about its expected shape, and 'kind'/'enabled' interactions go unexplained.

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?

Uses a specific verb plus the two resource kinds it creates ('guardrail or automation') and names the endpoint, which is enough to distinguish it from rules_update, rules_delete and rules_list. Sibling differentiation is implicit rather than stated, 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 Guidelines3/5

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

The confirm gate effectively tells the agent how to invoke the tool safely, which is genuine usage guidance. However, it never says when to prefer this over rules_simulate or rules_update, nor does it flag that rules_simulate should be used to test a definition before committing it.

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

rules_deleteDelete a ruleA
DestructiveIdempotent

Delete a rule (DELETE /v1/rules/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=true and readOnlyHint=false, but the description adds the non-obvious gate that nothing is sent without confirm: true and that the call returns a request preview instead. It also notes there is no server-side dry run, which prevents an agent from assuming confirm is redundant with a simulation endpoint. It stops short of saying whether deletion is permanent or what happens to schedules/runs that reference the rule.

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 padding, with the endpoint reference and the write gate front-loaded. Nothing repeats 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 destructive write with no output schema, the description covers the critical decision point (the confirm gate and the preview return) that an agent needs before invoking. It could be stronger by stating permanence and whether confirm-less calls count toward rate limits, but it is sufficient to call 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 67% and both confirm and idempotencyKey are already documented in the schema; the description only reinforces confirm's effect. The required 'id' parameter is undocumented in both schema and description, but its meaning is obvious from the path template.

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 ('Delete a rule') and pins it to the endpoint DELETE /v1/rules/{id}, which unambiguously separates it from rules_create, rules_update, rules_get and rules_list. It does not explicitly contrast with a sibling, but the name/verb pairing leaves little 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?

It makes the trigger condition for execution explicit (confirm: true is required), which is real usage guidance. It gives no when-not guidance, no prerequisites (permissions, whether the rule must be paused or unreferenced), and does not point to rules_update or rules_get as the non-destructive alternatives.

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

rules_detectAnomaliesRun anomaly detection now; returns the alerts raisedA

Run anomaly detection now; returns the alerts raised (POST /v1/anomalies/detect). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description must carry the write semantics — and it does: it flags WRITE, states nothing is executed unless confirm: true, notes the preview behavior, and warns there is no server-side dry run. It stops short of covering permissions, side effects on existing alert state, or rate limits.

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

Conciseness5/5

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

Two tightly packed sentences: the action and return value come first, the endpoint second, and the write/confirm constraint last where it is most likely to be acted on. No filler or restatement of the title beyond the necessary framing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

With no output schema, the description supplies what the tool returns ('the alerts raised'), and for a two-parameter mutation tool it covers the execute-vs-preview decision fully. Nothing an agent needs in order to invoke it safely 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 coverage is 100%, so confirm and idempotencyKey are already documented, establishing a baseline of 3. The description adds meaning beyond the schema by explaining that confirm exists because the operation has no server-side dry run and that omitting it returns a request preview.

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 action and resource ('Run anomaly detection now') and states what it produces ('returns the alerts raised'), plus the underlying endpoint POST /v1/anomalies/detect. It does not distinguish itself from nearby siblings such as rules_simulate or rules_run, which are the obvious confusables.

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 only implied by 'Run anomaly detection now' — an agent can infer this executes immediately rather than previewing on the server. There is no explicit when-to-use versus rules_simulate/rules_run, and no stated prerequisites or exclusions.

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

rules_getGet a ruleC
Read-only

Get a rule (GET /v1/rules/{id}).

NameRequiredDescriptionDefault
idYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds only the HTTP route, saying nothing about what happens with a missing or invalid id or what the returned rule contains.

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 short sentence with the endpoint in parentheses; front-loaded and free of padding. It is terse to the point of under-specification, but nothing is wasted.

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 read operation with a clean input schema and permissive annotations, the minimum needed is present. Missing details are how to obtain a valid id and the shape of a rule, though the latter is partly inferable from rules_list and rules_create siblings.

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

Parameters2/5

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

Schema description coverage is 0%, so the plain "id" string parameter is undocumented anywhere. The path template "GET /v1/rules/{id}" weakly implies it is a rule identifier, but format, source (e.g., from rules_list), and validation are left unspecified.

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 a specific verb and resource ("Get a rule") and adds the underlying endpoint, so the operation is identifiable. However, it offers no differentiation from nearby siblings like rules_list, rules_runs, or rules_getSchedule, which all deal with the same rule 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?

There is no guidance on when to use this versus rules_list (to discover an id) or the schedule/spend-monitor getters. The agent must infer from the name alone that this retrieves a single rule by id.

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

rules_getScheduleSchedule, next and last run, and the latest run of an automationC
Read-only

Schedule, next and last run, and the latest run of an automation (GET /v1/rules/{id}/schedule).

NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds only the REST path, not what the payload contains beyond restating the title. It does not clarify whether this returns null/empty for unscheduled automation, which matters for a single-id lookup.

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?

It is a single front-loaded sentence with no filler, and the endpoint path is a compact useful anchor. It is arguably too terse rather than padded, so there is little to trim but little substance either.

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 read tool with no output schema, the description should at least sketch what comes back; it only lists the field categories in the title line. Given the tool's simplicity this is borderline adequate, but the return shape and not-found behavior remain 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?

Schema coverage is 0% and the single parameter 'id' is a bare string, so the description must carry the meaning. The path fragment /v1/rules/{id}/schedule is the only cue that 'id' is the automation/rule id, which is useful but minimal and never states the format or source of that id.

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 resource (an automation's schedule, next run, last run, and latest run) and pins it to GET /v1/rules/{id}/schedule, so an agent knows exactly what is being fetched. It stops short of distinguishing itself from the related rules_runs, rules_get, and rules_setSchedule siblings.

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 guidance at all: nothing says to call this rather than rules_get, rules_runs, or rules_setSchedule, and no prerequisites or exclusions are stated. The only routing signal is the implicit read-only nature of a GET.

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

rules_getSpendMonitorSpend monitor cadence and last runB
Read-only

Spend monitor cadence and last run (GET /v1/monitors/spend).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already establish that this is a read-only, open-world GET operation. The description adds only the specific data returned (cadence and last run) and the endpoint path; it says nothing about authentication, rate limits, or behavior when no spend monitor is configured.

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 definition is a single short sentence with no filler, and the key content is front-loaded. Including the endpoint path is mildly redundant but useful for API traceability rather than wasteful.

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 GET tool with no output schema, the description covers the essential purpose and the data returned. Minor gaps remain around error or empty-state behavior, but nothing critical is missing 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?

The tool has zero input parameters, so the baseline is 4. The description correctly does not invent parameter semantics, and there is nothing in the schema that needs further explanation.

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 specifically what the tool returns: spend monitor cadence and last run, along with the underlying GET path. It is clear enough to identify the resource, though it reads as a restatement of the title and does not explicitly distinguish itself from the sibling rules_getSchedule.

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 guidance, no mention of prerequisites, and no named alternative such as rules_getSchedule or rules_setSpendMonitor. An agent must infer the selection context from the tool name alone.

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

rules_listList guardrails and automationsC
Read-only

List guardrails and automations (GET /v1/rules).

NameRequiredDescriptionDefault
kindNo
enabledNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds only the HTTP endpoint, which is not behaviorally useful to an agent. Nothing is said about pagination, result ordering, default filtering, or whether disabled rules are included — the details that actually shape a list call.

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 short, front-loaded sentence with no filler; the resource is stated before the endpoint detail. It is terse to the point of under-specification rather than verbose, so nothing needs trimming.

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 list endpoint with no output schema and no parameter documentation in the schema, the description should describe what comes back (fields, shape, pagination) and how the two filters combine. Neither is present, leaving the agent to discover result structure empirically.

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

Parameters3/5

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

Schema description coverage is 0%, but both parameters are enums (kind: guardrail|automation, enabled: true|false) whose accepted values are self-describing, and both are optional so the no-arg case defaults to listing everything. The description adds no filtering semantics, though the marginal value lost is small given the enumerated values.

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 ("List guardrails and automations") and echoes the underlying endpoint (GET /v1/rules), so the agent knows this is a read that returns both rule kinds. It stops short of distinguishing the result from siblings like rules_get or rules_runs, but the verb/resource pairing 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?

There is no guidance on when to call this versus rules_get, rules_runs, or rules_simulate, and no mention of prerequisites or typical follow-up. The agent must infer usage purely from the tool name and the sibling set.

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

rules_runRun an automation now (201); a period that already ran needs forceA

Run an automation now (201); a period that already ran needs force (POST /v1/rules/{id}/run). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.9/5.0
Behavior4/5

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

The annotations only say readOnlyHint=false and openWorldHint=true; the description adds substantially: this is a WRITE, there is a client-side confirm gate rather than a server dry run, success is 201, and the operation is irreversible enough that no server-side preview exists. That is strong added context, though it does not say what the returned preview contains or whether rules must be enabled.

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 dense sentences, front-loaded with the action and the force condition before the write/confirm caveat. The telegraphic parentheticals are efficient rather than wasteful, though the title duplicates the first clause of the description.

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 write endpoint with no output schema, the description covers the essentials: the gate to execution, the preview fallback, the status code, and the force semantics. Gaps remain on what the preview returns and on failure behavior for an already-run period without force, which matters given the title's emphasis on 201/period semantics.

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 50%: confirm and idempotencyKey already have schema descriptions, so only 'id' and 'force' need help. The description does cover those two (id is the rule in the path; force re-runs an already-executed period), which compensates well, but it never mentions idempotency-key behavior for retries, which matters for a write tool.

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+resource ("Run an automation now") and pins it to POST /v1/rules/{id}/run, plus it distinguishes the scoped variant (force needed for a period that already ran). It never names the obvious sibling rules_simulate, which is the natural read-only alternative, so an agent still has to infer the boundary from sibling names alone.

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?

Explicit execution condition is given: nothing is executed unless confirm: true, and without it a preview of the request is returned. It also tells the agent when force is required (a period that already ran). What is missing is the when-not/alternative routing to rules_simulate for a true dry run, and the error behavior if force is omitted.

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

rules_runsRun history of an automation, newest firstC
Read-only

Run history of an automation, newest first (GET /v1/rules/{id}/runs).

NameRequiredDescriptionDefault
idYes
limitNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds something genuinely useful beyond that — the result ordering (newest first) and the endpoint path — but says nothing about pagination behavior, how many runs exist, or how failures appear in the history.

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; the ordering constraint and endpoint come immediately. It is efficient but so terse that the brevity shades into under-specification rather than economy.

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?

There is no output schema and zero schema description coverage, so the definition should carry more weight than it does. An agent gets no sense of what a run record contains, whether results are paginated or capped, or how to read a failed run, which leaves real gaps for a history-listing tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It implies that {id} identifies the automation whose runs are listed (via the path template) but adds no meaning for the 'limit' parameter — no default, no tie to pagination, no statement that it caps the number of runs returned.

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 resource ('run history of an automation') and adds ordering ('newest first') plus the underlying endpoint GET /v1/rules/{id}/runs, so an agent can tell this is a read of past executions rather than triggering a run. It does not explicitly contrast itself with siblings such as rules_run or rules_get, 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 Guidelines2/5

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

There is no when-to-use guidance: nothing says to call this to inspect past executions versus rules_get for the rule definition or rules_run to trigger one. The agent must infer the distinction 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.

rules_setScheduleSet an automation schedule (hourly, daily, weekly) and time of dayA
Idempotent

Set an automation schedule (hourly, daily, weekly) and time of day (PUT /v1/rules/{id}/schedule). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=true), the description discloses the two things an agent most needs: this is a write, and it is gated behind confirm:true because there is no server-side dry run — a meaningful caveat about the preview being client-side only. It stops short of saying whether the new schedule replaces or merges with an existing one.

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

Conciseness5/5

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

Two sentences, zero filler: purpose plus route first, then the critical gating constraint front and center. Every clause 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?

For a confirm-gated mutation with a nested body object and no output schema, the description covers the safety story well but leaves the payload semantics thin — no explanation of the 'at' sub-fields, the meaning of weekday, or whether the schedule is replaced wholesale. Adequate to call correctly only if the agent guesses at the nested object's semantics.

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

Parameters2/5

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

With only 50% schema description coverage and a nested 'at' object whose hour/minute/weekday/timezone sub-fields carry no descriptions at all, the description should compensate but does not. Saying 'hourly, daily, weekly and time of day' merely repeats the schema enum and title, leaving ambiguous points unaddressed — notably what weekday value 0 means (Sunday vs Monday) and how timezone interacts with the defaults.

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 ('Set an automation schedule'), enumerates the allowed cadences, and names the HTTP route PUT /v1/rules/{id}/schedule. An agent can distinguish it from the read counterpart rules_getSchedule by the verb alone, though the description never names that sibling explicitly.

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 'WRITE: not executed unless confirm: true' clause gives a concrete calling condition, which is real usage guidance. However, there is no statement about when to prefer rules_simulate first, when to use rules_getSchedule to inspect the current schedule before overwriting, or any prerequisite/scope requirement.

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

rules_setSpendMonitorSet the minutes between spend monitor runs (5 to 1440)A
Idempotent

Set the minutes between spend monitor runs (5 to 1440) (PUT /v1/monitors/spend). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=true. The description adds substantive behavior beyond that: the call is a write, it is not executed unless confirm:true, and there is no server-side dry run, which is important for a setter with no undo. It stops short of describing permission requirements or what happens to an existing schedule.

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 compact sentences, front-loaded with the action and the numeric constraint, then the safety caveat. The range is stated twice (title plus description) and the endpoint path is somewhat incidental, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a three-parameter setter with a nested body and no output schema, the description covers the action, the bounds, and the write-safety model including the preview fallback when confirm is absent. It could add whether the spend monitor must already be enabled or how this interacts with rules_getSpendMonitor, but nothing essential to calling 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?

With 67% schema coverage, the schema already documents confirm and idempotencyKey inline, and the nested body.minutes carries minimum/maximum. The description only restates the 5–1440 range and reinforces the confirm gating, adding little syntax or format detail the schema does not already hold.

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 ('Set the minutes between spend monitor runs'), gives the accepted range (5 to 1440), and cites the underlying endpoint (PUT /v1/monitors/spend). It is clearly distinguishable from rules_getSpendMonitor by the write verb, though it never names that read counterpart explicitly.

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 rather than stated: the reader infers this is the mutation counterpart to rules_getSpendMonitor. The confirm gate is explained, but there is no guidance on when to prefer this over other monitor tools (rules_detectAnomalies, rules_simulate) or what prerequisites exist.

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

rules_simulateReplay a stored or inline automation over the last N days of metrics (read-only)C
Read-only

Replay a stored or inline automation over the last N days of metrics (read-only) (POST /v1/rules/simulate).

NameRequiredDescriptionDefault
bodyYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's "(read-only)" merely restates them rather than adding context. It says nothing about what a replay produces (matched entities, would-be actions, per-day evaluation), whether inline definitions are persisted, or the 90-day ceiling. The only value-add is the HTTP endpoint path, which is not actionable for an agent.

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?

One short, front-loaded sentence with no filler, which is structurally sound. However, it is almost verbatim identical to the tool title, so the sentence spends its words on redundancy rather than on information, and the appended endpoint path adds no decision value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

The tool has a very complex nested schema (conditions, action oneOf variants, scope hierarchy) and no output schema, so the description carries a heavy burden it does not meet for input construction. It is only marginally complete for purpose: an agent knows it is a read-only replay, but not what it gets back or how to shape the definition.

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

Parameters2/5

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

Schema description coverage is 0% and the single "body" parameter wraps a large nested object whose sub-fields (scope.platform enum of hundreds of values, conditions, action variants, minSpendForEval) are entirely undocumented. "Stored or inline automation" faintly maps to the ruleId/definition split, and "last N days" maps to body.days, but nothing explains the semantics of the fields an agent must construct.

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?

"Replay a stored or inline automation over the last N days of metrics" gives a concrete verb (replay/simulate), resource (automation/rule), and scope (N days of metrics), which is far better than a bare name. It stops short of naming the nearest sibling (rules_run, rules_runs), so an agent cannot tell simulate from run without opening both schemas, but the parenthetical "read-only" hints at the dry-run distinction.

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 never says when to choose this over rules_run, rules_get, or rules_detectAnomalies, nor any precondition (e.g., the rule must already exist when passing ruleId). The only implicit guidance is the "(read-only)" marker, which suggests a non-mutating dry run but is not stated as a selection criterion.

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

rules_updateRename, toggle or redefine a ruleA

Rename, toggle or redefine a rule (PATCH /v1/rules/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description's disclosure that the call is a write gated on confirm and that the operation has no server-side dry run adds real context beyond them. It loses a point because the 'preview is returned without confirm' behavior is already documented on the confirm parameter in the schema, making part of the statement redundant.

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 clauses, both front-loaded with the action first and the write/confirm constraint second; no filler, no restating of the title, and every phrase carries information the agent needs before calling.

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, nested-body tool with no output schema, the definition states the endpoint, the fields it can change, and the confirm gate, which is enough to invoke it safely. It is not fully complete because it never says how omitted body properties are treated or what the preview response contains.

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?

At 50% schema description coverage, the description usefully maps its verbs onto the undocumented nested body fields: rename maps to name, toggle to enabled, redefine to definition. It does not clarify idempotencyKey or whether omitted body fields are left untouched, so the compensation is partial rather than complete.

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 gives concrete verbs (rename, toggle, redefine) tied to a specific resource and endpoint (PATCH /v1/rules/{id}), which lets an agent distinguish it from rules_create, rules_get and rules_delete. It falls just short of a 5 because it does not explicitly name those siblings or delimit the scope beyond the endpoint.

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 strongest usable guidance is the execution gate: nothing is sent unless confirm: true. However, there is no explicit routing advice about when to prefer rules_create versus this tool, nor any statement about prerequisites or partial-update expectations, so the when-to-use condition is only implied by the endpoint path.

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

savedViews_createSave a dashboard filterB

Save a dashboard filter (POST /v1/saved-views). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

B3.4/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds the critical behavioral fact that nothing is executed unless confirm: true and that there is no server-side dry run. That is exactly the kind of mutation-safety context annotations do not carry, though it overlaps the schema's confirm description and omits side effects like duplicate-name handling.

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 compact sentences with the write gate front-loaded right after the purpose. The parenthetical '(this operation has no server-side dry run)' is slightly awkward next to the stated dry-run preview behavior, which costs a 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?

For a mutation tool with no output schema, the description covers the safety gate but not the return shape, the meaning of kind values, or idempotency behavior. An agent could invoke it correctly only by reading the nested schema closely.

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

Parameters2/5

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

The required 'body' object (kind enum, name bounds, free-form config) is the hardest part of this schema and the description says nothing about it beyond the phrase 'dashboard filter'. With only 67% schema coverage, the description needs to compensate for the nested, undocumented body and does not.

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 ('Save a dashboard filter') plus the underlying endpoint (POST /v1/saved-views), so an agent knows this creates a persisted filter. It does not explicitly contrast with siblings like savedViews_list or savedViews_delete, 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 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 (persisting a dashboard filter) and flags the confirm gate, but it never states when to prefer savedViews_list/savedViews_delete or what preconditions exist. Usage is inferred from the verb and name rather than spelled out.

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

savedViews_deleteDelete a saved viewA
DestructiveIdempotent

Delete a saved view (DELETE /v1/saved-views/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds genuinely new behavior: the write is gated behind confirm, and there is no server-side dry run, so the client-side preview is the only safety net. It stops short of saying whether the delete is recoverable or affects other users' access to the view.

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 tightly packed sentences with the resource, the endpoint, and the write-safety caveat front-loaded. No filler and nothing repeated unnecessarily.

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 destructive, single-parameter mutation with no output schema, the definition covers the critical unknowns: it is a write, it is confirm-gated, and there is no server-side dry run. Remaining gaps — irreversibility and scope of the deletion — are modest but would be useful before an agent commits.

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 67% and the confirm parameter is already fully documented in the schema, including the preview fallback. The description only restates that gate and notes the absence of a server-side dry run; it adds nothing about id or idempotencyKey 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?

States a specific verb and resource ('Delete a saved view') and even pins the underlying endpoint DELETE /v1/saved-views/{id}, so the agent knows exactly what is being removed. It doesn't explicitly contrast with sibling savedViews_list/create, but the destructive verb makes the distinction obvious.

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 supplies an important invocation rule — nothing is executed unless confirm: true — which effectively tells the agent how to call it safely. It gives no guidance on when deletion is appropriate versus alternatives (e.g., creating a replacement view or listing views first), so usage context is only implied.

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

savedViews_listList saved dashboard filtersC
Read-only

List saved dashboard filters (GET /v1/saved-views).

NameRequiredDescriptionDefault
kindNo

TDQS

C2.7/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the description carries a lighter burden, but it adds almost no behavioral context beyond restating that it's a list operation and giving the REST path. It says nothing about what a saved view contains, whether results are paginated, or how omitted filters affect the result set.

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 with no filler; the parenthetical endpoint is mildly redundant but cheap and informative. Its terseness is efficient rather than padded, though it verges on under-specification for the schema it fronts.

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?

This is a simple read-only list tool, but with no output schema and no parameter documentation, an agent still cannot tell what is returned (ids, names, filter payloads?) or how the kind filter behaves. The definition is complete enough to call, but not complete enough to call correctly or to use the results.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter "kind" is never mentioned in the description. The enum values (campaigns, compare) hint at scope, but an agent gets no explanation of what a kind is, whether it is optional in practice, or what happens when it is omitted.

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?

Uses a specific verb+resource ("List saved dashboard filters") and even cites the underlying endpoint (GET /v1/saved-views), which lets an agent distinguish it from savedViews_create and savedViews_delete. It stops short of differentiating the near-synonym naming ("saved views" vs "saved dashboard filters"), but the intent 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?

There is no when-to-use guidance at all: nothing says whether this is the canonical way to retrieve saved views for re-use, nor whether the kind filter is needed before calling related tools. The description also doesn't mention the sibling write operations (savedViews_create, savedViews_delete) or when to prefer them.

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

security_deleteWorkspaceErase the workspace (owner only); confirm must equal the workspace idA

Erase the workspace (owner only); confirm must equal the workspace id (POST /v1/workspace/delete). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description carries the load and does so: it discloses destructive intent, the owner permission requirement, and that there is no server-side dry run. It still says nothing about cascade effects, recoverability, or what a successful deletion leaves behind.

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 compact sentences with the destructive action and the permission constraint front-loaded, and no filler. The compressed 'confirm' phrasing is where clarity is sacrificed for brevity.

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 high-stakes destructive tool with no output schema, it covers the essentials an agent needs before calling: what is destroyed, who may do it, that execution is gated client-side, and that no server-side rollback preview exists. Big-picture operational detail (recovery, cascades) is missing but is arguably outside a tool definition's scope.

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 67%, so the schema already documents the top-level confirm boolean and idempotencyKey. The description adds that confirm 'must equal the workspace id,' which suggests the nested body.confirm string rather than the boolean gate — the two confirm fields are never disambiguated, so an agent could easily send the wrong type to the wrong field.

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 irreversible verb ('Erase') plus the resource ('the workspace'), adds the owner-only scope, and even names the underlying endpoint. It is clearly distinct from siblings like security_exportWorkspace or workspaces_create.

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 the key precondition (owner only) and the write gate (nothing executes unless confirm is true), which tells the agent when this will actually take effect. It does not name alternatives or explicitly warn when not to use it, but no sibling competes for the same job.

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

security_exportWorkspaceExport every workspace row except secrets as a JSON attachment (session only)A
Read-only

Export every workspace row except secrets as a JSON attachment (session only) (GET /v1/workspace/export).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is already covered; the description still adds two useful behavioral facts beyond that: secret values are excluded from the export, and the call requires a session rather than an API key. It stops short of describing delivery mechanics (inline payload vs. download URL) or any size/rate constraints on a full-workspace dump.

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 the scope, format, and an HTTP route for operational reference. Nothing extraneous; the endpoint path is the only mildly redundant element but is useful for debugging and tracing.

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 zero-param tool with no output schema, the description should still clarify how the JSON attachment is delivered to the caller (URL, base64 blob, or link expiry), and it does not. The core scope is clear, but the practical mechanics of receiving a full-workspace export remain unspecified.

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, so the schema has nothing to disambiguate and the baseline of 4 applies. The description correctly signals a parameterless call, leaving no ambiguity about 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?

Names a specific verb (export) plus the exact resource scope (every workspace row except secrets) and output format (JSON attachment). This makes it clearly distinguishable from siblings like security_getPolicy, security_verifyAudit, and security_deleteWorkspace, which operate on other parts of the security surface.

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 parenthetical '(session only)' implies an authentication prerequisite, but the description never states when an agent should choose this over other security endpoints, nor any exclusions beyond the secrets note. Usage is only implied by the scope wording.

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

security_getPolicyWorkspace security policy: session lifetime, API key age, data retentionB
Read-only

Workspace security policy: session lifetime, API key age, data retention (GET /v1/security/policy).

NameRequiredDescriptionDefault

No parameters

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 openWorldHint=true, so the safety profile is covered. The description adds real value by naming the returned fields (session lifetime, API key age, data retention), which stands in for the missing output schema, but it says nothing about workspace scoping, required auth level, or whether it returns defaults when no policy is set.

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 phrase with no filler; the resource and returned fields come first and the endpoint path trails as supporting detail. It is arguably too terse rather than too long, but nothing is wasted.

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 parameterless single-endpoint GET with no output schema, the description does the minimum useful work by disclosing the three returned fields. It is still missing workspace scoping and authentication expectations, which matter for an openWorldHint tool.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; per the baseline for a 0-param schema this scores 4. The field list in the description is about return values rather than inputs, so it neither helps nor hurts here.

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 resource (workspace security policy) and enumerates the three fields it exposes, plus the underlying endpoint GET /v1/security/policy, which unambiguously signals a read operation. It does not explicitly contrast with the sibling security_setPolicy, so the read-vs-write split must be inferred from the HTTP verb in parentheses.

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 statement of when to call this versus security_setPolicy (to modify the policy) or security_verifyAudit (to check compliance). The only usage signal is the embedded GET verb, which an agent must interpret on its own; no prerequisites, 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.

security_setPolicyUpdate the security policy (patch semantics; session only)A
Idempotent

Update the security policy (patch semantics; session only) (PUT /v1/security/policy). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and idempotentHint=true, so the write/idempotency profile is already covered; the description goes further by disclosing the confirm-gate behavior (nothing is sent and a request preview is returned without confirm: true) and explicitly warning that there is no server-side dry run. That is genuine added context an agent would otherwise have to discover by trial. It does not contradict any 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?

Two compact sentences with the operation and its critical safety gate front-loaded. The repeated parenthetical title text is slightly redundant, but nothing else is wasted and the most decision-relevant fact (confirm required to execute) arrives early.

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 no output schema, the description helpfully explains what comes back when confirm is omitted, which covers the response shape adequately. However, for a mutation tool with a nested, entirely undocumented body of security-relevant settings, the definition says nothing about which fields can be patched or what omitting a field does under patch semantics.

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 67%, so the schema already documents confirm and idempotencyKey; the description restates the confirm behavior without adding syntax or format detail. The nested body object's fields (retention, sessionTtlHours, apiKeyMaxAgeDays, sessionIdleMinutes) carry no description in either place, and the description does not compensate for that gap.

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 the security policy') and adds two scoping qualifiers, patch semantics and session-only, plus the endpoint path. It is clearly distinguishable from the read-side sibling security_getPolicy, though the first clause is largely a restatement of 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?

Usage is only implied: 'patch semantics' signals partial updates and 'session only' signals scope, but there is no explicit when-to-use, no guidance on reading the current policy first via security_getPolicy, and no statement of what this tool should not be used for. The confirm gate is described, but that is execution mechanics rather than selection guidance.

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

security_verifyAuditRecompute the audit hash chain; anchor head outside the databaseA
Read-only

Recompute the audit hash chain; anchor head outside the database (GET /v1/audit/verify).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuine value by disclosing the two-part behavior (recompute chain, anchor head externally), which tells the agent this is an integrity-verification pass with an out-of-DB write to an anchor. The gap: it doesn't say whether the recompute is expensive, whether it can fail/abort, or what the outcome indicates.

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 clause states the action and the key behavioral detail, with the endpoint in parentheses for traceability. No filler, no restatement of 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?

With no parameters and no output schema, the description carries the burden of explaining what comes back from a verification call — e.g., a validity/chain-intact result or head hash — and it stops short of that. What it does say (recompute + external anchor) is accurate and sufficient to invoke it correctly, but not to interpret the result.

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, so there is nothing for the description to disambiguate; baseline 4 applies. Nothing in the text muddies 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?

The description names a specific verb and resource ("Recompute the audit hash chain") plus the distinctive behavior of anchoring the head outside the database, which separates it from read-only listings like audit_list or members_audit. It doesn't explicitly name a sibling to rule out, but the operation is unmistakably encryption/integrity verification rather than a data 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 purpose implies the usage context (verifying chain integrity/tamper evidence), but there is no explicit "use when..." statement, no mention of prerequisites such as required role, and no exclusion pointing at audit_list for plain log retrieval. An agent can infer the scenario but is not told it directly.

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

tracking_createIngestKeyCreate an ingest key (201); a server key is shown in full only nowA

Create an ingest key (201); a server key is shown in full only now (POST /v1/tracking/ingest-keys). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds meaningful behavior beyond that: the 201 response, the one-time full disclosure of a server key, the absence of a server-side dry run, and the confirm gate. The main omission is what the preview response contains and whether the key can be retrieved later.

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 dense sentences with the operation and endpoint front-loaded and the write-safety caveat immediately after. Minor redundancy between the title and the first clause, but nothing is wasted.

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 no output schema, the description correctly supplies the return signal (201, key shown in full only now) and the dry-run caveat. It falls short on the nested body semantics (kind, clientId) that an agent needs to construct a correct request.

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 67% and the description only echoes the confirm gate that the schema already documents. It never explains the 'kind' enum (public vs server) or the role of clientId, which are the semantically loaded parts of the nested body object.

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 ('Create an ingest key') plus the underlying endpoint (POST /v1/tracking/ingest-keys), which cleanly separates it from siblings like tracking_listIngestKeys and tracking_revokeIngestKey. The parenthetical about the server key being shown in full only once adds scope detail rather than restating the 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 'WRITE: not executed unless confirm: true' clause gives a concrete precondition for invocation, which is real usage guidance. However, it never says when to choose this over adjacent tools such as apiKeys_create or tracking_listIngestKeys, so the agent must infer the selection context.

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

tracking_getSettingsAttribution lookback windowB
Read-only

Attribution lookback window (GET /v1/tracking/settings).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the HTTP method and path, with no details on permissions, return value shape, or other behavioral traits 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 minimal and front-loaded, with no filler or redundant sentences. For a zero-parameter read tool, this level of brevity is appropriate.

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?

This is a simple zero-parameter getter whose annotations cover safety, and no output schema exists. However, the description does not state what the settings contain, such as the lookback duration or units returned, leaving return semantics implicit.

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 parameter semantics are not applicable and the baseline is 4. The description does not need to compensate for any schema description gap.

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 resource, the attribution lookback window, and indicates retrieval via the GET endpoint. It is distinguishable from the sibling tracking_setSettings, though it does not explicitly contrast the two or state the verb in prose.

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 getter versus tracking_setSettings or other tracking tools. The read-only nature is implied, but there are no explicit usage conditions or alternatives.

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

tracking_ingestIngest events (202). Auth: X-Advernue-Key header, or ?key= for public keysA

Ingest events (202). Auth: X-Advernue-Key header, or ?key= for public keys (POST /v1/events). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
keyNo
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and openWorldHint=true, so the description adds real value: the 202 response semantics, the two auth mechanisms, and critically the fact that nothing is sent unless confirm: true and that there is no server-side dry run. That last point is behavior an agent could not infer from the annotations. It does not cover rate limits, partial-failure behavior for batches, or error modes.

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?

Three short clauses, front-loaded with purpose, then auth, then the write gate. Every element carries information, though the bare "(202)" and "(POST /v1/events)" are terse to the point of being cryptic without expansion.

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 write tool with a large nested body schema, no output schema, and no annotation coverage of destructive or dry-run semantics, the description covers the safety story well but omits the payload shape, batch limits, idempotency behavior, and what the preview response contains. Adequate to call safely, not complete enough to call confidently with the right body.

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 50%, and the description explains two of the four parameters: key (header vs query) and confirm (write gating). The body parameter is the most consequential one and the anyOf union of a single event object versus an events array of 1-25 items is never mentioned, nor is idempotencyKey. It compensates partially but leaves the hardest parameter shape to the schema alone.

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?

"Ingest events" is a specific verb plus resource, and the parenthetical endpoint and 202 status pin down exactly what the call does. It is clearly distinguishable from siblings such as conversions_send or revenue_importCsv by naming events, though it never explicitly contrasts itself with them.

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 supplies the auth mechanics (X-Advernue-Key header or ?key= for public keys) and the confirm gate, which implies when the call will actually fire. It gives no explicit when-to-use versus alternatives like conversions_send or revenue_backfill, and no guidance on choosing single-event versus batch payloads.

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

tracking_listIngestKeysList ingest keys (server keys are masked)B
Read-only

List ingest keys (server keys are masked) (GET /v1/tracking/ingest-keys).

NameRequiredDescriptionDefault

No parameters

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 openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond that: server keys are masked in the result, which tells the agent output will not contain usable secrets. It says nothing about ordering, pagination, or whether workspace-scoped keys 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.

Conciseness4/5

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

A single front-loaded sentence with the key caveat in parentheses; nothing is padded. The trailing "(GET /v1/tracking/ingest-keys)" route restates implementation detail an agent cannot act on, which is the only wasted fragment.

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 zero parameters and no output schema, the description carries the burden of describing what comes back, and it only tells the agent that server keys are masked. It does not indicate what fields a key entry has (id, label, prefix, created date) or whether the list is workspace-scoped, leaving a real gap for a tool with no structured output definition.

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, so the baseline of 4 applies; there is nothing for the description to disambiguate. The schema is empty and fully consistent with a no-argument list call.

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?

"List ingest keys" gives a specific verb and resource, and the parenthetical clarifies the key type. It is clearly distinguishable from siblings like tracking_createIngestKey and tracking_revokeIngestKey by verb alone, though the description never names 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 Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites or scopes, and no routing to alternatives such as tracking_getSettings or tracking_snippet. Usage is only inferable from the verb "List".

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

tracking_revokeIngestKeyRevoke an ingest key (204)A
DestructiveIdempotent

Revoke an ingest key (204) (DELETE /v1/tracking/ingest-keys/{id}). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
idYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description still adds real value by stating that nothing is sent unless confirm is true and that the operation has no server-side dry run — a meaningful caveat for a destructive call. It stops short of saying what breaks after revocation (e.g., whether ingestion using that key immediately fails).

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 compact sentences, front-loaded with the action and endpoint before the write-gate caveat. The redundant '(204)' appears in both title and description, which is minor waste but not harmful.

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-id destructive mutation with no output schema, the definition covers the endpoint, the destructive nature, the confirm gate, the no-dry-run caveat, and implies the 204 empty response. An agent has everything needed to call it correctly and 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?

Schema coverage is 67%; confirm and idempotencyKey already carry their own descriptions, and the description's confirm note largely repeats the schema. The required 'id' parameter gets no added meaning — no indication of where to obtain a key id (presumably from tracking_listIngestKeys) or format expectations.

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 gives a specific verb plus resource ('Revoke an ingest key') and pins it down further with the HTTP verb and path (DELETE /v1/tracking/ingest-keys/{id}). That is enough to separate it from tracking_createIngestKey and tracking_listIngestKeys, though it never names those siblings explicitly.

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 by the operation name — revoke an existing ingest key — but there is no statement of when to choose this over adjacent revocation tools such as apiKeys_revoke or shareLinks_revoke, nor any prerequisite about ownership or permissions. The 'confirm: true' note is an execution mechanic rather than when-to-use guidance.

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

tracking_setSettingsSet the attribution lookback window (1 to 90 days)A
Idempotent

Set the attribution lookback window (1 to 90 days) (PUT /v1/tracking/settings). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false, idempotentHint=true, openWorldHint=true. The description adds genuinely useful behavior: the call is a no-op unless confirm:true, and there is no server-side dry run, so the confirmation gate is purely client-side. That's context an agent cannot derive from 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.

Conciseness4/5

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

Two short sentences with the operation front-loaded and the execution gate immediately after; nothing extraneous. The day range is duplicated from the title, a minor redundancy but not harmful.

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-setting write with no output schema, the definition covers the mutation, the range, the endpoint, and the confirmation requirement. What a preview response actually contains is left to the confirm parameter description, which is acceptable.

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

Parameters3/5

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

Schema description coverage is 67%, and the two optional parameters (confirm, idempotencyKey) already carry their own descriptions. The description's only parameter-level addition is the 1-90 range, which the schema already enforces via minimum/maximum, so it mostly restates structured data.

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 ('Set the attribution lookback window') with the valid range and the underlying endpoint (PUT /v1/tracking/settings). The get/set pairing with sibling tracking_getSettings is inferable but never named explicitly.

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 makes clear that calling without confirm returns a preview rather than mutating state, which implies the intended two-step flow. It does not, however, explicitly contrast this with tracking_getSettings for reading the current value or state when a change is warranted.

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

tracking_snippetThe browser tracking snippet (JavaScript, not JSON)C
Read-only

The browser tracking snippet (JavaScript, not JSON) (GET /v1/tracking.js).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already cover the safety profile (readOnlyHint, openWorldHint), but the description adds no behavior of its own: nothing about whether the snippet embeds a placeholder key, whether output is stable across calls, cache/versioning, or authentication requirements for a GET on /v1/tracking.js.

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 short sentence with the endpoint appended — no filler. The contextually important detail (JS, not JSON) is parenthetically front-loaded rather than buried.

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 structurally trivial (no params, no output schema), so a short description is defensible, but an agent still lacks the integration context that makes this snippet actionable — e.g. which ingest key or workspace it is bound to and how it relates to tracking_ingest. Adequate but with clear 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?

Zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate and it does not introduce phantom inputs.

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 restates the tool name almost verbatim and appends the endpoint path, but the parenthetical '(JavaScript, not JSON)' does add the one fact an agent could not infer: the response body is a script, not a JSON document. There is no verb describing what happens (fetch/return/embed), so it reads closer to a label than a purpose statement.

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

Usage Guidelines2/5

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

Nothing says when an agent should call this versus tracking_getSettings, tracking_ingest, or tracking_createIngestKey, all of which sit in the same tracking_* family. No prerequisites, no mention of needing a workspace or ingest key before the snippet is useful.

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

workspaces_createBootstrap a workspace and owner keyA

Bootstrap a workspace and owner key (POST /v1/workspaces). WRITE: not executed unless confirm: true (this operation has no server-side dry run).

NameRequiredDescriptionDefault
bodyYes
confirmNoSet true to execute. Without it nothing is sent and a preview of the request is returned.
idempotencyKeyNoIdempotency-Key; generated when omitted

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 openWorldHint=true, so the write nature is known. The description adds real value by explaining the two-phase confirm gate and that there is no server-side dry run, but it says nothing about permissions required, whether the created owner key or workspace can be revoked, or what the preview contains.

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 zero filler. The resource and endpoint come first, and the safety-critical confirm constraint follows 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 three-parameter creation tool with a nested but trivial body and no output schema, the definition covers purpose, endpoint, and the execution gate. It could say more about the returned owner key or permission requirements, but nothing essential to invoking 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?

Schema coverage is 67%, so a baseline of 3 applies. The description reinforces the confirm parameter's meaning and adds the 'no server-side dry run' nuance not present in the schema; it does not explain the nested body.name requirements or idempotencyKey behavior, which are left to 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 — 'Bootstrap a workspace and owner key' — and pins the endpoint (POST /v1/workspaces). It even discloses a non-obvious side effect (an owner key is created alongside the workspace), but it never names a sibling or condition that distinguishes it from other workspace/auth operations.

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

Usage Guidelines3/5

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

Usage is only implied by the purpose: an agent can infer you call this to create a workspace. There is no explicit when-to-use or when-not-to-use statement, no mention of prerequisites such as authentication or existing workspace limits, and no pointer to alternatives like auth_switchWorkspace or invites_create.

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. 176 tool updatesv0.1.0
    • First observedactions_get
    • First observedactions_list
    • First observedadAccounts_get
    • First observedadAccounts_list
    • First observedadAccounts_manage
    • First observedadAccounts_sync
    • First observedadGroups_create
    • First observedadGroups_list
    • First observedadGroups_update
    • First observedads_create
    • First observedads_list
    • First observedads_update
    • First observedalerts_list
    • First observedalerts_resolve
    • First observedanalytics_breakdown
    • First observedanalytics_compare
    • First observedanalytics_digest
    • First observedanalytics_forecast
    • First observedanalytics_pacing
    • First observedanalytics_reallocation
    • First observedanalytics_saturation
    • First observedanalytics_synergy
    • First observedanalytics_timeseries
    • First observedapiKeys_create
    • First observedapiKeys_list
    • First observedapiKeys_revoke
    • First observedappCredentials_list
    • First observedappCredentials_remove
    • First observedappCredentials_set
    • First observedapprovalLinks_decide
    • First observedapprovalLinks_preview
    • First observedapprovalLinks_slackInteraction
    • First observedapprovals_approve
    • First observedapprovals_comment
    • First observedapprovals_list
    • First observedapprovals_listComments
    • First observedapprovals_reject
    • First observedapprovers_delete
    • First observedapprovers_list
    • First observedapprovers_registerSelf
    • First observedaudiences_addMembers
    • First observedaudiences_createList
    • First observedaudiences_createLookalike
    • First observedaudiences_get
    • First observedaudiences_list
    • First observedaudiences_remove
    • First observedaudiences_removeMembers
    • First observedaudiences_sync
    • First observedaudit_list
    • First observedauth_logout
    • First observedauth_me
    • First observedauth_switchWorkspace
    • First observedbilling_checkout
    • First observedbilling_overview
    • First observedbilling_portal
    • First observedbilling_referral
    • First observedbranding_get
    • First observedbranding_set
    • First observedcampaigns_create
    • First observedcampaigns_get
    • First observedcampaigns_list
    • First observedcampaigns_setStatus
    • First observedcampaigns_update
    • First observedclients_create
    • First observedclients_list
    • First observedclients_update
    • First observedconnections_create
    • First observedconnections_createWithCredentials
    • First observedconnections_discoverAccounts
    • First observedconnections_health
    • First observedconnections_importMetrics
    • First observedconnections_list
    • First observedconnections_oauthCallback
    • First observedconnections_oauthStart
    • First observedconversions_listDeliveries
    • First observedconversions_listIntegrations
    • First observedconversions_requeue
    • First observedconversions_send
    • First observedconversions_setIntegration
    • First observedcreativeLibrary_content
    • First observedcreativeLibrary_file
    • First observedcreativeLibrary_get
    • First observedcreativeLibrary_list
    • First observedcreativeLibrary_planResize
    • First observedcreativeLibrary_publish
    • First observedcreativeLibrary_remove
    • First observedcreativeLibrary_resize
    • First observedcreativeLibrary_tag
    • First observedcreativeLibrary_upload
    • First observedcreativeLibrary_validate
    • First observedcreatives_upload
    • First observedcrosspost_launch
    • First observedcrosspost_preview
    • First observedcrosspost_resolve
    • First observedfx_list
    • First observedinvites_create
    • First observedinvites_list
    • First observedinvites_preview
    • First observedinvites_revoke
    • First observedmembers_audit
    • First observedmembers_list
    • First observedmembers_remove
    • First observedmembers_update
    • First observednotes_create
    • First observednotes_delete
    • First observednotes_list
    • First observednotes_update
    • First observednotifications_createChannel
    • First observednotifications_createRoute
    • First observednotifications_deleteChannel
    • First observednotifications_deleteRoute
    • First observednotifications_listChannels
    • First observednotifications_listDeliveries
    • First observednotifications_listRoutes
    • First observednotifications_retryDelivery
    • First observednotifications_testChannel
    • First observednotifications_updateChannel
    • First observedoperator_loadFxRates
    • First observedops_health
    • First observedops_ready
    • First observedplatform_platformConfig
    • First observedplatforms_list
    • First observedpublicReports_get
    • First observedpublicReports_html
    • First observedpublicReports_pdf
    • First observedreports_deliver
    • First observedreports_generate
    • First observedreports_get
    • First observedreports_list
    • First observedreports_listDeliveries
    • First observedreports_renderHtml
    • First observedreports_renderPdf
    • First observedreportSchedules_create
    • First observedreportSchedules_delete
    • First observedreportSchedules_list
    • First observedreportSchedules_update
    • First observedreportTemplates_create
    • First observedreportTemplates_delete
    • First observedreportTemplates_list
    • First observedreportTemplates_update
    • First observedrevenue_backfill
    • First observedrevenue_createIntegration
    • First observedrevenue_importCsv
    • First observedrevenue_listIntegrations
    • First observedrules_create
    • First observedrules_delete
    • First observedrules_detectAnomalies
    • First observedrules_get
    • First observedrules_getSchedule
    • First observedrules_getSpendMonitor
    • First observedrules_list
    • First observedrules_run
    • First observedrules_runs
    • First observedrules_setSchedule
    • First observedrules_setSpendMonitor
    • First observedrules_simulate
    • First observedrules_update
    • First observedsavedViews_create
    • First observedsavedViews_delete
    • First observedsavedViews_list
    • First observedsecurity_deleteWorkspace
    • First observedsecurity_exportWorkspace
    • First observedsecurity_getPolicy
    • First observedsecurity_setPolicy
    • First observedsecurity_verifyAudit
    • First observedshareLinks_create
    • First observedshareLinks_list
    • First observedshareLinks_revoke
    • First observedtracking_createIngestKey
    • First observedtracking_getSettings
    • First observedtracking_ingest
    • First observedtracking_listIngestKeys
    • First observedtracking_revokeIngestKey
    • First observedtracking_setSettings
    • First observedtracking_snippet
    • First observedworkspaces_create

TDQS

C2.9/5.0

Scored across 176 tools

Disambiguation4/5

Despite the huge surface, most tools have distinct resource+action purposes and clear domain prefixes, so an agent can usually differentiate list/get/create/update/delete variants. Some overlaps remain (e.g. creativeLibrary_resize vs planResize, rules_run vs rules_simulate, approvals vs approvalLinks vs approvers), but descriptions generally resolve them.

Naming Consistency4/5

The dominant pattern is resource_verb in snake_case with camelCase resource names (e.g. audiences_createList, adGroups_update), which is predictable enough. Minor deviations like auth_me, ops_health, platform_platformConfig, and branding_get reduce consistency slightly but remain readable.

Tool Count1/5

176 tools is far beyond the 50+ threshold and creates a severe selection burden for an agent. Even though the domain is broad, the surface is too large to be practically scoped as a single MCP tool set.

Completeness4/5

Coverage is extensive across ads, analytics, reports, tracking, billing, security, notifications, and admin workflows, with CRUD in many domains. Some lifecycle gaps exist, such as no delete operations for campaigns/ad groups/ads (status changes may substitute) and limited client lifecycle management, but these are minor relative to the surface.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Unified MCP server for managing Meta Ads, LinkedIn Ads, Google Ads, GA4, and Search Console with 89 read/write tools, multi-account support, OAuth setup, and safe dry-run mutations.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Hosted remote MCP for Google Ads, Meta Ads (Facebook and Instagram), GA4 and Google Search Console. Connect Claude, ChatGPT, Cursor, Claude Code or Grok with a Google or Facebook login: audits, search terms, GAQL and Insights reports, keyword research, AI-referral traffic, and approved changes to budgets, bids and negatives. OAuth 2.1, no API keys, free.
    6,928
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables safe, informed management of Yandex.Direct accounts through 11 MCP tools, covering reads, planned two-phase writes, reports, media attachment, Wordstat, Metrika, and Audience operations, while exposing platform knowledge as resources such as limits, traps, and the red line of deliberately absent destructive actions.
    11
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables managing mock Facebook Ads Manager-style campaigns through MCP, including querying nested campaign/ad set/ad performance data, flagging underperformers, drafting budget, creative, and pause/resume proposals, and applying changes only after human review or dashboard approval.
    -