Skip to main content
Glama

🎯 AdsMCP

Русская вСрсия Β· δΈ­ζ–‡η‰ˆ

Manage ads through an AI agent and keep your data local, for free.

AdsMCP is a local MCP server that brings advertising campaigns, spend, and analytics into one interface for your agent. Connect the platforms you need, compare results, and spend less time on routine work.

Our goal is to make advertising simple: from audience research to launch and optimization through a familiar chat, with you in control.

Release 1.1.1: the local core and modular integrations are available; each provider exposes its own capability and safety boundaries. The full advertising lifecycle through an agent is on the roadmap.

What it can do today

  • Collect data: projects, campaigns, spend, and conversions in local SQLite.

  • Measure results: CTR, CPC, CPA, ROAS, and each channel's contribution to conversions.

  • Connect platforms: import from Google Ads, Yandex Direct, Telegram Ads, and Microsoft Advertising once the relevant integrations are configured.

  • Work with communities: Telegram, Discord, and Mastodon connectors for context research and conversations within each channel's rules.

  • Automate with control: start with a trial run (dry-run); external actions require explicit confirmation.

The MCP server is enough to get started locally. Add integrations as you need them; advertising accounts and access are configured separately.

Related MCP server: flour-ads

Integrations: available

Status describes project capabilities after accounts and modules are configured. Changes on external platforms require explicit confirmation.

Integration

Readiness

Available features and limits

Google Ads

βœ… Import and selected actions

Reports and metrics in SQLite; changes through API Agent with confirmation.

Yandex Direct

βœ… Import and selected actions

Metrics, changes, and campaign creation with serving off; deletion is disabled.

Telegram Ads

βœ… Import and ad management

Reports, creation, budgets, review submission, and pausing through the official API.

Microsoft Advertising / Bing

βœ… Read-only

Campaigns, reports, and metric imports; campaign changes are disabled.

Telegram account

βœ… Search and conversations

Chat search and private/public replies; Premium requirements and rate limits apply.

Discord

βœ… Bot connector

Search and posting in permitted channels on authorized servers.

Mastodon

βœ… Account and conversations

OAuth, mention reads, replies, and profile updates.

CRM / Webhook

βœ… Event ingestion

Import submitted conversion events; CRM management is not implemented.

VK Ads via Click.ru

βœ… Integrated Β· manual step

Read-only broker connected; initial VK account linking is required.

Avito Ads

βœ… Integrated Β· read-only

Official Avito Ads API through a local read-only MCP allowlist.

Apple Search Ads

βœ… Integrated Β· read-only

Local read-only MCP for Apple Ads Platform API v1; 57 read tools, writes disabled.

TikTok Ads

βœ… Integrated Β· read-only

Local read-only MCP for the TikTok Business API; 35 read tools, writes disabled.

Reddit Ads

βœ… Integrated Β· read-only

Local read-only MCP for the official Reddit Ads API v3; write tier is disabled.

Email / SMTP + IMAP

βœ… Integrated Β· read/write

IMAP checks and SMTP sending via a restricted allowlist; destructive mailbox tools stay disabled.

Meta Ads

βœ… Integrated Β· read-only

Local read-only MCP for the official Meta Graph/Marketing API; 41 read tools, writes disabled.

OpenAI Ads / ChatGPT

βœ… Integrated Β· read-only

Official OpenAI Ads Advertiser API through a local MCP bridge; account, campaign, ad, insight, audience and audit reads are enabled.

Spotify Ads

βœ… Integrated Β· read-only

Local Adport MCP connects directly to the official Spotify Ads API; writes stay outside the allowlist.

X Ads

βœ… Integrated Β· read-only

Local read-only MCP connects directly to the official X Ads API; OAuth refresh remains external.

Capability matrix

The five capability columns describe what AdsMCP exposes now after the selected module is configured. API/MCP potential records the broader verified provider surface from the research matrix; it does not open those operations in runtime. Campaign create means creating an advertising campaign, while Account create means creating the advertising account itself. Payment means funding or paying the advertising account, not reading a balance or changing a budget.

Integration

Read now

Write now

Campaign create now

Account create now

Payment now

API/MCP potential

Google Ads

βœ…

βœ…

β€”

β€”

β€”

read + write + campaign_create

Yandex Direct

βœ…

βœ…

βœ…

β€”

β€”

read + write + campaign_create

Telegram Ads

βœ…

βœ…

βœ…

β€”

β€”

read + write + campaign_create + account_create + payment*

Microsoft Advertising / Bing

βœ…

β€”

β€”

β€”

β€”

read

VK Ads via Click.ru

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

Avito Ads

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

Apple Search Ads

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

TikTok Ads

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

Reddit Ads

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

Meta Ads

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

OpenAI Ads / ChatGPT

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

Spotify Ads

βœ…

β€”

β€”

β€”

β€”

read

X Ads

βœ…

β€”

β€”

β€”

β€”

read + write + campaign_create

Email / SMTP + IMAP

βœ…

βœ…

β€”

β€”

β€”

read + write

* Telegram payment remains partial: funding/KYC still require an external step. A green integration status means the selected read/write surface is implemented; it does not mean every provider capability is enabled.

See the integration guide (Russian) for details and the roadmap for next steps.

Quick start

You need Node.js 22.5+ and an MCP client with stdio support, such as Cursor or Claude Desktop. From the downloaded repository directory, run:

npm install
npm run build:mcp

Add the server to your MCP client configuration, replacing the path with your own:

{
  "mcpServers": {
    "ads-mcp": {
      "command": "node",
      "args": ["C:/path/to/AdsMCP/dist/index.js"]
    }
  }
}

The client starts the server automatically. Ask your agent to check whether everything is ready to get started. Data is stored in the repository's data/ directory by default.

Before using operational tools, review the Free Use Rules through ads_free_use_rules and accept the current version with ads_free_use_accept using confirm=true. Acceptance is stored only in the local ADS_MCP_DATA directory.

GitHub updates

At startup AdsMCP checks GitHub at most once every 24 hours. It detects the repository from the local origin remote, or you can set ADSMCP_UPDATE_REPOSITORY=owner/repository in .env. A newer release or tag is downloaded to ADS_MCP_DATA/updates/; the running installation and credentials are never overwritten. Set ADSMCP_UPDATE_ENABLED=false to disable the check.

Once a week, AdsMCP checks the local Git working tree for changes made by the user or a module. It never publishes credentials, local data, generated output or ignored installation state. Recommendation-only changes can be submitted as a PR automatically when the GitHub contribution setup is ready. Code, module, documentation or configuration changes are shown by ads_github_contribution_status and require an explicit ads_github_contribution_create_pr call with confirm=true.

For contributions, configure ADSMCP_UPSTREAM_REPOSITORY, a personal ADSMCP_FORK_REPOSITORY and a fine-grained ADSMCP_GITHUB_TOKEN, then call ads_github_contribution_setup. The fork is not required for local use; it is required only before publishing a PR. Set ADSMCP_WEEKLY_PR_ENABLED=false to disable the weekly check.

Documentation

What you need

Where to go

Configure storage, modules, and the local dashboard

User guide (Russian)

Connect a platform and check its capabilities

Integrations (Russian)

Understand the vision and development direction

Product vision (Russian) Β· Roadmap

Explore the architecture and find detailed instructions

Documentation index (Russian)

Build it with us

Join in: connect new platforms, improve modules and documentation, and share your solutions. Together we can make advertising simpler, clearer, and more accessible. Start with the developer guide (Russian).

License: MIT.

Available Tools

143 tools
ads_aiki_setup_guideA

Return the AIKI MCP configuration plus the AdsMCP workflow: search the community topic, check duplicates and topic rules before publishing a new channel or advertising offer, then hand the unverified proposal to dStore.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Return the ... configuration' signals a read-only reference tool, which is useful, but the description never confirms the call has no side effects and never clarifies that the described publishing steps happen in other tools, not here. That ambiguity is the main risk for a zero-annotation tool.

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 sentence with the deliverable front-loaded (the AIKI configuration), followed by the workflow outline. It is dense but every clause carries information; the only weakness is that the workflow clause runs long and reads as instruction rather than description.

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 and no annotations, the description should say more about what the returned configuration/workflow looks like or what the agent should do with it. It names 'dStore' and 'community topic' without mapping them to concrete sibling tools (e.g. the ads_dstore_* or ads_network_* families), leaving the handoff underspecified.

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; no parameter guidance is needed or missing.

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

Purpose4/5

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

States a specific verb+object: it returns the AIKI MCP configuration plus the AdsMCP workflow. However, the second half shifts from describing what the tool returns to prescribing a multi-step publishing workflow, which blurs whether the tool performs those steps or merely documents them. It also does not differentiate itself from near-neighbours such as ads_aiki_status or ads_platform_guide.

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 embedded workflow (search topic, check duplicates and rules, then hand off to dStore) implies this is the entry-point/setup reference an agent should consult before publishing. But there is no explicit 'use this when' clause, no exclusions, and no naming of alternative tools for the same need.

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

ads_aiki_statusC

Show the AIKI community source for AdsMCP. AIKI proposals are unverified leads; dStore must verify them before adding a platform to the catalog.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it never says whether this is a read-only informational call, what data it returns, or whether any auth/setup is required. It offers only domain background about AIKI proposals, not tool 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 with no filler, and the core statement is front-loaded. The brevity comes at the cost of under-specification rather than padding, which is the lesser problem.

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, the description should at least sketch what the response contains (status fields, proposal list, etc.), but it does not. An agent cannot tell what calling this tool will produce.

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 nothing for the description to disambiguate. Baseline 4 applies for a no-parameter 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 says to 'Show the AIKI community source' but never states what the tool actually returns or what 'AIKI status' means operationally. The second sentence explains domain context (proposals are unverified leads) rather than the tool's purpose, and nothing distinguishes it from the sibling ads_aiki_setup_guide.

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 mention of alternatives such as ads_aiki_setup_guide or the dStore status tools. The verification workflow hint ('dStore must verify them before adding a platform') implies context but does not tell the agent when to invoke this tool versus others.

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

ads_attribution_reportC

Attribute local conversion events to tracked touchpoints using a selected attribution model.

NameRequiredDescriptionDefault
toNo
fromNo
modelYes
project_idNo
campaign_idNo
lookback_daysNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about read-only status, computation cost, permissions, or output format. 'Attribute' hints at an analysis read, but an agent cannot confirm it is a safe non-mutating call from the text 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?

A single front-loaded sentence with no filler; the core action leads. It is efficient, though the brevity arguably comes at the cost of the missing details noted elsewhere rather than being genuinely tight.

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 6-parameter tool with no annotations, no output schema, and zero schema description coverage, one sentence is far too thin. An agent lacks enough to call it correctly beyond supplying a model enum value.

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 0% schema description coverage across 6 parameters, the description must compensate but only lightly touches the model parameter and vaguely gestures at from/to via 'conversion events' and 'touchpoints'. It says nothing about date format for from/to, the 0-90 range of lookback_days, or what project_id/campaign_id scope.

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 (attribute) and resources (local conversion events, tracked touchpoints) plus the mechanism (selected attribution model). It reads as an analytics/report operation and is distinguishable from ads_event_ingest, though it does not explicitly contrast with the similar ads_network_conversion_report sibling.

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, no prerequisites, and no mention of alternatives such as ads_network_conversion_report or ads_campaign_analytics. The only implicit cue is that a model must be selected, which the schema already enforces as required.

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

ads_automation_rule_createC

Create a KPI rule. Supported actions are pause_campaign and notify.

NameRequiredDescriptionDefault
idNo
nameYes
actionYes
metricYes
enabledNo
operatorYes
thresholdYes
campaign_idNo
cooldown_minutesNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden for a mutation tool. It does not say whether the rule fires immediately on creation, whether pause_campaign will actually halt live campaigns (a destructive side effect), what enabled defaults to, or what the 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.

Conciseness4/5

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

Two short, front-loaded sentences with no filler. The brevity is appropriate in form, though it comes at the cost of substance rather than padding.

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 9-parameter mutation tool with 5 required fields, no annotations, and no output schema, the description omits the rule's evaluation model, firing behavior, and the effect of the two actions. An agent could not reliably construct a correct rule from this text alone.

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% across 9 parameters. The description only echoes the action enum (pause_campaign/notify), which is already in the schema, and says nothing about metric, operator, threshold, campaign_id, cooldown_minutes, or enabled. With this many undocumented parameters the description fails to compensate.

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 a KPI rule") and briefly names the supported action values. "Create" distinguishes it from ads_automation_rule_list and ads_automation_run, though the term "KPI rule" itself is never defined.

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 create a rule versus listing or running one, no prerequisites (e.g. a valid campaign_id), and no mention of the cooldown semantics. The agent must infer all usage conditions.

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

ads_automation_rule_listC

List automation rules, optionally for one campaign.

NameRequiredDescriptionDefault
campaign_idNo
enabled_onlyNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description bears full behavioral burden. Beyond implying a read via "List," it says nothing about pagination, ordering, return shape, or permission needs, leaving significant gaps 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 efficient, front-loaded sentence with zero filler. It is appropriately short, though brevity here borders on under-specification addressed in other dimensions.

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 annotations, no output schema, and 0% parameter coverage, the definition is too thin to call this tool confidently. Critical details like the enabled_only filter and return format are 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 coverage is 0% for two parameters. The description only alludes to campaign_id ("optionally for one campaign") and entirely omits enabled_only, so it does not compensate for the undocumented 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 (List) and resource (automation rules) with a scoping hint. It doesn't explicitly distinguish from siblings like ads_automation_rule_create or ads_automation_run, but the read/list nature is clear from the wording.

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?

"Optionally for one campaign" hints at scoping but gives no explicit when-to-use, when-not, or alternative routing. Nothing tells the agent when to pass campaign_id or when to prefer another sibling.

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

ads_automation_runB

Evaluate automation rules. This is dry-run unless execute=true is explicitly set.

NameRequiredDescriptionDefault
toYes
fromYes
executeNo
campaign_idNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It usefully discloses the dry-run default and the explicit execute=true gate, which is meaningful safety context. But it does not describe what happens when execution occurs, what rules are affected, or any permission or recovery implications.

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

Conciseness4/5

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

The description is two short sentences with no wasted wording, and the dry-run behavior is front-loaded. It is efficient, though arguably too terse given the tool's four parameters and lack of annotations.

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 four-parameter automation tool with no annotations, no output schema, and 0% schema description coverage, the description is not complete enough. It omits what from/to and campaign_id mean and does not explain the effects of execute=true beyond calling it non-dry-run.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all four parameters. It only clarifies the meaning of execute (dry-run vs execution) and leaves the required from/to parameters and campaign_id completely 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 ("Evaluate") and resource ("automation rules"), making the core action clear. It does not explicitly distinguish this tool from sibling rule-management tools such as ads_automation_rule_create or ads_automation_rule_list, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description gives important usage context for the execute flag: dry-run unless execute=true is explicitly set. However, it does not state when to use this tool versus alternatives like ads_automation_rule_list or rule_create, nor does it describe 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_campaign_analyticsC

Calculate spend, funnel and efficiency KPIs for one or all campaigns.

NameRequiredDescriptionDefault
toNo
fromNo
sourceNo
project_idNo
campaign_idNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the operation is read-only, whether it requires specific permissions, how calculations are performed, whether results are cached, or what the output looks like.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. However, for a tool with five undocumented parameters and no annotations, it is arguably too terse rather than optimally concise.

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

Completeness2/5

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

With no annotations, no output schema, and zero schema description coverage, the description is incomplete. An agent would not know how to properly set the date range, source, or project parameters, nor what to expect from the return value.

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 only vaguely covers campaign scope ('one or all campaigns') and KPI types. It does not explain the critical parameters from, to, source, or project_id, leaving most of the five parameters 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 states a specific verb ('Calculate') and resource ('spend, funnel and efficiency KPIs') with scope ('one or all campaigns'). It is clear what the tool does, but it does not differentiate itself from analytics/report siblings such as ads_project_analytics, ads_campaign_timeseries, or ads_attribution_report.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus sibling analytics and reporting tools. It implies that it is for campaign KPI calculation, but there are no explicit use cases, prerequisites, or alternatives mentioned.

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

ads_campaign_createC

Create a local advertising campaign definition, optionally inside a project. It starts in draft status.

NameRequiredDescriptionDefault
nameYes
sourceNo
ends_atNo
currencyNo
metadataNo
trackingNo
objectiveYes
starts_atNo
targetingNo
project_idNo
daily_budgetNo
budget_amountNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that the campaign 'starts in draft status', which is real behavioral context, but for a 12-param mutation tool it says nothing about permissions, what happens to nested metadata/tracking/targeting, or side effects.

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

Conciseness4/5

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

Two short sentences, front-loaded with the core action, with zero filler. The terseness is efficient, though arguably too thin for the tool's complexity.

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

Completeness2/5

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

Given 12 parameters, nested objects, no output schema, and no annotations, the description is far too sparse to guide correct invocation. It omits budget field distinctions, targeting/metadata/tracking structure, and required-field semantics (name, objective).

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 compensates almost not at all. Only project_id is obliquely referenced ('optionally inside a project'); the many fields (daily_budget vs budget_amount, currency, source, starts_at/ends_at, targeting, metadata, tracking, objective enum) are entirely 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 (Create) and resource (advertising campaign definition), plus the qualifier 'local' that hints at a distinction from platform-specific siblings. It does not explicitly name or contrast with siblings like ads_yandex_direct_create_campaign or ads_telegram_ads_api_create_ad, 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 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 guidance, and no named alternatives despite many sibling campaign-creation tools existing. 'Local' and 'optionally inside a project' give hints about context but nothing tells an agent when to pick this over ads_telegram_ads_api_create_ad or ads_yandex_direct_create_campaign.

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

ads_campaign_getB

Get one campaign by its local id.

NameRequiredDescriptionDefault
campaign_idYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it only implies a read via the word 'Get'. It says nothing about behavior when the id does not exist, whether an error or empty result is returned, or what the response contains. For a lookup tool this leaves the agent guessing at the failure path.

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

Conciseness5/5

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

A single sentence with no filler, and the resource and keying constraint are front-loaded. Nothing in it 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?

The tool is simple (one required parameter, no nesting, no annotations), so the bar is modest, but with no output schema the description should indicate what a successful lookup yields and what happens on a miss. As written, an agent can call it but cannot predict 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 description coverage is 0%, and the schema only constrains campaign_id as a non-empty string. The phrase 'local id' usefully signals that this is an internal identifier rather than a platform-side campaign id, which is real added meaning, but format and sourcing of that id remain unspecified.

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 one campaign') and scopes it to a single record by local id, which implicitly separates it from ads_campaign_list. It stops short of naming the list sibling explicitly, so the differentiation is inferential 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?

'By its local id' implies the precondition for using this tool (you already have an identifier), but there is no explicit when-to-use guidance and no named alternative such as ads_campaign_list for the case where the id is unknown.

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

ads_campaign_listC

List local campaigns, optionally filtered by project and lifecycle status.

NameRequiredDescriptionDefault
limitNo
sourceNo
statusNo
project_idNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it only implies a read operation via 'List'. Nothing is said about ordering, pagination behavior, default page size, or whether all campaigns or only the caller's 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?

A single front-loaded sentence with no filler. It is efficient, though brevity here edges into under-specification rather than tightness.

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 annotations, no output schema, and four undocumented parameters, the description should carry much more. As written, an agent cannot tell the default page size, the meaning of 'source', or how results are ordered.

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 define all four parameters. It only gestures at two of them (project -> project_id, lifecycle status -> status) and says nothing about 'limit' or 'source', leaving non-obvious fields 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 (list local campaigns) and scopes it to 'local', which separates it from the platform-specific campaign tools like ads_yandex_direct_create_campaign or ads_telegram_ads_api_create_ad. It does not explicitly point at the obvious siblings (ads_campaign_get, ads_campaign_create/update), 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 Guidelines3/5

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

The phrase 'optionally filtered by project and lifecycle status' implies the retrieval use case, but there is no statement of when to use this versus ads_campaign_get or ads_campaign_analytics, 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_campaign_timeseriesC

Read normalized time-bucketed provider metrics saved in local SQLite.

NameRequiredDescriptionDefault
toNo
fromNo
limitNo
periodNo
sourceNo
providerNo
project_idNo
campaign_idNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys that the operation is a local read and that data is normalized/time-bucketed, but it does not disclose freshness, sync requirements, side effects, limits, or what the local SQLite dependency means operationally.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. It is efficient, but its brevity is also a limitation given the tool's 8-parameter query surface.

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 an 8-parameter query tool with no annotations, no output schema, and 0% schema description coverage, one sentence is not enough. It identifies the data source and metric type but omits filtering semantics, defaults, period behavior, and pagination/limit expectations.

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% across 8 parameters, so the description must compensate but does not. It only hints at period ('time-bucketed'), provider ('provider metrics'), and campaign ('campaign_timeseries'), leaving from, to, limit, source, and project_id 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: read normalized time-bucketed provider metrics. It also distinguishes the data source as local SQLite, which separates it from live provider report/sync siblings, 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 Guidelines3/5

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

The phrase 'saved in local SQLite' implies this tool reads previously stored metrics rather than fetching live provider data. However, it gives no explicit when-to-use guidance, prerequisites such as syncing first, or named alternatives like the provider report tools.

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

ads_campaign_updateC

Update campaign metadata, lifecycle status or project assignment.

NameRequiredDescriptionDefault
nameNo
sourceNo
statusNo
ends_atNo
currencyNo
metadataNo
trackingNo
objectiveNo
starts_atNo
targetingNo
project_idNo
campaign_idYes
daily_budgetNo
budget_amountNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and mostly fails. It does not state whether this is a partial (PATCH) or full-replace update, whether omitted fields are cleared or preserved, whether status transitions like 'archived' are reversible, or what permissions are required. Only the word 'Update' signals 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?

A single front-loaded sentence with no filler or repetition. It is efficient, though efficiency here comes at the cost of the detail the tool actually 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?

For a 14-parameter mutation tool with no annotations, no output schema and zero schema description coverage, one sentence is far too thin. An agent cannot determine update semantics, field-level meaning, or side effects from this 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?

With 14 parameters and 0% schema description coverage, the description must compensate and does not. It gestures at three parameter groups ('metadata', 'lifecycle status', 'project assignment') but never explains formats for dates, currency codes, budget semantics (daily_budget vs budget_amount), the objective/targeting enums, or the meaning of nullable 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?

Specific verb+resource ('Update campaign metadata, lifecycle status or project assignment') that clearly separates it from ads_campaign_create, ads_campaign_get and ads_campaign_list. However, the enumerated scope understates the tool: budget, objective, targeting, currency and schedule fields are not mentioned, so the stated purpose is narrower than reality.

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 versus ads_campaign_create or the platform-specific writers (ads_yandex_direct_create_campaign, ads_telegram_ads_api_set_ad_paused). No prerequisites, no note on whether the campaign must already exist, and no mention of whether partial updates are allowed.

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

ads_clickru_campaign_draft_set_statusB

Change a locally stored Click.ru campaign between DRAFT and READY. This never sends or launches the campaign.

NameRequiredDescriptionDefault
statusYes
draft_idYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the change is local-only and never sends or launches the campaign, which is important safety context. However, it does not describe permissions, idempotency, valid transition behavior, failure modes, or what happens after status becomes READY.

Agents need to know what a tool does to the world before 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 two short sentences with no wasted wording. The core action is front-loaded, and the safety clarification follows immediately.

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

Completeness3/5

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

For a two-parameter mutation tool with no annotations and no output schema, the description covers the most important safety property: it does not launch or send anything. It still leaves gaps around draft_id semantics, error/return behavior, and relationship to sibling draft-status tools. It is minimally adequate but not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for both parameters. It adds meaning for the status parameter by explaining the DRAFT-to-READY transition context, but it never explains what draft_id represents or how it should be supplied. The result is partial compensation rather than full parameter clarity.

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 ('Change') plus resource ('locally stored Click.ru campaign') and names the two allowed states, DRAFT and READY. It also clarifies that this is not a launch action, which distinguishes it from campaign-execution tools. However, it does not explicitly differentiate itself from the similarly named sibling ads_clickru_campaign_drafts_status.

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

Usage Guidelines3/5

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

The description implies usage by saying it changes a locally stored campaign between DRAFT and READY and never sends or launches it. That gives useful context for when this tool applies, but it does not name an alternative tool or state explicit when-not-to-use conditions beyond the non-launching clarification.

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

ads_clickru_campaign_drafts_statusA

Show locally stored Click.ru campaign drafts, their statuses and the active campaign. Drafts are not sent or launched.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure. It does note the data is 'locally stored' and that nothing is sent or launched, which is genuinely useful side-effect information, but it is silent on auth/setup prerequisites, whether an active campaign may be absent, and what the response looks like.

Agents need to know what a tool does to the world before 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 resource and scope front-loaded and the no-side-effect caveat immediately after. 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 no-parameter, no-output-schema status tool, the description gives enough: what entity is listed, that statuses and an active campaign are included, and that nothing is launched. Only the absence of edge cases (e.g., no drafts present) keeps it from a 5.

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 are defined, so the baseline is 4. There is nothing parameter-related to clarify or omit.

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 ('Show') and resource ('locally stored Click.ru campaign drafts'), plus what is returned: statuses and the active campaign. The sibling ads_clickru_campaign_draft_set_status is implicitly distinguished by the read-only framing, though it is never named.

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 line 'Drafts are not sent or launched' clarifies that this is a passive inspection tool, but it does not say when to reach for it over ads_clickru_campaign_draft_set_status or any other Click.ru tool. Usage is implied rather than prescribed.

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

ads_clickru_profiles_statusA

Show locally stored Click.ru advertiser profiles with masked INNs and the active profile. Never returns API tokens.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and usefully discloses that data is locally stored, INNs are masked, the active profile is included, and API tokens are never returned. It does not explicitly state read-only/no side effects, but 'Show' and the token exclusion provide strong behavioral context.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core behavior and followed by the security-relevant constraint. No unnecessary detail.

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

Completeness4/5

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

For a zero-parameter status tool with no output schema or annotations, the description sufficiently explains the key return content and privacy boundary. It could be slightly richer about response structure, but it is complete enough to invoke correctly.

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

Parameters4/5

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

The tool has zero parameters, so parameter semantics are inherently minimal and the 100% schema coverage baseline applies. The description does not need to explain parameter formats.

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 ('Show') and resource ('locally stored Click.ru advertiser profiles'), and clarifies the returned fields ('masked INNs and the active profile'). It is clearly distinguishable from sibling Click.ru tools such as campaign draft status tools.

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

Usage Guidelines3/5

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

The phrasing implies this is the status/list-view tool for locally stored Click.ru profiles, but it does not explicitly state when to use it versus alternatives or any prerequisites. No direct sibling alternative is named.

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

ads_client_profile_batch_sendA

Send a saved client-profile draft (firstContact or replyToUnread) to up to 50 active profiles with one explicit batch confirmation. The exact saved draft and every variation must have been approved before sending; any draft change requires fresh approval. Requires Telegram Premium, reports a read-only unread-human-dialog preflight without blocking the write, performs an activity preflight (stale exact last-seen and hidden profiles without an avatar are blocked), enforces at least 15 seconds between messages, blocks opted_out profiles, stops on the first send error, and records each successful outbound message.

NameRequiredDescriptionDefault
confirmYesExplicitly confirm this batch of up to 50 messages
draft_keyNoSaved draft to send; defaults to firstContact
profile_idsYes
max_inactive_daysNoMaximum age of Telegram last-seen activity; defaults to 30 days
min_delay_secondsNoDelay between messages; defaults to 15 seconds

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does it: Telegram Premium requirement, a non-blocking read-only unread-human-dialog preflight, a blocking activity preflight (stale exact last-seen, hidden profiles without an avatar), 15-second minimum spacing, opted_out blocking, stop-on-first-error, and per-message recording of successful sends. These are exactly the operational traits an agent cannot infer from the schema.

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

Conciseness4/5

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

Front-loaded with the action and scope, and nearly every clause contributes a distinct operational fact. It is a dense multi-clause run-on, though, which makes the blocking preflight rules harder to parse than a short bulleted structure would.

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 batch-send tool with no annotations and no output schema, the description covers prerequisites, preflights, rate limiting, and partial-failure behavior (stops on first error, records successes). It does not describe what the caller gets back (sent/failed counts, per-profile results) or whether re-running after a mid-batch failure is safe, which is a meaningful gap for a batch mutation.

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 80%, so the baseline is 3, but the description adds real meaning: it names the two draft_key values, ties the activity preflight to the last-seen window (max_inactive_days), and restates the 15-second floor that min_delay_seconds enforces. Only profile_ids and the exact stale-last-seen threshold semantics remain underexplained.

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 (send), a specific resource (a saved client-profile draft, firstContact or replyToUnread), and a bounded scope (up to 50 active profiles, one batch confirmation). This clearly separates it from sibling single-message tools like ads_client_profile_message_add or ads_telegram_account_send.

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 a hard precondition (the exact saved draft and every variation must have been approved; any change requires fresh approval) and the confirmation requirement, so the agent knows when the tool is legal to call. It never names an alternative sibling or says explicitly when not to use this versus a single-recipient send, so it stops short of a 5.

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

ads_client_profile_channel_reviewA

Review the public channel linked in a Telegram user's profile and search it for AI-related topics. Uses the selected local GramJS/TDLib backend, never reads non-public chats, never sends messages, and stores only the bounded review result in the client profile.

NameRequiredDescriptionDefault
queriesNoTopic queries; defaults to Russian and English AI terms
profile_idYes
per_query_limitNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and adds meaningful context: it uses a local GramJS/TDLib backend, never reads non-public chats, never sends messages, and stores only a bounded result in the client profile. It does not cover authentication, rate limits, or failure behavior, but the safety and side-effect profile is unusually clear.

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

Conciseness5/5

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

The description is two compact sentences, front-loads the core action, and then adds safety and storage behavior. There is no filler or repetition.

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

Completeness3/5

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

There is no output schema and no annotations, so the description should carry more detail. It explains the privacy boundary and that a bounded review result is stored, but it does not describe the result shape, what happens when no public channel exists, or how partial failures are surfaced.

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 33%, and the description does not compensate by explaining profile_id, queries, or per_query_limit. It indirectly implies profile_id identifies the Telegram user profile and that AI-topic search is performed, but it says nothing about the query list or the per-query result limit.

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?

It states a specific verb and resource: reviewing the public channel linked in a Telegram user's profile and searching it for AI-related topics. This clearly distinguishes it from generic Telegram post-search tools because the target is the channel already linked to a specific profile.

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

Usage Guidelines3/5

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

The description implies the use case, reviewing a profile-linked public channel for AI topics, and notes that non-public chats are never read. However, it does not explicitly say when to use this versus alternatives such as ads_telegram_public_posts_search or ads_telegram_channel_direct_check.

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

ads_client_profile_createB

Create a local client profile with per-person context. Telegram remains the default channel; channel and external_user_id can represent Mastodon or another connector. contact_account_id records which local connected account made the contact. Consent defaults to unknown; this tool does not send a message.

NameRequiredDescriptionDefault
idNo
sourceNo
statusNo
channelNo
contextNo
metadataNo
usernameNo
display_nameNo
consent_statusNo
next_action_atNo
last_contact_atNo
dialogue_summaryNo
external_user_idNo
telegram_user_idYes
contact_account_idNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose that consent defaults to unknown and that no message is sent. It omits behavior an agent would want for a write tool: idempotency, what happens on duplicate telegram_user_id, and what identifier 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.

Conciseness4/5

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

Four compact sentences with the core action front-loaded and no filler. The channel/connector detail is dense but each clause maps to a real parameter.

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 15-parameter creation tool with no annotations and no output schema, the description leaves major gaps: the required telegram_user_id is unmentioned and the return value (presumably a new profile id) is not described. It reads like parameter footnotes rather than an operating guide.

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% across 15 parameters, so the description must compensate. It explains only channel, external_user_id, contact_account_id, and the consent default, leaving id, source, status, context, metadata, username, display_name, next_action_at, last_contact_at, dialogue_summary, and the required telegram_user_id 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 ("Create a local client profile with per-person context") and clarifies that the profile is a local record. This clearly separates it from the messaging siblings, though it never explicitly contrasts with ads_client_profile_update or ads_client_profile_get.

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 channel-selection guidance ("Telegram remains the default channel; channel and external_user_id can represent Mastodon or another connector") and one useful exclusion ("this tool does not send a message"). However, it never states when to create versus when to update/upsert, nor prerequisites such as a connected account.

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

ads_client_profile_getC

Get one local client profile and its recent dialogue history.

NameRequiredDescriptionDefault
profile_idYes
message_limitNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden and does little: it does not say what 'recent' means, whether the call fails or returns empty when profile_id is unknown, whether history is truncated by default, or what the response shape is. Only the inclusion of dialogue history is disclosed.

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

Conciseness4/5

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

A single well-formed sentence with no filler, and the primary resource is front-loaded before the secondary history payload. Hard to trim further without losing information.

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 lookup tool with zero annotations, zero parameter descriptions and no output schema, this is thin. An agent still cannot tell the default history window, the not-found behavior, or the returned fields, all of which the description would have to supply.

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 both parameters. The description gestures at dialogue history, which loosely maps to message_limit, but never explains that limit's default, its 500 cap, or the format of profile_id, leaving half the semantics 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 ('Get one local client profile') and adds the secondary payload ('its recent dialogue history'). The word 'one' implicitly distinguishes it from ads_client_profile_list, 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 explicit when-to-use, when-not-to-use, or named alternative. The agent must infer from 'one' that this is the single-record counterpart to ads_client_profile_list; nothing about prerequisites or fallback behavior is given.

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

ads_client_profile_listB

List local client profiles without loading full dialogue histories.

NameRequiredDescriptionDefault
limitNo
sourceNo
statusNo
consent_statusNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; 'list' implies a safe read, and the dialogue-history exclusion is a genuinely useful disclosure about payload scope. However, it says nothing about permissions, default limits, ordering, or what a profile summary actually contains, which matters given there is 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.

Conciseness4/5

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

A single front-loaded sentence with no filler; the distinguishing scope detail is placed immediately. It could afford one short clause about available filters without becoming bloated, so it is efficient but slightly under-sized for a four-parameter tool.

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 with four undocumented optional filters, no annotations, and no output schema, the description leaves the agent without enough to call it confidently: no filter semantics, no notion of result shape or pagination. The 'without dialogue histories' note is the only real added context.

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

Parameters2/5

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

Schema description coverage is 0% across four parameters, including two enums (status, consent_status) whose semantics are only bare values. The description never mentions limit, source, status, or consent_status, so filtering behavior and the meaning of 'source' must be guessed entirely from parameter names.

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 local client profiles') and adds a scope qualifier ('without loading full dialogue histories') that separates it from the heavier get/message tools. It does not name a sibling outright, but 'list' vs. 'get' and 'client profile' vs. 'network profile' are distinguishable from the name-plus-description pair.

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 'without loading full dialogue histories' clause implies this is the lightweight/browsing entry point before calling ads_client_profile_get, but no alternative is named and no when-not condition is given. An agent can infer the use case for listing profiles but gets no explicit routing guidance among the many profile-related siblings.

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

ads_client_profile_message_addA

Append an inbound, outbound or internal note to a local client profile. For external or multi-account contacts, pass contact_account_id so the exact account is recorded. This stores history only and never sends a message.

NameRequiredDescriptionDefault
textYes
sent_atNo
metadataNo
directionYes
profile_idYes
contact_account_idNo
telegram_message_idNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it delivers the single most important behavioral fact: this is an append-only history write that 'never sends a message.' It does not cover other traits an agent would want for a 7-parameter mutation β€” whether appends are idempotent, whether the profile must already exist, how telegram_message_id is used for dedupe, or what 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.

Conciseness5/5

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

Three short sentences with no filler; the core action is front-loaded and the safety constraint anchors the end. Every sentence adds information the agent cannot get from structured fields.

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 annotations and no output schema, the definition covers purpose, the write-only safety profile, and one parameter's usage rule. It is not complete enough to cover the semantics of the remaining parameters, error behavior (missing profile, oversized text at maxLength 20000), or what the call returns.

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% across 7 parameters, so the description must compensate and only partly does: it explains the direction values in prose and gives real semantic guidance for contact_account_id (when to supply it and why). profile_id, text, sent_at, telegram_message_id and the nested metadata object are left entirely undocumented in both schema and description.

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 (append) plus the resource (a note/history entry on a local client profile) and enumerates the three note directions. The closing clause 'stores history only and never sends a message' separates it from send-oriented siblings such as ads_client_profile_batch_send and ads_telegram_account_send without the agent needing to open another 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 explicit conditional guidance for contact_account_id ('for external or multi-account contacts, pass contact_account_id so the exact account is recorded') and makes clear the tool is for recording, not delivering. It stops short of naming an alternative tool to use when the agent actually wants to send, leaving that routing to inference.

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

ads_client_profile_unread_checkA

Take a fast read-only snapshot of unread one-to-one human Telegram chats. This returns the latest incoming message only; it does not read full history, mark messages as read, or send anything. Before drafting a reply when a person may have multiple messages, run the local full-history sync script npm run telegram:sync:unread and review every returned message.

NameRequiredDescriptionDefault
limitNoMaximum number of unread human chats to return; defaults to 50

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full safety burden and does much of it: read-only, latest incoming message only, no full history, no mark-as-read, no send. That is exactly the disclosure an agent needs before acting. It doesn't cover auth/permission requirements, per-chat cost, or what a returned record contains, so it stops 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.

Conciseness4/5

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

Front-loaded with the capability statement, then what it does not do, then the escalation path β€” a sensible ordering with little waste. Three sentences is reasonable, though the npm script reference is operational advice that could read as clutter in a tool 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?

No output schema and no annotations exist, so the description must describe returns β€” it does, at the level of 'latest incoming message only'. For a one-parameter, read-only snapshot tool that is close to sufficient; the shape of the returned fields and any pagination/truncation behavior are the 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 100% and the single 'limit' parameter already documents its default of 50 and maximum of 100. The description adds no extra meaning about how limit interacts with the 'latest message only' semantics, so the baseline 3 applies.

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

Purpose4/5

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

States a concrete verb and resource ('fast read-only snapshot of unread one-to-one human Telegram chats') and scopes it to human 1:1 chats, which implicitly separates it from the channel, group, and mark-read siblings. It never names an alternative tool outright, so the differentiation stays inferential rather than explicit.

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

Usage Guidelines4/5

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

Gives a clear triggering context ('before drafting a reply') and a fallback path when a person has multiple messages (run the local full-history sync script and review every returned message). What's missing is guidance relative to the sibling tools β€” e.g., when to pair this with ads_telegram_chat_mark_read or whether to prefer ads_client_profile_channel_review for channel traffic.

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

ads_client_profile_updateC

Update one local client profile, including context, consent status, next action and the local account used for contact. This tool does not send a message.

NameRequiredDescriptionDefault
sourceNo
statusNo
contextNo
metadataNo
usernameNo
profile_idYes
display_nameNo
consent_statusNo
next_action_atNo
last_contact_atNo
dialogue_summaryNo
contact_account_idNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses one meaningful trait β€” no message is sent as a side effect β€” but for a 12-parameter mutation it omits whether omitted/null fields clear or preserve existing values, permission or auth requirements, reversibility, and behavior when profile_id is unknown.

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 written sentences with no filler, and the core operation is front-loaded ahead of the side-effect disclaimer. It is efficient, though the terseness leaves little room for the scoping detail a 12-parameter mutation 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?

Against a mutation tool with 12 parameters, 0% schema description coverage, no annotations and no output schema, the description is too thin. An agent still lacks the patch semantics, validation constraints and error behavior needed to call this safely.

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% across 12 parameters, so the description must compensate and mostly does not. It names roughly four of them (context, consent_status, next_action_at, contact account) but is silent on profile_id, source, status, metadata, username, display_name, last_contact_at, and dialogue_summary, and gives no guidance on the anyOf/null semantics that dominate this 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 ("Update one local client profile") and enumerates the main updatable facets β€” context, consent status, next action, contact account β€” which map onto real schema properties. The closing sentence carves it out from the sibling messaging tools (ads_client_profile_message_add, ads_client_profile_batch_send), though it does not explicitly distinguish it from ads_client_profile_create or ads_client_profile_get.

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?

One explicit negative condition is given ("does not send a message"), which usefully routes messaging intent to the sibling send tools. Beyond that, usage is only implied: nothing says whether the profile must already exist, when to prefer create over update, or how partial updates are intended to behave.

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

ads_dashbord_startB

Start the local AdsMCP settings page on 127.0.0.1. It stores Click.ru data, Yandex Direct OAuth token files and settings, Microsoft Advertising OAuth profiles and Mastodon OAuth account tokens locally, and provides the preferred local Telegram account / GramJS login flow; it never performs billing or campaign actions. Use restart=true only to replace an already-running page.

NameRequiredDescriptionDefault
portNo
restartNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses local storage of sensitive OAuth data and that it never performs billing or campaign actions, but it omits lifecycle details such as whether the server blocks, what it returns, or what happens if restart is false and a page is already running.

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 purpose is front-loaded in the first sentence, and the restart guidance is a separate concise sentence. The long list of stored credential types adds useful security context, though it makes the first sentence dense.

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 no annotations, no output schema, and 0% parameter coverage, the description covers purpose, local credential storage, and safety boundaries reasonably well. It is still missing port semantics, return behavior, and process lifecycle details that an agent needs to invoke 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 description coverage is 0%, so the description must compensate. It explains the meaning of restart=true well but says nothing about the port parameter, leaving one of the two parameters undocumented in both schema and 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 gives a specific verb and resource: 'Start the local AdsMCP settings page on 127.0.0.1.' It implicitly distinguishes itself from campaign/billing siblings by stating it 'never performs billing or campaign actions,' though it does not explicitly differentiate itself from ads_dashbord_stop.

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 clear conditional: 'Use restart=true only to replace an already-running page.' However, it does not explicitly say when to use this tool versus ads_dashbord_stop or other setup/auth tools, leaving the broader usage context implied.

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

ads_dashbord_stopA

Stop the local AdsMCP settings page. This does not delete Click.ru profiles, Microsoft OAuth profiles, Mastodon accounts or campaign drafts.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It usefully clarifies that stopping the settings page does not delete profiles, accounts, or drafts, but it does not describe side effects, permissions, reversibility, or what "stop" does to any running process.

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

Conciseness5/5

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

The description is two concise sentences with the action front-loaded. Every sentence adds useful information: what the tool does and what it does not delete.

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 local lifecycle tool with no output schema, the description is nearly complete: it identifies the action and clarifies an important non-destructive boundary. It could say more about resulting state or side effects, but no major calling detail is missing.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to explain. The description appropriately does not invent parameter guidance, matching the baseline for parameterless tools.

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

Purpose5/5

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

The description states a specific verb and resource: "Stop the local AdsMCP settings page." It clearly distinguishes the tool from its obvious sibling, ads_dashbord_start, by specifying the stop operation on a local settings page.

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 negative clarification ("does not delete Click.ru profiles, Microsoft OAuth profiles, Mastodon accounts or campaign drafts") helps prevent misuse, but the description does not explicitly state when to use this tool, when not to use it beyond deletion, or name an alternative tool.

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

ads_discord_channel_listB

List viewable text, announcement, forum and thread channels in one Discord server.

NameRequiredDescriptionDefault
guild_idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden, and 'viewable' is a genuine behavioral disclosure implying results are permission-filtered to what the bot can see. Beyond that it says nothing about pagination, ordering, rate limits, or whether the bot must already be a guild member.

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 well-formed sentence with the scope constraint front-loaded and zero filler. It is efficient, though its brevity is part of why behavioral and parameter gaps exist.

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 and no annotations, the definition omits how to acquire the guild_id and what the result shape or pagination looks like. Adequate to identify the tool, insufficient to call it confidently in edge cases.

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 required guild_id, and the description only indirectly maps it by saying 'in one Discord server' (guild = server). It adds no format detail (snowflake ID), no guidance on how to obtain a guild_id, and no constraint 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 uses a specific verb ('List') plus a resource ('channels') scoped to 'one Discord server', and enumerates the channel types returned (text, announcement, forum, thread). This distinguishes it clearly from write-oriented siblings like ads_discord_channel_send, though it does not name any 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?

Usage is only implied: listing channels in a server is inherently a discovery step (e.g., to obtain a channel before ads_discord_channel_send), but the description never states when to use it, when not to, or which sibling it supersedes. No exclusions or preconditions are given.

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

ads_discord_channel_sendA

Send one plain-text message to one selected Discord channel after explicit confirm=true. No bulk sends and no member DMs.

NameRequiredDescriptionDefault
textYes
confirmYesExplicitly confirm sending this one channel message
channel_idYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose the key gating behavior: an explicit confirm=true is required and the write is limited to a single plain-text message. It does not state permission/auth requirements, rate limits, whether the send is irreversible, or what happens on failure β€” notable omissions for an unannotated outbound-messaging 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 the action and gate, with the scope exclusions packed into the trailing clause. Nothing is redundant and every clause adds usable constraint.

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

Completeness4/5

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

For a 3-param mutation tool with no annotations and no output schema, the description covers the confirm gate, message type, and cardinality limits, which is most of what an agent needs. The missing piece is channel_id sourcing and success/failure behavior, which keeps it below a 5.

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

Parameters3/5

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

Schema description coverage is only 33% (only confirm is documented), so the description must compensate; it partially does by clarifying that text is plain-text and channel_id is a single selected channel. However it never explains how to obtain a valid channel_id (sibling ads_discord_channel_list exists) or the 2000-char limit context, leaving a real gap for the two undocumented params.

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 (send), a specific resource (one plain-text message), and a specific target (one selected Discord channel). The negative scope clause ('No bulk sends and no member DMs') cleanly separates it from batch/DM-style siblings such as ads_client_profile_batch_send and ads_mastodon_direct_message.

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 a clear precondition ('after explicit confirm=true') and explicit exclusions (no bulk, no DMs), which tells the agent when this tool is not appropriate. It stops short of naming an alternative tool for the excluded cases (e.g. where to go for channel discovery or Telegram equivalents), so it is strong but not complete routing guidance.

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

ads_discord_guild_listB

List Discord servers where the configured bot is installed. This is not a global server search.

NameRequiredDescriptionDefault
limitNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations at all, the description carries the full disclosure burden. It does add real behavioral context by stating results are limited to bot-installed guilds, which prevents an agent from expecting a global directory. However, it says nothing about pagination despite the limit parameter, ordering, or what a returned guild 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.

Conciseness5/5

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

Two sentences, no filler. The scoping statement comes first and the disambiguation follows immediately, which is exactly the front-loaded structure an agent needs.

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 operation with no output schema, the definition covers what the tool returns conceptually but leaves out pagination behavior and result shape. Adequate to call, not complete enough to use the limit parameter intelligently.

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 'limit' (1-200) is never mentioned in the description. The description does not explain that results are capped, what the default cap is, or how to page through more than 200 guilds, so the only parameter is documented solely by its schema type bounds.

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 ('Discord servers'), scoped to where the configured bot is installed. The second sentence explicitly rules out a broader interpretation ('This is not a global server search'), which separates it from the search-style siblings like ads_discord_member_search and ads_discord_message_search.

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

Usage Guidelines3/5

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

The negative guidance ('not a global server search') implies this is the enumeration path rather than a query path, but the description never says positively when to pick this over ads_discord_channel_list or ads_discord_status, nor what prerequisites exist (e.g., bot must be configured).

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

ads_discord_statusA

Check the official Discord bot connector, credentials and current bot identity. Normal user-account tokens and passwords are not supported.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose a real behavioral trait: the authentication model (official bot connector only, no user-account tokens or passwords). That is exactly the kind of auth-requirement context annotations would otherwise supply. It omits what a failed check looks like and whether a live network call is made.

Agents need to know what a tool does to the world before 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 scope, followed immediately by the one constraint an agent most needs to know. 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 zero-parameter status check with no output schema and no annotations, the description covers purpose and auth prerequisites adequately. The main residual gap is that it does not characterize the response (e.g., connected vs. not-connected, what 'bot identity' returns), which matters slightly more here 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 per the baseline there is little for the description to add or omit. Nothing in the description misrepresents the empty input surface.

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?

Clear verb 'Check' paired with a specific resource set: the Discord bot connector, its credentials, and the current bot identity. This is distinguishable from the other Discord siblings (guild_list, channel_list, message_search, channel_send), which all operate on guild data rather than connector health. It stops short of naming those siblings explicitly, 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?

Usage is implied rather than stated: an agent infers this is the pre-flight/health check for the Discord integration. The sentence 'Normal user-account tokens and passwords are not supported' functions as a constraint on valid inputs rather than a when-to-use rule, and no alternative tool or exclusion path is named.

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

ads_dstore_card_getA

Read one public dStore card by numeric id or dStore card URL. Returns normalized title, resource URL, icon, platform, tags and description for catalog discovery.

NameRequiredDescriptionDefault
id_or_urlYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the card is public and lists normalized return fields, which is useful, but it omits error behavior, not-found handling, and any auth or 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.

Conciseness5/5

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

The description is two tight sentences with the action and input front-loaded, followed by return information. Every sentence adds useful meaning without repetition.

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

Completeness4/5

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

For a simple single-parameter read with no output schema, the description is largely complete: it names the input forms and the returned fields. It could be fuller on failure behavior and whether public access has any constraints, but the core is covered.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the single parameter. It does so by explaining that id_or_url accepts either a numeric id or a dStore card URL, though it does not detail URL formatting or validation beyond what is implied.

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: read one public dStore card, with the accepted identifier forms. It implicitly distinguishes itself from list/search siblings by emphasizing 'one' card, but it does not explicitly name or contrast those alternatives.

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

Usage Guidelines3/5

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

The description implies usage when a numeric id or dStore card URL is available, and says it supports catalog discovery. However, it does not explicitly state when to use this instead of ads_dstore_cards_get or ads_dstore_search.

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

ads_dstore_cards_getA

Read up to 50 public dStore cards by id or URL. The result keeps successful cards and reports individual lookup errors.

NameRequiredDescriptionDefault
ids_or_urlsYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It usefully discloses partial-failure semantics ('keeps successful cards and reports individual lookup errors'), which is valuable for batch calls, but says nothing about auth requirements, rate limits, or whether any of the fields are unavailable for private cards.

Agents need to know what a tool does to the world before 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 capability and the limit front-loaded and the result semantics 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.

Completeness4/5

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

For a one-parameter tool with no output schema and no annotations, the description covers input format, batch limit, and result behavior adequately. Only authentication/visibility caveats for 'public' cards are left unstated.

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

Parameters4/5

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

Schema coverage is 0%, so the schema only reveals an array of 1-500 char strings. The description compensates by naming the accepted key types (id or URL) and the 50-item cap, which is exactly the missing information an agent needs to populate the parameter correctly.

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 (Read) and resource (public dStore cards) plus batch scope ('up to 50') and the lookup key types (id or URL). It does not, however, distinguish itself from the sibling ads_dstore_card_get or ads_dstore_search, which an agent would likely confuse with 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 Guidelines3/5

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

Batch usage is implied by the 'up to 50' framing, but there is no explicit when-to-use guidance and no pointer to ads_dstore_card_get for single lookups or ads_dstore_search for discovery. The agent must infer the choice from the capability list alone.

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

ads_dstore_statusA

Show the dStore card and advertising-placement adapter configuration. It reads public catalog data and does not send credentials or publish changes.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden and does so for the most important risk: it states the tool reads public catalog data and neither transmits credentials nor publishes changes, which is solid read-only/side-effect transparency. It stops short of stating auth requirements, rate limits, or whether any configuration state is cached or mutated server-side.

Agents need to know what a tool does to the world before 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 with the subject stated first and the safety caveat second; every clause carries information and nothing is repeated from the name or schema.

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?

No output schema exists, so the description must carry the burden of telling the agent what comes back, and 'the dStore card and advertising-placement adapter configuration' is a rough sketch rather than a description of the returned fields or shape. For a zero-parameter read tool with no annotations, that leaves a real gap in knowing what to expect from 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 input schema has zero properties, so there are no parameters to disambiguate; the baseline for a 0-param tool applies. The description correctly implies a simple parameterless call and adds no misleading parameter talk.

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 verb+resource is concrete: it 'shows' the dStore card and advertising-placement adapter configuration, so an agent knows the subject matter. However, it does not distinguish itself from near-identical siblings such as ads_dstore_cards_get, ads_dstore_card_get, or ads_store_status, leaving overlap for the agent to resolve unaided.

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: the negation clause ('does not send credentials or publish changes') signals this is a safe inspection call rather than a mutation, which effectively narrows its role. There is no explicit when-to-use, no stated prerequisites, and no named alternative among the several dStore/status siblings.

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

ads_event_ingestB

Ingest a funnel event or conversion. A stable dedupe_key makes retries safe.

NameRequiredDescriptionDefault
idNo
kindYes
countNo
amountNo
currencyNo
metadataNo
providerNo
trackingNo
dedupe_keyNo
event_nameYes
session_idNo
visitor_idNo
campaign_idYes
external_idNo
occurred_atNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does valuable work by disclosing idempotency semantics ('a stable dedupe_key makes retries safe'), which is real context an agent needs. However, it says nothing about what happens on conflicting non-matching data, auth/permission needs, or what the tool returns on success.

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 core action comes first and the idempotency caveat second. It is efficient, though for a 15-parameter ingestion endpoint the brevity edges into under-specification rather than pure conciseness.

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 mutation endpoint with 15 parameters, a nested tracking object, no annotations, and no output schema requires substantially more description than two sentences. The agent is left guessing about event timing, currency pairing with amount, and the meaning of most tracking fields.

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% across 15 parameters, so the description must compensate and mostly does not. Only dedupe_key gets any explanatory treatment; critical fields like kind (an enum of event types), occurred_at, amount/currency, count, and the nested tracking object are entirely undocumented in both schema and 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 states a specific verb and resource ('Ingest a funnel event or conversion'), which clearly distinguishes this write tool from the read/report siblings such as ads_network_conversion_report and ads_campaign_analytics. It does not explicitly name a sibling it should be preferred over, 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 clause about a stable dedupe_key genuinely implies a usage pattern (retry-safe ingestion), giving more than nothing. But there is no explicit when-to-use vs alternatives guidance, no mention of when to prefer ads_spend_record for spend, 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.

ads_free_use_acceptA

Accept the current AdsMCP Free Use Rules for this local data directory. Review ads_free_use_rules first.

NameRequiredDescriptionDefault
confirmYesMust be true after the user has reviewed the rules.
rules_versionNoExpected rules version, currently 1.0.

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden. It discloses the local-directory scope and the prerequisite review step, but it does not explain what acceptance records, whether it is persistent or reversible, or what permissions or side effects are involved.

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

Conciseness5/5

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

The description is two short sentences with the action and scope front-loaded, followed by the prerequisite. Every sentence carries useful routing or procedural 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?

The description plus schema is sufficient for an agent to invoke the tool correctly: review the rules first, then call with confirm=true. However, with no annotations and no output schema, it remains thin on what acceptance actually changes or returns.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains that confirm must be true after review and that rules_version is currently 1.0. The description adds no additional parameter meaning, so the baseline score of 3 is appropriate.

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

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: 'Accept the current AdsMCP Free Use Rules', and scopes it to 'this local data directory'. It also distinguishes the action from the sibling ads_free_use_rules by explicitly directing the agent to review that tool first.

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

Usage Guidelines5/5

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

The sentence 'Review ads_free_use_rules first' gives an explicit prerequisite and names the sibling tool to use before this one. It effectively tells the agent both when to use this tool and which alternative action must precede it.

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

ads_free_use_rulesA

Read the AdsMCP Free Use Rules and see whether this local installation has accepted the current version.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose two behaviors beyond the name β€” it reads the rules text and it inspects local acceptance state β€” and 'Read' implies a non-mutating operation, but it does not state the return shape (rules text vs. a boolean flag), whether the rules are fetched remotely or bundled locally, or any auth requirement.

Agents need to know what a tool does to the world before 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 compact sentence with the read action front-loaded and the status-check purpose following immediately. No filler and no repetition of the tool name.

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, no-output-schema tool this is nearly sufficient: an agent knows what is read and what state is evaluated. The one remaining gap is what the response actually contains, which matters because the only stated purpose is obtaining that status.

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. The description correctly implies no inputs are needed to perform the check.

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 ('Read') plus a named resource ('AdsMCP Free Use Rules') and adds a second concrete outcome: reporting whether this local installation has accepted the current version. That distinguishes the intent from a pure document fetch, though it never names the sibling ads_free_use_accept that performs the acceptance action.

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: an agent can infer this is the check-before-accept step, but the description never says when to call it versus ads_free_use_accept or whether it should precede acceptance. No exclusions or preconditions are stated.

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

ads_github_contribution_create_prA

Review the changedFiles from ads_github_contribution_status, then create one GitHub branch and pull request after confirm=true.

NameRequiredDescriptionDefault
bodyNo
titleNo
confirmYesSet true only after reviewing the complete changedFiles list and approving publication.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden; it does disclose that this is a mutating publish step creating exactly one branch and PR, gated behind confirm=true. It omits permissions/auth needs, whether the branch or PR is created idempotently, what happens on partial failure, and what 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.

Conciseness5/5

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

A single tight sentence that front-loads the prerequisite, then the action, then the gating condition; 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 3-parameter, no-annotation, no-output-schema write tool the description covers the essential workflow and safety gate, though it leaves permission requirements and the meaning of title/body unexplained.

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 `confirm` is documented in the schema, while `title` and `body` are bare strings with maxLength limits. The description compensates for neither, never explaining what title/body populate in the PR or how they are derived.

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

Purpose5/5

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

States a specific verb+resource ('create one GitHub branch and pull request') and frames the prerequisite sibling ads_github_contribution_status, so it is unmistakable versus status/setup siblings in the same family.

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 sequences the workflow: review changedFiles from ads_github_contribution_status first, then call this only with confirm=true. It gives clear context but never states exclusions or what to do instead if the review is rejected.

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

ads_github_contribution_setupA

Prepare an optional GitHub fork for publishing reviewed AdsMCP changes. confirm=true may create the fork through the configured GitHub token.

NameRequiredDescriptionDefault
confirmYesSet true only after reviewing the upstream repository and agreeing to create or save the fork setup.
create_forkNoCreate a personal fork through the GitHub API when one is not already configured; defaults to true.
upstream_repositoryNoGitHub owner/repository for the upstream project; defaults to ADSMCP_UPSTREAM_REPOSITORY or the local origin.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it discloses that the tool is optional, that creation is gated behind confirm=true, and that it authenticates via a configured GitHub token (an auth prerequisite). It stops short of stating idempotency, what confirm=false persists, or side effects on existing config.

Agents need to know what a tool does to the world before 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 purpose and followed by the one behavioral caveat. No filler or redundancy.

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

Completeness3/5

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

A three-parameter mutation tool with no annotations and no output schema needs to say more: what result a caller gets (fork URL, saved configuration), what confirm=false does, and whether the fork is created only when none is configured (that detail lives only in the schema). Adequate but with clear gaps.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented, including defaults for create_fork and upstream_repository. The description only restates the confirm=true β†’ fork creation link, adding little syntax or behavior 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 and resource: prepare an optional GitHub fork for publishing reviewed AdsMCP changes. It is clearly distinguishable from status/create_pr siblings by naming the fork-setup action, though it never explicitly contrasts with ads_github_contribution_status or ads_github_contribution_create_pr.

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?

"Optional" and "confirm=true may create the fork" imply this is a preparatory step used before publishing contributions, but there is no explicit when-to-use/when-not, no ordering relative to ads_github_contribution_status or ads_github_contribution_create_pr, 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.

ads_github_contribution_statusA

Show the local Git changes and GitHub fork setup without publishing anything.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose an important safety trait: it shows status "without publishing anything." It does not cover permissions, whether local Git state is modified, rate limits, or what the response contains beyond a high-level description.

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

Conciseness5/5

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

The description is a single efficient sentence with the key scope and safety constraint front-loaded. Every phrase adds useful information: what is shown, context (local Git and fork setup), and the no-publish guarantee.

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 no-parameter status tool with no output schema, the description gives enough high-level context about what is inspected and confirms it does not publish. It could say more about the return shape or whether it is purely read-only, but the essential behavior is covered.

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

Parameters4/5

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

The tool has zero parameters and an empty schema, so there is no parameter semantics burden. The baseline for a 0-parameter tool is 4, and the description does not need to compensate for missing parameter documentation.

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

Purpose4/5

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

The description uses a specific verb ("Show") and names the resource clearly: local Git changes and GitHub fork setup. It implicitly distinguishes itself from the sibling setup/create-PR tools by framing the action as status-only and explicitly "without publishing anything," though it does not name those alternatives.

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: the tool is for inspecting current Git/fork state before taking action, and the phrase "without publishing anything" signals a read-only check. However, it does not explicitly say when to use this instead of ads_github_contribution_setup or ads_github_contribution_create_pr.

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

ads_google_ads_pmax_replace_imagesA

Replace the enabled landscape and portrait marketing images in one Google Ads Performance Max asset group. New images are linked first; square images, logos and text assets are preserved. Requires explicit confirm=true.

NameRequiredDescriptionDefault
assetsYes
confirmNo
customer_idNo
asset_group_idYes
login_customer_idNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses the safe-swap ordering ('New images are linked first'), what is not touched (square images, logos, text), and a confirmation gate. It stops short of stating whether the old landscape/portrait images are unlinked or deleted, and mentions no permission or rate-limit constraints.

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

Conciseness5/5

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

Three sentences, mutation behavior first, preservation guarantees second, prerequisite last. Nothing is redundant and nothing could be removed without losing 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?

For a destructive-ish mutation with no annotations and no output schema, the behavioral story is solid, but the missing guidance on customer_id/login_customer_id and on the fate of replaced images leaves real gaps an agent needs before calling 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% across 5 parameters, so the description must compensate and largely does not. It covers the asset group, the asset payload, and confirm=true, but leaves customer_id vs login_customer_id, file_path format, label, and the per-item field_type semantics unexplained beyond the self-evident enum.

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

Purpose5/5

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

States a specific verb (Replace) on a precise resource (landscape and portrait marketing images in a Performance Max asset group). The scope is bounded to 'enabled' images, so an agent knows exactly what this touches without opening the schema, and no sibling tool competes for this operation.

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

Usage Guidelines3/5

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

The description delimits usage by scope ('enabled landscape and portrait marketing images') and adds a hard prerequisite ('Requires explicit confirm=true'), but never explicitly says when to prefer this over other flows or what happens when an asset group has no such images. Usage is implied 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.

ads_google_ads_reportC

Read daily Google Ads campaign metrics through the configured service-account adapter. This tool never writes to Google Ads.

NameRequiredDescriptionDefault
toNo
fromNo
customer_idNo
login_customer_idNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does deliver two real facts: reads go through a pre-configured service-account adapter (an auth dependency the caller must know about) and the tool 'never writes to Google Ads'. It says nothing about rate limits, pagination, empty-result behavior, or what defaults apply when from/to are omitted.

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 that lead with the capability and follow with the safety guarantee; nothing is padded. Slight under-specification rather than wordiness is the issue 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?

No annotations, no output schema, and 0% parameter documentation mean the description must do more than two sentences. A caller cannot determine the date format for from/to, whether customer_id is mandatory in practice, what fields the report returns, or how it relates to ads_google_ads_sync.

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 a single parameter. The four params (from, to, customer_id, login_customer_id) carry names and regex patterns only; an agent gets no explanation that from/to are a date window, their expected format, what happens if omitted, or that login_customer_id is a manager-account header. 'Daily' is the only faint 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?

States a specific verb and resource: 'Read daily Google Ads campaign metrics', with the source adapter named. The platform qualifier ('Google Ads') implicitly separates it from ads_microsoft_ads_report and ads_yandex_direct_report, but it never explicitly contrasts with ads_google_ads_sync, the closest sibling a caller might confuse it with.

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 statement of when to use this versus ads_google_ads_sync (which presumably also touches Google Ads) or the other per-platform report tools. The word 'daily' hints at granularity but there is no guidance on required date ranges, prerequisites, or coverage/exclusion conditions.

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

ads_google_ads_syncB

Read Google Ads metrics and persist normalized campaign, spend and aggregate conversion data into local SQLite. This never writes to Google Ads.

NameRequiredDescriptionDefault
toNo
fromNo
project_idNo
customer_idNo
login_customer_idNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the critical safety fact that it never writes to Google Ads, which is genuinely useful. But it says nothing about whether local rows are upserted or replaced, permission/auth requirements for customer_id, rate limits, or what happens on partial failure.

Agents need to know what a tool does to the world before 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 with the read/persist distinction front-loaded and the safety caveat second; no filler whatsoever.

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 five-parameter, zero-coverage, no-annotation, no-output-schema sync tool, the description is far too thin β€” it leaves date-window semantics, project scoping, overwrite behavior, and required account identifiers entirely unexplained.

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 five parameters (from, to, project_id, customer_id, login_customer_id) are completely undocumented. The description adds no meaning to any of them β€” not the date format or default window for from/to, not what project_id scopes, not the manager-account role of login_customer_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 concrete verb-pair and resource: read Google Ads metrics, then persist normalized campaign/spend/conversion data into local SQLite. This distinguishes it from the pure-read sibling ads_google_ads_report by naming the persistence side effect, though it never names that sibling directly.

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 β€” an agent can infer it should run sync before querying local analytics, but the description never says when to prefer this over ads_google_ads_report or the parallel ads_microsoft_ads_sync / ads_yandex_direct_sync tools, nor any prerequisites.

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

ads_integration_listB

List registered integrations and built-in adapter capabilities/configuration status.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral burden. It implies a read-only listing but does not disclose whether configuration values are sensitive, whether output is paginated, or what authentication or 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?

The definition is a single front-loaded sentence with no filler. It immediately states the operation and the objects being listed.

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 list tool, the description is adequate to understand the broad purpose. However, with no output schema and no annotations, it could say more about what the returned items contain, especially 'configuration status' and whether sensitive information is included.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics to document. The baseline for zero-parameter tools is 4, and the description neither contradicts nor complicates that.

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 ('List') and resource ('registered integrations and built-in adapter capabilities/configuration status'). It is clear enough to distinguish from write-oriented siblings like ads_integration_register, though it does not explicitly name an alternative.

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

Usage Guidelines2/5

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

The description implies you would call it to inspect integrations and adapter status, but it provides no explicit when-to-use or when-not-to-use guidance. With many sibling tools around integrations, planning, and platform configuration, this leaves routing to inference.

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

ads_integration_planB

Show adapter readiness, required environment keys and safe next actions for one or all providers.

NameRequiredDescriptionDefault
providerNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "Show" implies a read-only informational tool, but the description does not explicitly state that it is non-mutating, what permissions are required, or how results are scoped by provider.

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 efficient sentence with the primary purpose front-loaded. The phrase "safe next actions" is slightly vague but still earns its place as an output category.

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 annotations and no output schema, the description must carry more weight. It names the main output categories (readiness, env keys, next actions) but leaves the structure of "adapter readiness" and the format of required keys underspecified for a planning tool.

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

Parameters3/5

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

Schema coverage is 0% and the single provider parameter has no schema description. The description compensates partially by clarifying that the parameter selects one provider or all when omitted, but it does not specify accepted provider values or 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?

States a specific verb (Show) and specific content (adapter readiness, required environment keys, safe next actions), with scope for one or all providers. It is clear but does not explicitly distinguish itself from siblings like ads_integration_list or ads_module_plan.

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

Usage Guidelines3/5

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

The phrase "for one or all providers" implies usage scope, and "safe next actions" hints at setup planning. However, it gives no explicit when-to-use guidance or alternatives to sibling tools such as ads_integration_list or ads_platform_guide.

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

ads_integration_registerC

Register an external advertising, CRM or webhook integration without storing secrets.

NameRequiredDescriptionDefault
idNo
nameYes
configNo
statusNo
providerYes
secret_envNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one meaningful trait: secrets are not stored, so credentials are referenced indirectly. However, it omits duplicate-handling/idempotency, required permissions, and what config/status do, leaving significant behavioral gaps for a mutation tool.

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

Conciseness4/5

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

A single tight sentence with the key constraint ('without storing secrets') front-loaded. Efficient, though the size is arguably too terse given the tool's complexity.

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 6-parameter mutation tool with a nested config object, an enum, no annotations, and no output schema, the one-sentence description is thin. An agent cannot confidently fill parameters or predict behavior from it.

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

Parameters2/5

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

Schema description coverage is 0% across 6 parameters, so the description must compensate but largely doesn't. It hints at the provider (integration type) and secret handling (secret_env), but leaves id, name, config (nested object), and the status enum 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 (Register) and resource (external advertising, CRM or webhook integration), which is clear and distinguishable from read-only siblings like ads_integration_list. It does not explicitly contrast with ads_integration_plan, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not guidance, and no mention of the relevant alternatives (ads_integration_plan, ads_integration_list) despite their existence. The verb implies 'create a new integration', but the agent must infer this.

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

ads_interest_contact_listB

List public discovery candidates from the local interest registry. This is read-only and never contacts anyone.

NameRequiredDescriptionDefault
limitNo
statusNo
channelNo
categoryNo
project_idNoneron
contact_typeNo
consent_statusNo
external_user_idNo
outreach_eligibilityNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the safety profile (read-only, no contact side effects), which is the most important behavioral fact here. It says nothing about ordering, pagination beyond the implicit limit, default scoping (project_id defaults to 'neron'), or what a returned record contains β€” material for a 9-parameter 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?

Two short sentences, front-loaded with the purpose and followed by the safety constraint; neither sentence is filler. It is perhaps over-compressed for a nine-parameter tool, but there is no padding or redundancy.

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

Completeness2/5

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

Given nine optional parameters, five enums, no annotations and no output schema, two sentences leave the agent without filter semantics, default project scoping, or any sense of the result shape. The safety note is valuable but the definition is substantially under-specified for this surface area.

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% across 9 parameters, so the description must compensate and it explains none of them. Nothing clarifies that status/channel/category/contact_type/consent_status/outreach_eligibility act as filters, what 'channel' is a free-form name of, or what limit caps β€” the agent must reverse-engineer semantics from bare enum 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?

States a specific verb and resource ('List public discovery candidates from the local interest registry'), which tells an agent this is a read of a curated candidate pool rather than a research/contact tool. It does not explicitly distinguish itself from near-neighbours such as ads_interest_research_post_list or ads_interest_research_stats_list, 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?

'This is read-only and never contacts anyone' sets a clear boundary and implies this is the inspection tool rather than the outreach one (contrast ads_interest_contact_upsert). However, it names no alternative and gives no condition for choosing this over the sibling interest/research listing tools, leaving selection to inference.

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

ads_interest_contact_upsertB

Save or update one public discovery candidate in the local interest registry. This does not create a client profile, follow anyone or send a message; consent remains unknown by default.

NameRequiredDescriptionDefault
notesNo
statusNo
channelYes
categoryNo
evidenceNo
metadataNo
usernameNo
project_idNoneron
profile_urlNo
contact_typeNo
display_nameNo
instance_urlNo
last_seen_atNo
first_seen_atNo
consent_statusNo
matched_topicsNo
followers_countNo
relevance_scoreNo
external_user_idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It usefully states that consent remains unknown by default and clarifies non-actions (no profile creation, no follow, no message), but omits auth requirements, idempotency/merge behavior on update, rate limits, and return expectations for a 19-parameter 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 tightly written sentences with no wasted words. The core purpose is front-loaded, and the safety exclusions and consent default follow immediately.

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

Completeness2/5

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

For a 19-parameter upsert with no annotations, no output schema, and 0% schema description coverage, the description is not complete enough to call safely. It establishes intent and key exclusions but leaves most parameter semantics, auth expectations, and update behavior undocumented.

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% across 19 parameters, so the description must compensate but mostly does not. The only parameter-adjacent hint is that 'consent remains unknown by default,' which relates to consent_status but does not explain channel, external_user_id, status, category, or the other 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?

The description states a specific verb (save or update) and resource (one public discovery candidate in the local interest registry), which is clear. It distinguishes itself from client-profile creation, following, and messaging, but does not explicitly name sibling tools like ads_interest_contact_list.

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

Usage Guidelines4/5

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

It gives useful when-not guidance by saying it does not create a client profile, follow anyone, or send a message, helping the agent avoid those incorrect tools. It stops short of naming concrete alternatives or describing positive when-to-use criteria.

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

ads_interest_research_post_listC

List bounded public research posts collected during discovery. Read-only; it never contacts authors.

NameRequiredDescriptionDefault
limitNo
statusNo
channelNo
contact_idNo
project_idNoneron
external_post_idNo

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full load. It does add real behavioral context β€” 'Read-only; it never contacts authors' rules out side effects and outreach, which is genuinely useful. However it says nothing about ordering, pagination, default result size, or what 'bounded' means, leaving meaningful gaps.

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 operation and its scope, and zero filler. It is arguably too terse given the six undocumented filters, but no sentence wastes space.

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 annotations, no output schema, and six undescribed filters: the definition gives an agent almost nothing to construct a correct query or interpret results. A user would have to open the schema and guess at the semantics of status, channel, and the 'bounded' scope.

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?

Six parameters with 0% schema description coverage means the description must compensate, and it does not: status, channel, contact_id, project_id, and external_post_id are never mentioned. The only hint is the vague word 'bounded,' which loosely gestures at the limit 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?

Specific verb+resource: 'List ... public research posts collected during discovery' tells the agent this is a read of previously-discovered posts, which distinguishes it from the sibling ads_interest_research_post_upsert. The adjective 'bounded' is unexplained and the sibling is not named explicitly, 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?

'Collected during discovery' implies a context but gives no when-to-use / when-not-to guidance. Nothing routes the agent between this tool and ads_interest_research_stats_list or ads_interest_research_post_upsert, and no prerequisites or filter-before-call advice is offered.

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

ads_interest_research_post_upsertB

Store one bounded public research post linked to an interest contact. This is local research only and never publishes or contacts anyone.

NameRequiredDescriptionDefault
tagsNo
statusNo
channelYes
metadataNo
post_urlYes
project_idNoneron
signal_typeNo
last_seen_atNo
published_atNo
first_seen_atNo
author_usernameNo
content_excerptNo
relevance_scoreNo
external_post_idYes
author_display_nameNo
author_external_user_idYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description usefully discloses the key behavioral fact: this is local-only storage with no outbound publishing or contacting, and the record is 'bounded' (one post). It stops short of explaining upsert conflict behavior β€” what identifies an existing post, what fields get overwritten on a re-store, or what 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.

Conciseness5/5

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

Two short sentences: purpose first, safety constraint second. Nothing is redundant and the most important caveat is front-loaded.

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 16-parameter mutation with no annotations and no output schema, the description omits required-field expectations, the upsert identity semantics, and any indication of the response. It covers intent and safety, but not enough for reliable 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% across 16 parameters, and the description adds no parameter meaning at all β€” the four required fields (channel, external_post_id, post_url, author_external_user_id) and the identifier semantics of the upsert key are never mentioned. Names alone carry the load for fields like signal_type, relevance_score, and metadata.

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: store one bounded public research post linked to an interest contact. It is distinguishable from ads_interest_research_post_list, but the name says 'upsert' while the description says 'Store one', leaving the insert-vs-update identity key (presumably channel + external_post_id) unexplained.

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 statement of when to call this versus ads_interest_contact_upsert or when to list vs record. The only boundary given is an effect boundary ('never publishes or contacts anyone'), which is about safety, not about tool selection.

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

ads_interest_research_stats_buildB

Build a local time-window snapshot of research demand: post volume, unique authors, contacts, relevance and popular tags. This is analytics only and never contacts anyone.

NameRequiredDescriptionDefault
daysNo
channelNomastodon
project_idNoneron

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description does carry real weight by disclosing that this is analytics-only and sends no messages, which is the key safety fact. It omits other behavioral traits an agent needs: whether the snapshot is persisted/overwritten, the window semantics, and whether repeated calls are idempotent.

Agents need to know what a tool does to the world before 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, with the resource and its measured dimensions front-loaded and the safety caveat second. Nothing could be removed without losing 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?

The description effectively serves as the missing output summary by listing post volume, unique authors, contacts, relevance and tags, which is valuable given there is no output schema. It falls short only on the input side, where three parameters with defaults and bounds go unexplained.

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 all three parameters, so the description must compensate. It only gestures at time-windowing via "time-window" and says nothing about the range/bounds of `days`, what `channel` values are valid (mastodon default, max 80 chars), or what `project_id` scopes.

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 ("Build") and a specific resource ("a local time-window snapshot of research demand") and enumerates the metrics it captures. It does not explicitly differentiate itself from the close sibling ads_interest_research_stats_list, leaving the build-vs-read distinction to be inferred from the names.

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?

"This is analytics only and never contacts anyone" usefully rules out the outreach/contact siblings, but it never states the positive trigger (e.g. call this before ads_interest_research_stats_list, or after ingesting posts) nor names the alternative for retrieving existing snapshots.

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

ads_interest_research_stats_listB

List saved research demand snapshots and tag popularity metrics. Read-only analytics; it never contacts anyone.

NameRequiredDescriptionDefault
limitNo
channelNomastodon
stat_kindNo
period_endNo
project_idNoneron
period_startNo

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden, and it does add valuable context: it is read-only analytics and never contacts people, which reassures an agent about side effects. However, it omits pagination behavior, the meaning of the limit cap (1000), and the defaults (channel=mastodon, project_id=neron) that materially affect results.

Agents need to know what a tool does to the world before 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 purpose and followed by the safety qualifier; every clause carries information and nothing is padded.

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 annotations, no output schema, and six completely undocumented parameters, the description should do much more. It leaves the agent without guidance on defaults, filtering semantics (period_start/period_end format, channel values), or result 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 0% across six parameters, so the description must compensate, but it gives no parameter-level meaning. At best, 'snapshots and tag popularity metrics' loosely hints at the stat_kind enum (summary vs tag) and the period fields, which is far short of the six undocumented parameters.

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 (list) and resources (saved research demand snapshots, tag popularity metrics), which an agent can map onto the tool name. It does not explicitly distinguish itself from the closely related sibling ads_interest_research_stats_build (the producer of these snapshots), but the read/list framing is clear.

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 read-only, never-contacts-anyone framing implies this is safe for inspection-style use, but there is no explicit statement of when to choose this tool over ads_interest_research_stats_build, ads_interest_research_tag_list, or other interest-research siblings. Usage is only implied.

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

ads_interest_research_tag_listC

List aggregated hashtags and research tags from the local discovery base. Read-only.

NameRequiredDescriptionDefault
limitNo
channelNo
project_idNoneron

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations at all, the description carries the full burden; it does disclose that the operation is read-only and that results come from a local discovery base (i.e., pre-collected data, not a live API call). It omits aggregation semantics, ordering, pagination behavior, and whether an empty base returns an error or an empty 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?

Two short sentences with no filler and the core purpose front-loaded. It is efficient, though the second sentence is a bare safety tag rather than useful 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?

Three undefined parameters, no annotations, no output schema, and no explanation of what 'aggregated' tags look like or how channel/project scope the result. For a list endpoint that gates downstream interest research, the description leaves an agent guessing about both inputs and return 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 0% and the description adds nothing about the three parameters. limit (1-500), channel, and project_id (default 'neron') are undocumented β€” an agent cannot tell whether channel means a platform, a Telegram channel, or a grouping key, nor are the bounds of the default project 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?

States a specific verb and resource ('List aggregated hashtags and research tags') and scopes it to 'the local discovery base', which distinguishes local data from live platform lookups. However, it never names or contrasts with close siblings like ads_interest_research_stats_list, ads_telegram_ai_keyword_list, or ads_mastodon_hashtag_search, so an agent must infer which tag source to use.

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 only guidance is the trailing 'Read-only', which is a safety note, not a usage rule. There is no statement of when to prefer this over ads_interest_research_stats_list or the platform-specific hashtag/keyword tools, nor any prerequisite or freshness caveat for the 'local discovery base'.

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

ads_mastodon_account_listB

List locally connected Mastodon accounts without returning access tokens.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it does contribute one genuinely useful trait: access tokens are not returned, which frames this as a safe read-only listing. It says nothing, however, about ordering, pagination, or what happens when no accounts are connected.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, with zero filler. The security qualifier is placed where it is read first.

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 listing tool with no output schema, the definition covers the safety-relevant aspect but leaves the agent guessing about the shape of each returned account entry (handle, id, instance) and about empty-result 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?

The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Not mentioning parameters is appropriate 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?

States a specific verb and resource ('List ... Mastodon accounts') and adds the qualifier 'locally connected', which tells the agent these are accounts configured in this system rather than remote lookups. It does not explicitly name a sibling (e.g. ads_mastodon_auth_start), so it falls 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 statement of when to call this versus alternatives such as ads_mastodon_auth_start or ads_mastodon_auth_complete, nor any prerequisite or exclusions. The only hint is the word 'locally', which implies discovery of already-connected accounts but 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.

ads_mastodon_auth_completeB

Complete a pending Mastodon OAuth connection with the one-time code shown by the instance. The code is not logged or returned.

NameRequiredDescriptionDefault
codeYesOne-time authorization code shown after approving access
stateYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose a genuine behavioral trait beyond the schema β€” the code is one-time and is neither logged nor returned. However, it never says what completing the flow produces (a persisted token usable by ads_mastodon_account_list, ads_mastodon_thread_create, etc.), nor what happens on an expired or mismatched state.

Agents need to know what a tool does to the world before 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 OAuth context, with the security note attached directly to the code. No wasted text.

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 2-parameter mutation with no annotations and no output schema, the description should say what success yields (token stored and reusable by other Mastodon tools) and how failures surface. It covers the security-sensitive code handling but leaves the outcome undefined.

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 50%: 'code' is already described in the schema, and the description only reinforces it as 'one-time ... shown by the instance'. The 'state' parameter is undocumented in both schema and description, 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?

States a specific verb ('Complete') and resource ('pending Mastodon OAuth connection'), which cleanly separates it from ads_mastodon_auth_start. It doesn't name the sibling explicitly, but 'pending' presupposes it, so an agent can place the tool in the flow without opening the schema.

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

Usage Guidelines3/5

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

The phrase 'pending ... connection with the one-time code shown by the instance' implies the precondition (a flow started via ads_mastodon_auth_start and access approved), but neither the predecessor nor any failure/retry condition is stated. Usage is inferable rather than documented.

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

ads_mastodon_auth_startA

Start a Mastodon OAuth 2 + PKCE account connection for one instance. Open the returned authorization_url and then complete it with the one-time code.

NameRequiredDescriptionDefault
scopesNoOAuth scopes; read:follows is always added so existing subscriptions can be checked before following
account_idNoLocal account label used by later tools
client_nameNoOptional Mastodon application name; otherwise account-specific or global default is used
force_loginNoAsk the instance to show its login form even when a session exists
instance_urlYesMastodon instance origin, for example https://mastodon.social

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It usefully reveals that the call produces an authorization_url for an out-of-band browser step and that the handshake is PKCE-based, but it omits whether an application is registered on the instance, how long the pending state/code remains valid, and what happens if the flow is abandoned.

Agents need to know what a tool does to the world before 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 action and its scope come first, and the required follow-up step is placed immediately after where the agent will act on it.

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?

No output schema exists, and the description does name the key return value (authorization_url) plus the follow-up code requirement, which is the critical information for a two-step auth flow. It falls short of fully describing the return payload and the pending-connection lifecycle, which matters for a tool with no annotations.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters are already documented in the input schema, including instance_url format and the read:follows scope note. The description adds only the 'one instance per call' framing, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource β€” 'Start a Mastodon OAuth 2 + PKCE account connection' β€” with the scope limited to 'one instance.' It also distinguishes itself from the completion step by noting the flow ends with a one-time code, though it does not name ads_mastodon_auth_complete 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?

Gives a clear operational sequence: call this, open the returned authorization_url, then finish with the one-time code. This implicitly routes the agent to the sibling completion tool, but no explicit when-not-to-use or prerequisite conditions are stated.

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

ads_mastodon_direct_messageA

Send one private Mastodon Direct status to one selected account after explicit confirm=true. The target mention is added automatically; no bulk messaging.

NameRequiredDescriptionDefault
textYes
confirmYesExplicitly confirm sending this one private Mastodon message
account_idNo
target_account_idYesMastodon account id from discovery or a selected profile

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose that the target mention is added automatically and that bulk messaging is not supported, which is genuinely useful context. It omits that a Mastodon auth/account connection is a prerequisite (siblings ads_mastodon_auth_start exist) and says nothing about irreversibility or failure modes for an outbound DM.

Agents need to know what a tool does to the world before 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 action and its single-target constraint front-loaded before the confirmation gate. Every clause carries 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?

For an irreversible outbound message tool with no annotations, no output schema, and a sender/recipient parameter pair, the description covers intent and the confirm gate but leaves auth prerequisites and the account_id role unexplained. Adequate to avoid gross misuse, not adequate to guarantee 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 coverage is only 50%, and the two undocumented parameters are the risky ones. The description restates 'one selected account' and 'confirm=true' β€” content already present in the schema descriptions for target_account_id and confirm β€” but never clarifies the critical distinction between account_id (sender) and target_account_id (recipient), nor adds anything about text beyond the schema's 5000-char bound.

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 β€” 'Send one private Mastodon Direct status to one selected account' β€” with an explicit scope limit ('one', 'private'). The clause 'no bulk messaging' implicitly separates it from ads_mastodon_message_batch and ads_mastodon_public_mention without the agent needing to open 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 Guidelines3/5

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

The precondition 'after explicit confirm=true' tells the agent what must be true before calling, but there is no guidance on choosing this tool over ads_mastodon_status, ads_mastodon_reply, or ads_telegram_channel_direct_send. Usage is implied by the word 'private' rather than stated.

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

ads_mastodon_followA

Follow one selected Mastodon account after explicit confirm=true. Search results never trigger follows automatically; read:follows is required to check existing subscriptions and write:follows is required to follow.

NameRequiredDescriptionDefault
notifyNoWhether to enable notifications for this account; defaults to false
confirmYesExplicitly confirm following this one selected account
reblogsNoWhether to include the account's boosts; defaults to true
account_idNo
target_account_idYesMastodon account id from ads_mastodon_hashtag_search

TDQS

A4/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does well: it discloses the confirmation gate, the no-implicit-follow guarantee, and the read:follows / write:follows permission requirements. It omits what happens if the account is already followed (idempotency) and any rate-limit behavior, 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 sentences, both front-loaded: the action and its hard precondition come first, the safety constraint about search results second. No sentence is 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 an unannotated mutation tool with no output schema, the description covers the essential risks: consent gating, no implicit side effects, and required scopes. It could additionally state the duplicate-follow outcome, but an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 80%, so the schema already documents notify, reblogs, confirm, and target_account_id. The description reinforces the confirm=true semantics but adds no format or constraint detail for the remaining fields, so 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 and resource ('Follow one selected Mastodon account') plus the gating condition 'confirm=true'. It implicitly separates itself from the discovery tools by noting search results never trigger follows, though it never names a sibling directly.

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?

Clear context for use: an account must already be selected, and an explicit confirm=true is mandatory. It also adds a 'when-not' clause (search results never trigger follows) and names the required OAuth scopes, leaving only the exact upstream discovery tool implicit in the schema.

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

ads_mastodon_message_batchA

Send an explicitly provided ordered list of Mastodon direct messages, public mentions or replies after confirm=true. Each item names its recipient, exact text and mode; discovery never creates items automatically.

NameRequiredDescriptionDefault
confirmYesExplicitly confirm this exact ordered message list
delay_msNoOptional delay between messages; default 0
messagesYesExplicit recipient, mode and exact text for every message
account_idNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden; it does add real value by stating the confirm gate, that the list is ordered, and that items are never auto-generated. It omits whether sends are irreversible, what happens if one message in the batch fails (partial send?), and any rate-limit or permission behavior for a mutation touching up to 50 messages.

Agents need to know what a tool does to the world before 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 no filler: the operation and its safety gate come first, then the per-item structure and the anti-auto-generation constraint. 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?

No annotations and no output schema mean the description must cover the whole behavioral contract for a batch mutation. It establishes the confirm gate and item shape but leaves return/result semantics and failure handling unstated, which matters when 1-50 messages are sent in one call.

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

Parameters4/5

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

Schema coverage is 75% and already documents confirm, delay_ms and the messages array. The description adds sequencing semantics ('ordered list') and the explicitness guarantee that each item must carry recipient, exact text and mode, which the schema shape alone does not convey; account_id 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?

The description names a specific verb (send) and resource (an ordered list of Mastodon direct messages, public mentions or replies), plus the confirm=true precondition. It is clear what the tool does, but it never distinguishes itself from the single-message siblings ads_mastodon_direct_message, ads_mastodon_public_mention and ads_mastodon_reply, so the agent must infer the batch-vs-single split.

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 real precondition ('after confirm=true') and a negative constraint ('discovery never creates items automatically'), which implies this is for explicitly authored lists only. However there is no guidance on when to pick this over the per-message siblings, nor on limits such as the 50-item cap being a consideration.

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

ads_mastodon_notification_listB

Read a bounded page of Mastodon mention notifications to prepare a context-aware reply. This tool never publishes anything.

NameRequiredDescriptionDefault
limitNo
since_idNo
account_idNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden; it does disclose the critical safety trait ('never publishes anything'), which is genuinely valuable. But it omits authentication/account requirements, pagination behavior implied by since_id, rate limits, and what a 'bounded page' 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. The resource and scope come first and the read-only guarantee is placed where it matters most.

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 paginated read tool with three undescribed parameters, no annotations, and no output schema leaves the agent guessing about return shape and paging. Only the read-only guarantee is adequately covered.

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 and it does not. It never explains limit (capped at 40), since_id (a pagination cursor), or account_id (which connected account's mentions are read), leaving all three parameters 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 (read) and resource (Mastodon mention notifications) with a scoping qualifier ('bounded page') and an intended downstream use (prepare a reply). It implicitly separates itself from publishing siblings like ads_mastodon_reply by noting it never publishes, though it doesn't name the sibling outright.

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

Usage Guidelines3/5

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

The phrase 'to prepare a context-aware reply' implies this is a read step preceding a reply action, which is a useful usage cue. However, it names no explicit alternative or exclusion condition, so the agent must infer when to call this versus ads_mastodon_status or the reply tools.

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

ads_mastodon_pin_statusB

Pin one selected Mastodon status after explicit confirm=true.

NameRequiredDescriptionDefault
confirmYesExplicitly confirm pinning this one Mastodon status
status_idYes
account_idNo

TDQS

B3/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It mentions the confirmation gate, but that merely restates the schema's const-true confirm field; it says nothing about whether pinning is idempotent, how to unpin, required permissions, 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?

A single front-loaded sentence with zero filler; every clause earns its place.

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 an unannotated mutation tool with no output schema and an undocumented account_id, the description should cover permissions, reversibility/unpin path, and multi-account targeting. It covers none of these.

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%: the description covers only the confirm gate (already documented in the schema) and hints at a single status_id. The account_id parameter β€” important when multiple Mastodon accounts exist β€” is entirely unaddressed in both schema and 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 ('Pin one selected Mastodon status') with a clear scope of one status. It is distinguishable from the sibling ads_mastodon_status, but never names or contrasts an alternative sibling tool.

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

Usage Guidelines3/5

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

The 'after explicit confirm=true' phrasing gives a precondition for calling, but there is no guidance on when to pin vs. other Mastodon actions, no exclusions, and no mention of prerequisites like prior account selection.

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

ads_mastodon_profile_updateB

Update selected Mastodon profile fields after explicit confirm=true. Unspecified fields remain unchanged.

NameRequiredDescriptionDefault
noteNo
fieldsNo
lockedNo
confirmYesExplicitly confirm changing this Mastodon profile
languageNo
indexableNo
account_idNo
discoverableNo
display_nameNo
hide_collectionsNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does add two valuable traits: an explicit confirmation guard and partial-update semantics ('unspecified fields remain unchanged'). It omits irreversibility, required OAuth scopes, validation failures, and rate limits for a mutation tool.

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

Conciseness5/5

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

Two short sentences with zero filler; the partial-update guarantee and the confirm requirement are both front-loaded.

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 10-parameter destructive mutation with no annotations and no output schema needs far more: which fields exist, default behavior, auth scope, and failure modes. The description covers only confirmation and partial-update 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?

Schema coverage is 10% (only confirm is documented), so the description must compensate for nine undocumented parameters. It mentions only the fields concept in passing and adds no meaning for note, display_name, locked, indexable, discoverable, hide_collections, language, fields array shape, or account_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 and resource: updating selected Mastodon profile fields. It is clearly distinguishable from siblings such as ads_mastodon_account_list or ads_mastodon_status, though it never enumerates which fields are updatable.

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 gives a clear precondition for calling it, and 'selected fields' implies an edit workflow. However, no alternatives are named and no guidance is given on when not to use it versus other Mastodon tools.

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

ads_mastodon_public_mentionA

Publish one public Mastodon mention to one selected account after explicit confirm=true. Optionally reply to one public status; no bulk messaging.

NameRequiredDescriptionDefault
textYes
confirmYesExplicitly confirm publishing this one public mention
account_idNo
in_reply_to_idNoOptional public status id to reply to
target_account_idYesMastodon account id from discovery or a selected profile

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description usefully discloses that the output is public, that it is a single-recipient action, and that a confirm gate exists. It omits consequences the agent needs for a public write: required auth/scopes, irreversibility, rate limits, and failure behavior.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and scope, with the confirm gate stated before the optional reply detail. 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?

No annotations and no output schema, so the description must carry the whole burden, and it never explains the result of the call or how account_id relates to target_account_id. Adequate to avoid a wrong call, not enough for a public, likely irreversible write.

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 60% and the description reinforces confirm, target account selection, and optional reply-to. It says nothing about account_id, the acting account, which is undocumented in both schema and description, so the gap on a required parameter remains.

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 (publish), resource (public Mastodon mention), and scope (one message to one selected account), plus the 'no bulk messaging' boundary. It implicitly separates itself from bulk/batch siblings like ads_mastodon_message_batch, though it never names a 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?

Gives two usable conditions: confirm=true must be explicit, and bulk messaging is out of scope. It does not say when to use this versus ads_mastodon_reply, ads_mastodon_thread_create, or ads_mastodon_message_batch, so the routing decision 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.

ads_mastodon_replyA

Reply to one selected Mastodon status after explicit confirm=true. The target status is checked first, its author mention is added automatically, and the reply visibility cannot be broader than the target.

NameRequiredDescriptionDefault
textYes
confirmYesExplicitly confirm sending this one Mastodon reply
status_idYes
account_idNo
visibilityNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden and discloses meaningful traits: the confirm gate, pre-checking of the target status, automatic author mention, and the visibility constraint. It still omits auth requirements, rate limits, failure modes, and return behavior, but it adds substantial behavioral context beyond the schema.

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

Conciseness5/5

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

Two tightly written sentences with no wasted text. The confirm requirement and key behavioral constraints are 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 five-parameter write tool with no annotations and no output schema, the description covers the core reply behavior and safety constraints. However, it leaves account_id, error cases, and return expectations unaddressed, making it adequate but incomplete.

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

Parameters3/5

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

Schema description coverage is only 20%, with only confirm documented in the schema. The description compensates for status_id, confirm, and visibility semantics, but leaves account_id and text details unexplained, so it provides only partial compensation for the low schema coverage.

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

Purpose4/5

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

The description states a specific verb, 'Reply,' and a specific resource, 'one selected Mastodon status,' with a clear scope constraint. It is easy to distinguish from broad posting tools, though it does not explicitly name sibling alternatives such as ads_mastodon_thread_create or ads_mastodon_direct_message.

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 an important precondition, explicit confirm=true, and a visibility rule, which gives implied usage context. However, it does not say when to choose this tool over sibling reply or messaging tools, nor does it state when not to use it.

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

ads_mastodon_statusC

Check the connected Mastodon account and current profile through verify_credentials.

NameRequiredDescriptionDefault
account_idNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full behavioral burden. 'Check' implies a read operation, but the description omits auth requirements, connection/error states, return shape, and side effects; naming verify_credentials adds little behavioral context.

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

Conciseness4/5

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

Single front-loaded sentence with no filler. However, its brevity contributes to the missing parameter and usage guidance rather than reflecting complete, earned conciseness.

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 annotations, no output schema, low parameter coverage, and many overlapping Mastodon siblings, the description is insufficiently complete. It lacks account_id semantics, auth context, and return/error expectations.

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

Parameters1/5

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

The sole optional account_id parameter has 0% schema description coverage, and the description never mentions it or its default. The description does not compensate for the schema 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 ('Check') and resource ('connected Mastodon account and current profile'), and names the API operation ('verify_credentials'). It does not explicitly distinguish itself from sibling ads_mastodon_account_list or the auth tools.

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 or exclusions are given. It does not say whether to call this before auth, instead of ads_mastodon_account_list, or when account_id should be supplied.

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

ads_mastodon_thread_createA

Publish one explicitly provided Mastodon thread in order after confirm=true. Every post after the first replies to the previous post; optionally pin only the thread root.

NameRequiredDescriptionDefault
postsYesExact ordered public thread texts
confirmYesExplicitly confirm publishing this exact thread and optional pin
delay_msNoOptional delay between posts; default 0
pin_rootNoPin the first/root post after the thread is published
account_idNo
visibilityNoVisibility for every post; defaults to public

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and it does disclose non-obvious behavior: posts are chained as replies, order is preserved, and pinning applies only to the root. It omits important mutation traits such as what happens on partial failure mid-thread, rate-limit behavior between posts, and which account is targeted.

Agents need to know what a tool does to the world before 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 that lead with the action and the confirmation gate, then the threading and pinning constraints. No filler and no restatement of 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 six-parameter, multi-post, irreversible publish with no annotations and no output schema, the description covers sequencing and pinning but not failure/partial-publish behavior or how account_id selects the publishing identity. Adequate but leaves meaningful gaps for an agent to call it safely.

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

Parameters3/5

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

Schema description coverage is 83%, so the baseline is 3 and the schema already documents posts, confirm, delay_ms, pin_root, and visibility. The description only marginally adds meaning by clarifying that posts are used verbatim ('explicitly provided') and that pinning is root-only; account_id remains unexplained 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 ('Publish ... Mastodon thread') plus a procedural qualifier ('in order after confirm=true'), which separates it from single-post siblings like ads_mastodon_reply or ads_mastodon_message_batch. It never names an alternative, so the differentiation is implied rather than explicit.

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

Usage Guidelines3/5

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

The confirm=true gate is stated as a hard precondition, which is real usage guidance for a publish action. However, it offers no when-to-use/when-not comparison against ads_mastodon_message_batch, ads_mastodon_reply, or ads_mastodon_status, so choosing between them 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.

ads_microsoft_ads_reportC

Read aggregate Microsoft Advertising campaign metrics through the official read-only MCP. This tool never writes to Microsoft Ads.

NameRequiredDescriptionDefault
toNo
fromNo
presetNo
currencyNo
module_idNo
tool_nameNo
account_idNo
customer_idNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool is read-only and never writes, but says nothing about authentication requirements, date-range defaults, aggregation behavior, pagination, rate limits, or response shape. The read-only statement is valuable but far from complete for an 8-parameter reporting tool.

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

Conciseness4/5

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

The description is two short sentences and front-loads the core purpose. The second sentence reinforces the read-only safety property, which is useful given missing annotations, though it is somewhat redundant with 'read aggregate'.

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 with eight parameters, zero required fields, no annotations, no output schema, and 0% schema description coverage, two sentences are not enough. The description establishes the safety profile but leaves an agent without enough information to choose arguments correctly or understand defaults and return data.

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 adds no parameter-level meaning at all. It does not explain from/to date formats, preset choices, currency, module_id, tool_name, account_id, or customer_id, leaving all eight parameters 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 states a specific verb and resource: reading aggregate Microsoft Advertising campaign metrics. It also distinguishes itself from write/sync tools by saying it is read-only and never writes to Microsoft Ads. It does not explicitly name sibling alternatives, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

The description implies this is the reporting/read path, but gives no explicit when-to-use guidance, no when-not-to-use conditions, and no named alternatives such as ads_microsoft_ads_sync. An agent must infer that this is for reporting rather than syncing or writing.

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

ads_microsoft_ads_syncC

Read aggregate Microsoft Advertising metrics and persist normalized campaigns, spend and conversions into local SQLite. This never writes to Microsoft Ads.

NameRequiredDescriptionDefault
toNo
fromNo
presetNo
currencyNo
module_idNo
tool_nameNo
account_idNo
project_idNo
customer_idNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It usefully discloses the external side-effect boundary ('never writes to Microsoft Ads') and that it does write locally, but it omits auth requirements, idempotency/overwrite semantics for SQLite, rate limits, and pagination 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 concise, front-loaded sentences with no filler. The second sentence adds a genuinely useful scoping constraint about external writes, though the first sentence packs several concepts together without separating read vs persist behavior.

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 nine-parameter, no-annotation, no-output-schema tool, the description is too thin. It communicates the high-level flow and external safety, but leaves parameters, local DB target, idempotency, and error behavior entirely unexplained.

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?

There are nine parameters with 0% schema description coverage, and the description mentions none of them. It does not clarify the from/to vs preset date logic, currency, account_id/customer_id, or the module/tool/project identifiers, leaving the agent to guess at all parameter meanings.

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 (Microsoft Advertising metrics) and a concrete outcome (persist normalized campaigns, spend, conversions into local SQLite). It clearly distinguishes a sync/persist operation from a pure read, though it does not explicitly name sibling ads_microsoft_ads_report as the alternative.

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 'persist into local SQLite' – an agent can infer this is for refreshing local data rather than ad-hoc reporting. However, there is no explicit when-to-use guidance versus ads_microsoft_ads_report or the other sync tools, and no prerequisites are stated.

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

ads_module_callC

Call a tool of a configured provider MCP module, optionally restricted by its allow_tools list. Use provider-native tools for capabilities that AdsMCP does not reimplement.

NameRequiredDescriptionDefault
argumentsNo
module_idYes
tool_nameYes
timeout_msNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It omits critical behavior for a generic dispatcher: the forwarded call could be read or destructive, there's no disclosure of error/failure behavior, timeout semantics, or result shape. Only the allow_tools restriction hint is offered, leaving side-effect ambiguity unresolved.

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 core action front-loaded and no filler. It is efficient, though the brevity contributes to the coverage gaps noted elsewhere.

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 meta-tool that proxies arbitrary module calls with a free-form arguments object and no output schema, the definition should explain how to obtain valid module/tool identifiers and what arguments should contain. Those essentials are missing, making it inadequate 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% across four parameters, so the description must compensate and does not. The most important gap is the free-form nested 'arguments' object, which is clearly a payload forwarded to the target tool but is never explained, nor are module_id, tool_name, or the timeout_ms bounds.

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 action β€” calling a tool on a configured provider MCP module β€” and adds a scope qualifier about the allow_tools restriction. It distinguishes itself from the many SDK-native ads_* tools by positioning this as the escape hatch for capabilities AdsMCP does not reimplement, though it doesn't name the related discovery tools.

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

Usage Guidelines3/5

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

The line 'Use provider-native tools for capabilities that AdsMCP does not reimplement' gives implied context for when to reach for this proxy. However, it never names the companion discovery tool (ads_module_tools) that an agent would need to find a valid module_id/tool_name, and gives no explicit when-not or alternatives.

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

ads_module_planA

Show configured provider MCP modules without starting them. Modules keep their own API logic and credentials outside the AdsMCP database.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that modules are not started and that their API logic and credentials stay outside the AdsMCP database, implying a side-effect-free inspection. It does not explicitly state that the tool is read-only, whether it makes network calls, 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 front-loaded with useful information. The first states the action and key constraint; the second explains the architectural context. No sentence 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 zero-parameter inspection tool with no annotations and no output schema, the description gives enough context to call it safely: it lists modules without starting them and clarifies credential boundaries. It does not describe the shape of the returned module list, which would have been a minor improvement.

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 no parameter semantics to explain. The baseline for zero parameters is 4, and nothing in the description conflicts with that.

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: 'Show configured provider MCP modules'. This is clearly distinct from call-oriented siblings by the clause 'without starting them'. It does not explicitly name alternatives such as ads_module_call, so it stops short of full sibling differentiation.

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

Usage Guidelines3/5

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

The phrase 'without starting them' implies this is a planning/inspection tool rather than an execution tool, which is useful contrast. However, there is no explicit statement of when to use this instead of ads_module_call or ads_module_tools, and no prerequisites or exclusions are given.

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

ads_module_toolsC

Discover tools exposed by one configured provider MCP module.

NameRequiredDescriptionDefault
module_idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does not confirm that this is read-only, describe authentication or configuration requirements, explain what happens with an invalid module_id, or indicate the shape of the result.

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 single sentence is front-loaded and free of filler. It is appropriately brief, though it leaves important details to other unfilled fields.

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

Completeness2/5

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

The tool has one required parameter, no annotations, and no output schema, so the description must do more work. It omits how to discover valid module_id values and what the tool returns, which are important 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%, so module_id is completely undocumented in the schema. The description only implies that module_id identifies 'one configured provider MCP module' but gives no format, source, or constraints for obtaining valid module IDs.

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: discovering tools exposed by a configured provider MCP module. It is clear enough to distinguish discovery from execution, but it does not explicitly contrast with the nearby sibling ads_module_call.

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 ads_module_call or ads_module_plan. The phrase 'Discover tools' implies a discovery role, but no prerequisites, exclusions, or selection criteria are provided.

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

ads_network_aggregate_publishC

Opt-in publish of aggregated campaign metrics. The relay never receives raw local events.

NameRequiredDescriptionDefault
spendNo
clicksNo
revenueNo
currencyNo
node_refYes
period_toYes
scope_refYes
dedupe_keyYes
conversionsNo
impressionsNo
period_fromYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, and it only discloses one trait: the privacy guarantee that the relay never receives raw local events. It says nothing about whether this mutates remote state, how duplicates are handled (despite a required dedupe_key), permission requirements, rate limits, or what 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.

Conciseness4/5

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

Two short sentences with no filler, and the core action is front-loaded before the privacy note. Brevity here is efficient, though it borders on under-specification for an 11-parameter mutation.

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 mutation tool with 11 undocumented parameters, no annotations, and no output schema, the description is far too thin. It conveys the intent and the privacy model but leaves the agent unable to construct a correct call or anticipate the response.

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?

There are 11 parameters with 0% schema description coverage, including five required identifiers (dedupe_key, node_ref, scope_ref, period_from, period_to). The description explains none of them, so an agent cannot know what node_ref versus scope_ref refers to, what unit the period strings use, or how dedupe_key affects repeated calls.

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: an opt-in publish of aggregated campaign metrics, which is a clear action. It does not differentiate itself from adjacent siblings such as ads_network_conversion_report or ads_network_placement_publish, and the actual destination ('the relay') 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 Guidelines2/5

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

The only usage signal is the word 'Opt-in', which hints at a consent prerequisite but never states when to call this instead of ads_network_platform_report or ads_network_conversion_report. No exclusions, preconditions, or ordering guidance are given.

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

ads_network_conversion_reportC

Opt-in anonymous conversion report. Send only opaque references and aggregates, never raw PII or credentials.

NameRequiredDescriptionDefault
countNo
valueNo
periodYes
currencyNo
node_refYes
dedupe_keyYes
event_typeYes
campaign_refYes

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does add one genuinely useful constraint: the payload must contain opaque references and aggregates, never raw PII or credentials. However, it never states that this is a write/submission, that dedupe_key implies idempotency or what happens on a duplicate, nor any auth or 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.

Conciseness4/5

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

Two short sentences with zero filler, and the identifying phrase is front-loaded. The opening fragment is terse to the point of being syntactically incomplete, but nothing is 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 an 8-parameter, 5-required submission tool with no annotations and no output schema, the description is far too thin. An agent cannot learn the expected format of period or event_type, the semantics of dedupe_key, or what a successful call returns or stores.

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% across 8 parameters, so the description must compensate and largely does not. It gestures at "opaque references" and "aggregates", which loosely map to node_ref/campaign_ref and count/value, but period, event_type, currency and especially dedupe_key are left entirely unexplained by both schema and description.

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 an anonymous conversion report but never states the action (submit/send/record) explicitly, leaving the agent to infer it from "Send only...". It also fails to distinguish this from adjacent siblings such as ads_network_aggregate_publish, ads_attribution_report and ads_network_platform_report, all of which sound like they handle reporting data.

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?

"Opt-in" is the only usage signal, and it describes a property of the feature rather than a condition for selecting this tool. There is no statement of when to call this versus the aggregate-publish or platform-report siblings, and no prerequisites or exclusions are given.

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

ads_network_inventory_listC

List verified advertising placement offers from the optional relay registry.

NameRequiredDescriptionDefault
regionNo
statusNo
channel_typeNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden but adds little beyond the operation name. It does not explain whether the call is read-only, what 'optional relay registry' implies operationally, whether pagination applies, or what permissions or setup 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?

The description is a single front-loaded sentence with no filler, which is appropriately concise. The terseness contributes to missing semantics but does not violate conciseness itself.

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 operation with three undocumented optional parameters, no annotations, and no output schema, the description is too sparse. It does not define 'verified', 'relay registry', or what the returned inventory records look like, leaving meaningful gaps for an agent.

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

Parameters1/5

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

The schema has three parameters (region, status, channel_type) with 0% description coverage, and the description does not mention any of them. It does not clarify how these filters affect the listed offers or what values are accepted beyond the single enum in the schema.

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

Purpose4/5

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

The description states a specific verb (List) and resource (verified advertising placement offers) with a clear source (optional relay registry). It does not explicitly distinguish this inventory list from sibling tools such as ads_network_platform_list or ads_network_placement_publish.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only states what the list contains, leaving the agent to infer usage conditions.

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

ads_network_placement_publishC

Publish an opt-in advertising placement offer. Provider credentials stay local.

NameRequiredDescriptionDefault
idNo
urlNo
nameYes
formatsNo
pricingYes
regionsNo
audienceNo
descriptionNo
availabilityNo
channel_typeYes
publisher_refYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden. 'Provider credentials stay local' is a useful security note, but it doesn't say whether publishing is a mutation with side effects, whether the placement enters a review state, whether calls are idempotent, or what permissions are required. For an 11-parameter mutation this 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?

Two short sentences, front-loaded with the action and with zero filler. The brevity is structurally sound, though it reflects under-specification rather than economy of expression.

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?

A mutation tool with 11 parameters, 4 required, nested objects, zero schema descriptions, no annotations, and no output schema demands far more. Nothing tells the agent what a successful publish returns, how errors surface, or how the nested audience/pricing structures must be shaped.

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 11 parameters including nested objects (audience, pricing) and a suspicious $ref from pricing to audience. The description gives no hint about required fields (publisher_ref, name, channel_type, pricing) or what the nested audience object should contain, so it does nothing 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 (publish) and a specific resource (an opt-in advertising placement offer), which is more than a restated name. It does not, however, distinguish itself from close siblings like ads_network_profile_publish or ads_network_aggregate_publish, so an agent cannot tell which publish variant applies without opening schemas.

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

Usage Guidelines2/5

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

'Opt-in' hints at a consent prerequisite but the description never says when to choose this over the sibling publish tools or what conditions must hold before calling. No exclusions, prerequisites, 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.

ads_network_platform_listC

List verified or reported advertising platforms from the optional network registry.

NameRequiredDescriptionDefault
regionNo
statusNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'List' implies a read, but it never says whether results are paginated, how many platforms return, whether the registry must be configured first, or what 'optional' means operationally.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficient, though its brevity is partly the cause of the missing detail noted elsewhere.

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 with two optional, undocumented filter parameters and no output schema, the description should explain at least what each filter means and what 'optional network registry' implies. Neither is covered, leaving the agent unable to predict filter or return 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%, so both parameters (region and status) are undocumented anywhere. The phrase 'verified or reported' vaguely nods at filtering but does not map onto the status enum values (pending/active/rejected/suspended), and region is never mentioned at all.

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 (List) and a specific resource (advertising platforms), plus a qualifier ('verified or reported') and a source ('optional network registry'). It does not, however, distinguish itself from close siblings like ads_network_platform_report or ads_network_inventory_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 call this versus the sibling reporting/inventory tools, no mention of prerequisites, and no statement of what the results are used for. Usage has to be inferred 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.

ads_network_platform_reportC

Anonymously report a new advertising platform or integration candidate. No credentials are sent.

NameRequiredDescriptionDefault
urlNo
kindNo
nameYes
notesNo
regionNo
providerYes
capabilitiesNo

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that the report is anonymous and that no credentials are sent, which are important behavioral traits. However, it omits what happens after reporting, whether the report is public or queued for review, permission requirements, and any side effects.

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

Conciseness4/5

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

The description is two sentences with no wasted words, and the privacy constraint is front-loaded. It is appropriately sized for the information given, though it could be slightly more structured around parameter meanings.

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

Completeness2/5

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

Given a seven-parameter write operation with no annotations, no output schema, and zero schema descriptions, the description is incomplete. It covers purpose and anonymity but leaves critical gaps around parameter semantics and what the tool returns or triggers.

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 tool has seven parameters with 0% schema description coverage, but the description does not explain any of them. Fields like url, kind, notes, region, and capabilities receive no semantic guidance, leaving the agent to infer meaning from parameter names 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 description uses a specific verb ('report') and resource ('new advertising platform or integration candidate'), making the action clear. It does not explicitly differentiate from siblings like ads_network_platform_list or ads_integration_register, but the purpose is still understandable.

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 tool versus alternatives such as listing existing platforms or registering an integration. The note 'No credentials are sent' is a constraint, not a usage guideline, 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.

ads_network_profile_listC

Find opt-in networking profiles in the optional relay registry.

NameRequiredDescriptionDefault
kindNo
regionNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full disclosure burden. 'Opt-in' and 'optional relay registry' weakly imply the result set is already filtered to consented entries, but nothing is said about pagination, result volume, permissions, or ordering β€” the caller cannot predict what comes back.

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 front-loaded sentence with no waste, but it is under-specified rather than concise β€” the terseness comes at the cost of information 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?

With no annotations, no output schema, and two undocumented parameters, the description should do substantial work but instead supplies one vague sentence. A caller has no basis for choosing filter values or interpreting the returned profile list.

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 neither of the two optional parameters (kind, region) is mentioned in the description. An agent must guess the accepted values of 'kind' and the format of 'region' entirely, so the description adds essentially no parameter meaning.

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 'Find' plus resource 'networking profiles' does indicate a list/search operation, and 'opt-in' hints at a filter on the result set. However, 'optional relay registry' is undefined jargon that gives no clue what a networking profile actually is, and the description does not distinguish itself from nearby siblings such as ads_network_platform_list or ads_network_profile_publish.

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 reach for this tool versus ads_network_platform_list, ads_network_inventory_list, or the publish counterparts. 'Opt-in' implies a scoping rule but 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.

ads_network_profile_publishC

Publish an opt-in networking profile without advertising credentials or raw campaign data.

NameRequiredDescriptionDefault
idNo
kindYes
regionsNo
capabilitiesNo
display_nameYes
contact_relayNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Publish' implies a mutation and public exposure, and the 'opt-in' plus data-exclusion language adds useful context, but the description omits permissions required, what the published profile exposes, whether publication is reversible, and which network receives it.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is appropriately compact, though its brevity contributes to the uncovered parameter and behavioral gaps.

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?

With six parameters, no annotations, no output schema, and zero schema description coverage, a one-sentence description is insufficient. An agent cannot determine what values to supply for required fields like kind and display_name, nor what happens on publication.

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

Parameters1/5

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

The schema has six parameters and 0% description coverage. The description does not explain display_name, kind, id, regions, capabilities, or contact_relay at all, and the excluded 'credentials' and 'campaign data' are not even parameters in the schema.

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

Purpose4/5

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

The description gives a specific verb and resource: 'Publish an opt-in networking profile.' The added clause about excluding advertising credentials and raw campaign data clarifies scope, but it does not explicitly distinguish this from close siblings like ads_network_aggregate_publish or ads_network_placement_publish.

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 states a data-exclusion constraint ('without advertising credentials or raw campaign data') but gives no guidance on when to use this tool versus ads_network_profile_list, ads_network_aggregate_publish, or ads_network_placement_publish. There are no prerequisites or selection conditions.

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

ads_network_statusA

Check the optional Ads Network Relay connection. The local MCP works without it.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations, so the description carries the full burden; it does disclose the key behavioral trait that the relay is optional and the local MCP functions without it. It says nothing about whether the check performs a network round-trip, how long a failure takes, or what states it can report.

Agents need to know what a tool does to the world before 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 waste, with the action front-loaded and the optionality caveat immediately after. Nothing could be removed without losing signal.

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 status tool the return value is the whole point, and there is no output schema and no description of what a check reports (connected/disconnected, error detail, relay identity). It also lacks any annotation to fall back on, so a small but real gap remains.

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; there is nothing for the description to disambiguate and it correctly makes no parameter claims.

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 (Check) and a specific resource (the Ads Network Relay connection), so an agent can tell this is a connectivity/status probe. It does not differentiate itself from the surrounding ads_network_* siblings (platform_list, inventory_list, sync_manifest), so an agent must infer the boundary 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?

'The local MCP works without it' implies this is diagnostic and non-blocking, which is useful context for choosing whether to call it. But it never says when to call it versus the other ads_network_* tools, nor what to do with a negative result.

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

ads_network_sync_manifestC

Pull opt-in network catalog changes since an ISO timestamp.

NameRequiredDescriptionDefault
sinceNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It discloses only that the pull is opt-in and incremental from a timestamp, while omitting whether the operation is read-only, what permissions or auth are required, whether changes are destructive, whether results are paginated, and what the return 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.

Conciseness5/5

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

The definition is a single front-loaded sentence with no wasted words. It is appropriately concise, even though the underlying specification is incomplete in other dimensions.

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 network sync tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It should explain what the manifest returns, whether sync is incremental and idempotent, and what an agent should do with the result before invoking it.

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

Parameters3/5

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

The schema has 0% description coverage for the single parameter "since," but the description does add useful semantics by specifying an ISO timestamp format. It does not clarify that the parameter is optional, what the default behavior is when omitted, or how timezone is handled.

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: pulling opt-in network catalog changes, with an incremental timestamp scope. However, the terms "manifest" and "opt-in network catalog" remain somewhat opaque, and the description does not differentiate this tool from nearby network catalog or sync siblings such as ads_network_inventory_list or ads_network_platform_report.

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

Usage Guidelines2/5

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

The description implies incremental synchronization by using "since an ISO timestamp," but gives no explicit guidance on when to use this tool versus alternatives like ads_network_platform_list, ads_network_inventory_list, or ads_network_status. There are no exclusions, prerequisites, or named alternatives.

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

ads_platform_guideC

Explain what audience and acquisition scenario each advertising platform fits before configuring its MCP module.

NameRequiredDescriptionDefault
goalNo
providerNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Explain' weakly implies a read-only informational operation, but the description does not state that it makes no changes, what kind of content is returned, or whether it depends on external module configuration.

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. The phrasing is slightly contorted ('what audience and acquisition scenario each advertising platform fits'), but it is not verbose.

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, no annotations, and two completely undocumented parameters, the description should explain what guidance is returned and how `goal`/`provider` shape it. It leaves both the return content and parameter behavior unspecified.

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 two parameters `goal` and `provider`. At best, 'each advertising platform' and 'audience and acquisition scenario' loosely hint at provider and goal, but there is no explanation of whether they filter, focus, or are optional.

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 ('Explain') and object ('what audience and acquisition scenario each advertising platform fits'), so the broad intent is inferable. However, it never states that the tool returns guidance/mapping content, nor does it name the platforms or clarify how this differs from sibling planning tools such as ads_module_plan or ads_integration_plan.

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 only usage hint is the trailing phrase 'before configuring its MCP module,' which implies sequencing but not conditions, prerequisites, or alternatives. There is no explicit guidance on when to call this versus ads_module_tools, ads_module_plan, or ads_network_platform_list.

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

ads_project_analyticsC

Calculate aggregate and per-campaign KPIs for one project.

NameRequiredDescriptionDefault
toNo
fromNo
project_idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden. It implies a computation/read but never states whether it is read-only, what permissions or project state it requires, whether results are cached or live, or how the aggregate vs per-campaign results are returned β€” a notable gap given there is also 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.

Conciseness4/5

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

A single front-loaded sentence with no filler and no redundancy. It is efficiently structured, though its brevity reflects under-specification rather than tight editing of rich 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?

Three parameters at 0% schema documentation, no annotations, and no output schema means the description must explain the date-range contract and the return shape. It gestures at outputs ('aggregate and per-campaign KPIs') but leaves the agent unable to form a correct from/to query or know what the response contains.

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 three parameters. 'for one project' gives weak context for project_id, but the 'from' and 'to' parameters are completely unexplained β€” no date format, no default window, no timezone, no inclusion/exclusion semantics for the boundaries. With low coverage the description needed to compensate 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?

States a specific verb ('Calculate') and a specific resource ('aggregate and per-campaign KPIs for one project'), which an agent can distinguish from raw report fetchers like ads_google_ads_report. However it never names or contrasts the closely related siblings ads_campaign_analytics and ads_campaign_timeseries, so sibling differentiation is left to 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?

No statement of when to use this instead of ads_campaign_analytics, ads_campaign_timeseries, or the per-platform report tools. The only implicit scoping signal is 'for one project', which hints at project-level rather than campaign-level queries but gives no explicit selection criteria or prerequisites.

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

ads_project_createC

Create a project that groups related advertising campaigns and their analytics.

NameRequiredDescriptionDefault
idNo
nameYes
statusNo
metadataNo
descriptionNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden and discloses very little: it does not say whether creation is persistent, whether the name must be unique, what happens if an 'id' is supplied by the caller, what 'status' defaults to, or whether 'metadata' accepts arbitrary values. Only the fact of mutation is implied by 'Create'.

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 padding and no repetition of the tool name. It is efficient, though its brevity is partly a symptom of 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?

For a mutation tool with no annotations, no output schema, and five undocumented parameters, the description should at minimum cover required fields, uniqueness/duplication behavior, and the effect of caller-supplied 'id' or 'status'. None of that is present.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters, including a nested free-form 'metadata' object, an enum 'status', and a caller-suppliable 'id' β€” all undocumented. The description mentions none of them, so it does not compensate for the coverage gap beyond hinting that 'name' describes the project.

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 a project') and clarifies the entity's role as a container for related advertising campaigns and analytics, which distinguishes it conceptually from ads_campaign_create. It stops short of naming the sibling tools (ads_project_get/list/update) or stating scope explicitly, 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 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 create a project versus when to read or update one (ads_project_get, ads_project_list, ads_project_update), and no prerequisites or conditions are stated. The agent must infer usage entirely from the verb.

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

ads_project_getC

Get one local advertising project by its id.

NameRequiredDescriptionDefault
project_idYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. "Get" implies a read, but it says nothing about permissions, behavior on an unknown id (error vs empty), or what a returned project 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 zero padding and the key constraint placed correctly. It is efficient but verges on under-specification rather than bloat.

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 annotations, no output schema, and an undocumented parameter, the definition leaves the agent guessing about the return shape and failure modes. For a lookup tool that an agent must chain into project_update or analytics, that is a real 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 0%, so the description must compensate and it barely does β€” "by its id" only restates the parameter name. It gives no format hint (UUID? numeric string? prefixed id?) for project_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 ("local advertising project") and the singular "one" implicitly separates it from ads_project_list. It does not explicitly name the sibling it complements, but the resource/scope 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?

Only an implicit cue β€” "by its id" suggests you already have an identifier β€” but there is no stated when-to-use versus ads_project_list, ads_project_update, or ads_project_analytics, 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_project_listB

List projects, optionally filtered by active or archived status.

NameRequiredDescriptionDefault
limitNo
statusNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "List" implies a read operation, but the description does not disclose pagination, default limit behavior, ordering, authentication needs, or whether archived projects are excluded by default.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It efficiently states the operation and the optional filter.

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 tool with no annotations and no output schema, the description is too sparse. It omits limit semantics, default status behavior, return shape, and pagination, leaving the agent without enough context to invoke it confidently.

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 need explanation. The description mentions the status enum values active/archived, but it says nothing about the limit parameter beyond what the schema already constrains numerically, and it does not explain defaults or filtering behavior.

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 projects," with an optional status filter. It is clear enough to distinguish this from get/create/update siblings, though it does not explicitly name those alternatives.

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 indicates that status filtering is optional and names the two filter values, which implies a basic usage context. However, it does not say when to use this instead of ads_project_get or other project tools, nor does it mention 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_project_updateB

Update project metadata or archive it without deleting its campaigns.

NameRequiredDescriptionDefault
nameNo
statusNo
metadataNo
project_idYes
descriptionNo

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description bears full behavioral burden. It usefully discloses that archiving preserves campaigns, but says nothing about permissions, whether updates are partial or replace-style, side effects, or response behavior for a mutation tool.

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

Conciseness5/5

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

A single sentence with no wasted words, and the core action plus the key safety note are front-loaded.

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 5-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It lacks partial-update semantics, parameter guidance, and any indication of what a successful update returns.

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, but it barely does. It references 'metadata' and implies 'status' via archiving, yet never explains project_id, name, description, or which fields are optional/required.

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 project metadata') and adds the archive capability, making the purpose clear. It does not explicitly distinguish itself from ads_project_create/get/list, but the update/archive action is distinct 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?

It implies when to use the tool (to update metadata or archive a project) and gives the important caveat that archiving does not delete campaigns. However, it names no alternatives or when-not-to-use conditions, leaving routing to inference.

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

ads_spend_recordB

Record spend and daily platform metrics. A stable dedupe_key makes sync retries safe.

NameRequiredDescriptionDefault
idNo
dayNo
amountYes
clicksNo
currencyNo
metadataNo
providerYes
dedupe_keyNo
campaign_idYes
external_idNo
impressionsNo

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. It usefully discloses idempotency/retry safety through dedupe_key and implies a write operation, but omits permissions, duplicate-handling details, overwrite/upsert semantics, and response 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 short sentences with the core purpose front-loaded and no filler. The dedupe_key note is relevant and compact.

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

Completeness2/5

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

For an 11-parameter write tool with no annotations or output schema, this is under-specified. It gives purpose and an idempotency hint but not enough parameter, validation, or behavioral context to invoke safely without relying on the 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 0% and there are 11 parameters, so the description must compensate substantially. It explains only dedupe_key, leaving required fields such as campaign_id, provider, and amount plus all metrics fields 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 a concrete verb ("Record") and concrete resources ("spend and daily platform metrics"), so the operation is identifiable. It does not explicitly distinguish itself from sibling sync/report tools, but the ingest-oriented purpose is clear.

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 second sentence gives one usage condition: a stable dedupe_key makes sync retries safe. However, it does not explain when to use this tool versus sibling sync/report tools, nor does it list 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_store_statusB

Show local SQLite storage path, row counts and safety defaults.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; "Show" implies a read-only inspection, which is consistent with a status tool, and it lists the categories of information surfaced. However, it never explicitly states that it is non-mutating, whether it is cheap or expensive to call, or what the response looks like.

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 efficient sentence with the action verb front-loaded and no filler. It is appropriately sized, though the three-item list is terse enough that a little more framing could be added without 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?

For a zero-argument diagnostic tool with no annotations and no output schema, the description does list the kinds of values returned, which partially compensates. But "safety defaults" is vague and it gives no sense of what an agent should do with the output or when it matters.

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

Parameters4/5

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

The schema is an empty object with zero parameters, which per the baseline warrants a 4. The description correctly implies a no-argument call, and there is nothing parameter-related left 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?

States a specific verb ("Show") and a concrete resource (local SQLite storage path, row counts, safety defaults), so an agent knows exactly what the tool returns. It doesn't explicitly distinguish itself from status siblings such as ads_dstore_status or ads_network_status, but "local SQLite storage" is a reasonably distinct scope.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus the many other *_status tools, and no mention of prerequisites or follow-up actions. The phrase "safety defaults" hints at a pre-flight/diagnostic role, but the agent has to infer that connection.

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

ads_telegram_account_authB

Continue local Telegram user-account login through the selected backend. GramJS supports starting a local QR flow; never paste Telegram codes or 2FA passwords into a hosted chat.

NameRequiredDescriptionDefault
qrNoStart the local GramJS QR login flow
codeNo
phoneNo
passwordNo

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose that login is local, that GramJS supports a QR flow, and that codes/2FA passwords should not be pasted into a hosted chat, but it omits what the tool returns, whether sessions persist, and what each credential path does.

Agents need to know what a tool does to the world before 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 written sentences with no filler. The purpose is front-loaded and the security warning follows immediately.

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

Completeness2/5

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

This is an auth tool with four parameters, no annotations, no output schema, and only 25% schema description coverage. The description does not explain prerequisites, flow stages, return values, or how the caller knows login succeeded, leaving important gaps 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 only 25%, with just the qr parameter described. The description mentions QR flow and warns about codes/2FA passwords, which loosely maps to qr, code, and password, but it never explains phone or clarifies the relationship among the four optional parameters.

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+resource: 'Continue local Telegram user-account login through the selected backend.' It is clearly an authentication operation, distinguishable from data-fetch siblings like ads_telegram_account_status, 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 Guidelines3/5

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

The word 'Continue' implies this happens after an earlier auth step, and the security warning gives practical guidance. However, it does not explicitly say when to use this versus ads_telegram_account_status or how to choose between QR and code/password flows.

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

ads_telegram_account_sendA

Send one plain-text Telegram message through the selected local GramJS/TDLib account. Requires Telegram Premium, prior approval of the exact text, and explicit confirm=true; reports a read-only unread-human-dialog preflight without blocking the write; bulk outreach is not supported.

NameRequiredDescriptionDefault
toYes@username, t.me link, or numeric Telegram chat id
textYes
confirmYesExplicitly confirm sending this one message

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses a hard plan entitlement (Telegram Premium), an out-of-band approval requirement, a mandatory confirmation flag, and that the unread-dialog preflight is read-only and non-blocking. Remaining gaps are failure behavior, rate limits, and idempotency of retries.

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 every clause carries a constraint rather than filler. Some density (GramJS/TDLib, 'unread-human-dialog preflight') makes it harder to parse at a glance, but nothing is 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 mutation tool with no annotations and no output schema, the definition covers entitlement, approval, confirmation, and non-bulk scope. It only partially addresses what the call returns (the preflight is mentioned but its payload and the send result are not), leaving a modest gap 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.

Parameters3/5

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

Schema coverage is 67%: 'to' and 'confirm' are already documented in the schema, and the description's confirm=true mention restates that. The one added meaning is that 'text' must be plain text (no markup), which is real value since 'text' has no schema description. Overall it stays near the schema 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: 'Send one plain-text Telegram message through the selected local GramJS/TDLib account.' The scope limiters ('one', 'plain-text', 'bulk outreach is not supported') separate it from batch siblings like ads_client_profile_batch_send. It does not explicitly distinguish itself from ads_telegram_channel_direct_send or ads_telegram_chat_reply, so sibling differentiation is partial rather than complete.

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 concrete preconditions for use: Telegram Premium, prior approval of the exact text, and explicit confirm=true, plus a negative condition (no bulk outreach). What is missing is an explicit named alternative for the cases it excludes (e.g. which sibling to use for bulk or channel posts), so the agent must infer the routing.

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

ads_telegram_accounts_reportB

List Telegram Ads cabinets and optionally read one or all cabinets. Switching cabinets requires explicit confirm=true and is restored to the original cabinet afterward.

NameRequiredDescriptionDefault
allNo
confirmNo
max_adsNo
module_idNo
account_idNo
stats_periodNo
include_statsNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does add useful behavior: cabinet switching requires confirm=true and is restored afterward. However, it does not state whether the tool is read-only, what permissions are needed, what 'read' returns, or any rate limits, leaving significant behavioral gaps.

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 primary list action followed by the confirm/restore caveat. There is little waste, though the second sentence could be clearer about what 'read' entails.

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 with 7 parameters, no annotations, no output schema, and 0% schema coverage, the description is too thin. It omits parameter explanations, return behavior, and permission or safety context, which an agent needs to invoke it reliably.

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% across 7 parameters. The description only gives meaning to confirm and vaguely to all/account_id via 'one or all'; it says nothing about module_id, max_ads, stats_period, or include_stats, so most parameters remain undocumented in both schema and 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 and resource: list Telegram Ads cabinets and optionally read one or all. An agent can understand the tool lists cabinets, but the description does not distinguish it from close siblings such as ads_telegram_ads_report or ads_telegram_accounts_sync, leaving ambiguity about which report-like tool to pick.

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

Usage Guidelines3/5

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

The phrase 'optionally read one or all cabinets' hints at usage patterns and the confirm requirement is a conditional rule, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. Usage is implied rather than directed.

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

ads_telegram_accounts_syncB

Read one or all Telegram Ads cabinets and persist their campaigns, daily spend and optional time-bucketed metrics into local SQLite. Cabinet switching requires explicit confirm=true.

NameRequiredDescriptionDefault
allNo
confirmNo
max_adsNo
module_idNo
account_idNo
project_idNo
stats_periodNo
include_statsNo
project_rulesNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose two important traits beyond the schema: that data is written into local SQLite (a side effect for a "read"-sounding name) and that cabinet switching requires confirm=true. It omits auth requirements, whether persisted rows are upserted or replaced, and any rate-limit or failure behavior, so transparency is partial.

Agents need to know what a tool does to the world before 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 destination, then the critical confirmation requirement. No filler, no restatement of the name.

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

Completeness2/5

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

A 9-parameter, zero-coverage, no-annotation, no-output-schema tool needs much more: parameter meanings, what "persist" does to existing rows, and what the caller gets back. The description leaves the account/module/project distinctions and the max_ads limit undocumented, which is insufficient 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% across 9 parameters, so the description must compensate. It only covers all ("one or all"), include_stats/stats_period ("optional time-bucketed metrics"), and confirm ("explicit confirm=true"); account_id, module_id, project_id, max_ads, and the project_rules array are entirely unexplained, leaving half the input surface opaque.

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 chain (read + persist) and resource (Telegram Ads cabinets, campaigns, daily spend, time-bucketed metrics) with the destination (local SQLite). It does not distinguish itself from close siblings like ads_telegram_accounts_report or ads_telegram_ads_sync, so an agent cannot tell from the description alone which of these to choose.

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?

"Read one or all" implies how the all flag selects scope, and "Cabinet switching requires explicit confirm=true" gives one concrete precondition. However, there is no statement of when to prefer this over ads_telegram_accounts_report, ads_telegram_ads_sync, or ads_telegram_ads_api_sync, and no exclusions are given.

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

ads_telegram_account_statusA

Check the local Telegram user-account GramJS/TDLib dependencies, credentials, authentication state and ignored storage paths.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully enumerates what is inspected (dependencies, credentials, auth state, ignored paths), which implies a read-only diagnostic, but it does not state side-effect-freedom explicitly, nor permissions needed or output shape. Partial disclosure only.

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 enumerated checklist is dense but each item earns its place. Slightly crammed list form is the only minor cost.

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 status tool with no output schema, the description covers the relevant surface of what the check examines. It lacks return-format detail, but that is a minor gap given the tool's simplicity.

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; the description adds nothing misleading about inputs, consistent with the empty schema.

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

Purpose4/5

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

Specific verb ('Check') plus a concrete resource: local Telegram user-account GramJS/TDLib dependencies, credentials, authentication state, and ignored storage paths. It is clearly a diagnostic/status read, but it never names or contrasts with the closely related sibling ads_telegram_account_auth, so sibling differentiation is left to 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?

Usage is implied β€” check this before attempting authenticated Telegram account operations β€” but there is no explicit when-to-use/when-not, and the obvious alternative ads_telegram_account_auth is not referenced. An agent can guess its role but is given no routing signal.

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

ads_telegram_action_queue_cancelA

Cancel all still-queued actions in one local Telegram action queue. Requires confirm=true; already sent or failed actions are not changed.

NameRequiredDescriptionDefault
confirmYesExplicitly confirm cancelling the queued actions
queue_idYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and meaningfully discloses that this is a bulk cancellation affecting only still-queued actions, that confirmation is required, and that sent/failed actions are unaffected. It could go further by stating whether cancellation is irreversible or what the result looks like.

Agents need to know what a tool does to the world before 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 operation and followed by the confirmation requirement and scope constraint. There is no wasted text.

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

Completeness3/5

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

For a simple two-parameter cancellation tool, the description covers the main behavioral constraints and mutation scope. However, without annotations or an output schema, it leaves queue_id semantics and the result of the operation underspecified.

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 is documented in both schema and description, but queue_id has no description anywhere and the description does not compensate by explaining where it comes from or what it identifies.

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: cancel all still-queued actions in one local Telegram action queue. The scope ('still-queued', 'one local queue') and exclusion of sent/failed actions clearly distinguish this from list/process/create 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 clearly indicates use for cancelling queued actions and states the confirm=true prerequisite. It also gives an exclusion by noting that already sent or failed actions are not changed, though it does not explicitly name an alternative sibling such as queue_process.

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

ads_telegram_action_queue_createA

Create an ordered local Telegram action queue from explicitly supplied targets and exact texts. Requires confirm=true; it does not execute anything. Supports one-to-one messages, group replies, channel-post replies and one-message reactions. No recipient discovery is performed. Each action is assigned a random pause between min_delay_seconds and max_delay_seconds (default 15–66 s) before it runs.

NameRequiredDescriptionDefault
actionsYes
confirmYesExplicitly approve creating this exact ordered queue
project_idNo
max_delay_secondsNoUpper bound of the random pause between queued actions; defaults to 66 seconds
min_delay_secondsNoLower bound of the random pause between queued actions; defaults to 15 seconds

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and covers the essentials: mandatory confirm, local-only (no execution), no recipient lookup, and randomized per-action pauses with a default 15–66s window. It omits what happens after creation (persistence, queue identity for later process/cancel), so it is strong but not complete.

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

Conciseness5/5

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

Five tight sentences, front-loaded with purpose before constraints and delay behavior. Every clause conveys operative information; no filler or restated 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 50-item-batch mutation tool with no output schema and no annotations, the description should say what the caller gets back (queue identifier/status) so it can chain to process/cancel. That linkage is missing, keeping it at 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?

Schema coverage is 60%, and the description fills meaningful gaps: it states the confirm requirement, the default delay range 15–66s that the schema fields only partially imply, and the four supported action shapes (message, chat reply, channel-post reply, reaction). Only project_id goes unmentioned in both description and 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 (create an ordered local Telegram action queue) and immediately scopes it: 'from explicitly supplied targets and exact texts' plus 'it does not execute anything.' That cleanly separates it from the process/list/cancel siblings and from direct-send tools like ads_telegram_account_send.

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?

'Requires confirm=true' and 'does not execute anything' tell the agent this is a staging step and that processing is elsewhere. It also rules out discovery ('No recipient discovery is performed'), so an agent knows to supply targets itself. It never names the sibling that runs the queue, which keeps it short of a 5.

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

ads_telegram_action_queue_listB

List the exact actions and statuses in one local Telegram action queue. Read-only; it does not send or mark anything read.

NameRequiredDescriptionDefault
statusNo
queue_idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does useful work by explicitly declaring read-only and denying side effects ('does not send or mark anything read'), which is the key risk distinction against the mutating siblings. It says nothing about ordering, result limits, auth requirements, or whether the queue must be in a particular state, leaving meaningful behavioral gaps.

Agents need to know what a tool does to the world before 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 filler, with the identifying scope front-loaded and the safety caveat immediately after. Nothing repeats the name or 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 simple two-parameter read tool with no output schema, the description establishes what is returned (actions and statuses) and that no state change occurs. Only the status filter behavior and absence of pagination/ordering notes keep it from being fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain both parameters. 'One local Telegram action queue' hints that queue_id selects a single queue, but the status parameter is never addressed β€” 'statuses' reads as returned data, not a filter, so the enum values' filtering role is undocumented in both schema and 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 (list) and resource (actions and statuses in one local Telegram action queue), scoped to a single queue. The read-only clause implicitly separates it from the sibling mutations ads_telegram_action_queue_process/cancel, though those siblings are never named.

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 read-only sentence hints this is the inspection tool used before processing or cancelling, but no explicit when-to-use or when-not-to-use guidance is given. An agent must infer that processing/cancelling belongs to the sibling tools from the negation alone.

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

ads_telegram_action_queue_processA

Execute an explicitly approved Telegram action queue in sequence. Requires Premium and confirm=true; verifies each action through the existing send/reply/reaction tools, waits at least the configured interval, and stops on the first error without retrying.

NameRequiredDescriptionDefault
confirmYesExplicitly approve executing the queued actions
queue_idYes
max_actionsNoMaximum queued actions to process in this run; defaults to 1
wait_for_intervalNoWait for the configured minimum interval; defaults to true

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden and does substantial work: sequential execution, Premium gating, confirm=true, interval waiting, no retries, and stop-on-first-error. It still leaves the post-failure state ambiguous β€” whether unprocessed actions remain queued, are marked failed, or must be cancelled via ads_telegram_action_queue_cancel.

Agents need to know what a tool does to the world before 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 dense sentence with the action, its preconditions, and its execution semantics front-loaded. No filler; every clause conveys a distinct behavioral fact.

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, confirmation-gated execution tool with no output schema, the description covers gating, sequencing, pacing, and failure behavior β€” enough to call it safely. The remaining gap is return/partial-failure reporting and the max_actions semantics, which an agent would need to reason about batching.

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 description's 'confirm=true' and 'waits at least the configured interval' loosely align with the confirm and wait_for_interval parameters. It adds nothing about the significant max_actions parameter (defaults to 1, caps at 50), which governs how much of the queue is consumed per run.

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 ('Execute') and resource ('Telegram action queue') with an explicit scope qualifier ('explicitly approved ... in sequence'). Clearly distinguishable from siblings ads_telegram_action_queue_list/cancel/create, which handle other lifecycle stages.

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?

Establishes prerequisites well: the queue must be 'explicitly approved', Premium is required, and confirm=true is mandatory. It does not name an alternative tool or say what to do when the queue is not approved (e.g., direct the agent to ads_telegram_action_queue_create or the individual send tools), so routing guidance is clear but not exhaustive.

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

ads_telegram_ads_api_create_adA

Create one Telegram Ads advertisement through the official API. This is a provider write; confirm=true is required. Defaults to paused with zero initial budget.

NameRequiredDescriptionDefault
cpmYes
textNo
titleYes
targetYes
confirmYes
is_pausedNo
placementYes
account_idNo
timeout_msNo
promote_urlYes
show_userpicNo
return_targetNo
initial_budgetNo
idempotency_keyNo
daily_budget_limitNo
impression_frequencyNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that this is a provider write, requires confirm=true, and defaults to paused with zero initial budget, but it omits auth/account requirements, rate limits, idempotency behavior, return shape, and whether the ad must later be submitted for review.

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

Conciseness5/5

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

Three short sentences are front-loaded with the core purpose, then the write confirmation, then the default state. There is no filler and every sentence adds useful information.

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 complex create operation with 16 parameters, a nested target object, no annotations, no output schema, and zero schema description coverage. The description provides important guard/default context but is far too sparse to fully guide 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% across 16 parameters. The description only clarifies confirm and the paused/budget defaults; it says nothing about essential parameters like title, promote_url, cpm, placement, target, account_id, idempotency_key, or budget-related fields.

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

Purpose5/5

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

The description states a specific verb and resource: create one Telegram Ads advertisement through the official API. This distinguishes it from sibling operations such as increasing budget, submitting for review, or setting paused status, which act on existing ads.

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 invocation context: this is a provider write and confirm=true is required. It does not name explicit alternatives or when-not conditions, but the operational precondition is clear.

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

ads_telegram_ads_api_increase_ad_budgetB

Increase one Telegram Ads ad budget through the official API. This is a provider write; confirm=true is required.

NameRequiredDescriptionDefault
ad_idYes
amountYes
confirmYes
account_idNo
timeout_msNo
idempotency_keyNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that this is a provider write and that confirm=true is required, but it omits permissions, reversibility, side effects, rate limits, and return behavior.

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

Conciseness5/5

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

Two short sentences are front-loaded with the action and the key confirmation requirement. There is no filler.

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 mutation tool with no annotations, no output schema, and six undocumented parameters. The description covers the write nature and confirmation flag but leaves too much unspecified for an agent to call it confidently.

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% across six parameters. The description explains only the confirm requirement and says nothing about ad_id format, amount semantics, account_id, timeout_ms, or idempotency_key.

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: increase one Telegram Ads ad budget through the official API. This clearly distinguishes it from create-ad or set-paused siblings, 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 Guidelines3/5

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

The verb 'increase' implies the intended use, and confirm=true is stated as a prerequisite. However, there is no explicit guidance on when to use this versus other Telegram Ads API tools, nor any exclusions or amount constraints.

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

ads_telegram_ads_api_reportC

Read Telegram Ads through the official promoteapi.telegram.org API. This is read-only and supports exact date-bounded 5-minute or daily stats.

NameRequiredDescriptionDefault
toNo
fromNo
max_adsNo
account_idNo
timeout_msNo
stats_periodNo
include_statsNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description does the important work of declaring the tool read-only and naming the upstream API, which is genuinely useful safety context. It omits other behavioral traits an agent needs, such as authentication requirements, rate limits, pagination behavior implied by max_ads (max 100), and what happens when all optional parameters are omitted.

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 core action and the read-only guarantee. Nearly every clause earns its place, though the API hostname could arguably be trimmed in favor of parameter 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 7-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It doesn't explain the required-ish account_id, what include_stats toggles, or the meaning of max_ads/timeout_ms, so an agent cannot confidently construct a call from description plus schema alone.

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% across 7 parameters, so the description must carry the meaning. It only covers two concepts indirectly: date bounding (from/to) and stats_period. It says nothing about account_id, max_ads, timeout_ms, or include_stats, leaving half the surface 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: reading Telegram Ads stats through the official promoteapi.telegram.org API, with 5-minute or daily granularity. However, it never distinguishes itself from the near-identically named siblings ads_telegram_ads_report and ads_telegram_ads_sync, which an agent could easily confuse it with.

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 ads_telegram_ads_report, ads_telegram_ads_sync, or ads_telegram_accounts_report. The only hint at usage is the mention of 'exact date-bounded' stats and the 5min/day periods, but nothing states prerequisites, defaults, or exclusions.

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

ads_telegram_ads_api_set_ad_pausedB

Pause or resume one Telegram Ads ad through the official API. This is a provider write; confirm=true is required.

NameRequiredDescriptionDefault
ad_idYes
confirmYes
is_pausedYes
account_idNo
timeout_msNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description does carry useful weight: it declares this is a real provider-side write and that confirm=true is a mandatory gate, which tells the agent the mutation is externally visible. It omits what an agent still needs for a mutation β€” required permissions/account authorization, whether the effect is reversible, rate limits, and what a successful response looks like.

Agents need to know what a tool does to the world before 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 core action front-loaded and the safety constraint immediately after. Nothing in it 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 write tool with no annotations, no output schema, and zero schema descriptions, the description covers the two things that most affect safe invocation (it's a real write; confirm is required). It leaves gaps on identifier formats, which account context is needed, and the effect/timeout semantics, 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.

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description must carry the load and largely doesn't. It conveys the meaning of is_paused (pause vs resume) and reiterates the confirm=true constraint, but ad_id (string or integer, format unstated), account_id, and timeout_ms get no explanation whatsoever.

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 ('Pause or resume one Telegram Ads ad') with an explicit scope of a single ad, which cleanly separates it from siblings like ads_telegram_ads_api_increase_ad_budget or ads_telegram_ads_api_create_ad. It does not name 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 Guidelines3/5

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

Usage is only implied: an agent can infer it should call this when it wants to toggle an ad's active state. There is no statement of when not to use it, no mention of the sibling write tools (budget increase, submit for review), and no prerequisites beyond the confirm requirement.

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

ads_telegram_ads_api_statusA

Show the official Telegram Ads API layer readiness. With probe=true, perform one read-only getCurrentAccount request; provider writes remain separately guarded.

NameRequiredDescriptionDefault
probeNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that probe=true performs one read-only getCurrentAccount request and that provider writes are separately guarded, but it omits auth requirements, rate limits, failure behavior, and what 'readiness' actually verifies.

Agents need to know what a tool does to the world before 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 purpose and then probe behavior. There is no filler and every sentence adds useful 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?

For a status tool with no annotations, no output schema, and an undocumented single parameter, the description covers purpose and probe side effects reasonably. However, it leaves the meaning of the readiness result undefined and does not mention authentication or return-shape expectations.

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

Parameters4/5

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

The schema has one boolean parameter with 0% description coverage, but the description explains that probe=true triggers a read-only getCurrentAccount request. This substantially clarifies the parameter's effect, though it does not explicitly state the default or probe=false behavior.

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 ('Show') and resource ('official Telegram Ads API layer readiness'). It also distinguishes itself from write-oriented siblings by saying provider writes are separately guarded, though it does not name those sibling tools.

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

Usage Guidelines3/5

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

The description implies usage: call it to check API readiness, and optionally set probe=true to perform a live read-only request. It does not explicitly say when to use probe versus not, or when to prefer this status tool over related Telegram Ads API tools.

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

ads_telegram_ads_api_submit_ad_for_reviewB

Submit one Telegram Ads ad for moderation through the official API. This is a provider write; confirm=true is required.

NameRequiredDescriptionDefault
ad_idYes
confirmYes
account_idNo
timeout_msNo

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full behavioral burden. Labeling it a 'provider write' is genuinely valuable β€” it flags an external side effect rather than a local state change β€” and the confirm gate signals a guarded mutation. However, it is silent on irreversibility (can a submitted ad be edited or withdrawn while in moderation?), rate limits, and required permissions, which matters for a submission that leaves the system.

Agents need to know what a tool does to the world before 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 with zero filler, and the core action is front-loaded ahead of the safety precondition. Nothing needs trimming.

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 should say what comes back (a moderation status or submission id), and with 0% parameter description coverage the identifiers are unexplained. The description is adequate to start a call but leaves the agent guessing about both the return value and the identity of three parameters.

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% across 4 parameters. The description explains only confirm=true; ad_id, account_id, and timeout_ms carry no semantic explanation in either the description or the schema (only type/range constraints). The agent must infer that ad_id refers to a previously created Telegram Ads ad and what account_id selects.

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: 'Submit one Telegram Ads ad for moderation through the official API.' This is meaningfully distinguishable from the sibling ads_telegram_ads_api_create_ad, since submission-for-moderation is a distinct lifecycle stage, though the description never explicitly contrasts the two.

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?

'This is a provider write; confirm=true is required' gives a precondition but not when-to-use guidance. There is no statement of when this should be called versus creating, updating, or pausing an ad, and no exclusions β€” the correct usage stage (after an ad exists) is only implied.

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

ads_telegram_ads_api_syncB

Read official Telegram Ads API metrics and persist them into the same local SQLite campaign model. This never writes to Telegram Ads.

NameRequiredDescriptionDefault
toNo
fromNo
max_adsNo
account_idNo
project_idNo
timeout_msNo
stats_periodNo
include_statsNo

TDQS

B3.1/5.0
Behavior3/5

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

With zero annotations the description carries the full burden, and it does deliver one important behavioral fact the schema cannot: the read direction is one-way and nothing is written back to Telegram. It omits what the local write actually overwrites/upserts, whether the operation is idempotent or re-runnable for the same date range, and any rate-limit or auth requirements β€” all material for an 8-parameter sync 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 the core action and immediately followed by the critical scope disclaimer. No filler, no restatement of the tool name.

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

Completeness2/5

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

Eight undocumented parameters, no annotations, and no output schema means the description is doing almost none of the explanatory work. For a sync tool an agent needs to know date-range semantics, what the local model ends up containing, and whether re-runs are safe β€” none of which are covered.

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 8 parameters, and the description compensates for none of them: no explanation of from/to bounds, the stats_period enum ('5min' vs 'day'), max_ads capping, include_stats toggling, or whether account_id/project_id are optional-but-needed in practice. The agent must guess the reporting semantics entirely from bare property names.

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: reads Telegram Ads API metrics and persists them into the local SQLite campaign model. The sentence 'This never writes to Telegram Ads' positively distinguishes it from the write siblings (ads_telegram_ads_api_set_ad_paused, ads_telegram_ads_api_create_ad), but it never names the closely related ads_telegram_ads_api_report or ads_telegram_ads_sync, so the read-vs-persist distinction among the read tools remains inferential.

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: 'persist them into the same local SQLite campaign model' suggests this is the backfill/refresh path for the local model. There is no explicit when-to-use versus ads_telegram_ads_api_report, no mention of needed credentials or of run cadence, and no exclusion guidance other than 'never writes to Telegram Ads'.

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

ads_telegram_ads_reportC

Read Telegram Ads account, campaigns and normalized metrics through the configured HTTP-based MCP module. This is read-only.

NameRequiredDescriptionDefault
max_adsNo
list_toolNo
module_idNo
stats_toolNo
stats_periodNo
include_statsNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does earn some credit for explicitly stating 'This is read-only', but it says nothing about permissions, rate limits, whether include_stats triggers extra network calls, pagination, or what happens when module_id is absent despite referencing 'the configured HTTP-based MCP module'.

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 named first and the read-only constraint front-loaded. The clause 'through the configured HTTP-based MCP module' is vague filler that does not help an agent decide or invoke, but the text is far from bloated.

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

Completeness2/5

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

With six undocumented parameters, no annotations, and no output schema, the description is not sufficient for correct invocation. The agent cannot infer what max_ads bounds, what the two tool-name parameters point to, or what shape the returned metrics take.

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?

Six parameters with 0% schema description coverage, and the description explains none of them. Cryptic parameters like list_tool, stats_tool, module_id, and include_stats are left entirely undefined, and the enum values for stats_period (5min/day) are never discussed.

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 (Read) and resource (Telegram Ads account, campaigns, normalized metrics), so the core purpose is clear. However it never distinguishes itself from the nearby siblings ads_telegram_ads_api_report, ads_telegram_ads_sync, or ads_telegram_accounts_report, leaving the agent to guess which report variant is intended.

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: there is no statement of when this should be chosen over ads_telegram_ads_api_report or ads_telegram_ads_sync, no prerequisite conditions, and no exclusions. The only hint is the implied read-only nature, which 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.

ads_telegram_ads_syncC

Read Telegram Ads metrics and persist campaigns, daily spend and optional time-bucketed metrics into local SQLite. This never writes to Telegram Ads.

NameRequiredDescriptionDefault
max_adsNo
list_toolNo
module_idNo
project_idNo
stats_toolNo
stats_periodNo
include_statsNo

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool reads from Telegram Ads and writes to local SQLite, and importantly states it never writes to Telegram Ads. However, it lacks details on sync behavior (full vs incremental), error handling, permissions, 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.

Conciseness4/5

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

The description is two sentences, front-loaded with the core action and followed by a key constraint. It is appropriately sized, though it could be slightly more detailed without becoming verbose.

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

Completeness2/5

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

Given 7 parameters, no annotations, and no output schema, the description is incomplete. It omits parameter explanations, usage guidance, and many behavioral details necessary for an agent to call the tool 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%, and the description does not explain any of the 7 parameters (max_ads, list_tool, module_id, project_id, stats_tool, stats_period, include_stats). It only generically mentions 'optional time-bucketed metrics', leaving all parameter meanings 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 clearly states a specific verb (read) and resources (Telegram Ads metrics, campaigns, daily spend, time-bucketed metrics) and includes a key constraint (never writes to Telegram Ads). However, it does not differentiate from sibling sync/report tools like ads_telegram_ads_api_sync or ads_telegram_ads_report.

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 explicit guidance on when to use this tool versus alternatives. It implies usage for syncing Telegram Ads data to local SQLite, but does not mention any conditions, prerequisites, or alternative tools.

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

ads_telegram_ai_chat_listB

List public Telegram AI-related chats saved in the local catalog; defaults to the Neron project and never returns participant data.

NameRequiredDescriptionDefault
limitNo
statusNo
chat_typeNo
project_idNoneron

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden; 'List' plus 'never returns participant data' usefully discloses a read-only, privacy-scoped operation, which is real added value. It omits pagination/limit behavior, ordering, and what happens when the project has no chats, so it is only partially transparent.

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

Conciseness5/5

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

A single compact sentence with the resource front-loaded and the two key constraints (default project, no participant data) appended. Nothing is 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?

No annotations, no output schema, and four undocumented parameters mean the description should explain the filters and the return shape (e.g. list of chats with ids/names). It does neither, leaving an agent guessing how to narrow results and what fields come back.

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% across 4 parameters. The description only clarifies project_id's default and reinforces the privacy scope; the limit, status, and chat_type filters (two of them enums) are left entirely undocumented for filtering semantics such as default status inclusion.

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 a precise resource ('public Telegram AI-related chats saved in the local catalog'), which cleanly separates it from the write-side sibling ads_telegram_ai_chat_upsert. It does not name that sibling explicitly, 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 default project ('Neron') gives context for a first call, and 'saved in the local catalog' implies this reads pre-registered chats rather than searching Telegram live. However, it never states when to prefer this over ads_telegram_ai_search_run_list or ads_tg_resource_list, so usage is only implied.

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

ads_telegram_ai_chat_upsertB

Save or update one public Telegram group/channel discovered for AI-related topics. This writes only local chat metadata under a project and never collects participants or sends messages.

NameRequiredDescriptionDefault
notesNo
titleYes
statusNo
metadataNo
usernameNo
chat_typeNo
project_idNoneron
public_urlNo
topic_hitsNo
first_seen_atNo
last_scanned_atNo
relevance_scoreNo
telegram_chat_idYes
discovery_queriesNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden but does add real value: it discloses that the write is local-metadata-only and that no participants are collected and no messages are sent. It omits upsert conflict semantics (which fields are overwritten vs merged on an existing chat), permission/auth needs, and idempotency key behavior β€” significant gaps for a 14-parameter mutation tool.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the action and scope, followed by the one safety constraint that matters. Nothing is redundant relative to the name or schema.

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 14-parameter write tool with no annotations, no output schema, and 0% schema documentation, the description is far too thin β€” an agent cannot determine what an upsert will overwrite, what a success response looks like, or how to populate most fields.

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% across 14 parameters, so the description must compensate and largely does not. It only loosely hints at project_id ("under a project") and topic_hits/chat_type via "AI-related topics" and "group/channel"; enums like status, the meaning of relevance_score, discovery_queries, and the distinction between first_seen_at and last_scanned_at are left entirely 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?

States a specific verb+resource: "Save or update one public Telegram group/channel" record, scoped to AI-related discovery. The singular "one" and "upsert" framing clearly distinguish it from the plural read tool ads_telegram_ai_chat_list, 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?

Usage is implied rather than stated: you use it when you have discovered a public chat and want to persist it. The negative clause ("never collects participants or sends messages") implicitly rules out the messaging siblings like ads_telegram_channel_direct_send, but no explicit when/when-not or prerequisite guidance is given.

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

ads_telegram_ai_keyword_listB

List aggregated Telegram AI demand keywords with source counters and recent-vs-previous trend direction; read-only and never contacts Telegram.

NameRequiredDescriptionDefault
kindNo
limitNo
topicNo
statusNo
project_idNoneron
source_typeNo
window_daysNo

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the load; it does disclose read-only behavior and that it never contacts Telegram, which is valuable safety context. It omits pagination/limit behavior, how windows are computed, and what the source counters represent.

Agents need to know what a tool does to the world before 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 dense sentence that front-loads the verb and resource and adds the return-content and safety notes without waste.

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 annotations, no output schema, and seven undocumented parameters, the description leaves substantial gaps for a filtering/aggregation tool – it should explain at least the filter dimensions and default project scoping.

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?

Seven parameters with 0% schema description coverage, yet the description explains none of them. It gestures at 'source counters' and 'recent-vs-previous trend direction', which loosely hint at source_type and window_days, but nothing about kind, topic, status, limit, or project_id 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?

The description gives a specific verb ('List') and a precisely scoped resource ('aggregated Telegram AI demand keywords') plus what the listing contains (source counters, trend direction). It is clearly distinguishable from sibling observability/rebuild tools, 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?

Usage is implied by the phrase 'aggregated ... keywords': this is a read of pre-aggregated data, in contrast to siblings like ads_telegram_ai_keyword_observe or ads_telegram_ai_keyword_rebuild. However, no when-to-use/when-not guidance or explicit alternative is offered.

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

ads_telegram_ai_keyword_observeA

Extract normalized demand keywords from one search query or user-provided text and update local trend counters. The submitted text is not stored and this tool never contacts Telegram.

NameRequiredDescriptionDefault
textYes
topicNo
intentNo
languageNo
metadataNo
project_idNoneron
source_refYesStable local/source reference used for deduplication; do not put raw message text here
observed_atNo
source_typeYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description does real work: it discloses a write side effect (updating local trend counters), a privacy guarantee (submitted text is not stored), and a surprising non-behavior (never contacts Telegram). Missing disclosure of deduplication behavior or what happens on repeat submissions, but the key behavioral traits are covered.

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

Conciseness5/5

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

Two compact sentences with the core action front-loaded and the caveats trailing. No filler, nothing repeated from the schema.

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 explains the operation and its privacy/side-effect profile, which is the minimum for a 9-parameter local-write tool with no annotations and no output schema. It leaves the caller without guidance on the six undocumented parameters or on what the tool returns (e.g., extracted keywords), which is a meaningful gap given the 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 only 11% (just source_ref) across 9 parameters, so the description is expected to compensate and largely does not. It indirectly maps to text and source_type but says nothing about topic, intent, language, metadata, project_id, or observed_at, leaving most of the input contract 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 (extract) plus resource (normalized demand keywords) and adds the side effect of updating local trend counters, so the tool is clearly distinguishable from read-only siblings like ads_telegram_ai_keyword_list or ads_telegram_ai_trend_snapshot_build. It stops short of naming a sibling alternative, so an agent must infer the boundary with ads_telegram_ai_keyword_rebuild.

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?

"from one search query or user-provided text" implies the single-item scope and suggests this is the ingest path rather than a bulk rebuild, but no explicit when-to-use/when-not or alternative tool is named. The Telegram disclaimer hints at what the tool is not for, but the routing decision against keyword_rebuild, keyword_list, and trend_snapshot_build is left implicit.

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

ads_telegram_ai_keyword_rebuildA

Rebuild demand keyword observations from existing search history, saved public AI posts and inbound client messages. Set reset=true only to replace the derived keyword aggregate and observation tables; stores only normalized keywords and source metadata; never sends messages.

NameRequiredDescriptionDefault
resetNoExplicitly rebuild the derived trend tables from source records
project_idNoneron

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the data sources read, the side effect of reset=true (replaces derived aggregate and observation tables), what is persisted ('only normalized keywords and source metadata'), and a negative guarantee ('never sends messages'). It does not state whether rebuilds are idempotent or what happens to prior aggregates when reset is false.

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 sources, then the reset semantics and safety guarantees. The semicolon-chained second sentence is dense but every clause adds 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 no-annotation, no-output-schema mutation tool, the description covers sources, destructive scope, stored fields, and absence of outbound messaging – enough to call it safely. The remaining gap is project scoping, which the schema leaves undescribed.

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?

reset is documented in both schema and description, and the description adds real meaning by tying it to specific derived tables rather than a generic 'rebuild'. project_id, however, is undocumented in both places (50% coverage) – nothing says what project scope applies or why the 'neron' default exists.

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 ('Rebuild') and resource ('demand keyword observations') plus the three source data sets it derives from, which implicitly separates it from ads_telegram_ai_keyword_observe (which records new observations) and ads_telegram_ai_keyword_list. It stops short of naming any sibling explicitly, so an 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 Guidelines4/5

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

The clause 'Set reset=true only to replace the derived keyword aggregate and observation tables' gives a clear when-to-use condition and an implicit warning against the destructive path. No alternative tool is named as a fallback for non-rebuild cases, so the routing guidance is one-sided.

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

ads_telegram_ai_keyword_topic_listB

List aggregated demand-topic trends that group related keyword variants, with source counters and recent-vs-previous activity; read-only and never contacts Telegram.

NameRequiredDescriptionDefault
limitNo
statusNo
project_idNoneron
window_daysNo

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden; it does contribute real value by declaring the operation read-only and clarifying that it never contacts Telegram (no external side effects or account risk). However, it says nothing about permissions, data freshness, pagination, or what the 'source counters' and recent-vs-previous comparison actually contain.

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 that leads with the verb and resource, with the safety clause appended after the semicolon. No filler, though the safety note could be its own short clause for scannability.

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 annotations, no output schema, and 4 undocumented parameters, the description covers purpose and side-effect safety but leaves the agent without the parameter and result semantics needed to call it correctly. For a tool embedded among many lookalike 'list' siblings, that is insufficient.

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% across 4 parameters, so the description must compensate and largely fails to: limit, status (active/ignored), project_id, and window_days are never mentioned. The phrase 'recent-vs-previous activity' faintly gestures at the window concept but does not explain window_days or how status filtering changes results.

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 a precisely scoped resource ('aggregated demand-topic trends that group related keyword variants'), which is meaningfully distinct from sibling tools like ads_telegram_ai_keyword_list (individual keywords) and ads_telegram_ai_trend_snapshot_list. It stops short of naming those siblings explicitly, so 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?

Usage is only implied: 'aggregated demand-topic trends that group related keyword variants' suggests this is the topic-level rollup rather than the raw keyword list, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer the routing decision from sibling names alone.

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

ads_telegram_ai_post_listB

List public Telegram posts saved from the global AI search. Results are classified locally as request, opportunity, discussion, promotion or repost; this tool never sends messages.

NameRequiredDescriptionDefault
limitNo
min_scoreNo
project_idNoneron
classificationNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description does add real context: it is read-only ('never sends messages') and classification is performed locally with five fixed categories. It does not disclose ordering, pagination behavior, or permission/auth requirements for a tool with four optional parameters.

Agents need to know what a tool does to the world before 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 what is listed, followed by the classification and safety note. No filler or restatement of 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 read-only listing tool with no annotations and no output schema, the description covers what the records are and their classification, which is enough to decide to call it. It leaves gaps around result ordering, paging via limit, and what min_score/project_id filter, which matter 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% and none of the four parameters (limit, min_score, project_id, classification) are explained in the description. Mentioning the classification categories adds only a little, since the enum already enumerates those exact values, and min_score and project_id remain entirely opaque.

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 ('List') and a precisely scoped resource: public Telegram posts previously saved from the global AI search. The phrase 'saved from the global AI search' distinguishes it from live-search siblings like ads_telegram_public_posts_search, though it does not name any 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?

Usage is implied by 'saved from the global AI search' β€” the agent infers this reads stored search output rather than performing a search. There is no explicit when-to-use guidance, no pointer to ads_telegram_ai_search_run_list or ads_telegram_ai_post_reclassify, and no statement of prerequisites such as needing a prior search run.

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

ads_telegram_ai_post_reclassifyB

Reclassify saved public Telegram AI posts and rebuild Neron offer matches plus contextual public reply drafts. Local-only: never sends or edits Telegram messages.

NameRequiredDescriptionDefault
project_idNoneron

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It valuably discloses that the operation is local-only and never sends or edits Telegram messages, but it does not explain whether reclassification overwrites prior matches/drafts, how idempotent it is, or what permissions/state it 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 tight sentences, front-loaded with the core action and followed by the key safety constraint. No filler or repetition.

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

Completeness3/5

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

For a local rebuild operation with no annotations, no output schema, and an undocumented parameter, the description covers the core action and safety profile but omits scope, side effects, and expected outcome. Adequate but with material 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?

The sole parameter project_id has 0% schema description coverage and is not mentioned in the description. The default value 'neron' and the parameter's scoping effect are invisible to an agent unless it inspects 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?

States specific verbs and resources: reclassify saved public Telegram AI posts and rebuild offer matches plus reply drafts. The local-only clause distinguishes it from Telegram send/edit siblings, though it does not name an alternative tool directly.

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

Usage Guidelines3/5

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

The description implies this is a local batch rebuild operation that should be used when saved posts need fresh classification/matches. It does not explicitly state when to use it versus post-list, reply-sync, or reply-draft tools, nor does it list prerequisites.

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

ads_telegram_ai_search_query_listB

List saved Telegram AI search phrases and their last-run/result counters; read-only and never contacts Telegram.

NameRequiredDescriptionDefault
limitNo
topicNo
statusNo
project_idNoneron

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden; it usefully discloses read-only semantics and that it never contacts Telegram (a meaningful reassurance for a Telegram-labeled tool). However, it omits return shape, pagination/ordering behavior, and what the counters represent, leaving real gaps for a no-annotation tool.

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 that front-loads the resource and the key constraint (read-only, no Telegram contact). No wasted words, though the semicolon clause could be split for scannability.

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 annotations, no output schema, and four undocumented parameters, the description leaves too much for the agent to infer – especially the meaning of topic/status filters and the counters returned. Given the tool's parameterized filter surface, it should explain at least the scoping and filtering 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 schema has 4 parameters at 0% description coverage, and the description explains none of them – it says nothing about limit, topic, status enum values, or project_id scoping. The reference to 'counters' does not map to any parameter, so the coverage gap is 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?

States a specific verb (list) and resource (saved Telegram AI search phrases) plus the extra data returned (last-run/result counters). It is distinguishable from ads_telegram_ai_search_query_upsert and ads_telegram_ai_search_run_list by being a read of saved phrases rather than runs, though it never names a sibling to make the split explicit.

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

Usage Guidelines3/5

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

The phrase 'saved ... phrases' implies this retrieves stored queries rather than executing or creating them, giving some usage context. But there is no explicit when-to-use guidance, no mention of when to prefer ads_telegram_ai_search_run_list, 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.

ads_telegram_ai_search_query_upsertB

Save or update one Telegram AI search phrase for later discovery and demand analysis. This changes only local SQLite and never searches or sends messages.

NameRequiredDescriptionDefault
notesNo
queryYes
topicNo
intentNo
sourceNo
statusNo
languageNo
metadataNo
priorityNo
project_idNoneron

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description does useful work by disclosing that this only changes local SQLite and never performs external search or messaging side effects. It still omits mutation details such as upsert key behavior, whether existing fields are overwritten, permission requirements, and response characteristics.

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

Conciseness5/5

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

The description is two tight sentences with the purpose and key non-side-effect constraint front-loaded. Every sentence adds relevant information and there is no filler.

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

Completeness2/5

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

Given 10 parameters, 0% schema description coverage, no annotations, and no output schema, the description is too sparse for an agent to call the tool correctly across most fields. It covers the high-level upsert and local-only scope but leaves parameter semantics and mutation behavior largely undocumented.

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 10 parameters, so the description must explain parameter meanings, but it only implies the required 'query' via 'search phrase.' It says nothing about notes, topic, intent, source, status, language, metadata, priority, or project_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 uses a specific verb and resource: 'Save or update one Telegram AI search phrase,' and adds the intended scope, 'for later discovery and demand analysis.' It also distinguishes this from search execution by saying it 'never searches or sends messages,' though it does not explicitly name a sibling alternative such as the query list or run tools.

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

Usage Guidelines4/5

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

It gives clear context for use ('for later discovery and demand analysis') and an explicit exclusion ('never searches or sends messages'). However, it does not name specific alternatives like ads_telegram_ai_search_query_list or ads_telegram_ai_search_run_list to make routing fully explicit.

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

ads_telegram_ai_search_run_listB

List the append-only history of Telegram AI searches, including source/scope, status, quota and result counters; read-only and never contacts Telegram.

NameRequiredDescriptionDefault
limitNo
sourceNo
statusNo
query_idNo
project_idNoneron

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does deliver useful behavior: 'append-only', 'read-only', and 'never contacts Telegram' tell the agent this has no external side effects. It stops short of ordering, pagination depth, or truncation behavior for what could be a large history.

Agents need to know what a tool does to the world before 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 front-loaded sentence with no filler: verb, resource, contents, and the safety qualifier all land immediately. 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 no output schema, telling the agent the record contents (status, quota, result counters) is genuinely valuable. But with 5 undocumented optional params and no annotation coverage, the description leaves filtering, default limit, and result ordering unspecified.

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 five parameters (limit, source, status, query_id, project_id) are undocumented. The description's mention of 'source/scope, status, quota and result counters' reads as returned fields rather than filters, so it adds almost no meaning about how to constrain the query.

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 ('append-only history of Telegram AI searches'), plus the record fields returned. It implies a distinction from the sibling ads_telegram_ai_search_query_list but never names it, so the agent has to infer which list is which.

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 read-only framing implies it's for inspection/history review, but there is no explicit when-to-use, no named alternative (query_list, query_upsert), and no stated prerequisites. Usage is inference-only.

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

ads_telegram_ai_trend_snapshot_buildB

Build one weekly demand snapshot grouped by topic and intent, with deduplicated source counts. This changes only local analytics tables and never contacts Telegram.

NameRequiredDescriptionDefault
resetNoReplace the selected weekly snapshot before rebuilding it
project_idNoneron
period_startNoAny ISO date inside the target week; the snapshot uses the UTC Monday-Sunday week
source_scopeNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description usefully discloses the side-effect scope: it changes only local analytics tables and never contacts Telegram. It still omits other important behavior for a mutating build tool, such as whether builds are idempotent, what reset does, required permissions, or expected output.

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

Conciseness5/5

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

Two tightly written sentences, front-loaded with the main action and followed by the key safety constraint. Nothing is repetitive or 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?

The description gives enough context to understand the core operation and its local-only effect. However, for a four-parameter mutating tool with no annotations, no output schema, and only half the parameters described in schema, it should cover more about parameter usage and build 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 only 50%, and the description adds no meaning for specific parameters. It does not explain source_scope enum values, project_id behavior, or when reset should be used, leaving the agent to rely on incomplete schema prose.

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 ('Build') and resource ('weekly demand snapshot'), and adds grouping dimensions ('topic and intent') plus deduplicated source counts. It is clearly a build/write operation rather than a listing operation, but it does not explicitly differentiate itself from the sibling list 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?

Usage is implied by the purpose: build a weekly demand snapshot for local analytics. However, the description does not say when to use this instead of ads_telegram_ai_trend_snapshot_list or related research-stat tools, nor does it mention preconditions or exclusions.

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

ads_telegram_ai_trend_snapshot_listB

List saved weekly demand snapshots by topic and intent; read-only and never contacts Telegram.

NameRequiredDescriptionDefault
limitNo
topicNo
intentNo
project_idNoneron
period_startNo
source_scopeNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the operation is read-only and never contacts Telegram, which matters given the telegram-prefixed siblings, but it omits pagination behavior, defaults, sort order, and what a 'snapshot' 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 compact sentence with the key scope and safety note front-loaded. It earns its place, though it is so terse that it leaves important semantics unstated.

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 six-parameter list tool with no annotations and no output schema, the description is too thin. An agent still cannot tell what fields a snapshot returns, how limit is applied, what the default project scope means, or how period_start/source_scope constrain 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%, so the description must compensate for six undocumented parameters. It only mentions topic and intent filtering and says nothing about limit, project_id (which has a default of 'neron'), period_start, or source_scope.

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 saved weekly demand snapshots') and scopes it by topic and intent. It implicitly distinguishes itself from the sibling build tool by emphasizing 'saved' snapshots, but never names the build 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?

The phrase 'saved weekly demand snapshots' and 'read-only and never contacts Telegram' imply this is for browsing stored trend data rather than live Telegram collection. However, it does not explicitly say when to use this versus ads_telegram_ai_trend_snapshot_build or other telegram_ai search/query list tools.

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

ads_telegram_channel_direct_checkA

Read-only preflight for a broadcast Telegram channel: checks Direct Messages, the connected discussion chat, and public contacts from the channel description. Requires Telegram Premium; never joins, sends a message, or creates a public post.

NameRequiredDescriptionDefault
channelYes@username or t.me public channel

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses key behavior: read-only operation, no joining/sending/posting, and the Premium requirement. It does not cover rate limits or authentication details beyond Premium, but the safety profile is clear.

Agents need to know what a tool does to the world before 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 a colon-separated list. Every clause adds information: purpose, what is checked, prerequisite, and safety guarantees.

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-only tool with no output schema, the description explains what is checked and the key constraints. It does not describe the return format, but the core operational and safety context is sufficient for invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the single 'channel' parameter is already documented as '@username or t.me public channel'. The description adds no further meaning about the parameter, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: a read-only preflight that checks DMs, the connected discussion chat, and public contacts for a broadcast Telegram channel. It clearly distinguishes itself from the sibling send tool by emphasizing that it never joins, sends, or creates a public post.

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 term 'preflight' implies use before broadcasting, and 'Requires Telegram Premium' gives an important prerequisite. However, it does not explicitly name when to use this versus ads_telegram_channel_direct_send or state exclusions beyond the side-effect guarantees.

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

ads_telegram_channel_direct_sendA

Send one explicitly approved plain-text message to a Telegram channel's Direct Messages monoforum, only when a read-only preflight confirms that Direct Messages are enabled. Requires Telegram Premium and confirm=true; never publishes to the channel feed.

NameRequiredDescriptionDefault
textYes
channelYes@username or t.me public channel
confirmYesExplicitly confirm sending this one channel Direct Message

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden well: it discloses the Premium requirement, confirmation requirement, preflight dependency, single-message scope, plain-text restriction, and that it does not post to the channel feed. It does not cover response shape, failure modes, or rate limits, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before 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 the core action and constraints front-loaded. Every clause contributes either scope, prerequisites, or behavioral constraints.

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 mutation tool with no annotations and no output schema, the description covers the essential call conditions and side-effect scope. It leaves return behavior and error handling unspecified, but an agent has enough information to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 67%; channel and confirm are already described in the schema, and text has only type and length constraints. The description adds that the message is plain-text and limited to one message, plus that confirm=true is required, but it does not add much parameter-specific meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: sending one plain-text message to a Telegram channel's Direct Messages monoforum. It also distinguishes this action from publishing to the channel feed, so an agent can tell it apart from broader Telegram send tools.

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

Usage Guidelines4/5

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

It gives explicit conditions: use only when a read-only preflight confirms Direct Messages are enabled, requires Telegram Premium, and confirm=true. It also states a clear exclusion, never publishing to the channel feed, though it does not name the specific preflight sibling tool.

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

ads_telegram_chat_mark_readA

Mark one human one-to-one Telegram chat as read. Requires explicit confirm=true; sends no message, does not create a local dialogue row, and does not mark bots or channels.

NameRequiredDescriptionDefault
chatYes@username, t.me link, or numeric Telegram user id
confirmYesExplicitly confirm changing this chat's Telegram read state

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses that no message is sent, no local dialogue row is created, and bots/channels are not affected. It does not discuss permissions or the exact read-state response, but it covers the key non-effects and confirmation requirement.

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

Conciseness5/5

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

The description is compact and front-loaded, leading with the core action and immediately adding the confirm requirement and key exclusions. Every clause carries useful information.

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

Completeness5/5

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

For a simple two-parameter action with full schema coverage and no output schema, the description supplies the necessary scope, confirmation requirement, and side-effect exclusions. Nothing important for correct invocation appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already well documented by the schema. The description reinforces the confirm requirement but adds little beyond the schema's own descriptions of chat and confirm.

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: marking a human one-to-one Telegram chat as read. It also narrows scope by excluding bots and channels, which helps distinguish it from sibling Telegram tools such as ads_telegram_chat_reply and ads_telegram_account_send.

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

Usage Guidelines4/5

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

It gives clear usage context and exclusions: requires confirm=true and does not apply to bots or channels. However, it does not explicitly name an alternative tool for marking other chat types as read, so it falls short of full when-to-use/when-not guidance.

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

ads_telegram_chat_replyA

Reply publicly to one message inside an accessible Telegram group when the message contains a relevant explicit request and the resource rules permit it. Requires Telegram Premium and explicit confirm=true; reports a read-only unread-human-dialog preflight without blocking the write; never sends a private message and never bypasses moderation, CAPTCHA or guest-send restrictions.

NameRequiredDescriptionDefault
chatYes@username or t.me public group
textYes
confirmYesExplicitly confirm sending this one public group reply
message_idYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden and does so well: it discloses the Telegram Premium requirement, mandatory confirm=true, the non-blocking read-only unread-human-dialog preflight, and several hard restrictions. It stops short of describing failure behavior or rate limits, but the key mutation semantics are clear.

Agents need to know what a tool does to the world before 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 dense but front-loaded: the action and scope come first, followed by requirements and restrictions. Every clause adds operational meaning with 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 mutation tool with no annotations and no output schema, the description covers the important context an agent needs: access requirements, confirmation, preflight behavior, and public-only restrictions. Remaining gaps around failure handling and exact response semantics are minor given the available schema.

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

Parameters3/5

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

Schema coverage is 50%, so the schema already documents chat and confirm. The description reinforces the public-group scope and explicit confirmation requirement, but it adds little detail for text or message_id beyond implying a single target message.

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: reply publicly to one message inside an accessible Telegram group. It also scopes the action away from private messaging and clarifies that the target is a group message rather than a channel or general send operation.

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

Usage Guidelines4/5

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

It gives explicit conditions for use: the message must contain a relevant explicit request and resource rules must permit it, and Telegram Premium plus confirm=true are required. It also states exclusions such as never sending a private message and never bypassing moderation or CAPTCHA, though it does not name alternative sibling tools.

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

ads_telegram_message_reactA

Add one emoji reaction to one existing Telegram message through the selected local GramJS/TDLib account. Requires Telegram Premium, explicit confirm=true and (when available) expected_text to fail closed if the message changed; does not send text or mark the chat read.

NameRequiredDescriptionDefault
chatYes@username, t.me link, or numeric Telegram chat id
confirmYesExplicitly confirm adding this one reaction
reactionYesOne standard emoji reaction, for example πŸ‘
message_idYes
expected_textNoExact current message text; no reaction is added if it differs

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the load and does well: it discloses the Premium entitlement requirement, the mandatory confirm gate, the optimistic-concurrency guard via expected_text, and the side effects it deliberately avoids (no text send, no read marking). It does not say what happens if the user already reacted or how a reaction is removed, which is the main residual gap.

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 clauses: the action plus its preconditions and boundaries, with the action front-loaded. Dense but every clause carries information; only the parenthetical '(when available)' is slightly ambiguous.

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-purpose mutation tool with no output schema and no annotations, the description covers the decision-critical facts: entitlement, confirmation, expected_text guard, and negative scope. Return behavior and idempotency on repeat reactions are the remaining unknowns, but they are minor for this 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?

Schema coverage is 80%, so most parameters are documented by the schema itself, and the description adds the rationale for confirm ('explicit') and expected_text ('fail closed if the message changed') that the schema only states mechanically. The only parameter with no description anywhere, message_id, is still self-evident from context, so nothing critical is missing.

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 ('Add one emoji reaction to one existing Telegram message') plus the execution channel ('selected local GramJS/TDLib account'). That combination clearly separates it from ads_telegram_chat_reply, ads_telegram_channel_direct_send and ads_telegram_chat_mark_read among the 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?

Gives concrete preconditions: Telegram Premium account, explicit confirm=true, and optional expected_text for fail-closed behavior. It also scopes the tool negatively ('does not send text or mark the chat read'), implicitly routing message-sending and read-marking to other tools, though no sibling is named explicitly.

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

ads_telegram_public_post_replyA

Reply publicly to one Telegram channel post through its linked discussion only when the post contains a relevant explicit request and the resource rules permit it. Requires Telegram Premium and explicit confirm=true; reports a read-only unread-human-dialog preflight without blocking the write; never sends a private message and never bypasses moderation or guest-send restrictions.

NameRequiredDescriptionDefault
textYes
channelYes@username or t.me public channel
confirmYesExplicitly confirm sending this one public comment
message_idYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden well: it discloses the Premium requirement, explicit confirmation, a read-only preflight that does not block the write, and important restrictions around private messaging, moderation, and guest-send. It does not cover error behavior or return details, but it provides substantial safety and permission context for a mutation tool.

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

Conciseness4/5

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

The description is dense but front-loaded, placing the core action and conditions before secondary caveats. It avoids wasted sentences, though the single long sentence packs multiple constraints together and could be slightly easier 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?

For a public-posting mutation tool with no annotations and no output schema, the description covers prerequisites, safety constraints, and preflight behavior well. However, it leaves key parameters such as message_id and text unexplained, so it is not fully complete for an agent invoking the tool.

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

Parameters2/5

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

Schema coverage is 50%, and the description adds little parameter meaning beyond mentioning confirm=true and Telegram Premium. It does not explain message_id, the required reply text, or constraints such as text length, leaving half the parameters undocumented in both schema and description.

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

Purpose5/5

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

The description states a precise verb and resource: 'Reply publicly to one Telegram channel post through its linked discussion.' It also differentiates the operation from private messaging by explicitly saying it 'never sends a private message,' which helps separate it from siblings like ads_telegram_chat_reply or ads_telegram_account_send.

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 conditions for use: only when the post contains a relevant explicit request and resource rules permit it, plus the prerequisites of Telegram Premium and confirm=true. It also states what the tool will not do, but it does not explicitly name alternative tools for adjacent cases.

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

ads_telegram_public_reply_listB

List public Telegram replies and mentions saved in the local audit table; pending items are shown first and nothing is sent.

NameRequiredDescriptionDefault
limitNo
statusNo
project_idNoneron
telegram_chat_idNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description does carry useful behavior: it reads a local audit table and explicitly guarantees 'nothing is sent', plus discloses the pending-first ordering. However it says nothing about pagination, limits, default status filtering, or what happens when limit is omitted, which matters for a zero-annotation tool.

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 compact sentence with the key behavior front-loaded and no filler. It could be slightly expanded without losing efficiency, but nothing is wasted as written.

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, no annotations, and four undocumented parameters, so the description must compensate and doesn't. An agent cannot tell page size behavior, status filtering semantics, or the shape of returned records from what is provided.

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% across four parameters, and the description explains none of them β€” no mention of limit, status enum values, project_id default, or telegram_chat_id filtering. The one hint ('pending items shown first') loosely relates to status but does not document the parameter.

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

Purpose4/5

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

States a specific verb and resource ('List public Telegram replies and mentions') plus the data source ('saved in the local audit table'), which distinguishes it from the sync/upsert siblings. It stops short of naming which sibling to use for live fetching, but the read-from-store framing is clear.

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 ('list saved items', implicitly instead of ads_telegram_public_reply_sync), but no explicit when-to-use or when-not-to-use statement is given. The agent must infer that this reads existing records rather than fetching new ones.

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

ads_telegram_public_reply_statusA

Set the review status of one saved public Telegram reply. This changes only local audit data and never sends a message.

NameRequiredDescriptionDefault
idYes
statusYes
decision_noteNo
our_reply_urlNo
our_reply_message_idNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does well by disclosing the key side effect: it changes only local audit data and never sends a message. It does not address permissions, idempotency, or whether status changes are reversible, but the critical safety behavior is explicit.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and followed immediately by the most important safety constraint. There is no wasted text.

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 gives an agent enough to understand the tool's core purpose and non-sending behavior, which is important given the lack of annotations. But for a five-parameter tool with 0% schema description coverage, it leaves optional parameters and status semantics unexplained, so it is only minimally sufficient.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for five undocumented parameters. It only implies the 'id' (saved reply) and 'status' (review status) parameters and says nothing about decision_note, our_reply_url, our_reply_message_id, or what each status enum value means.

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

Purpose5/5

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

The description states a specific verb+resource: 'Set the review status of one saved public Telegram reply.' It also distinguishes itself from message-sending siblings by clarifying 'never sends a message,' so an agent can tell this is a local status update rather than a reply action.

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

Usage Guidelines3/5

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

The description implies usage by saying it changes only local audit data and never sends a message, which distinguishes it from reply-sending tools. However, it does not explicitly say when to choose this over ads_telegram_public_reply_upsert, ads_telegram_public_post_reply, or how to sequence it after saving a reply.

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

ads_telegram_public_reply_syncA

Read a bounded recent history in selected public Telegram chats and save direct replies plus a small context window after each outgoing message, because people may answer without using Telegram's reply action. Requires Premium; never sends, joins, collects participant lists or marks messages read.

NameRequiredDescriptionDefault
chat_refsNo@username or Telegram chat references; if omitted, use joined resources from tg_resources
project_idNoneron
limit_per_chatNoRecent messages to inspect per chat; defaults to 500
context_messages_afterNoImmediate messages to inspect after each outgoing message; defaults to 2

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does much of it: it declares the operation non-mutating toward the platform, states a Premium entitlement requirement, and bounds the read ('bounded recent history', 'small context window'). It leaves unstated what is written on the save side and any rate/size limits beyond the schema's numeric caps.

Agents need to know what a tool does to the world before 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: the action and scope come first, the rationale second, and the constraints compressed into one negation clause. Every element does work.

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?

No annotations and no output schema, so the definition must stand alone, and it covers purpose, safety boundaries, entitlement, and read bounds. The one real gap is the absence of any statement about what the sync returns or how much gets persisted per run.

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 75%, and the description supplies the intent behind the undocumented gaps: chat_refs are 'selected public Telegram chats', limit_per_chat is a bounded 'recent history', and context_messages_after is the 'small context window after each outgoing message'. Only project_id remains unexplained, which is why this isn't a 5.

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 pair (read history, save replies) plus a clearly scoped resource (public Telegram chats) and a stated mechanism (context window after each outgoing message). It separates itself from upsert/list/status siblings by describing a read-and-record sync pass, though it never says where the captured replies are persisted.

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 trigger condition explicitly β€” people may answer without using the reply action β€” which tells the agent why this sync exists rather than a plain message search. Negative scope (never sends, joins, collects participants, marks read) rules out the obvious confusions with send/reply/chat_mark_read siblings, but no sibling is named as an alternative.

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

ads_telegram_public_reply_upsertC

Save or update one public Telegram reply/mention found under a message from the connected account. Local-only; never sends or marks messages read.

NameRequiredDescriptionDefault
textYes
statusNo
metadataNo
posted_atNo
chat_titleNo
project_idNoneron
public_urlYes
reviewed_atNo
chat_usernameNo
decision_noteNo
first_seen_atNo
our_reply_urlNo
relation_typeNo
author_usernameNo
telegram_chat_idYes
parent_message_idNo
parent_public_urlNo
author_telegram_idNo
author_display_nameNo
telegram_message_idYes
our_reply_message_idNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and the 'never sends or marks messages read' clause usefully rules out the wrong assumption that this is a messaging tool. However, for a 21-parameter mutation it omits what an upsert actually destroys (does re-saving overwrite status/decision_note on an existing row?) and what identity key triggers the update-vs-insert.

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 front-loaded clauses with no filler, and the local-only constraint is placed where it will be read before invocation. Slightly too terse for the surface area, but every sentence earns its place.

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 21-parameter, nested, mutation-style tool with no annotations, no output schema, and zero schema descriptions is given only two sentences. Given that complexity, the definition leaves far too much undefined for an agent to call it correctly or predict its effect.

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% across 21 parameters, so the description needed to compensate and instead names none of them. Critical semantics β€” which combination of telegram_chat_id/telegram_message_id/public_url identifies the record for upsert, what the status enum states mean, and what relation_type 'reply' vs 'mention' changes β€” are left entirely 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 ('Save or update' / upsert) and a specific resource ('one public Telegram reply/mention found under a message from the connected account'), which is enough to separate it from the read-oriented siblings ads_telegram_public_reply_list and _sync. It does not name those siblings explicitly, so differentiation is inferential 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 statement of when to use this versus ads_telegram_public_reply_sync, _list, or _status β€” the agent must infer that this is the persistence step after discovery. 'Local-only; never sends' clarifies safety but not selection criteria or prerequisites.

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

ads_tg_resource_listB

List generic Telegram groups and channels saved in the local tg_resources catalog; defaults to the Neron project and never returns participant data.

NameRequiredDescriptionDefault
typeNo
limitNo
statusNo
project_idNoneron
rules_statusNo
membership_statusNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden; it usefully discloses that results come from the local catalog (no live Telegram fetch), that project_id defaults to 'neron', and that participant data is never returned. It omits pagination/ordering behavior, what the empty-result case looks like, and any permission caveats.

Agents need to know what a tool does to the world before 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; the resource, storage location, default scope, and privacy guarantee are all packed in without redundancy.

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?

Six undocumented filter parameters with zero schema coverage and no output schema mean the description should explain what the filters mean and roughly what a returned resource looks like. It covers only the default project and a privacy guarantee, leaving the bulk of invocation 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% across 6 parameters, and the description only addresses project_id's default. It says nothing about what type, status, rules_status, or membership_status filter on, nor how limit interacts with the enumsβ€”so the agent must guess the semantics of the four enum filters.

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 generic Telegram groups and channels') and scopes it to the local tg_resources catalog, which separates it from remote-fetch siblings like ads_telegram_public_posts_search and from the write-side ads_tg_resource_upsert. The qualifier 'generic' and 'saved in the local ... catalog' helps distinguish it from ads_tg_resource_post_list, though that contrast is implied 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?

Usage is implied by 'saved in the local tg_resources catalog; defaults to the Neron project', so an agent can infer this is the read side of the resource catalog. However, it never names an alternative or a condition that selects one tool over another (e.g., when to use this vs. ads_tg_resource_post_list or ads_telegram_account_search).

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

ads_tg_resource_post_listB

List confirmed Telegram publication links recorded for local resources; this is read-only and never sends messages.

NameRequiredDescriptionDefault
limitNo
statusNo
project_idNoneron
resource_idNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does address the highest-risk ambiguity for a Telegram-named tool by declaring it read-only and that it never sends messages. It says nothing about pagination, default limit, ordering, or what "confirmed" means as a filter, so the disclosure is partial.

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 compact sentence with the operation and its safety constraint front-loaded; no filler. It is short to the point of under-specification, but on structure and economy it is strong.

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, no annotations, and 0% schema coverage leave an agent guessing about filter semantics (what makes a link "confirmed", what status values select) and result size. The safety note is valuable but far from complete for a four-parameter 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% across four parameters, so the description must compensate and it does not: limit, status (enum posted/deleted/unknown), project_id (default "neron"), and resource_id are all unexplained. Only a vague hint that results relate to "local resources" touches resource_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 ("List") and a specific resource ("confirmed Telegram publication links recorded for local resources"), which distinguishes it from ads_tg_resource_post_record (write) and ads_tg_resource_list (resource registry). It doesn't explicitly name those siblings, so an 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 Guidelines3/5

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

The wording implies when to use it β€” when you want existing publication records β€” but there is no explicit when-to-use vs. alternative guidance (e.g., use ads_tg_resource_post_record to create a link). 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.

ads_tg_resource_post_recordB

Record a confirmed Telegram publication link for a cataloged group or channel. This only updates the local audit trail and never sends a message.

NameRequiredDescriptionDefault
notesNo
statusNo
metadataNo
usernameNo
posted_atNo
project_idNoneron
public_urlYes
recorded_atNo
resource_idNo
moderation_statusNo
telegram_message_idNo
telegram_resource_idNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose the most important trait: it only updates the local audit trail and never sends a message, which prevents the agent from mistaking it for a send action. It is silent on permissions, duplicate/upsert behavior for public_url, idempotency, and what the status/moderation_status values mean operationally.

Agents need to know what a tool does to the world before 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 front-loaded with the key action and the key safety fact. Nothing is wasted and no restatement of the tool name occurs.

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 12-parameter nested write tool with no annotations and no output schema, the description is far too thin. It establishes intent and non-sending behavior but leaves the agent unable to populate the other eleven fields 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?

Twelve parameters with 0% schema description coverage means the description must compensate, and it does not. It mentions only the publication link implicitly (public_url) while leaving username, status, moderation_status, metadata, project_id, resource_id, telegram_message_id, posted_at, recorded_at, and notes completely 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 names a specific verb and resource: 'Record a confirmed Telegram publication link for a cataloged group or channel.' That is far more precise than the bare tool name. It doesn't explicitly contrast with the adjacent ads_tg_resource_upsert or ads_tg_resource_post_list tools, so sibling 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 phrase 'confirmed... publication link' implies this is called after a post has already happened, which is useful implied usage. However, there is no explicit when-to-use, no exclusion versus ads_tg_resource_upsert, and no stated prerequisite that the resource must already be cataloged besides the adjective 'cataloged'.

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

ads_tg_resource_upsertB

Save or update one Telegram group or channel in the generic local resource catalog. This stores metadata only and never joins, leaves or sends messages.

NameRequiredDescriptionDefault
typeYes
notesNo
titleYes
sourceNo
statusNo
topicsNo
left_atNo
metadataNo
usernameNo
joined_atNo
project_idNoneron
public_urlNo
rules_statusNo
first_seen_atNo
last_checked_atNo
membership_statusNo
telegram_resource_idYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations at all, the description carries the full disclosure burden. It usefully clarifies that nothing is executed on Telegram, but says nothing about update semantics for this 17-field upsert β€” whether omitted fields are cleared or preserved, idempotency keys, validation failures, or permission requirements β€” which are the behaviors an agent most needs to know before writing.

Agents need to know what a tool does to the world before 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 redundancy, with the core action front-loaded and the safety scope as the follow-up. Nothing here is padding.

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 17-parameter mutation with no annotations, no output schema and zero schema descriptions, the definition is far too thin: it never mentions what the tool returns, how conflicts are resolved, or what the many status/timestamp fields mean. The one genuinely useful disclosure (metadata-only, no Telegram side effects) is not enough to make the definition self-sufficient.

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% across 17 parameters, including four enums (type, status, rules_status, membership_status) with no hint of their meaning or default behavior. The description adds only the vague notion of 'metadata' and does not explain a single field, so the agent must infer the entire payload shape from property names.

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 pair ('save or update') plus the exact resource ('one Telegram group or channel in the generic local resource catalog'), which is far more precise than the name alone. It is distinguishable from ads_tg_resource_list by the singular/upsert framing, 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 second sentence establishes an important boundary β€” this is catalog/metadata storage, not a live Telegram action β€” which implicitly routes the agent away from join/send tools. However it never says when to prefer this over sibling tools like ads_tg_resource_post_record or ads_tg_resource_list, nor any preconditions for calling it.

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

ads_yandex_direct_create_campaignA

Create one paused Yandex Direct text campaign through the guarded provider path. The new campaign is created with search and network serving off, without ads or a budget; it cannot start showing until configured and enabled separately.

NameRequiredDescriptionDefault
nameYes
confirmYesRequired explicit confirmation that this exact paused campaign may be created in Yandex Direct.
time_zoneNo
start_dateYes
client_infoNo
idempotency_keyYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses the resulting object state (paused, search and network serving off, no ads, no budget) and that activation requires separate steps. It omits auth/prerequisite requirements, whether creation is reversible, and idempotency/replay behavior, which matter 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 sentences, zero filler, and the most decision-relevant fact (paused, unconfigured) is front-loaded before the caveat. Nothing is repeated from structured fields.

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 6-parameter mutation tool with no annotations, no output schema, and thin schema coverage, the description covers resulting state but not what is returned (campaign ID needed for follow-up configuration) or how idempotency_key behaves on retry. Adequate but with clear gaps an agent will hit on first call.

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 17% β€” only 'confirm' is documented in the schema. The description never mentions name, start_date, time_zone, client_info, or the idempotency_key (including that repeats with the same key are deduplicated). It adds essentially no semantics beyond stating that no budget or ads are configured.

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 tightly scoped resource: 'Create one paused Yandex Direct text campaign.' The platform, campaign type, and single-object scope distinguish it from generic siblings like ads_campaign_create and ads_yandex_direct_write without 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?

The phrase 'through the guarded provider path' implies this is the preferred route over a raw write, and the paused-by-default note implies when you'd pick it. But no sibling is named and no explicit when-not condition (e.g., versus ads_yandex_direct_write or ads_campaign_create) is given, so routing is inferred rather than stated.

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

ads_yandex_direct_reportB

Read Yandex Direct campaign statistics through the configured provider MCP module and normalize the result by day.

NameRequiredDescriptionDefault
toNo
fromNo
currencyNo
module_idNo
tool_nameNo
campaign_idsNo

TDQS

B3/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose two non-obvious behaviors: execution is delegated through a configured provider module, and results are normalized per day. It says nothing about permissions, rate limits, pagination, or what happens with missing dates or modules.

Agents need to know what a tool does to the world before 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; the read action, the delegation path, and the output granularity all appear immediately.

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

Completeness2/5

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

With six undocumented parameters, no annotations, and no output schema, an agent needs to know date formats, defaults for the optional params, and error behavior. The description covers only the high-level intent, leaving key invocation details unresolvable.

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% across 6 parameters, so the description must compensate and largely does not. "Provider module" loosely hints at module_id/tool_name, but from/to formats, currency units, and campaign_ids filtering semantics are entirely 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 concrete verb+resource ("Read Yandex Direct campaign statistics") and adds the normalization behavior, which clearly separates it from ads_yandex_direct_sync, ads_yandex_direct_write, and ads_yandex_direct_create_campaign. It does not name those siblings, but the read-only reporting 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 statement of when to use this versus the other report tools (ads_google_ads_report, ads_microsoft_ads_report, ads_telegram_ads_report) or versus ads_yandex_direct_sync. The only guidance is the implicit intent of "statistics," leaving routing to inference.

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

ads_yandex_direct_syncC

Read Yandex Direct statistics through the provider MCP module and persist normalized campaigns, spend and conversions into local SQLite.

NameRequiredDescriptionDefault
toNo
fromNo
currencyNo
module_idNo
tool_nameNo
project_idNo
campaign_idsNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose that data is normalized and written to local SQLite, which is useful, but it says nothing about whether the write overwrites, upserts or appends, whether it requires a configured module, or what permissions/auth are needed.

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 that states the read and the write in one pass with no filler. It is efficient, though extremely short relative to a 7-parameter tool.

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 mutating tool with no annotations, no output schema, and seven entirely undocumented parameters, the description is far too thin. An agent cannot determine required identifiers, idempotency behavior, or what the persisted output looks like without guessing.

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?

Seven parameters with 0% schema description coverage, and the description only loosely maps to a few of them (date range via 'statistics', 'campaigns' and spend/conversions). The critical module_id, tool_name and project_id parameters β€” likely required to actually route the call β€” are entirely 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 names a specific verb pair (read + persist) and a concrete resource (Yandex Direct statistics), and adds the destination (local SQLite). It differentiates itself from the pure-read sibling ads_yandex_direct_report by stating that it persists normalized data, 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?

Usage is only implied: the word 'persist' suggests this is the tool to use when you want the data stored locally rather than just viewed. There is no explicit statement of when to prefer this over ads_yandex_direct_report or when a sync is appropriate versus unnecessary.

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

ads_yandex_direct_writeA

Apply an explicitly confirmed, idempotent Yandex Direct campaign change through the provider API. Updates and lifecycle status changes for existing campaigns are exposed; creation uses the dedicated safe create tool and deletion remains disabled.

NameRequiredDescriptionDefault
itemsYes
methodYes
confirmYesRequired explicit confirmation that these exact campaign changes may be sent to Yandex Direct.
serviceYes
idempotency_keyYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden and does well: it discloses the confirm requirement, idempotency semantics, and that creation/deletion are out of scope. It stops short of describing what happens on partial batch failure, error responses, or permission/auth requirements for the 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 with the core action front-loaded, followed by scope boundaries; 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?

Covers the safety and scope story well, but for a batch mutation tool accepting up to 100 items with no output schema and no annotations, it should say more about batch-level behavior (atomicity, partial failure) and what a successful call returns.

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 only 20%, but the description indirectly contextualizes several params: 'explicitly confirmed' (confirm), 'idempotent' (idempotency_key), 'lifecycle status changes' (method enum), and 'campaign change' (service const). It adds no detail on the items array shape or the 100-item batch limit, so it only partially compensates for the sparse 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 (apply change), resource (Yandex Direct campaign), and scope (existing campaigns only), and explicitly contrasts with the sibling create tool while declaring deletion disabled. An agent can distinguish it from ads_yandex_direct_create_campaign 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 Guidelines5/5

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

Explicitly says when to use it (updates and lifecycle status changes for existing campaigns), names the alternative for creation, and states the exclusion (deletion disabled). Nothing about routing 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 143 tool updatesv0.1.0
    • First observedads_aiki_setup_guide
    • First observedads_aiki_status
    • First observedads_attribution_report
    • First observedads_automation_rule_create
    • First observedads_automation_rule_list
    • First observedads_automation_run
    • First observedads_campaign_analytics
    • First observedads_campaign_create
    • First observedads_campaign_get
    • First observedads_campaign_list
    • First observedads_campaign_timeseries
    • First observedads_campaign_update
    • First observedads_clickru_campaign_draft_set_status
    • First observedads_clickru_campaign_drafts_status
    • First observedads_clickru_profiles_status
    • First observedads_client_profile_batch_send
    • First observedads_client_profile_channel_review
    • First observedads_client_profile_create
    • First observedads_client_profile_get
    • First observedads_client_profile_list
    • First observedads_client_profile_message_add
    • First observedads_client_profile_unread_check
    • First observedads_client_profile_update
    • First observedads_dashbord_start
    • First observedads_dashbord_stop
    • First observedads_discord_channel_list
    • First observedads_discord_channel_send
    • First observedads_discord_guild_list
    • First observedads_discord_member_search
    • First observedads_discord_message_search
    • First observedads_discord_status
    • First observedads_dstore_card_get
    • First observedads_dstore_cards_get
    • First observedads_dstore_search
    • First observedads_dstore_status
    • First observedads_event_ingest
    • First observedads_free_use_accept
    • First observedads_free_use_rules
    • First observedads_github_contribution_create_pr
    • First observedads_github_contribution_setup
    • First observedads_github_contribution_status
    • First observedads_google_ads_pmax_replace_images
    • First observedads_google_ads_report
    • First observedads_google_ads_sync
    • First observedads_integration_list
    • First observedads_integration_plan
    • First observedads_integration_register
    • First observedads_interest_contact_list
    • First observedads_interest_contact_upsert
    • First observedads_interest_research_post_list
    • First observedads_interest_research_post_upsert
    • First observedads_interest_research_stats_build
    • First observedads_interest_research_stats_list
    • First observedads_interest_research_tag_list
    • First observedads_mastodon_account_list
    • First observedads_mastodon_auth_complete
    • First observedads_mastodon_auth_start
    • First observedads_mastodon_direct_message
    • First observedads_mastodon_follow
    • First observedads_mastodon_hashtag_search
    • First observedads_mastodon_interest_search
    • First observedads_mastodon_message_batch
    • First observedads_mastodon_notification_list
    • First observedads_mastodon_pin_status
    • First observedads_mastodon_profile_update
    • First observedads_mastodon_public_mention
    • First observedads_mastodon_reply
    • First observedads_mastodon_status
    • First observedads_mastodon_thread_create
    • First observedads_microsoft_ads_report
    • First observedads_microsoft_ads_sync
    • First observedads_module_call
    • First observedads_module_plan
    • First observedads_module_tools
    • First observedads_network_aggregate_publish
    • First observedads_network_conversion_report
    • First observedads_network_inventory_list
    • First observedads_network_placement_publish
    • First observedads_network_platform_list
    • First observedads_network_platform_report
    • First observedads_network_profile_list
    • First observedads_network_profile_publish
    • First observedads_network_status
    • First observedads_network_sync_manifest
    • First observedads_platform_guide
    • First observedads_project_analytics
    • First observedads_project_create
    • First observedads_project_get
    • First observedads_project_list
    • First observedads_project_update
    • First observedads_spend_record
    • First observedads_store_status
    • First observedads_telegram_account_auth
    • First observedads_telegram_account_search
    • First observedads_telegram_account_send
    • First observedads_telegram_account_status
    • First observedads_telegram_accounts_report
    • First observedads_telegram_accounts_sync
    • First observedads_telegram_action_queue_cancel
    • First observedads_telegram_action_queue_create
    • First observedads_telegram_action_queue_list
    • First observedads_telegram_action_queue_process
    • First observedads_telegram_ads_api_create_ad
    • First observedads_telegram_ads_api_increase_ad_budget
    • First observedads_telegram_ads_api_report
    • First observedads_telegram_ads_api_set_ad_paused
    • First observedads_telegram_ads_api_status
    • First observedads_telegram_ads_api_submit_ad_for_review
    • First observedads_telegram_ads_api_sync
    • First observedads_telegram_ads_report
    • First observedads_telegram_ads_sync
    • First observedads_telegram_ai_chat_list
    • First observedads_telegram_ai_chat_upsert
    • First observedads_telegram_ai_keyword_list
    • First observedads_telegram_ai_keyword_observe
    • First observedads_telegram_ai_keyword_rebuild
    • First observedads_telegram_ai_keyword_topic_list
    • First observedads_telegram_ai_post_list
    • First observedads_telegram_ai_post_reclassify
    • First observedads_telegram_ai_search_query_list
    • First observedads_telegram_ai_search_query_upsert
    • First observedads_telegram_ai_search_run_list
    • First observedads_telegram_ai_trend_snapshot_build
    • First observedads_telegram_ai_trend_snapshot_list
    • First observedads_telegram_channel_direct_check
    • First observedads_telegram_channel_direct_send
    • First observedads_telegram_chat_mark_read
    • First observedads_telegram_chat_reply
    • First observedads_telegram_message_react
    • First observedads_telegram_public_post_reply
    • First observedads_telegram_public_posts_search
    • First observedads_telegram_public_reply_list
    • First observedads_telegram_public_reply_status
    • First observedads_telegram_public_reply_sync
    • First observedads_telegram_public_reply_upsert
    • First observedads_tg_resource_list
    • First observedads_tg_resource_post_list
    • First observedads_tg_resource_post_record
    • First observedads_tg_resource_upsert
    • First observedads_yandex_direct_create_campaign
    • First observedads_yandex_direct_report
    • First observedads_yandex_direct_sync
    • First observedads_yandex_direct_write

TDQS

C2.8/5.0

Scored across 143 tools

Disambiguation2/5

The set contains many near-overlapping tools, especially across Telegram Ads report/sync/API variants, Telegram action queues, public reply/post research, and multiple local catalog tools. Descriptions add context, but an agent can easily confuse names like ads_telegram_ads_report vs ads_telegram_ads_api_report or ads_telegram_ai_post_list vs ads_interest_research_post_list.

Naming Consistency4/5

All tools use an ads_ prefix and snake_case, giving a mostly predictable namespace. However, action ordering is uneven across compound names, there is a visible typo in ads_dashbord_start/stop, and similar concepts use inconsistent labels such as cards_get vs card_get and dstore vs tg_resource.

Tool Count1/5

143 tools is far too many for a coherent MCP surface. Even for a broad advertising automation server, the set spans many domains, providers, local catalogs, research workflows, networking, and messaging channels, making discovery and correct selection very difficult.

Completeness3/5

The surface is broad and covers many advertising, reporting, sync, outreach, and local analytics workflows, but lifecycle coverage is uneven. Some entities lack delete operations, several ad platforms are mostly read/sync-only, and write coverage is concentrated in specific providers such as Telegram, Yandex Direct, and Mastodon.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers