Skip to main content
Glama
mencoro

Mencoro MCP server


Mencoro tracks how brands surface in AI answer engines — ChatGPT, Perplexity, Google AI Overview and AI Mode — and in Google Search and Shopping. The MCP server exposes that data to any MCP client, and lets it manage projects, tracked queries, clusters and organizations, as 60 tools (31 that read, 29 that change something) and 20 prompts. One of them, get_mencoro_guide, answers questions about Mencoro itself and works without signing in.

The server is hosted. Most clients should connect to it directly:

https://api.mencoro.com/mcp

This repository holds the public metadata for that server plus a small stdio bridge (@mencoro/mcp) for hosts that can only launch a local process. It does not contain the Mencoro application source.

Connect

No install, no local process. Sign in with OAuth, or paste a personal access token as a header.

Client

How

Claude (web, Desktop, mobile)

Settings → Connectors → Add custom connector → paste the URL → Sign in. Or use the one-click link.

ChatGPT

Settings → Apps & Connectors → developer mode → add the URL → sign in.

Claude Code

claude mcp add --transport http mencoro https://api.mencoro.com/mcp then /mcp to sign in

Cursor

config below

VS Code

config below

OpenAI Codex

config below

Gemini CLI

config below

OpenCode

config below

Google Antigravity

config below

Clients that can only spawn a local process

Claude Desktop's manual configuration, and older stdio-only hosts, need a bridge. That is what this package is:

npx -y @mencoro/mcp
// claude_desktop_config.json
{
  "mcpServers": {
    "mencoro": {
      "command": "npx",
      "args": ["-y", "@mencoro/mcp"],
      "env": { "MENCORO_API_KEY": "mcp_pat_your_token" }
    }
  }
}

The token goes through the environment rather than an argument, so it does not appear in ps output and does not have to survive the host's argument splitting.

Related MCP server: MentionsAPI MCP Server

Authentication

Two ways in. Both carry the same three permissions, and neither can ever do more than your own role in an organization allows:

Scope

Allows

read

Every read tool. Always granted.

write

Creating, changing and deleting projects, competitors, clusters and tracked queries; running checks; starting discovery jobs.

organization:manage

Creating, renaming, archiving and restoring organizations; invitations; members' roles and suspension.

OAuth 2.1 — the one-click path. Supported by Claude, ChatGPT, Claude Code and any client that implements the MCP authorization spec. Nothing to copy or paste; revoke it from the app. The consent screen pre-selects the scopes the client asked for (all three when it asked for none), and you can untick any but read. The server advertises PKCE (S256), Client ID Metadata Documents, Dynamic Client Registration and RFC 9728 resource metadata, so clients discover everything they need from https://api.mencoro.com/.well-known/oauth-protected-resource/mcp. Calling a tool the connection lacks the scope for answers 403 insufficient_scope naming the scopes to request, so a client that supports step-up authorization asks you to reconnect with the extra permission.

Personal access token — for CLI clients, config files, and this bridge. Create one at tool.mencoro.com/me/mcp-server; it is shown once, starts with mcp_pat_, carries the permissions you tick (all three by default), and can be pinned to a single organization and given an expiry. Send it as Authorization: Bearer mcp_pat_…. A call the token lacks the permission for fails with a tool error naming it; a token cannot be upgraded, so create a new one to add a permission.

Connections and tokens created before write access existed have read and write but not organization:manage.

ChatGPT cannot send a custom Authorization header to a remote connector — use OAuth there.

Client configuration

{
  "mcpServers": {
    "mencoro": {
      "url": "https://api.mencoro.com/mcp",
      "headers": { "Authorization": "Bearer mcp_pat_your_token" }
    }
  }
}
{
  "servers": {
    "mencoro": {
      "type": "http",
      "url": "https://api.mencoro.com/mcp",
      "headers": { "Authorization": "Bearer mcp_pat_your_token" }
    }
  }
}
[mcp_servers.mencoro]
url = "https://api.mencoro.com/mcp"
http_headers = { "Authorization" = "Bearer mcp_pat_your_token" }
{
  "mcpServers": {
    "mencoro": {
      "httpUrl": "https://api.mencoro.com/mcp",
      "headers": { "Authorization": "Bearer mcp_pat_your_token" }
    }
  }
}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mencoro": {
      "type": "remote",
      "url": "https://api.mencoro.com/mcp",
      "enabled": true,
      "headers": { "Authorization": "Bearer mcp_pat_your_token" },
      "oauth": false
    }
  }
}

oauth: false stops OpenCode negotiating OAuth against an endpoint that also advertises it, which would otherwise override the token you just configured.

{
  "mcpServers": {
    "mencoro": {
      "serverUrl": "https://api.mencoro.com/mcp",
      "headers": { "Authorization": "Bearer mcp_pat_your_token" }
    }
  }
}
{
  "mcpServers": {
    "mencoro": {
      "type": "http",
      "url": "https://api.mencoro.com/mcp",
      "headers": { "Authorization": "Bearer ${MENCORO_API_KEY}" }
    }
  }
}

Tools

31 tools read and 29 change something. Every tool declares all four MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) explicitly, so a client can decide what to ask you before calling it.

Reading

Every read tool needs only the read scope.

Tool

What it answers

list_projects

The organizations and active projects you can see. Call this first — every other tool needs the ids it returns.

get_project

One project's status, website domains, brand names and competitors with their ids.

list_clusters

A project's keyword clusters, by name, with their ids.

get_available_filters

Which engines, countries, keyword clusters and competitors a project actually has.

get_metric_glossary

Maps everyday wording ("visibility", "tone", "ranking") onto the right metric and tool.

get_organization_overview

Current-state board across every active project in an organization, ranked by Share of Voice.

get_organization

An organization's profile, status, your role in it, and its member, project and invitation counts.

list_members

An organization's members with their role and state, optionally with pending invitations. Owners only.

get_usage

The subscription, tracked-query count and projected monthly checks, against the plan's limits.

get_project_rank_tracking_stats

The project summary: positions, trends, Share of Voice per competitor, sentiment split, mention/SERP/shopping rates.

get_rank_tracking_time_series

Those metrics over time, bucketed daily, weekly or monthly, optionally per competitor.

get_tracked_query_time_series

The same history for one tracked query.

get_query_movers

The tracked queries that gained or lost the most versus the previous period.

get_cluster_breakdown

The same metrics broken down per keyword cluster.

search_tracked_queries

Search and paginate a project's tracked queries with their latest positions.

get_tracked_query

One tracked query's settings: text, engine, country, status, frequency, passes, clusters and last check.

list_keyword_listings

One row per query text across its engine and country variants, with every metric, sortable.

get_tracking_coverage

What is stale: paused, never-checked and overdue tracked queries.

get_sentiment_breakdown

Positive / neutral / negative split of your AI mentions, per engine and per competitor.

get_mention_mix

Mention counts by type, tone and qualifier — the inputs behind the Share of Voice weighting.

get_mention_samples

The raw AI mention texts, paginated and filterable, for qualitative review.

get_share_of_voice_formula

The weights and multipliers the Share of Voice score is built from.

get_competitor_cooccurrence

Head-to-head: when you and a competitor appear in the same answer, who is named higher.

get_cited_sources

The domains and pages the answer engines cited, with counts and average citation rank.

list_ai_responses

The captured AI answers themselves: full text, engine, capture time and cited sources.

list_search_snapshots

The captured Google Search and Shopping result pages.

get_tracked_query_matches

Every mention or ranking behind one tracked query's metrics.

get_job

Progress and result of a background job started by a discovery or clustering tool.

preview_operation

What a confirmable change would affect and cost, plus the one-time token to run it.

list_untracked_competitors

Brands the AI answers name that you do not track yet, most-seen first: the competitors worth adding.

get_mencoro_guide

The public Mencoro guide: how checks, mentions and every metric work, plans, reliability, this server, analysis advice, pairing with Ahrefs, Semrush, Search Console or Google Analytics servers. No credential needed.

Changing things

A tool marked C needs a confirmation: call preview_operation with the tool's name and arguments, show the plan to the user, and call the tool with the returned confirmationToken only after they agree. The token is single-use, expires after a few minutes, and is refused if anything the plan described has changed. Creating tools, job starters and confirmable tools also accept a requestId: a retry with the same one returns the first result instead of doing the work twice.

Tool

Scope

What it does

create_project

write

Create a project from brand names and domains.

update_project

write

Rename a project, or replace its website domains and brand names.

archive_project

write

C

Archive a project; its tracked queries stop being checked.

restore_project

write

Bring an archived project back.

create_competitor

write

Add a competitor to a project.

update_competitor

write

Replace a competitor's name, website domains and brand names.

delete_competitor

write

C

Remove a competitor with every mention and search or shopping result recorded for it.

create_tracked_queries

write

C

Add tracked queries in bulk across engines and countries; the preview shows the checks they will spend.

update_tracked_queries

write

Pause, resume, or change the frequency or passes of up to 100 tracked queries.

delete_tracked_queries

write

C

Delete up to 100 tracked queries with their captured answers, matches and history.

run_checks

write

C

Check tracked queries now, spending budget.

report_ai_response

write

Flag a captured AI answer that was analysed wrong.

create_clusters

write

Create keyword clusters.

rename_cluster

write

Rename a cluster.

delete_cluster

write

C

Delete a cluster; its tracked queries stay.

set_tracked_query_clusters

write

Add tracked queries to clusters, or remove them.

start_auto_clustering

write

Start a job that proposes a clustering.

apply_auto_clustering

write

Apply a proposal the user approved.

suggest_brand_names

write

Start a job that suggests brand names for a website.

discover_brands

write

Start a job that finds other names a project's brand and its competitors go by.

discover_keywords

write

Start a job that proposes search keywords worth tracking.

discover_prompts

write

Start a job that proposes AI prompts worth tracking.

create_organization

organization:manage

C

Create an organization.

update_organization

organization:manage

C

Change an organization's name, description or contact email.

archive_organization

organization:manage

C

Archive an organization.

restore_organization

organization:manage

C

Restore an archived organization.

invite_member

organization:manage

C

Invite someone by email with a role.

cancel_invitation

organization:manage

C

Cancel a pending invitation.

update_member

organization:manage

C

Change a member's role, or suspend or reactivate them.

A change is refused exactly where the Mencoro app refuses it: your role in the organization, an archived project, or a missing subscription where the app requires one.

Dates are ISO YYYY-MM-DD and must fall inside the retention window. Positions are 1-based and lower is better; every other metric improves as it rises.

The live definitions — names, descriptions, input and output schemas, annotations — are readable without a credential at https://api.mencoro.com/public/v1/mcp, a discovery-only mount of the same server that answers initialize, ping, tools/list, prompts/list and the public guide (get_mencoro_guide), and refuses everything else. Calling any other tool requires signing in at https://api.mencoro.com/mcp.

Prompts

Twenty ready-made starting points, surfaced by clients that support MCP prompts. Twelve ask about your data:

brand_ai_overview · whats_changed · organization_overview · top_queries · biggest_movers · query_history · competitor_standing · head_to_head · negative_mentions · cited_sources · coverage_health · sov_explainer

Four script a change step by step, stopping for your approval where it matters:

Prompt

Workflow

set_up_project

Start monitoring a brand from its website in a short conversation: one proposal with brand names and suggested competitors before anything is created, then the first prompts to track, then the other brands the answers name.

expand_query_set

Find new prompts or keywords worth tracking and add the ones you pick.

reorganise_clusters

Let Mencoro propose a clustering, review it, and apply it.

tune_tracking_costs

Review what each tracked query costs in checks and change frequency, passes or status to fit the plan.

Four turn the data into decisions:

Prompt

Analysis

visibility_report

A structured report for a period against the previous one, ending with recommended actions.

results_review

Whether a change (content, PR, a launch) moved visibility, before and after against a baseline.

optimization_opportunities

A prioritised list of what to improve: where competitors win, sources to be present on, sentiment and coverage gaps.

cross_source_analysis

Mencoro together with the Ahrefs, Semrush, Search Console or Google Analytics servers your assistant has connected. Mencoro has no integration with them; the assistant calls each with your own account.

ChatGPT submission and skills

chatgpt-app-submission.json contains the app submission metadata, tool annotation justifications, and review test cases. Keep its tool descriptions and justifications aligned with the hosted server when capabilities change.

Ten optional skills turn the tools into reusable workflows. ChatGPT does not surface MCP prompts, so these are how its users get the same guided flows.

Six analyse, and change nothing:

  • Visibility report: performance summaries, trends, and query gains or losses.

  • Competitor analysis: share of voice and head-to-head comparisons.

  • Sentiment review: sentiment breakdowns with attributed mention excerpts.

  • Coverage audit: current monitoring coverage and stale queries.

  • Results review: whether a change moved AI visibility, before and after against a baseline.

  • Optimization insights: a prioritised list of what to improve, optionally with connected Ahrefs, Semrush, Search Console or Google Analytics tools.

Four make changes, each only after the user approves it, and need the write scope:

  • Project setup: a monitored project from a website in a short conversation, with brand names and suggested competitors proposed before anything is created.

  • Query expansion: new prompts or keywords worth tracking, added as the user picks them.

  • Cluster reorganisation: a proposed clustering, reviewed and applied.

  • Cost tuning: frequency, pass and pause changes that bring check spend within the plan.

In the submission portal's Skills step, upload each skill folder under skills/, or a ZIP containing that folder. Include both SKILL.md and agents/openai.yaml; the latter declares the existing Mencoro MCP connection. Users need to connect their Mencoro account through OAuth. These skills require no additional backend endpoint or local executable.

The portal stores an uploaded snapshot. Upload revised bundles when instructions change, and test each workflow with a connected account before submitting the app. See the OpenAI skills guide.

The bridge

Run it

export MENCORO_API_KEY=mcp_pat_your_token
npx -y @mencoro/mcp            # serve on stdio
npx -y @mencoro/mcp doctor     # check the endpoint, the token, and list the tools

Docker

docker run --rm -i -e MENCORO_API_KEY=mcp_pat_your_token ghcr.io/mencoro/mencoro-mcp

-i is required and -t must be omitted: the MCP transport is this process's stdin and stdout.

Options

MENCORO_API_KEY

Personal access token. Without it the bridge still starts and still advertises the full catalogue; get_mencoro_guide answers from the public guide, and every other tool answers with setup instructions instead of data.

MENCORO_MCP_URL

Upstream endpoint. Defaults to https://api.mencoro.com/mcp.

--url <url>

Same, as an argument.

--header "Name: value"

Extra HTTP header, repeatable. An Authorization header here overrides MENCORO_API_KEY.

doctor

Connect once, print the server version, negotiated protocol, tool and prompt catalogue, then exit.

--help, --version

What it actually does

It splices your client's stdio transport onto a Streamable HTTP transport and forwards every JSON-RPC frame verbatim, in both directions. The only frame it looks inside is the handshake — enough to echo the negotiated protocol version back upstream and to rebuild the session if the server evicts it, which a deploy or a scale-down will do. It knows no other method, so it cannot drift from the server: tools, prompts, resources, completions, progress notifications and anything added later all pass straight through.

Without a credential

The bridge starts anyway, serving catalog.json — a committed copy of what the hosted server advertises — plus a mencoro_setup tool. So npx -y @mencoro/mcp introspects to the same tools and prompts a credentialed run does, and anything that scans the package sees a real catalogue rather than a server that looks empty. Calling one of those tools returns the setup instructions as an error; it never returns invented data. The exception is get_mencoro_guide, which reads only published material: the bridge forwards it to the hosted server's anonymous endpoint and returns the real answer.

npm run sync:catalog refreshes the file from the anonymous catalogue endpoint, and npm run check:catalog fails if the committed copy has fallen behind. A scheduled workflow runs the check weekly, because the catalogue it mirrors lives in another repository and nothing in a pull request here would notice it drifting.

Limits

Access

read always; write and organization:manage only when granted, and never beyond your own role. Confirmable changes run only with a token from preview_operation.

Batches

Tools that act on tracked queries or clusters by id take at most 100 per call (500 for start_auto_clustering); each tool's input schema states its limits.

Retention

Up to 16 months of history; dates outside the window are rejected.

Transport

Streamable HTTP.

Rate limiting

Repeatedly presenting an invalid credential is rate limited per IP.

Result size

Large result sets are paginated; ask for a narrower window or a coarser granularity if a client truncates.

Repository contents

src/, test/

The stdio bridge published as @mencoro/mcp.

catalog.json

What the hosted server advertises, served by the bridge when it has no credential.

scripts/

Manifest and catalogue checks run by CI.

server.json

The MCP registry manifest.

glama.json

Glama directory ownership metadata.

chatgpt-app-submission.json

ChatGPT app submission metadata and tool justifications.

skills/

Ten reusable Mencoro workflows for ChatGPT: six analyses and four guided changes.

Dockerfile

The image published to ghcr.io/mencoro/mencoro-mcp.

assets/, logo.png

Brand assets used by directory listings.

Development

npm ci
npm run typecheck
npm test            # builds first, then runs the suite
npm run check:manifests
npm run check:catalog   # asks the hosted server whether catalog.json is still current

Tests run the TypeScript sources directly through Node's type stripping, so development needs Node 22.18 or newer. The published package targets Node 20.19+, which CI verifies separately against the built artifact.

Releases are cut by tagging. npm version <patch|minor|major>, mirror the new version into server.json (.version, the npm package entry, and the image tag), run npm run check:manifests, then push the tag — CI publishes to npm, GHCR and the MCP registry, in that order, then creates the GitHub release, which is what Glama builds a new version from.

Support

Licence

MIT. See LICENSE.

The Mencoro name, logo and brand assets in assets/ are trademarks of Mencoro and are not covered by that licence.

Available Tools

61 tools
apply_auto_clusteringApply a proposed clusteringAInspect

Apply the grouping a completed start_auto_clustering job proposed: creates the clusters it named and moves the tracked queries into them, as the job's mode said. Cluster names are lower-cased like create_clusters, and a proposed name that matches an existing cluster reuses it instead of creating a second one. Show the proposal (get_job) to the user first. Pass a fresh requestId and reuse it if you retry, so a retry never applies twice.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYes
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the concrete side effects (clusters created, queries reassigned), the name lower-casing rule, and the collision behavior (an existing matching name is reused rather than duplicated). It also explains the retry safety mechanism via requestId, which is meaningful context given idempotentHint=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?

Four sentences, effectively front-loaded, with the primary effect stated first and safety/naming caveats after. Slightly dense but every clause carries distinct information; nothing is redundant with the annotations or schema.

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

Completeness4/5

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

For a non-idempotent mutation with no output schema, the description covers the lifecycle (propose via start_auto_clustering, preview via get_job, then apply), side effects, and retry semantics. It does not state whether the operation is reversible or what the call returns, which are the remaining minor gaps.

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

Parameters4/5

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

Schema coverage is only 25%, so the description must compensate, and it does for the most ambiguous parameter: requestId is explained as a fresh idempotency key to reuse only on retry. jobId is contextualized through the 'completed start_auto_clustering job' flow, though organizationId and projectId are left to the schema.

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

Purpose5/5

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

States a precise verb and resource ('Apply the grouping a completed start_auto_clustering job proposed') and immediately enumerates the effects: creates named clusters and moves tracked queries. It is clearly distinguishable from start_auto_clustering (which proposes) and create_clusters (which it references for naming behavior).

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?

Gives the precondition (a completed start_auto_clustering job), a workflow instruction ('Show the proposal (get_job) to the user first'), and explicitly routes naming behavior to create_clusters. The alternative tools in the same flow are named, so an agent knows when to reach for this versus them.

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

archive_organizationArchive an organizationA
Destructive
Inspect

Archive an organization: its projects are archived and stop being checked, its pending invitations are cancelled, and its subscription is cancelled at the end of the billing period. Requires a confirmationToken: call preview_operation with tool "archive_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes
confirmationTokenYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and non-idempotent, but the description goes well beyond them: it details exactly what is destroyed or affected, that subscription cancellation is deferred to the end of the billing period, the required permissions ('organization:manage' and the owner role), and the mandatory confirmation-token flow. This is rich behavioral context that the annotations alone do not provide.

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

Conciseness4/5

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

Three dense but purposeful sentences, front-loaded with the operation's effects before stating the confirmation and permission requirements. Each sentence earns its place, though the middle confirmation-flow sentence is long and could be marginally tightened.

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, non-idempotent mutation with no output schema, the description supplies the effect list, auth requirements, and confirmation workflow an agent needs to invoke it safely. The only residual gap is not clarifying organizationId semantics, which is minor given the parameter is self-evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 33% – only requestId is documented in the schema. The description compensates well for confirmationToken by explaining how to obtain it (via preview_operation) and its gating role, but it says nothing about organizationId beyond the obvious. The description adds partial meaning over the schema but does not fully close the coverage gap.

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

Purpose5/5

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

States a specific verb and resource ('Archive an organization') and then enumerates the concrete downstream effects (projects archived and stop being checked, invitations cancelled, subscription cancelled at period end). This clearly distinguishes it from sibling tools like archive_project, restore_organization, and update_organization.

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 prescribes the required workflow: call preview_operation first with these arguments, show the returned plan to the user, and only call this tool after explicit user agreement. It names the alternative/prerequisite tool and states the conditions for invocation, leaving nothing to inference.

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

archive_projectArchive a projectA
Destructive
Inspect

Archive a project: every one of its tracked queries stops being checked and it disappears from the project list; restore_project brings it back. Requires a confirmationToken: call preview_operation with tool "archive_project" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
requestIdNo
organizationIdYes
confirmationTokenYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false. The description adds the crucial behavioral context the annotations cannot: what actually gets destroyed (query checking stops), the visibility consequence (removed from project list), and reversibility via restore_project. The confirmationToken requirement is a non-obvious gate for a destructive op.

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

Conciseness5/5

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

Front-loads purpose and consequences, then the required workflow. Two dense sentences with no filler; every clause conveys actionable 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 destructive, non-idempotent tool with no output schema and no annotation detail on effects, the description covers the full picture: what happens, the escape hatch (restore_project), and the mandatory confirmation flow. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry parameter meaning. It explains confirmationToken thoroughly, including how to obtain it, but projectId, organizationId, and requestId get no explanation beyond their self-evident names. Partial compensation warrants a moderate score.

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

Purpose5/5

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

States a specific verb and resource ('Archive a project') and enumerates concrete effects: tracked queries stop being checked and the project leaves the project list. It also names the sibling restore_project, so an agent can distinguish it from the inverse operation without opening either schema.

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

Usage Guidelines5/5

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

Provides an explicit precondition workflow: call preview_operation with tool 'archive_project' and these args, show the plan to the user, and only proceed after explicit agreement. This leaves nothing to inference about when and how to invoke it.

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

cancel_invitationCancel an invitationA
Destructive
Inspect

Cancel a pending invitation; its link stops working. Find ids with list_members and includeInvitations. Requires a confirmationToken: call preview_operation with tool "cancel_invitation" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
invitationIdYes
organizationIdYes
confirmationTokenYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds the concrete consequence (invite link stops working), the mandatory confirmationToken gate via preview_operation, and the auth requirements — context the annotations cannot express.

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

Conciseness5/5

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

Four tight sentences, each carrying operational weight: effect, id discovery, confirmation procedure, and permissions. The destructive consequence is front-loaded rather than buried.

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 destructive, non-idempotent mutation with no output schema, the description covers effect, prerequisites, the required confirmation handshake, and authorization — everything an agent needs to invoke it correctly and safely.

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 only 25%, so the description must compensate: it explains that confirmationToken comes from preview_operation's returned plan and that invitationId is obtained from list_members/includeInvitations. requestId's idempotency semantics are covered by the schema; organizationId remains unexplained but is self-evident.

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 ('Cancel a pending invitation') and immediately gives the observable effect ('its link stops working'), which distinguishes it from siblings like archive_organization or delete_cluster that also remove things but in different ways.

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 routes the agent: find ids via list_members with includeInvitations, and mandates the preview_operation confirmation flow before calling. It also states the required permission (organization:manage) and role (owner), naming both the precondition and the tool sequence.

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

create_clustersCreate query clustersAInspect

Create up to 100 query clusters in a project, the groups tracked queries are organized in. Names are stored lower-cased and must be unique in the project; each name that cannot be created is reported in "failed" without stopping the rest. Assign tracked queries with set_tracked_query_clusters, or let start_auto_clustering propose groups. Pass a fresh requestId and reuse it if you retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYes
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by disclosing non-obvious write semantics: names are stored lower-cased, must be unique per project, and any name that fails is reported in 'failed' without aborting the remaining creations. It also explains the idempotency-key retry contract, which annotations alone cannot convey.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the core action and scope, followed by behavioral constraints and routing/retry guidance. No filler, though the sentence on name storage and failure handling packs several distinct facts together.

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

Completeness4/5

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

With no output schema, the description usefully explains the partial-failure return shape ('failed') and the requestId retry contract for this mutation. It omits permission/auth prerequisites and what a successful response contains, but otherwise covers what an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is only 25% (only requestId is documented in-schema, and the description echoes the retry guidance rather than adding syntax). The description does add real meaning for 'names' (normalization, uniqueness, partial-failure behavior) and confirms the 100-item cap, but organizationId and projectId remain undocumented in both places.

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

Purpose5/5

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

States a specific verb and resource ('Create up to 100 query clusters in a project') plus a definition of what a cluster is, and the scope constraints (max 100, unique lower-cased names). It is clearly distinguishable from siblings like start_auto_clustering and set_tracked_query_clusters, which are 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 Guidelines4/5

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

Names the two adjacent alternatives and their purposes ('Assign tracked queries with set_tracked_query_clusters, or let start_auto_clustering propose groups'), plus the retry protocol with requestId. It gives clear context for choosing this tool, though it doesn't state explicit exclusions (e.g., when not to create clusters manually).

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

create_competitorAdd a competitorAInspect

Add a competitor to a project, with its website domains and the names it is mentioned by; from then on its mentions and rankings are tracked beside the brand's. discover_brands can propose competitors. Pass a fresh requestId and reuse it if you retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
brandNamesYes
organizationIdYes
websiteDomainsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare it as a non-read-only, non-destructive, non-open-world write. The description goes beyond that by disclosing the persistent side effect ('from then on its mentions and rankings are tracked') and the retry/idempotency handling via requestId. It does not mention permission requirements, 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.

Conciseness4/5

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

Two tight sentences with the core purpose front-loaded, followed by the discovery alternative and the idempotency note. No filler; each clause carries information. Slightly dense but well ordered.

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

Completeness4/5

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

For a 6-parameter create tool with no output schema, the description covers purpose, persistent effect, a related sibling, and retry semantics. Gaps remain around permissions and duplicate-handling, but nothing essential to correct invocation is missing.

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

Parameters3/5

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

Schema coverage is only 17% (only requestId is documented inline), so the description must compensate. It adds meaning for websiteDomains ('its website domains'), brandNames ('the names it is mentioned by'), and requestId usage, but leaves organizationId, projectId, and name to the schema alone. Partial compensation for a low-coverage 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+resource (add a competitor), the target scope (to a project), the inputs it carries (website domains, mention names), and the downstream effect (mentions and rankings tracked beside the brand's). This distinguishes it cleanly from discover_brands, update_competitor, and delete_competitor without opening any schema.

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

Usage Guidelines4/5

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

Explicitly names the alternative 'discover_brands can propose competitors', telling the agent where competitor candidates come from versus creating one directly. There is no explicit 'when not to use' or prerequisite statement, but the create-vs-discover distinction is clearly drawn.

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

create_organizationCreate an organizationAInspect

Create a new organization, owned by the caller. Only with a Mencoro connection that is not limited to one organization. Requires a confirmationToken: call preview_operation with tool "create_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
confirmationTokenYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, destructive=false, openWorld=false, idempotent=false); the description goes well beyond them by disclosing the required permission (organization:manage), the owner role, the tenant-scope restriction, and the mandatory two-step confirmation workflow. Contradiction check: the false idempotentHint is consistent with the schema's opt-in requestId idempotency key, not a conflict.

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

Conciseness5/5

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

Three sentences with no filler, ordered purpose/scope → gating workflow → authorization, so the most decision-relevant information is front-loaded.

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

Completeness4/5

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

Because there is no output schema, the description could say what is returned (e.g., the new organization id) and could state that 'name' has no stated uniqueness/reserved-word constraints. Otherwise it covers permissions, scope, and the confirmation contract adequately for a 3-parameter creation tool.

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

Parameters4/5

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

Schema coverage is only 33% (only requestId is documented), so the description has to carry weight — and it fully explains how confirmationToken is produced (via preview_operation) and why it is required. It leaves 'name' with no semantic guidance beyond the schema's maxLength, which is a residual gap.

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

Purpose5/5

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

States a specific verb and resource ('Create a new organization') and adds ownership scope ('owned by the caller'), which cleanly separates it from the other create_* siblings (create_project, create_competitor, create_clusters) and from update_/archive_organization.

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?

Gives explicit preconditions and the exact routing rule: only with a connection not limited to one organization, and it must be preceded by preview_operation with tool "create_organization" plus the same arguments, with user agreement obtained first. An agent knows precisely when this tool is callable and what to call before it.

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

create_projectCreate a projectAInspect

Create a project that monitors a brand: its website domains, the brand names to look for, and optionally its competitors. Tracked queries are added afterwards with create_tracked_queries. Before calling it, propose everything to the user at once: brand names from suggest_brand_names, and competitors you suggest with their websites (no tool finds competitors; suggest_brand_names finds the names each one goes by). After the first checks, list_untracked_competitors shows other brands the answers name. Pass a fresh requestId and reuse it if you retry, so a retry never creates a second project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
brandNamesYesThe names the brand is mentioned by, e.g. ["Acme", "Acme Corp"]
competitorsNo
organizationIdYes
websiteDomainsYesThe brand's own domains, e.g. ["acme.com"]

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare write/non-destructive/non-idempotent behavior, and the description adds genuinely non-obvious context beyond them: the requestId idempotency-key contract ('reuse it if you retry, so a retry never creates a second project') and the fact that competitor discovery has no dedicated tool. It does not cover permissions/organization scoping or what the call returns, so it falls 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 core action in the first sentence, then workflow and idempotency guidance. It is a dense paragraph rather than a list, but each sentence carries distinct operational value (ordering, sibling names, retry semantics) with little redundancy.

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

Completeness4/5

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

With no output schema, the description does not need to explain return values, and it covers the creation scope, required inputs at a high level, and the surrounding workflow. What is missing is what the caller gets back (e.g., a project id needed for the follow-up create_tracked_queries call), which an agent orchestrating the sequence would benefit from.

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 only 50%, but the description meaningfully compensates for the undocumented competitors parameter by explaining it needs both suggested names and websites, and clarifies that brandNames are the aliases a brand 'goes by'. The undocumented name and organizationId params remain unexplained, keeping this below a 5.

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 a project that monitors a brand') and scopes exactly what the project contains: website domains, brand names, optional competitors. It also explicitly separates this from the sibling create_tracked_queries ('Tracked queries are added afterwards'), so an agent can route correctly without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit sequencing and alternatives: propose everything to the user at once, pull brand names from suggest_brand_names, add tracked queries afterwards via create_tracked_queries, and use list_untracked_competitors after the first checks. It even notes the gap that no tool finds competitors, which prevents the agent from searching for a nonexistent sibling.

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

create_tracked_queriesCreate tracked queriesAInspect

Start tracking queries: every combination of queryTexts x engines x countries (at most 100) becomes a tracked query, checked now and then on checkFrequency with nPasses passes, each check spending budget. Combinations the project already tracks, repeated ones and Google AI Mode in unsupported countries are skipped and reported. Requires a confirmationToken: call preview_operation with tool "create_tracked_queries" and these arguments first, show the returned plan (what is created, what it costs) to the user, and call this tool only after the user explicitly agrees. Pass a fresh requestId and reuse it if you retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoOptional two-letter language the engines should answer in
enginesYes
nPassesYesAnswers captured per check; more than 1 only for AI engines. Each pass costs one check.
countriesYesISO 3166-1 alpha-2 codes, e.g. ["US", "ES"]
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
queryTextsYes
checkFrequencyYes
organizationIdYes
queryClusterIdsNo
confirmationTokenYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses that each check spends budget, that skips are reported, and that a confirmationToken gate exists with a defined acquisition path. It also explains the requestId idempotency contract (fresh, reused only on retry), adding real operational context well beyond openWorldHint/idempotentHint=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?

The paragraph is front-loaded with the core creation semantics before constraints and the confirmation workflow. It is dense and every clause carries information, though the single-block format could benefit from clearer separation of the multi-step workflow.

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 high-complexity mutation with 11 params, no output schema, and low schema coverage, the description is thorough: it covers creation semantics, budget cost, skip behavior, and the confirmation gate. It does not spell out the return payload (what 'reported' contains), a minor gap given no output schema.

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

Parameters4/5

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

Schema coverage is only 36%, so the description must compensate, and it does for the key semantic parameters: queryTexts/engines/countries combination logic, checkFrequency scheduling, nPasses pass-count, and confirmationToken. It leaves queryClusterIds and the id parameters undocumented, so coverage is strong but not complete.

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 ('Start tracking queries') and precisely defines the combinatorial semantics: 'every combination of queryTexts x engines x countries (at most 100) becomes a tracked query.' This clearly distinguishes it from siblings like update_tracked_queries, delete_tracked_queries, and create_clusters.

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

Usage Guidelines5/5

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

It gives an explicit prerequisite workflow: call preview_operation first, show the plan to the user, and call this tool only after explicit agreement. It also names the exact alternative (preview_operation) with the argument needed and explains skip conditions (already-tracked combos, repeats, unsupported Google AI Mode countries).

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

delete_clusterDelete a query clusterA
Destructive
Inspect

Delete a query cluster. Its tracked queries are not deleted; they only leave the cluster. Irreversible. Requires a confirmationToken: call preview_operation with tool "delete_cluster" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees.

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterIdYes
projectIdYes
requestIdNo
organizationIdYes
confirmationTokenYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, but the description adds value beyond them: the exact side effect on tracked queries (they leave the cluster but are not deleted), the irreversibility of the action, and the mandatory confirmation-token workflow with a user-agreement gate. That is meaningful behavioral context an annotation cannot express.

Agents need to know what a tool does to the world before 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, front-loaded with the action and its blast radius, then the irreversibility warning, then the prerequisite procedure. No filler, and the ordering matches the order in which an agent needs the 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 destructive, non-idempotent mutation with no output schema, the description covers the safety-critical elements: irreversibility, side effects, and the required confirmation flow. The only gap is that the optional requestId parameter is never mentioned, which is minor but leaves one field undocumented everywhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 all five parameters rest on their names alone. The description compensates for the most hazardous one by explaining what confirmationToken is and how to obtain it, but organizationId, projectId, clusterId, and especially the optional requestId are left entirely unexplained. Partial, but not full, compensation for the coverage gap.

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

Purpose5/5

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

The first sentence states a specific verb and resource ('Delete a query cluster'), and the second immediately disambiguates the scope from the sibling delete_tracked_queries by clarifying that tracked queries survive. An agent can distinguish it from archive_project, delete_competitor, and delete_tracked_queries without opening any 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?

It gives an explicit when-and-how: call preview_operation with tool "delete_cluster" and these arguments, show the returned plan to the user, and only then call this tool after explicit user agreement. The alternative path (preview_operation) and the gating condition are both named, leaving nothing to inference.

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

delete_competitorDelete a competitorA
Destructive
Inspect

Remove a competitor from a project, together with every mention, search result and shopping result recorded for it. Irreversible. Requires a confirmationToken: call preview_operation with tool "delete_competitor" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
requestIdNo
competitorIdYes
organizationIdYes
confirmationTokenYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description goes well beyond them: it enumerates the cascading deletions (mentions, search results, shopping results) and states 'Irreversible.' It also discloses the confirmationToken authorization gate, which the annotations do not convey.

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

Conciseness5/5

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

Three sentences, each earning its place: action+scope first, destructive/irreversible warning second, required workflow third. Front-loaded and free of 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 destructive tool with no output schema this covers the essentials: cascade scope, irreversibility, and the token gate. The only notable omission is any explanation of requestId — with idempotentHint=false, an agent cannot tell whether retrying with the same requestId is safe or a no-op.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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% across 5 parameters, so the schema itself contributes no semantics. The description explains confirmationToken's origin and purpose well, but organizationId, projectId, competitorId and requestId are left entirely unexplained — requestId in particular is not tied to the idempotentHint=false annotation.

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 precise verb+resource ('Remove a competitor from a project') and immediately scopes the blast radius ('together with every mention, search result and shopping result'). This distinguishes it cleanly from update_competitor and from the other delete_* siblings without needing to name them.

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?

Gives an explicit, ordered prerequisite workflow: call preview_operation with tool "delete_competitor", show the returned plan to the user, and only call this tool after explicit user agreement. This is exactly the when/how guidance an agent needs and it is stated as a hard requirement, not a suggestion.

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

delete_tracked_queriesDelete tracked queriesA
Destructive
Inspect

Delete up to 100 tracked queries, together with their captured answers, matches and metrics history. Irreversible; to stop spending budget without losing history, pause them with update_tracked_queries instead. Requires a confirmationToken: call preview_operation with tool "delete_tracked_queries" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
requestIdNo
organizationIdYes
trackedQueryIdsYes
confirmationTokenYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, but the description adds substance beyond them: exactly what is destroyed (answers, matches, metrics history), that the operation is irreversible, and that a confirmationToken gate exists. This is precisely the context an agent needs before a destructive call.

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

Conciseness5/5

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

Three tight sentences with zero waste, ordered by importance: what is deleted, the safer alternative, then the mandatory confirmation step. 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?

Given no output schema and no annotation detail beyond the hints, the description covers the critical path for a destructive tool: scope, irreversibility, alternative, and the confirmation gate. It stops short of explaining requestId or the scoping role of organizationId/projectId, which leaves a minor completeness gap for a 5-parameter tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It does well for two of five: it documents how to obtain confirmationToken (via preview_operation with tool "delete_tracked_queries") and implies the trackedQueryIds batch limit ("up to 100"). organizationId, projectId, and requestId remain unaddressed, leaving real gaps at this coverage level.

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

Purpose5/5

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

States a specific verb and resource ("Delete ... tracked queries") plus the blast radius ("together with their captured answers, matches and metrics history") and the batch cap of 100. This clearly distinguishes it from update_tracked_queries and the other delete_* siblings.

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

Usage Guidelines5/5

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

Explicitly names the alternative and the condition that should route an agent away from deletion: pause via update_tracked_queries if the goal is only to stop spending budget without losing history. It also spells out the mandatory confirmation workflow and the exact precondition (user must explicitly agree) before invocation.

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

discover_brandsDiscover more brand namesAInspect

Start a background job that finds other names the project's brand and each of its existing competitors go by in AI answers and search results (aliases, product and store names). It does not find new competitors. Poll get_job for the result, show it to the user, and add the chosen names with update_project (the brand) or update_competitor (a competitor, by competitorId), passing the full list including the names already there. shoppingEnabled also looks at Google Shopping; country narrows to one market (ISO 3166-1 alpha-2).

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNo
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes
shoppingEnabledNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only mark it non-read-only, open-world and non-idempotent; the description adds the async background-job model, the mandatory polling step, and the crucial replacement semantics ('passing the full list including the names already there'), which prevents an agent from dropping existing aliases. It also discloses what shoppingEnabled and country actually change about the search.

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 dense paragraph, front-loaded with what the job finds and immediately followed by the exclusion and the follow-up flow. Every clause earns its place, though the trailing shoppingEnabled/country sentence could be split for readability.

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 complex async job with no output schema and sparse parameter documentation, the description covers everything an agent needs: what is produced, how to retrieve it, how to present it, and how to persist it without clobbering existing data.

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 only 20%, so the description must carry the load and largely does: it explains shoppingEnabled (adds Google Shopping), country (narrows to one market, ISO 3166-1 alpha-2), and the competitorId used downstream. requestId's idempotency semantics come from the schema itself, and organizationId/projectId are self-evident, so the gap is minor.

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: 'Start a background job that finds other names the project's brand and each of its existing competitors go by in AI answers and search results (aliases, product and store names).' It also draws an explicit boundary — 'It does not find new competitors' — which separates it from siblings like create_competitor and discover_keywords.

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?

Gives an explicit end-to-end workflow: poll get_job for the result, show it to the user, then add chosen names with update_project (brand) or update_competitor (competitor, by competitorId). The 'does not find new competitors' exclusion plus the named follow-up tools leave nothing to inference.

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

discover_keywordsDiscover search keywordsAInspect

Start a background job that proposes search keywords for a project from a seed (a topic, a product, a URL). excludeQueries leaves out ones already tracked. Poll get_job for the result, review it with the user, then track the chosen ones with create_tracked_queries. Requires an active subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
countryNo
languageNo
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
excludeQueriesNo
organizationIdYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the non-destructive, non-idempotent, open-world profile, and the description adds value beyond them: it discloses the asynchronous background-job nature, the need to poll get_job, and the subscription precondition. It stops short of describing job lifetime, rate limits, or expected runtime.

Agents need to know what a tool does to the world before 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 tight sentences: the action first, then the exclusion parameter, then the end-to-end workflow. Every sentence carries distinct information with no padding.

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 async mutation tool with no output schema, the description correctly redirects to get_job for results and names the follow-up tool for committing results, which is the essential context. Minor gaps remain around the undocumented country/language parameters and job timing.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 very low (14%), so the description must compensate. It explains input (seed can be a topic, product, or URL) and excludeQueries semantics ('leaves out ones already tracked'), but says nothing about country, language, or how organizationId/projectId scope the job.

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 ('Start a background job that proposes search keywords for a project from a seed') and clarifies the seed forms (topic, product, URL). It is clearly separable from siblings discover_brands, discover_prompts, and create_tracked_queries.

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?

Lays out the full workflow: start the job, poll get_job for results, review with the user, then track with create_tracked_queries. It also names the preconditions (excludeQueries for already-tracked queries, active subscription requirement), leaving little to inference.

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

discover_promptsDiscover AI promptsAInspect

Start a background job that proposes the questions people ask AI assistants about a topic in one country - the prompts worth tracking on AI engines. excludeQueries leaves out ones already tracked. Poll get_job for the result, review it with the user, then track the chosen ones with create_tracked_queries. Requires an active subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
countryYes
languageNo
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
excludeQueriesNo
organizationIdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the bar is lower. The description adds meaningful context beyond annotations: this is asynchronous (a background job requiring polling via get_job) and gated on an active subscription. It does not explain the requestId idempotency contract, hence not 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?

One dense paragraph of three sentences with no filler; the async/polling instruction is front-loaded after the purpose. It is efficient, though packing purpose, param note, workflow and prerequisite into a single block is slightly heavy.

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

Completeness3/5

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

With no output schema, the description correctly explains the downstream handoff (get_job → create_tracked_queries) and the subscription gate, which covers the async lifecycle. However, for a 7-parameter tool at 14% schema coverage, it leaves most parameter semantics and the expected format of 'input'/results unexplained, so it is only minimally complete.

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

Parameters2/5

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

Schema coverage is only 14% (only requestId is documented in the schema), so the description carries the burden and largely fails: it explains only excludeQueries ('leaves out ones already tracked'). The meaning and format of input, country, language, organizationId and projectId are left entirely undocumented.

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

Purpose5/5

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

States a specific verb+resource with scope: 'Start a background job that proposes the questions people ask AI assistants about a topic in one country - the prompts worth tracking on AI engines.' An agent can distinguish this from discover_keywords and discover_brands from the description alone.

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?

Gives the full operational path: poll get_job for the result, review with the user, then call create_tracked_queries, plus the prerequisite 'Requires an active subscription.' It names the successor tools explicitly and leaves no inference about when to use it.

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

get_available_filtersGet available project filtersA
Read-onlyIdempotent
Inspect

Discover the engines, countries, keyword clusters and competitors configured on a project so subsequent metric tools can be called with valid filter values. Engines and countries are returned as {code, label} (e.g. {"code":"chatgpt","label":"ChatGPT"}, {"code":"US","label":"United States"}); clusters and competitors as {id, name}. Always pass the "code"/"id" (never the label/name) to the other tools' engines / countries / queryClusterIds / competitorId(s) parameters. Call this before filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
organizationIdYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare this as a safe, read-only, idempotent operation. The description adds important behavior beyond annotations: the exact return shapes for engines/countries ({code, label}) versus clusters/competitors ({id, name}), and the critical rule to pass 'code'/'id' — never the label/name — to other tools' 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?

Three sentences, front-loaded with the discovery purpose, followed by concrete return-shape examples and a direct usage instruction. Every sentence earns its place with no wasted wording.

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

Completeness4/5

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

For a discovery tool with no output schema, the description supplies the return structure and the key rule for consuming values, which is strong. Its main gap is that it does not document the two required identifiers, though the annotations already cover the safety profile.

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 required parameter (organizationId, projectId) is described in the schema. The description only indirectly implies a project context and does not mention organizationId at all, so it fails to compensate for the missing parameter documentation.

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

Purpose5/5

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

The description uses a specific verb ('Discover') and resource ('engines, countries, keyword clusters and competitors configured on a project'), clearly stating what the tool returns. It is distinguishable from all sibling tools, which are CRUD or metric tools rather than filter-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 Guidelines4/5

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

It gives clear context for when to use the tool: 'so subsequent metric tools can be called with valid filter values' and 'Call this before filtering.' However, it does not name alternatives or state when not to use it, so it stops short of full when/when-not guidance.

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

get_cited_sourcesCited domains and pagesA
Read-onlyIdempotent
Inspect

The domains (groupBy=domain) or pages (groupBy=page) most cited across a project's AI answers in a date window — the sources the answer engines drew on. Per source: how many times it was cited, how many distinct answers and tracked queries it appeared in, and its average rank within the citation lists. The list is UNFILTERED by ownership: it includes the brand's, competitors' and third-party sources. Only AI answer engines (chatgpt, perplexity, google_ai_overview, google_ai_mode) produce citations. Dates must fall within the data retention window. Answers questions like "which websites and pages does the AI cite or quote for me versus competitors".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
dateToYes
offsetNo
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode (only AI engines carry citations)
groupByNo"domain" to roll up by host, "page" to roll up by exact URLdomain
dateFromYes
projectIdYes
organizationIdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive. The description adds genuinely useful behavior: it is UNFILTERED by ownership, only four AI engines yield citations, and date ranges are bounded by a retention window. It does not describe pagination or result shape beyond the per-source fields.

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

Conciseness4/5

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

Front-loads the core purpose and the groupBy distinction, then layers scope caveats. The closing 'answers questions like...' sentence is somewhat redundant with the opening but is not wasteful enough to penalize heavily.

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

Completeness4/5

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

With no output schema, the description usefully enumerates returned metrics (citation count, distinct answers, tracked queries, average rank), which an agent needs. Combined with the retention and engine caveats, it is nearly complete for an 8-param read tool, though pagination behavior remains unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 25% across 8 params, so the description carries a real burden. It explains groupBy and what each source metric means, but groupBy/engines already have schema descriptions, and limit, offset, dateFrom, and dateTo go unexplained in both places. Partial compensation only.

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 (cited domains/pages) and distinguishes the two grouping modes (groupBy=domain vs page) in the first clause. It also clarifies the scope as sources of AI answers, setting it apart from sibling tools like get_mention_mix or get_share_of_voice_formula.

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

Usage Guidelines4/5

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

Gives clear context: the list is unfiltered by ownership (brand/competitors/third-party), only AI engines produce citations, and dates must fall within retention. However, it names no alternative tool for filtered or non-citation views, so the when-not path is left implicit.

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

get_cluster_breakdownRank tracking by keyword clusterA
Read-onlyIdempotent
Inspect

Rank-tracking metrics broken down per keyword cluster for a project over a date window: one row per cluster with its positions, share of voice and sentiment. Dates must fall within the data retention window. Answers questions like "which keyword clusters are strongest or weakest" or "how does my niche compare to my generic queries".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToYes
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
organizationIdYes
queryClusterIdsNorestrict to these keyword clusters
includeUngroupedQueriesNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior: the return shape (one row per cluster) and the retention-window constraint on dates. It stops short of noting pagination or error behavior, but adds clear value over the annotations.

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

Conciseness4/5

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

Front-loaded with the core purpose and return shape, followed by the constraint and example questions. It is slightly longer than necessary given the trailing example questions, but no sentence is wasted and structure is logical.

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

Completeness3/5

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

For a read-only analytics tool with annotations covering safety and no output schema, the description usefully conveys the return granularity and the date constraint. However, with 8 parameters at 38% coverage and no output schema, the engines/countries/ungrouped-query filters remain undocumented, leaving an agent without guidance on several optional inputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 38%, so the description must compensate. It clarifies the project scoping, date window, and cluster grouping (queryClusterIds), but leaves engines, countries, and includeUngroupedQueries unexplained in either place, so the compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('rank-tracking metrics broken down per keyword cluster') and even describes the output granularity ('one row per cluster with its positions, share of voice and sentiment'). The 'cluster' framing distinguishes it from the flat metrics siblings, but it never names or contrasts against get_sentiment_breakdown or get_rank_tracking_time_series, so 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 Guidelines4/5

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

Gives concrete context with example questions ('which keyword clusters are strongest or weakest') and states a precondition ('dates must fall within the data retention window'). However, it offers no explicit exclusions or named alternatives, so an agent must infer when to prefer it over the closely related breakdown/time-series siblings.

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

get_competitor_cooccurrenceCompetitor co-occurrence (head-to-head)A
Read-onlyIdempotent
Inspect

For the AI answers where the brand and a competitor are BOTH mentioned, compares who is named higher. One row per tracked competitor: how many answers they co-appear in, how often the brand out-ranks / loses to / ties them (by best mention position), the win rate, the average positions, and one representative shared query. Optionally focus a single competitor via competitorId. Tracked competitors only. Dates must fall within the data retention window. Answers questions like "who wins when we both appear", "do I outrank competitor X", "who is mentioned first".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToYes
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
competitorIdNooptional competitor UUID to focus on a single rival; competitor UUIDs are listed by get_available_filters (competitors[].id)
organizationIdYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: output structure (per-competitor rows with win rate and average positions), the 'tracked competitors only' restriction, and the data-retention window constraint on dates.

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 core comparison logic, then output shape, then optional filter and constraints, ending with example questions. Dense but every clause carries information; the final example-questions sentence is slightly redundant but still useful for routing.

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 7-parameter analytical tool with no output schema, the description is largely sufficient: it explains what the result rows contain, the competitorId focus, and key constraints. Minor gaps remain around the non-competitor filters and required identifiers, but nothing critical is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 43%, so the description must compensate but only partially does. It clarifies competitorId as the single-rival focus and adds a retention-window constraint on the date params, but says nothing about organizationId, projectId, or how engines/countries filter the comparison, leaving those to the schema.

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

Purpose4/5

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

States a specific analytical operation: comparing who is named higher in AI answers where brand and competitor both appear, with a clear output shape (one row per competitor, win/loss/tie counts, win rate, representative query). This is precise enough for an agent to distinguish it from a generic share-of-voice or mention tool, though it does not explicitly name a sibling alternative.

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

Usage Guidelines4/5

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

Provides clear usage context with example questions ("who wins when we both appear", "do I outrank competitor X", "who is mentioned first") and constraints (tracked competitors only, dates within retention window). It lacks explicit when-not guidance or named alternative tools, keeping it below the top tier.

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

get_jobGet a background jobA
Read-onlyIdempotent
Inspect

The status and, once completed, the result of a background job started by discover_brands, suggest_brand_names, discover_keywords, discover_prompts or start_auto_clustering. Poll it every few seconds until status is "completed" or "failed"; do not start the job again while it is pending or running.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYes
organizationIdYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavior: recommended polling cadence and the prohibition on restarting an in-flight job, plus the fact that the result only appears once completed.

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

Conciseness5/5

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

Two dense sentences: the first states what is returned, the second states how to use it. No filler, front-loaded with the return semantics.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns and does so (status, then result). Coverage of status values is partial (only 'completed'/'failed' named) and parameter identity is thin, but for a simple polling tool this is close to complete.

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

Parameters3/5

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

Schema coverage is 0% and neither jobId nor organizationId is described in the schema. The description implicitly explains where jobId originates (from the starter tools) but says nothing about organizationId or the expected ID format, leaving a real gap for a 2-required-param tool.

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

Purpose5/5

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

States a specific verb+resource (fetch a background job's status/result) and names exactly which sibling tools produce the jobs it reads. An agent can distinguish this from the discover_*/start_auto_clustering producers without opening any 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?

Explicit operational guidance: poll every few seconds until status is 'completed' or 'failed', and do not restart the job while pending/running. Both the when-to-call and the when-not-to-act condition are stated.

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

get_mencoro_guideMencoro guideA
Read-onlyIdempotent
Inspect

Answer questions about Mencoro itself from its public guide: what it tracks, how a check runs, what counts as a mention, how Coverage, Favorability, share of voice, positions and stability are calculated, how checks, plans and frequencies work, reliability and limits, how to use this MCP server (permissions, confirmations), how to analyse results and find what to improve, pairing with Ahrefs, Semrush, Search Console or Google Analytics MCP servers, and the REST API. Call it without a topic for the index, then with the topic that answers the question. No account data; works without signing in.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoThe topic to read; omit it, or pass "index", for the list of topics.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive and closed-world behavior. The description adds genuinely new context: no account data is touched and no sign-in is required, which tells the agent this is a safe public read with no auth prerequisites.

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 purpose, followed by a necessary topic inventory and the calling convention. The long topic list is dense but earns its place as a routing aid; there is little wasted prose.

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

Completeness5/5

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

For a single optional, well-documented parameter and no output schema, the description is complete: it says what the tool returns (guide content on the named topics), the calling convention, and the auth posture. Nothing an agent needs is missing.

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

Parameters3/5

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

Schema coverage is 100% and the schema already documents both the enum values and the omit/'index' convention. The description's topic enumeration largely restates the enum and repeats the index workflow, adding only light framing about what each topic contains.

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 (answer questions) and resource (the public Mencoro guide), and enumerates the exact subject matter covered. It is clearly distinguishable from the data-fetching siblings, which return account/project data rather than documentation.

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 prescribes the call pattern: omit the topic for the index, then call with the topic that answers the question. It also states the tool needs no account and works unauthenticated. It does not, however, acknowledge overlapping siblings such as get_metric_glossary or get_share_of_voice_formula, which also answer definitional questions.

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

get_mention_mixAI mention mix (type/tone/qualifier)A
Read-onlyIdempotent
Inspect

The project brand's own AI text-mention counts over a date window grouped by type, tone and qualifier; competitors (tracked or untracked) and unrelated brands are excluded. Counts are raw per-pass rows and leave out cited links, so they show mention composition, not the exact share-of-voice inputs (share of voice averages each check over its passes and also weights links). Use to understand mention composition. For the positive/neutral/negative sentiment split use get_sentiment_breakdown; to read the actual mention texts use get_mention_samples. Dates must fall within the data retention window. Answers questions like "am I recommended or just listed" or "break my mentions down by type".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToYes
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
organizationIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent read, so the bar is lower. The description still adds real behavioral context beyond structured fields: counts are raw per-pass rows, cited links are excluded, and results are not directly the share-of-voice inputs (which average passes and weight links). It does not describe return shape, but the caveats about counting semantics are genuinely useful.

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 core operation and exclusions, then escalation to alternatives. Mostly earns its sentences, though 'Use to understand mention composition' is slightly redundant with the opening clause and the share-of-voice digression is dense.

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

Completeness4/5

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

With no output schema and modest param coverage, the description does the heavy lifting: it defines exclusions, counting semantics, retention constraints, and routes to two sibling tools. An agent has enough to call it correctly, though the identity parameters remain undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 33% across 6 params. The description partially compensates by stating dates must fall within the data retention window (a real constraint on dateFrom/dateTo) and by noting competitor/unrelated-brand exclusion, but organizationId, projectId, engines and countries carry no added meaning in the description beyond the schema's own notes and the get_available_filters pointer.

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 (brand's own AI text-mention counts), the grouping dimensions (type, tone, qualifier), the date window scope, and the exclusion rules for competitors and unrelated brands. An agent can distinguish this from get_share_of_voice_formula or get_sentiment_breakdown without opening any 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?

Names alternatives explicitly and the conditions selecting them: get_sentiment_breakdown for the positive/neutral/negative split, get_mention_samples for the actual mention texts. It also frames the intent of the tool ('understand mention composition') and gives example questions, so when/when-not is fully resolved.

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

get_mention_samplesSample AI mention textsA
Read-onlyIdempotent
Inspect

Paginated sample of the raw AI mention texts themselves, for qualitative review and verifying sentiment labels. Use to READ individual mentions. For the aggregate sentiment split use get_sentiment_breakdown; for the brand's own mention counts by type, tone and qualifier use get_mention_mix. Filterable by engine, sentiment, mention type and competitor. Dates must fall within the data retention window. limit is 1-50 (default 20). Answers questions like "show or export the actual AI mention texts" for a query.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
dateToYes
offsetNo
sortByNorecent
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
sentimentNo
mentionTypeNo
competitorIdNoUUID of a single competitor to filter to; competitor UUIDs are listed by get_available_filters (competitors[].id). Omit to include all competitors
organizationIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context — 'Dates must fall within the data retention window' — plus the limit bounds, which annotations cannot express. It stops short of describing pagination/return shape, so a 4 rather than 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 what the tool returns, then alternatives, then constraints. Slightly dense with parenthetical asides, but every sentence carries real signal and nothing 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 a 12-parameter read tool with no output schema, the description covers purpose, filter dimensions, limit bounds, retention constraint and sibling routing. Gaps remain around sort semantics and date format, but nothing critical to correct invocation is missing.

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

Parameters3/5

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

Schema coverage is only 25%, so the description must compensate. It documents the limit range and names the filter dimensions (engine, sentiment, mention type, competitor), but says nothing about sortBy, offset, or date format, leaving several of the 12 parameters documented in neither place.

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: 'Paginated sample of the raw AI mention texts themselves, for qualitative review and verifying sentiment labels.' It explicitly distinguishes itself from siblings get_sentiment_breakdown and get_mention_mix, so an agent can select it without opening other schemas.

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

Usage Guidelines5/5

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

Explicit routing: 'Use to READ individual mentions. For the aggregate sentiment split use get_sentiment_breakdown; for the brand's own mention counts by type, tone and qualifier use get_mention_mix.' It also states the retention-window constraint and the limit range, leaving little to inference.

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

get_metric_glossaryMetric glossaryA
Read-onlyIdempotent
Inspect

Map a plain-language or unfamiliar request to the right Mencoro metric and tool. Returns each metric with its everyday synonyms, unit, value range, whether higher or lower is better, the tool that serves it, and example questions. Call this first when a request is vague, non-technical, phrased in another language, or uses wording that does not match a tool name. Static reference; no project data.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real value beyond that: 'Static reference; no project data,' which tells the agent results are constant and not tenant-specific, plus an outline of the returned fields.

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

Conciseness5/5

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

Three tight sentences: the mapping purpose and routing trigger come first, the return shape second, and the static nature last. Nothing is padded or redundant.

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

Completeness4/5

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

With no output schema, the description usefully enumerates what each entry contains, which is exactly what the agent needs. The only gap is the unexplained required organizationId, which is minor given the reference nature of the tool.

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

Parameters3/5

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

The tool has one required parameter (organizationId) with 0% schema description coverage, and the description never mentions it. This is a notable omission for a tool described as a static, project-data-free reference — the agent gets no explanation of why an org id is required.

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 — 'Map a plain-language or unfamiliar request to the right Mencoro metric and tool' — and immediately names the artifact it returns (each metric with synonyms, unit, range, direction, tool, example questions). This clearly separates it from data-fetching siblings like get_project or get_tracked_query.

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 an explicit, condition-based trigger: 'Call this first when a request is vague, non-technical, phrased in another language, or uses wording that does not match a tool name.' That is strong usage guidance, but it never juxtaposes this against near-neighbor reference/discovery tools such as get_mencoro_guide or get_available_filters, so the agent must infer which reference to pick.

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

get_organizationGet an organizationA
Read-onlyIdempotent
Inspect

An organization's profile, its status, the caller's own role in it, and how many active members, projects and pending invitations it has. Use list_projects first to find the organizationId.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real value by disclosing the shape of the returned payload (counts and caller role), which annotations cannot express and which matters since no output schema exists.

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, no filler, with the returned-content summary front-loaded and the prerequisite stated second. The initial sentence is a noun fragment rather than a verb-led statement, which is slightly less crisp but costs nothing.

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

Completeness4/5

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

For a read-only single-parameter getter with no output schema, the description covers what comes back and how to obtain the id. The remaining gap is sibling disambiguation against get_organization_overview, which the description never addresses.

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% and the single organizationId is completely undocumented in the schema. The description compensates by explaining where the id comes from (retrieve it via list_projects), which is meaningful provenance an agent would otherwise lack. It still omits the id's format, so it is not a full 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?

The description enumerates the specific resource and the exact fields returned (profile, status, caller's role, member/project/invitation counts), which is far more concrete than the title. It does not, however, differentiate this tool from the near-identically named sibling get_organization_overview, leaving the agent to guess which retrieval 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?

'Use list_projects first to find the organizationId' gives a workflow precondition, but it says nothing about when to choose this tool over get_organization_overview or list_members. It is a how-to-get-the-ID hint rather than genuine when-to-use guidance.

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

get_organization_overviewOrganization brand overviewA
Read-onlyIdempotent
Inspect

Latest-snapshot rank-health board across all active projects in an organization: one row per brand (share of voice, mention rate, average mention position, positivity, tracked-query count) ranked by share of voice, plus an organization-level aggregate. This is a current-state snapshot and takes NO date window; for date-ranged comparison, call the per-project tools (e.g. get_project_rank_tracking_stats) for each project id returned here. Answers questions like "give me a company-wide summary of share of voice and sentiment across all my projects".

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuine behavioral context: that this is a current-state snapshot with no date filtering, that it aggregates across all active projects, and that it includes an organization-level rollup row. It does not mention auth, rate limits, or pagination, but for a read-only snapshot call those are minor.

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

Conciseness4/5

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

Three sentences, front-loaded with the resource and its grain ('one row per brand'), followed by the constraint and the alternative. Dense but every clause carries information; the column list is long but useful, and the closing example question is slightly 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?

With no output schema, the description compensates by enumerating the returned fields and the ranking plus org-level aggregate, and it states the temporal semantics. What is missing is any guidance on sourcing organizationId and the absence of pagination/volume expectations for a cross-project board.

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

Parameters3/5

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

Only one parameter (organizationId) and schema description coverage is 0%, so nothing in the structured data explains it. The description hints that project ids come from this call but never clarifies what organizationId is or where to obtain it. Baseline 3 given the single flat parameter, with a real gap left unaddressed.

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 resource (organization-level brand rank-health board) with verb-like scoping ('latest-snapshot'), and enumerates the exact columns returned (share of voice, mention rate, avg position, positivity, tracked-query count) plus the org-level aggregate. It is clearly distinguished from the per-project siblings it names.

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 declares a negative constraint ('takes NO date window') and routes to the alternative for date-ranged comparison (get_project_rank_tracking_stats per project id). It also gives a concrete triggering question the tool answers, which pins down when to select it.

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

get_projectGet a projectB
Read-onlyIdempotent
Inspect

A project's name and status, the website domains and brand names it is monitored for, and all of its competitors with their ids (update_competitor and delete_competitor take them).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
organizationIdYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered elsewhere. The description adds that the payload includes domains, brand names and competitors with ids, but says nothing about auth requirements, error behavior, or scoping 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.

Conciseness4/5

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

A single compact sentence with no filler, though it is structured as an output summary rather than leading with the action the tool performs.

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

Completeness3/5

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

With no output schema, the description usefully enumerates the return payload (name, status, domains, brands, competitors with ids), which partially fills that gap. But it omits any guidance on the two required identifiers and doesn't clarify scoping or possible empty 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% — both required parameters (organizationId, projectId) are undocumented in the schema, and the description never mentions them or distinguishes their roles. With low coverage the description should compensate, and it does not.

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

Purpose3/5

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

The description is a noun phrase enumerating returned fields rather than an explicit verb+resource statement, though 'Get a project' in the title plus the field list make the retrieval purpose inferable. It does distinguish itself from list_projects by describing the detail payload rather than a collection.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use guidance versus siblings like list_projects. However, the parenthetical that update_competitor and delete_competitor take the returned competitor ids is an implied usage context, telling the agent this tool supplies ids for later mutations.

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

get_project_rank_tracking_statsProject rank-tracking overviewA
Read-onlyIdempotent
Inspect

Aggregated rank-tracking summary for a project over a date window: average positions, trends, share of voice (own and per competitor), sentiment split, mention/SERP/shopping rates, and position-distribution buckets. This is the project overview; prefer it before the per-cluster or time-series tools. Dates must fall within the data retention window. Answers questions like "how visible is my brand", "am I ahead of competitors", "how positive is my coverage".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToYes
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
organizationIdYes
queryClusterIdsNorestrict to these keyword clusters
includeUngroupedQueriesNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the retention-window restriction on dates and the fact that this is an aggregated, project-scoped rollup. It does not mention result size or 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?

Front-loaded with the core purpose and scoping, followed by the routing hint and constraints. The metric enumeration is long but each item is a genuine output category, not filler. Reads as tight prose with no redundant sentences.

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

Completeness3/5

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

With no output schema, the description usefully compensates by naming the returned aggregates, which is a strength. However, for an 8-parameter tool at 38% schema coverage, the parameter semantics gap remains unaddressed, leaving the definition only partially 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 low (38%) and the description adds almost no per-parameter meaning beyond the generic 'date window'. It never clarifies organizationId, projectId, queryClusterIds, includeUngroupedQueries, or countries, and the low-coverage schema leaves those under-documented. The metric list implies engines but does not explain the engines param.

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 and enumerates the exact aggregates returned (average positions, trends, share of voice, sentiment split, rates, buckets). It explicitly positions itself against siblings ('the project overview; prefer it before the per-cluster or time-series tools'), so an agent can distinguish it from get_cluster_breakdown and get_rank_tracking_time_series without opening a schema.

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

Usage Guidelines4/5

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

The routing instruction ('prefer it before the per-cluster or time-series tools') gives clear positive guidance and names the alternatives. It also adds the constraint that dates must fall within the data retention window. It lacks an explicit 'when not to use' or fallback for out-of-window ranges, so it stops short of 5.

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

get_query_moversBiggest tracked-query moversA
Read-onlyIdempotent
Inspect

Ranks a project's tracked queries by how much a metric changed between the given window and the immediately preceding window of equal length — the biggest gainers and losers. Each row is one tracked query (a single engine + country) with its current position/share/sentiment and the signed trend delta (positive = improved). Sort by one of the trend keys; sortOrder desc = top gainers, asc = top losers. Dates must fall within the data retention window. Answers questions like "which queries moved the most" or "my biggest gains and drops versus last period".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
dateToYes
offsetNo
sortByNowhich trend delta to rank bytrend_share_of_voice
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
sortOrderNodesc for top gainers, asc for top losersdesc
organizationIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuinely useful behavior: 'Dates must fall within the data retention window', the per-row structure (one tracked query = single engine + country), and the sign convention (positive = improved), none of which is in the annotations.

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

Conciseness4/5

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

The core function is front-loaded in the first sentence, and each subsequent sentence (row semantics, sort keys, retention constraint, example questions) earns its place. It is slightly dense but not padded or repetitive.

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

Completeness4/5

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

With no output schema, the description usefully describes the return rows (current position/share/sentiment plus signed trend delta) and the retention constraint. For a 10-param tool it is largely complete, though it says nothing about the enum values for sortBy or the engines/countries filters beyond what the schema already carries.

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 only 40%, so the description must compensate, and it does for the crucial params: it defines the dateFrom/dateTo window relationship (current vs immediately preceding equal-length window) and the sort semantics ('sortOrder desc = top gainers, asc = top losers'). Pagination (limit/offset) and the ID params are left to the schema, keeping it from a 5.

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

Purpose5/5

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

The description states a precise verb+resource+scope: 'Ranks a project's tracked queries by how much a metric changed between the given window and the immediately preceding window.' This clearly distinguishes it from sibling time-series tools (get_tracked_query_time_series, get_rank_tracking_time_series), which track one query over time rather than ranking movers across queries.

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 concrete usage context via example questions ('which queries moved the most', 'my biggest gains and drops versus last period'), making the intended scenario obvious. It does not, however, name alternative tools or state explicit exclusions (e.g. when to prefer a time-series tool over this one), 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.

get_rank_tracking_time_seriesRank-tracking time seriesA
Read-onlyIdempotent
Inspect

Time series of rank-tracking metrics for a project across a date window, bucketed by granularity (daily, weekly or monthly). Prefer weekly or monthly for long windows to keep the response compact. Optionally includes per-competitor lines. Dates must fall within the data retention window. Answers questions like "what changed in my AI visibility" or "show my share-of-voice trend split by engine".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToYes
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
granularityNodaily
competitorIdsNoUUIDs of competitors to add as extra series; competitor UUIDs are listed by get_available_filters (competitors[].id)
organizationIdYes
queryClusterIdsNorestrict to these keyword clusters
includeUngroupedQueriesNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent, non-destructive profile, so the bar is lower. The description adds genuinely useful behavioral context beyond that: a data-retention constraint on the date range and a response-size tradeoff tied to granularity. It doesn't cover return shape or pagination, keeping it off 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?

Dense and front-loaded: the core purpose leads, followed by the size advice, retention constraint, and illustrative questions. Every sentence carries information, though the example-questions clause is a slight luxury.

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 10-parameter tool with no output schema and only 40% schema coverage, the description is adequate but leaves notable gaps — several filtering parameters are undocumented here and in the schema. The safety profile is covered by annotations, but parameter-level completeness is not.

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 40% across 10 parameters, so the description is expected to compensate — but it only touches granularity (already an enum) and the optional competitor lines. The engines, countries, queryClusterIds, and includeUngroupedQueries parameters receive no added meaning in the 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 and resource — 'Time series of rank-tracking metrics for a project across a date window' — and specifies the bucketing dimension. This cleanly distinguishes it from the sibling get_tracked_query_time_series (query-level) and the point-in-time get_project_rank_tracking_stats.

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 usage context via example questions ('what changed in my AI visibility', 'share-of-voice trend split by engine') and a scoping rule ('Prefer weekly or monthly for long windows to keep the response compact'). It does not explicitly name alternatives to use instead for query-level or aggregate views, so it stops short of full when/when-not guidance.

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

get_sentiment_breakdownAI mention sentiment breakdownA
Read-onlyIdempotent
Inspect

Positive/neutral/negative sentiment split of the brand's AI mentions over a date window, per AI engine and per competitor. Use for tone/sentiment questions. For the brand's own mention counts by type, tone and qualifier use get_mention_mix; to read the actual mention texts use get_mention_samples. Dates must fall within the data retention window. Answers questions like "is anything negative being said about my brand" or "how positive is my coverage".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToYes
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
dateFromYes
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
organizationIdYes
queryClusterIdsNorestrict to these keyword clusters
includeUngroupedQueriesNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds a real behavioral constraint beyond them: dates must fall within the data retention window. It does not disclose pagination or result-size behavior, keeping it short of a 5.

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

Conciseness5/5

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

Front-loads the returned payload, then alternatives, then the date constraint, then example questions. Every sentence carries distinct information with no filler or repetition.

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

Completeness4/5

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

No output schema exists, but the description conveys the shape of the result (positive/neutral/negative split, per engine, per competitor) and the date constraint. Gaps remain on the four undocumented parameters and on what empty engines/countries arrays mean, but nothing essential to correct invocation is missing.

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

Parameters3/5

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

Schema coverage is only 38% across 8 parameters; dateFrom/dateTo, organizationId and projectId have no schema descriptions. The description partially compensates by tying dates to the retention window and naming the per-engine/per-competitor dimensions, but it says nothing about engines, countries, queryClusterIds or includeUngroupedQueries defaults.

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

Purpose5/5

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

States a specific verb+resource (sentiment split of the brand's AI mentions) and scopes it precisely to a date window, broken down per AI engine and per competitor. It also explicitly names the siblings it is not (get_mention_mix for counts, get_mention_samples for texts), so an agent can route correctly 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 Guidelines5/5

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

Explicitly gives when to use it ('tone/sentiment questions') plus two named alternatives with the exact conditions that select them: get_mention_mix for mention counts by type/tone/qualifier, get_mention_samples for raw texts. It even supplies example questions to anchor intent.

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

get_share_of_voice_formulaShare-of-voice formula constantsB
Read-onlyIdempotent
Inspect

The constants behind the share-of-voice score: per-mention-type base weights and tone/qualifier multipliers. Use this to explain how the share-of-voice metric is derived. Global (not project-specific), but scoped to a project you can access.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
organizationIdYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds the notable scoping nuance that the data is global yet requires a project context, though it leaves the tension between those two facts 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?

Three compact sentences with the core content (what the constants are) front-loaded. No filler, though the final scoping sentence could be sharpened.

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, two-parameter tool this is close to adequate, but with no output schema and no parameter docs, the unexplained global-vs-project scoping is a real gap an agent would need resolved before calling.

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 carry parameter meaning. It only obliquely touches projectId via "global (not project-specific), but scoped to a project you can access" and never explains organizationId at all, leaving both required parameters effectively 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 resource — the per-mention-type base weights and tone/qualifier multipliers behind the share-of-voice score — so the agent knows what comes back. It is fairly close to the sibling get_metric_glossary, but naming the concrete constants gives it some 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?

"Use this to explain how the share-of-voice metric is derived" implies usage, but never contrasts it with the near-identical sibling get_metric_glossary, nor states when it should be preferred or skipped. 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.

get_tracked_queryGet a tracked queryB
Read-onlyIdempotent
Inspect

One tracked query's settings: its text, engine, country, status, check frequency, passes per check, clusters and when it was last checked. Find ids with search_tracked_queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
organizationIdYes
trackedQueryIdYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description's enumeration of returned fields adds value, but says nothing about scoping requirements or behavior when the id is unknown/unauthorized.

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 tool's purpose and the field list appended compactly. The trailing 'Find ids with search_tracked_queries' is useful rather than filler. Minor run-on list of fields, but nothing wasteful.

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 fetch with no output schema, listing the returned fields is a genuine substitute for a return-value spec. However, the zero-coverage parameters and absence of scoping/error context leave the agent with gaps it must guess at.

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 three required parameters (organizationId, projectId, trackedQueryId) are bare strings. The description only implicitly references trackedQueryId via the reference to search_tracked_queries and never explains the org/project scoping requirement, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb+resource ('One tracked query's settings') and enumerates what the record contains (text, engine, country, status, check frequency, clusters, last check). It partially distinguishes itself by noting ids come from search_tracked_queries, though it doesn't contrast with get_tracked_query_matches or get_tracked_query_time_series.

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?

Tells the agent how to obtain the required id ('Find ids with search_tracked_queries'), which is the key prerequisite for calling this tool. It gives no explicit when-not guidance or mention of the time-series/matches siblings, 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.

get_tracked_query_matchesGet a tracked query's matchesA
Read-onlyIdempotent
Inspect

The individual results behind one tracked query's metrics. kind "mention": each time the brand or a competitor was mentioned in an AI answer, with position, sentiment and the context it appeared in. kind "serp": each time one of their domains ranked in a search result, with its position. Newest first by default; dates are YYYY-MM-DD and default to the whole retention window.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
limitNo
dateToNo
offsetNo
dateFromNo
projectIdYes
sortOrderNodesc
organizationIdYes
trackedQueryIdYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description usefully spends its budget on behavior instead: default sort order (newest first), date format (YYYY-MM-DD), and the default retention-window span for dates. That is genuine added context beyond the structured fields, though pagination/return-shape behavior is unaddressed.

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

Conciseness4/5

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

Three tight sentences, front-loaded with what the tool returns before the kind breakdown and date defaults. No filler; slightly dense but every clause carries 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 9-parameter read tool with no output schema, the definition covers the non-obvious semantics (kind, dates, default ordering). The main gap is pagination guidance around limit/offset, which the agent must infer from the schema alone.

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% and there are 9 parameters, so the description carries the burden. It compensates well for the ambiguous ones — the enum values of `kind` are explained concretely, and the date format plus defaults for dateFrom/dateTo are given. It says nothing about limit, offset, or the ID parameters, but those are self-evident.

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

Purpose4/5

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

States a specific resource (individual results behind one tracked query's metrics) and disambiguates the two result kinds — mentions in AI answers vs domain rankings in SERPs. This clearly separates it from aggregate siblings like get_tracked_query_time_series, though it never names those siblings.

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

Usage Guidelines3/5

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

Usage is implied — drill down into the raw events behind a query's metrics — but there is no explicit when-to-use or when-not guidance relative to alternatives such as get_mention_samples, get_cited_sources, or list_ai_responses. 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.

get_tracked_query_time_seriesSingle tracked-query time seriesA
Read-onlyIdempotent
Inspect

Time series of rank-tracking metrics for ONE tracked query across a date window, bucketed by granularity (daily, weekly or monthly). The tracked query fixes the engine and country, so those are not parameters. Use search_tracked_queries to find a trackedQueryId. Optionally includes per-competitor lines. Prefer weekly or monthly for long windows. Dates must fall within the data retention window. Answers questions like "show the share-of-voice and position history of this one query over the last N months".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateToYes
dateFromYes
projectIdYes
granularityNodaily
competitorIdsNoUUIDs of competitors to add as extra series; competitor UUIDs are listed by get_available_filters (competitors[].id)
organizationIdYes
trackedQueryIdYesa tracked query UUID from search_tracked_queries (items[].id)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description still adds real context: the data-retention date bound, the granularity trade-off, and that engine/country are implicitly fixed by the tracked query rather than exposed as parameters.

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 core purpose, then prerequisites, then advice and an example. Every sentence carries information, though the parenthetical granularity list and the example question add slight length without new 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 7-parameter, read-only time-series tool with no output schema, the description supplies the necessary routing, scoping, and constraint context. Minor gaps remain on date format and the organizationId/projectId semantics that an agent would need for an unambiguous first 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 only 29%, so the description must compensate, and it does for the important parameters: trackedQueryId's source, the granularity enum meaning, competitorIds' purpose (per-competitor lines, though the exact source hint lives in the schema), and the retention bound on dateFrom/dateTo. It leaves date string format and organizationId/projectId unaddressed, so not a full 5.

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?

Opens with a specific verb+resource: 'Time series of rank-tracking metrics for ONE tracked query across a date window, bucketed by granularity.' The scope word 'ONE' and the enumeration of granularity snapshots distinguish it clearly from the batch-oriented get_rank_tracking_time_series sibling.

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?

Gives explicit routing ('Use search_tracked_queries to find a trackedQueryId'), usage advice ('Prefer weekly or monthly for long windows'), a hard constraint ('Dates must fall within the data retention window'), and a concrete example question, so the agent knows when and how to call it.

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

get_tracking_coverageTracking coverage & stalenessA
Read-onlyIdempotent
Inspect

Coverage summary for a project's tracked queries: counts of total, active, paused, never-checked, and overdue (past their check-frequency interval) queries, plus a sample of the most-overdue ones. Answers "what is stale / not being tracked" in one call. Never-checked and overdue are scoped to active queries. This is a current-state snapshot and takes no date window. Answers questions like "what is stale or not being monitored", "which queries are overdue, paused, or never checked", "how fresh is my data".

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
organizationIdYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower. The description adds genuinely useful behavioral context: it is a current-state snapshot with no date window, and never-checked/overdue counts are scoped only to active queries. It doesn't discuss pagination or response shape, but the safety and scoping profile is well covered.

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-loads the concrete return contents before any framing, which is good. The trailing list of three example question clusters restates the same 'stale/overdue' idea three times and could be trimmed, but overall it stays tight and readable.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so: it lists every count returned plus the overdue sample. Combined with the snapshot/no-date-window note, an agent has everything needed to select and invoke it correctly given its two simple required params.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 both parameters. The description doesn't document organizationId or projectId directly, but the phrase 'a project's tracked queries' implies the projectId scope, and both parameter names are self-explanatory. It neither compensates fully nor leaves the agent confused.

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 resource (a project's tracked queries) and enumerates exactly what it returns: total, active, paused, never-checked and overdue counts plus a sample. This level of specificity clearly distinguishes it from sibling tools like get_project_rank_tracking_stats or get_tracked_query_time_series, which cover different dimensions.

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

Usage Guidelines4/5

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

Provides explicit triggering questions ('what is stale or not being monitored', 'which queries are overdue, paused, or never checked') and clarifies scope with 'This is a current-state snapshot and takes no date window', implicitly steering the agent away from time-series siblings. It does not, however, name a concrete alternative tool to prefer in adjacent scenarios.

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

get_usageGet plan and usageA
Read-onlyIdempotent
Inspect

An organization's subscription, how many tracked queries it has, and how many checks they are projected to run per month. Plan entitlements (tracked-query and check limits) are included for owners only, as in the web app; for other members "entitlements" is null. Use it before creating tracked queries or raising check frequency, to stay within the plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
organizationIdYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent read, but the description adds genuinely non-obvious behavior: entitlements are populated only for owners and are null for other members, mirroring the web app. That permission-dependent output nuance is valuable context an agent could not derive from the schema or annotations.

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

Conciseness4/5

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

Three short sentences with no filler, and the usage trigger is placed at the end where it reads naturally as a call-to-action. The opening sentence is a noun phrase rather than a verb-led statement, a minor structural weakness but not wasteful.

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

Completeness4/5

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

With no output schema, the description must carry the return-value burden, and it does: it enumerates the returned fields and explains the null-entitlements case. Only the organizationId parameter's semantics remain unspecified, which is a small residual gap for a single-key tool.

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

Parameters3/5

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

Schema description coverage is 0% and the single parameter (organizationId) is never explained in the description, so no format or sourcing guidance is added beyond the schema. With only one obvious required parameter the practical risk is low, keeping this at the baseline.

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

Purpose4/5

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

The description names the concrete resources returned — subscription, tracked-query count, projected monthly checks — so an agent knows exactly what this tool fetches, going beyond the bare tool name. It does not, however, explicitly distinguish itself from the similarly-named sibling get_organization_overview, leaving that discrimination 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 Guidelines4/5

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

"Use it before creating tracked queries or raising check frequency, to stay within the plan" gives an explicit trigger condition and motivation for calling the tool. It stops short of naming an alternative tool or stating when NOT to use it, so it lands just below the top tier.

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

invite_memberInvite a memberAInspect

Invite someone to the organization by email with a role (owner, manager or viewer); they get an email to accept. Inviting an address that already belongs to a member creates nothing and says so. Requires a confirmationToken: call preview_operation with tool "invite_member" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
emailYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes
confirmationTokenYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover only the generic safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true). The description adds substantial context beyond that: an invitation email is sent, duplicates silently create nothing (and report that), a confirmationToken must be obtained via preview_operation with a human-approval gate, and specific auth/role requirements apply.

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

Conciseness4/5

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

Three tightly packed sentences, front-loaded with purpose and role options before the confirmation-token procedure and permission requirements. Every sentence carries operational content, though the security/permission clauses could be trimmed slightly.

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 handles that by noting what happens in the duplicate case ('creates nothing and says so'). Combined with the permission requirements and the mandatory preview/confirmation flow, an agent has what it needs to invoke correctly; only the return payload shape is 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 description coverage is only 20% (requestId is the sole documented property), so the description must carry the load. It does: it explains email, enumerates the role enum values, explains the origin and purpose of confirmationToken, and identifies organizationId as scoped to the organization. It does not clarify the organizationId format or the requestId retry semantics beyond what the schema states, but coverage of the five parameters is strong.

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 ('Invite someone to the organization by email with a role'), names the allowed role values, and describes the acceptance flow and the duplicate-address no-op case. An agent can distinguish this from list_members, update_member, and cancel_invitation without opening any 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 prescribes the precondition workflow: call preview_operation with tool "invite_member" and these arguments, show the plan to the user, and call this tool only after explicit agreement. It also states the required permission (organization:manage) and role (owner), and notes the duplicate-address case where nothing is created.

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

list_ai_responsesList captured AI answersA
Read-onlyIdempotent
Inspect

The AI answers captured for a project's tracked queries - the full answer text, the engine, when it was captured, and the sources it cited. Filter by engine, by one tracked query, or by capture date (YYYY-MM-DD). Newest first by default. Use it to read what an engine actually said; for aggregates use the metric tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
dateToNo
offsetNo
enginesNo
dateFromNo
projectIdYes
sortOrderNodesc
organizationIdYes
trackedQueryIdNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds ordering behavior ('newest first by default') and the accepted date format, which is genuine context beyond the annotations, though it says nothing about pagination or result 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?

Three tight sentences with the resource description front-loaded, followed by filters and the alternative-tool note. No filler, though the field enumeration could be marginally tighter.

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

Completeness4/5

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

With no output schema, the description usefully outlines what a record contains and how filtering/ordering works. It is close to complete for invocation, with pagination controls the main remaining gap.

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

Parameters3/5

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

Schema description coverage is 0% across 9 parameters, so the description must compensate and only partly does: it explains engine, trackedQueryId and date filtering plus the YYYY-MM-DD format and default sort direction. limit, offset, sortOrder asc and organizationId/projectId are left undocumented.

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

Purpose5/5

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

States a specific verb+resource ('AI answers captured for a project's tracked queries') and enumerates the returned fields (answer text, engine, capture time, cited sources). It also explicitly separates itself from aggregate tools, so an agent can distinguish it from siblings like get_mention_samples or get_query_movers without opening a schema.

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

Usage Guidelines4/5

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

Gives a clear usage condition ('read what an engine actually said') and an explicit exclusion ('for aggregates use the metric tools'). It does not name a specific sibling metric tool, so routing is directional rather than precise.

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

list_clustersList query clustersC
Read-onlyIdempotent
Inspect

A project's query clusters (the groups its tracked queries are organized in), by name, with their ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
projectIdYes
sortOrderNoasc
organizationIdYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description adds useful context by specifying the return shape (names with ids), but says nothing about pagination behavior despite limit/offset existing.

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 resource front-loaded and the parenthetical definition earning its place. No filler, though it could have used the freed space for parameter or pagination detail.

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 5 undocumented parameters, no output schema, and pagination/ordering parameters present, the description is too thin for correct invocation. It partially offsets the missing output schema by naming the returned fields, but leaves the request side almost 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% across 5 parameters, so the description carries the burden and fails to compensate. It mentions only the project scope implicitly and says nothing about limit, offset, sortOrder, or organizationId 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?

States the resource precisely (a project's query clusters) and even defines what a cluster is, plus the returned fields (names and ids). It is clearly distinguishable from siblings like get_cluster_breakdown or create_clusters, though it never uses an explicit verb like 'list' to frame the operation.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternative tools such as get_cluster_breakdown or search_tracked_queries. The agent must infer usage from the name alone.

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

list_keyword_listingsList keyword performanceA
Read-onlyIdempotent
Inspect

One row per tracked query text across all its engine and country variants, with its share of voice, positivity, mention, link, search and shopping positions over the date range (YYYY-MM-DD, inclusive). Filter by engine, country, cluster, status, check frequency, passes or text; sort by any metric. The keyword-level view of a project.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
dateToYes
offsetNo
searchNo
sortByNokeyword
statusNo
enginesNo
nPassesNo
dateFromYes
countriesNo
projectIdYes
sortOrderNoasc
organizationIdYes
queryClusterIdsNo
checkFrequenciesNo
includeUngroupedQueriesNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so safety is covered. The description's real contribution is the aggregation grain — one row per query text rolled up across engine and country variants — which is behavior the schema cannot express. Pagination behavior (limit/offset interplay) is left unstated.

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

Conciseness4/5

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

Two dense sentences, no filler, with the row-grain definition front-loaded before the filter/sort capabilities. The first sentence packs a lot, but each 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?

No output schema exists, so the description must convey the shape of the result, and it does by enumerating the metrics (share of voice, positivity, mention/link/search/shopping positions). The main gap is pagination semantics for a list endpoint with limit/offset and a 100-row cap.

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

Parameters4/5

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

With 0% schema description coverage across 16 parameters, the description must carry the load, and it does for most: it maps engine, country, cluster, status, check frequency, passes and text filters, the sort options, and gives the date format (YYYY-MM-DD, inclusive). It omits limit, offset, includeUngroupedQueries, and the required organization/project identifiers.

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

Purpose4/5

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

Names a specific resource (keyword listings) with precise granularity — one row per tracked query text aggregated across engine and country variants — and lists the metrics returned. The closing line 'The keyword-level view of a project' frames its scope. It does not explicitly distinguish itself from near-siblings like search_tracked_queries or get_tracked_query, 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?

It tells you what you can filter and sort by, which implies the intended usage, but never states when to choose this over search_tracked_queries, get_tracked_query, or list_clusters. Usage is inferred rather than prescribed.

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

list_membersList organization membersA
Read-onlyIdempotent
Inspect

The members of an organization, oldest first, with their role and state; optionally also its pending invitations. Owners only, as in the web app. The member "id" (not the userId) is what update_member takes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
organizationIdYes
includeInvitationsNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so credit here goes to what the description adds: an auth requirement (owners only), result ordering, and pending invitations only when requested. The id-vs-userId warning is a valuable gotcha beyond anything in the annotations.

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

Conciseness5/5

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

Three compact, front-loaded sentences, each earning its place: the resource/ordering/fields, the permission constraint, and the id warning that prevents a real API misuse. 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?

With no output schema, the description carries the return-shape burden and does so (members with role and state, optionally invitations, oldest first), and it discloses the owners-only prerequisite. Pagination behavior for limit/offset is the only notable omission for a tool of this complexity.

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

Parameters3/5

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

Schema description coverage is 0%, and the description compensates only partly: it explains includeInvitations ("optionally also its pending invitations") and the organizationId context, but is silent on limit and offset. Those are conventional pagination parameters, so the gap is modest rather than critical.

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 (members of an organization) plus ordering (oldest first) and returned fields (role, state). The closing note ties it to update_member by clarifying the id vs userId distinction, so an agent can place it among the member tools without ambiguity.

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

Usage Guidelines4/5

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

"Owners only, as in the web app" gives a clear permission/context condition for when this call is valid. It stops short of naming alternatives (e.g. invite_member for adding members), but the listing purpose is unambiguous and no exclusions are needed.

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

list_projectsList organizations and projectsA
Read-onlyIdempotent
Inspect

List every organization the caller belongs to and its active projects. Call this FIRST: the returned (organizationId, projectId) pairs are required by every other tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds genuine context beyond that: the tool's output is a dependency for all other calls. It doesn't disclose pagination or ordering behavior, keeping it at 4.

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

Conciseness5/5

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

Two sentences with zero waste; the prerequisite instruction is front-loaded and every clause carries information the agent needs.

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

Completeness5/5

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

With no output schema, the description correctly discloses the shape of what is returned (organizationId, projectId pairs). For a 0-param read tool this is 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?

Zero parameters, so the baseline is 4. There is nothing parameter-level to document and the description correctly focuses on output semantics instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 resources (organizations and their active projects) with the scope narrowed to the caller's memberships. It is clearly distinguishable from single-entity siblings like get_organization and get_project, though it doesn't explicitly name a contrast case.

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?

"Call this FIRST" is an explicit sequencing instruction, and it explains why: the returned (organizationId, projectId) pairs are a prerequisite for every other tool. This is exactly the when-to-use guidance an agent needs.

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

list_search_snapshotsList captured search resultsA
Read-onlyIdempotent
Inspect

The search result pages captured for a project's tracked queries. kind "serp": Google search results with each result's position, title and URL. kind "shopping": Google Shopping results with each offer's position, merchant and price. Filter by one tracked query or by capture date (YYYY-MM-DD). Newest first by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
limitNo
dateToNo
offsetNo
dateFromNo
projectIdYes
sortOrderNodesc
organizationIdYes
trackedQueryIdNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish a safe, idempotent, closed-world read, so the bar is lower; the description still adds real context by explaining what each kind's results contain (position/title/URL vs position/merchant/price) and that ordering is newest-first by default. It is silent on pagination mechanics and the limit ceiling, which would have added more.

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

Conciseness5/5

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

Four compact sentences, front-loaded with what the tool returns, then the kind variants, then the filters and default ordering. No sentence is filler and nothing important is buried at the end.

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 9-parameter list tool with no output schema and no schema descriptions, the description does most of the necessary work: it defines the resource, the kind variants and their payloads, and the filtering dimensions. The remaining gap is pagination and the organization/project scoping parameters, which an agent must infer from the schema alone.

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

Parameters3/5

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

Schema description coverage is 0%, so the description has to carry the load. It covers kind (both enum branches explained), trackedQueryId, dateFrom/dateTo including the expected YYYY-MM-DD format, and the default of sortOrder. It leaves organizationId, projectId, limit and offset unexplained, including the 1-100 range and pagination intent.

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

Purpose4/5

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

The description names the resource precisely (captured search result pages for a project's tracked queries) and disambiguates the two kinds, 'serp' and 'shopping', spelling out the fields each returns. It is clearly distinct from siblings like list_ai_responses or list_keyword_listings, though the verb 'list' itself comes from the name rather than the description.

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

Usage Guidelines3/5

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

It states the two filtering axes (one tracked query, or capture date as YYYY-MM-DD) and the default ordering, which implies how the tool is meant to be used. However, it gives no when-to-use guidance, no exclusions, and never names a sibling alternative, so usage is only implied.

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

list_untracked_competitorsBrands the AI answers name that you do not trackA
Read-onlyIdempotent
Inspect

The brands a project's AI answers name that are not tracked as competitors (another brand offering the same thing), most-seen first: in how many answers and tracked queries, how often, their average position among the brands named, one query that named them, and when they were last seen. They count in no metric until tracked, so this is where to find competitors worth adding with create_competitor (their websites are not known here; confirm them with the user). Needs checks to have run; after a project is created its first checks run straight away. dateFrom and dateTo (YYYY-MM-DD) default to the last 30 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
dateToNo
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)
dateFromNo
countriesNoISO-3166 alpha-2 country codes; a project's configured codes are listed by get_available_filters
projectIdYes
organizationIdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds genuinely new behavioral context: untracked brands 'count in no metric' until tracked, websites are not known here and must be confirmed with the user, and checks must have run first. These are real constraints an agent would otherwise not anticipate.

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 core statement and the returned fields, followed by prerequisites and parameter defaults. The first sentence is long and list-heavy, but every clause carries information rather than 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?

With no output schema, the description does the work of explaining the return shape (answer counts, tracked-query counts, frequency, average position, one naming query, last-seen date) plus sort order, prerequisites, and the unknown-website limitation. The only notable gap is the undocumented limit parameter, which is minor for a listing 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 only 29%, so the description has to carry more weight than it does. It explains dateFrom/dateTo as YYYY-MM-DD defaulting to the last 30 days, but says nothing about limit (the schema gives it no description at all), and engines/countries semantics are only covered inside the schema itself.

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: brands named in a project's AI answers that are not tracked as competitors, with a parenthetical definition of what counts as a brand. An agent can distinguish it from discover_brands and list_competitor-style siblings without opening a schema.

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

Usage Guidelines4/5

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

Explicitly positions the tool as the place to find competitors worth adding 'with create_competitor' and states the prerequisite that checks must have run (with the note that first checks run immediately after project creation). It does not contrast against the related discover_brands or suggest_brand_names siblings, so routing among the discovery-family tools 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.

mencoro_setupMencoro setup instructionsA
Read-onlyIdempotent
Inspect

Explain how to finish connecting this bridge to Mencoro. The bridge has no API token, so no project, ranking, mention or share-of-voice data can be read until one is configured.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds valuable context beyond the annotations by explaining the current missing-token state and why data reads fail until setup finishes. This aligns with and reinforces the annotation hints without contradicting them.

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

Conciseness5/5

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

The description is two sentences with no filler. The primary purpose is front-loaded in the first sentence, and the second sentence provides essential context. Every word earns its place.

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

Completeness4/5

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

For a simple explanatory tool with no parameters and no output schema, the description covers the necessary context: what the tool does, the current state, and the consequence of inaction. The output is implicitly instructions, which is clear from the verb 'Explain'. It could detail the output format, but this is not critical 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 input schema has zero parameters, so there is nothing for the description to clarify. Per the baseline for zero-parameter tools, the description adequately handles parameter semantics by not adding unnecessary detail.

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

Purpose5/5

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

The description uses a specific verb ('Explain') and names the exact resource ('finish connecting this bridge to Mencoro'). It also states the practical consequence of missing configuration, leaving no ambiguity about what the tool does. With no sibling tools, there is no differentiation burden.

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

Usage Guidelines4/5

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

The description clearly implies the context of use: the bridge has no API token, so data cannot be read until setup is complete. This tells an agent when to invoke the tool (when configuration is needed or when Mencoro data is unavailable). It does not explicitly mention alternatives, but none exist.

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

preview_operationPreview an operation before running itA
Read-only
Inspect

Describe exactly what a confirmable write tool would do and get the confirmationToken it requires. Pass the name of the write tool as "tool" and the arguments you would pass it (without confirmationToken and requestId) as "arguments". Show the returned plan to the user and wait for an explicit yes before calling the tool with the same arguments and this confirmationToken. The token is single-use, expires after a few minutes, and is refused if anything the plan describes has changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYes
argumentsYesThe arguments the write tool would be called with, without confirmationToken and requestId.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations indicate it is read-only, but the description adds crucial behavioral details beyond that: the plan must be shown to the user, explicit approval is required, the token is single-use, expires in a few minutes, and is invalidated if the planned operation changes. It does not repeat annotation content and adds necessary context about the confirmation flow.

Agents need to know what a tool does to the world before 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 tight, front-loaded paragraph of three sentences that conveys all critical information without redundancy. Every sentence contributes to correct usage.

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

Completeness5/5

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

Given the tool's meta nature, no output schema, and the need to explain the confirmation workflow, the description covers purpose, parameters, expected actions, token behavior, and validation. It is complete for an agent to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 50%, and the description clarifies that 'tool' should be the name of the write tool and 'arguments' should be the arguments without confirmationToken and requestId. This adds meaning beyond the enum and vague schema description, helping the agent construct correct calls.

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 ('describe exactly what a confirmable write tool would do') and explains the output (a plan and a confirmationToken). It clearly distinguishes this meta-tool from the actual write tools it previews, making the purpose unmistakable.

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 tells the agent to use this tool before any confirmable write (passing the write tool name and arguments without confirmationToken and requestId), to show the plan to the user, and to wait for explicit yes before calling the write tool with the token. It also warns that the token is single-use, expires, and is refused if the plan changes, which fully guides usage.

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

rename_clusterRename a query clusterA
Idempotent
Inspect

Rename a query cluster. The name is stored lower-cased and must be unique in the project. Safe to retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
clusterIdYes
projectIdYes
organizationIdYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=false, and the description adds genuinely new behavior: the name is lower-cased on storage, must be unique within the project, and the call is safe to retry. These storage and constraint details go beyond what the annotations convey, though it does not say what error results from a name collision.

Agents need to know what a tool does to the world before 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, front-loaded with the action, followed by the two constraints an agent most needs. No filler and nothing wasted.

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

Completeness3/5

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

For a simple rename with no output schema and annotations already covering safety and idempotency, the essentials are present. However, with 0% schema coverage on four parameters and no statement of failure behavior on a duplicate name, the definition is only 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 four required parameters, so the description must carry the semantics. It clarifies the 'name' parameter (lower-cased, unique, 200-char limit implied by schema) but says nothing about organizationId, projectId, or clusterId, leaving three of four parameters undocumented.

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

Purpose5/5

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

States a specific verb (rename) and resource (query cluster) that is unambiguous and clearly distinct from siblings like create_clusters, delete_cluster, and set_tracked_query_clusters. An agent can identify the operation without opening the schema.

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

Usage Guidelines2/5

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

The description says what the tool does but never states when to use it versus alternatives such as set_tracked_query_clusters or create_clusters, nor any prerequisites beyond uniqueness. No exclusions or routing guidance are given.

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

report_ai_responseReport a wrongly analysed AI answerAInspect

Flag a captured AI answer whose analysis is wrong - most often a brand or competitor mention that was missed - so Mencoro reviews it. type "missed_mention" or "other"; comment says what is wrong. Find the ids with list_ai_responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
commentNo
projectIdYes
requestIdNo
aiResponseIdYes
organizationIdYes
trackedQueryIdYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare this is not read-only, not destructive, not idempotent. The description adds the meaningful behavior that submitting creates a review request for Mencoro, which is real side-effect context beyond the annotations. However it says nothing about permissions, whether repeat reports are deduplicated/queued, or what the caller gets back on success or failure of the ID chain.

Agents need to know what a tool does to the world before 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 tight sentences with zero filler: purpose and outcome first, then the parameter essentials, then where to find the ids. Everything is front-loaded and each sentence 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?

There is no output schema, so the description should convey the observable result of the call; it only implies an out-of-band human review and never says what the caller receives or how to tell success from failure. For a mutation tool with five required ID params at 0% schema coverage, that leaves meaningful 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 description coverage is 0%, so the description must carry parameter meaning, and it does explain the two semantically non-obvious params: 'type' (enum values restated in prose) and 'comment' (says what is wrong, 1000-char cap unmentioned). The four ID parameters and 'requestId' are entirely unexplained, including the fact that trackedQueryId/projectId/organizationId must be consistent with the aiResponseId.

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: 'Flag a captured AI answer whose analysis is wrong ... so Mencoro reviews it.' It further scopes the most common case ('a brand or competitor mention that was missed'), which distinguishes it from read-only siblings like get_mention_samples or list_ai_responses.

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 operating instructions: pick type 'missed_mention' or 'other', put the explanation in 'comment', and obtain the needed ids from list_ai_responses. That is a clear when/how-to-use path with an explicit alternative tool for id lookup. It lacks any when-not guidance (e.g. don't report a mention that was never expected, or duplicates).

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

restore_organizationRestore an organizationAInspect

Bring an archived organization back to active. Requires a confirmationToken: call preview_operation with tool "restore_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes
confirmationTokenYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare the safety profile (non-read-only, non-destructive, non-idempotent). The description adds content beyond that: the mandatory two-step confirmation protocol and the permission/role gate, both of which materially change how an agent should sequence the call.

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

Conciseness4/5

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

Front-loaded with purpose, then the gating workflow, then permissions; no filler sentences. The middle sentence is long and packs several steps into one clause chain, but every element is load-bearing.

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 output schema and no annotation detail, the description covers purpose, prerequisite flow, and authorization. The only gap is the return value/outcome of a successful restore, which is minor given the operation'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?

Schema coverage is 33%, so the description must compensate. It does so for confirmationToken by explaining it is obtained from preview_operation, and requestId is self-documented in the schema, but organizationId has no description anywhere. A strong partial compensation, not complete.

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 ('Bring an archived organization back to active'), clearly the inverse of the sibling archive_organization. An agent can distinguish it from restore_project and update_organization without opening any 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?

Gives an explicit prerequisite workflow: call preview_operation with tool 'restore_organization' and these arguments, show the plan, and only proceed after explicit user agreement. It also names the required permission (organization:manage) and role (owner), which is exactly the when-can-I-use-this information an agent needs.

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

restore_projectRestore an archived projectA
Idempotent
Inspect

Bring an archived project back: it reappears in the project list and its active tracked queries are checked again on their schedule.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYes
organizationIdYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations cover the safety profile (idempotentHint=true, destructiveHint=false, readOnlyHint=false), so the bar is lower. The description adds genuinely useful behavioral context beyond them: the project reappears in the list and its active tracked queries resume running on their schedule, which is a real side effect not captured in annotations. It omits permission requirements, but that is a modest gap.

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

Conciseness5/5

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

One sentence, front-loaded with the core action and followed by the observable effect. No filler text.

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 mutation tool with annotations carrying the safety profile, behavioral completeness is good. The only shortfall is the undocumented parameters, but the required inputs are obvious and no output schema exists to explain.

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 organizationId nor projectId is explained in the description. The parameter names are largely self-evident, but the description does nothing to compensate for the total absence of schema-level documentation.

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

Purpose5/5

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

The description states a specific verb ('bring an archived project back') and resource, and it is distinguishable from sibling tools archive_project and restore_organization by naming the project scope. An agent can tell exactly what this does without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied by the name and the inverse relationship to archive_project, but the description never states when to use this versus alternatives or any precondition (e.g., the project must currently be archived). No explicit when/when-not guidance is given.

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

run_checksCheck tracked queries nowAInspect

Check tracked queries now instead of waiting for their schedule: name up to 100 in trackedQueryIds, or pass all: true for every active tracked query of the project, however recently it was checked (a query whose check is still running is skipped). Each check spends budget (one per pass). Requires a confirmationToken: call preview_operation with tool "run_checks" and these arguments first, show the returned plan (which checks run, what they cost) to the user, and call this tool only after the user explicitly agrees. Results arrive over the next minutes; read them with the analytics tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNo
projectIdYes
requestIdNo
organizationIdYes
trackedQueryIdsNo
confirmationTokenYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only reveal the safety profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true); the description goes well beyond by disclosing the budget cost ('one per pass'), the confirmationToken precondition and its provenance, and the asynchronous result timing ('over the next minutes'). These are the operational traits an agent must know before invoking.

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 purpose, then selection, constraint, cost, prerequisite workflow, and result retrieval — a logical order with no filler sentences. It is dense at five sentences, but each carries distinct actionable information, and the long confirmation paragraph is warranted by the user-consent requirement.

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 an async, budget-spending, confirmation-gated trigger with no output schema, the description supplies everything an agent needs: what gets run, what it costs, the prerequisite preview/user-consent loop, and where results eventually land. Nothing material is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden and it largely does: trackedQueryIds is bounded ('up to 100'), all: true is explained as covering every active tracked query, and confirmationToken's required source is documented. organizationId, projectId, and especially requestId receive no explanation, leaving one parameter fully opaque.

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 ('Check tracked queries now instead of waiting for their schedule') with explicit scope: either up to 100 named queries or all active ones. An agent can distinguish this immediate-trigger action from scheduled ranking activity 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 Guidelines5/5

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

Spells out the two mutually alternative selection modes (trackedQueryIds vs all: true), the precise workflow required before calling (preview_operation with the same tool name and arguments, show the plan, wait for explicit user agreement), and where to read results afterward. The exclusions are named too — a query whose check is still running is skipped.

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

search_tracked_queriesSearch tracked queriesA
Read-onlyIdempotent
Inspect

Search and paginate the tracked queries (keywords) of a project with their latest rank positions and metrics. Filter by status (active/paused), engines, countries and a free-text search. Sort by one of: queryText, lastSerpPosition, lastMentionPosition, lastShoppingPosition, lastShareOfVoice, lastPositivityIndex, lastMentionCount, lastCheckedAt. limit is 1-100 (default 20). Answers questions like "list my top queries by share of voice" or "find a specific tracked query".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
sortByNoqueryText
statusNo
enginesNoallowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping
countriesNoISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters
projectIdYes
sortOrderNodesc
organizationIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds useful behavior beyond them: pagination via limit/offset, the 1-100 bound with a default of 20, and the fact that results carry latest rank positions and metrics.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action before filters, sort options, and pagination limits. Dense but every sentence carries information; the long sortBy enumeration is slightly list-heavy.

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 10-parameter read with no output schema and thin schema descriptions, the description supplies the missing filter/sort/pagination semantics and tells the agent what the results contain. Only minor gaps remain (offset semantics, sort default direction).

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 only 20%, so the description must compensate, and it largely does: it enumerates the sortable fields matching sortBy's enum, states the limit range and default, and names the filter axes (status, engines, countries, free-text search). It still doesn't clarify offset behavior or org/project ID roles, hence not a 5.

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 ('Search and paginate the tracked queries (keywords) of a project') and its scope, plus what data accompanies each result (latest rank positions and metrics). An agent can distinguish it from get_tracked_query (single fetch) or create_tracked_queries without opening schemas.

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

Usage Guidelines4/5

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

Gives clear context: filter by status/engines/countries/free-text, sort by a named set, and example intents like 'list my top queries by share of voice'. It does not explicitly exclude alternatives (e.g. use get_tracked_query for a single query), 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.

set_tracked_query_clustersAdd or remove tracked queries from clustersA
Idempotent
Inspect

Add up to 100 tracked queries to one or more query clusters ("add"), or take them out ("remove"). Other cluster memberships are left alone. Each tracked query that cannot be changed is reported in "failed" without stopping the rest. Safe to retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationYes
projectIdYes
organizationIdYes
queryClusterIdsYes
trackedQueryIdsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, and the description usefully reinforces this with 'Safe to retry' and 'Other cluster memberships are left alone'. It also adds genuinely new behavior not in annotations: the partial-failure contract ('reported in failed without stopping the rest') and the 100-item batch cap.

Agents need to know what a tool does to the world before 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, front-loaded with the add/remove action, then scope, then failure/retry behavior. No filler or restated boilerplate.

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

Completeness4/5

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

For a mutating batch tool, the description covers the essential operational facts: batch size, non-destructive scope, partial-failure reporting, and retry safety. The remaining gap is that it does not clarify what the ID parameters refer to or whether partial failures are surfaced in a response body (no output schema exists).

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 carry parameter meaning, and it only covers two of five parameters: operation ('add'/'remove') and the 100-item ceiling for tracked queries. organizationId, projectId, and queryClusterIds receive no explanation at all, leaving the bulk of the required inputs undocumented.

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

Purpose5/5

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

The description names a specific verb pair (add/remove), the resource (tracked queries), and the container (query clusters), and maps each operation to the enum values. An agent can distinguish this from siblings like create_clusters or apply_auto_clustering 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 add/remove semantics imply when to use each mode, and 'Other cluster memberships are left alone' scopes the effect. However, no alternative tool is named (e.g. when to use this versus create_clusters or update_tracked_queries), so routing guidance is only implied.

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

start_auto_clusteringPropose query clusters automaticallyAInspect

Start a background job that proposes how to group up to 500 tracked queries into clusters. mode "fill_gaps" places only queries that have no cluster yet; "add_on_top" adds clusters without touching existing memberships; "full_regroup" proposes a fresh grouping of every query. restrictToExistingClusters only uses the project's current clusters. Nothing changes until apply_auto_clustering: poll get_job, show the proposal to the user, then apply it. Requires an active subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
projectIdYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes
trackedQueryIdsYes
restrictToExistingClustersNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only declare the generic non-read-only/non-destructive profile, so the description carries real weight: it discloses that this is asynchronous background work, that it is non-mutating until apply_auto_clustering, that get_job must be polled, and that a subscription is required. It doesn't mention concurrency/rate behavior or what identifier the job returns.

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

Conciseness5/5

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

Dense but every sentence earns its place: scope, mode semantics, restriction flag, lifecycle warning, and prerequisite. The critical 'nothing changes until apply' constraint is front-loaded before the follow-up steps.

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

Completeness4/5

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

For a 6-parameter async job-starter with no output schema, the description covers the modes, the non-mutating contract, and the poll/apply chain. It stops short of naming the return value (a job handle) that an agent must capture to poll get_job.

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 only 17% (requestId alone), but the description compensates by defining all three mode values and the restrictToExistingClusters semantics, plus the 500 cap on trackedQueryIds. organizationId and projectId are left to their self-evident names, which is acceptable.

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 ('start a background job that proposes how to group ... tracked queries into clusters') with the 500-query scope. It is clearly distinguishable from the sibling apply_auto_clustering, which is named as the downstream commit step.

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?

Enumerates the three mode behaviors, explains restrictToExistingClusters, and specifies the operational flow: nothing changes until apply_auto_clustering, poll get_job, show the proposal, then apply. Prerequisite (active subscription) is stated.

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

suggest_brand_namesSuggest brand namesAInspect

Start a background job that proposes the names a brand is mentioned by, from its name and website - the first step of setting up a project, before it exists. Poll get_job for the result and confirm the names with the user before create_project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
countryNo
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes
websiteDomainsYes
enteredBrandNamesNoNames the user already knows the brand by

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover safety (readOnlyHint=false, destructiveHint=false, openWorldHint=true) but say nothing about execution model. The description adds a crucial trait the annotations omit: this is asynchronous ('start a background job') and results must be retrieved by polling get_job. It does not restate the idempotency signal, but that is documented in 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 sentences, front-loaded with what the tool does, followed by the operational follow-up. Every clause carries load (purpose, workflow position, polling, user confirmation) 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?

There is no output schema, but the description compensates by telling the agent where results come from (poll get_job) and what to do with them (confirm with the user). The main gap is that the non-required parameters (country, enteredBrandNames) are left unexplained in a 6-param 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 coverage is only 33% across 6 parameters, so the description must compensate and does not. It implies name and websiteDomains are inputs ('from its name and website') but never explains country, organizationId, requestId, or enteredBrandNames, leaving over half the parameters undocumented in either place.

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?

Specific verb and resource: 'Start a background job that proposes the names a brand is mentioned by, from its name and website.' It further pins the tool's place in the workflow ('first step of setting up a project, before it exists'), which distinguishes it from siblings like discover_brands and create_project.

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

Usage Guidelines5/5

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

Explicit sequencing guidance: use this before the project exists, then 'Poll get_job for the result' and 'confirm the names with the user before create_project.' It names the dependent tool (get_job) and the downstream tool (create_project), leaving nothing to inference.

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

update_competitorUpdate a competitorA
Idempotent
Inspect

Replace a competitor's name, website domains and brand names. Replaces all three: pass every domain and name the competitor should keep. Safe to retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
projectIdYes
brandNamesYes
competitorIdYes
organizationIdYes
websiteDomainsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false, so 'Safe to retry' is partially redundant. The description's real added value is warning that omitted values are dropped, which is behavioral disclosure an agent cannot infer from the annotations.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and the critical replace-all constraint; no filler or repetition.

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

Completeness4/5

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

For a 6-required-param mutation with no output schema, the description supplies the essential mental model (full replacement, retry-safe). It leaves the identifier parameters and any validation or error behavior unexplained, but the annotations cover the safety profile.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry the burden and it does explain that name, websiteDomains and brandNames are replace-all fields. It says nothing about the three identifier parameters (organizationId, projectId, competitorId) beyond their names, and adds no format or array-handling detail.

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') and the three resources affected (name, website domains, brand names), which cleanly separates it from create_competitor and delete_competitor in the sibling 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?

Gives the key operational rule — it is a full replacement, so every domain and name that should be kept must be passed. No alternative tools or when-not-to-use conditions are named, but the replacement contract is spelled out.

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

update_memberChange a memberA
Destructive
Inspect

Change an organization member: operation "change_role" gives them another role (pass role), "suspend" takes their access away without removing them, "reactivate" gives it back. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "update_member" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
memberIdYes
operationYes
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
organizationIdYes
confirmationTokenYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that: the confirmationToken gating, the permission/role prerequisite, and the clarification that memberId comes from list_members rather than being a user id. It does not say what state change is irreversible for suspend or what happens to a member's role when suspended.

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-loads the operation semantics, then the id-source caveat, then the confirmation/permission requirements. Dense but every clause carries information; slightly long as a single unbroken block rather than segmented.

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

Completeness4/5

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

For a destructive mutation with no output schema and low schema coverage, the description covers the operands, the id source, the confirmation workflow, and the permission gate. The remaining gap is the outcome/response of the call and whether 'role' is mandatory for change_role, but nothing critical to correct invocation is missing.

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

Parameters4/5

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

Schema coverage is only 17%, so the description must carry the load, and it does substantially: it explains each operation value, that 'role' is the role to pass for change_role, that memberId is the member id from list_members, and that confirmationToken must come from preview_operation. It leaves organizationId and the idempotency semantics of requestId entirely to the schema.

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

Purpose5/5

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

Names the resource (organization member) and enumerates the three concrete operations (change_role, suspend, reactivate) with their effect in plain terms. An agent can distinguish this from invite_member or list_members 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 Guidelines5/5

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

Explicitly states the required precondition workflow: call preview_operation with tool 'update_member' and these arguments, show the plan, and call only after explicit user agreement. It also states the auth requirements (organization:manage permission and owner role), which is exactly when-to-use guidance.

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

update_organizationUpdate an organizationA
Idempotent
Inspect

Change the name, description or contact email of an organization; arguments left out are unchanged. Requires a confirmationToken: call preview_operation with tool "update_organization" and these arguments first, show the returned plan to the user, and call this tool only after the user explicitly agrees. Needs the organization:manage permission and the owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
requestIdNoOptional idempotency key, 8-255 printable characters. Reuse it only to retry this same call.
descriptionNo
contactEmailNo
organizationIdYes
confirmationTokenYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description goes further by disclosing partial-update semantics ('arguments left out are unchanged'), a mandatory confirmation-token workflow, and the authorization prerequisites. That is material behavioral context beyond what the structured fields provide.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the mutation scope and the partial-update rule before the procedural requirements. The middle sentence is long but every clause (tool name, show plan, explicit agreement) is load-bearing, so little could be cut without losing safety-relevant instruction.

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

Completeness4/5

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

For a 6-parameter mutation tool with no output schema and thin schema descriptions, this covers the essentials: scope, partial-update behavior, authorization, and the required two-step confirmation. Minor gaps remain (error behavior on an invalid or expired token, uniqueness rules for the new name), but nothing required to invoke it correctly is missing.

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

Parameters4/5

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

With only 17% schema description coverage, the description carries most of the burden and does so well: it enumerates name/description/contactEmail, explains the omit-to-leave-unchanged semantics for all optional fields, and explains confirmationToken's role. organizationId is not otherwise explained, but its meaning is unambiguous from the name and schema type.

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

Purpose5/5

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

States a specific verb (Change) plus the exact resource and the three mutable fields (name, description, contactEmail), instantly distinguishing it from siblings like update_project, update_member, and update_competitor. An agent knows exactly what this tool alters 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 Guidelines5/5

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

Gives explicit when-to-use mechanics: preview_operation must be called first with tool "update_organization" and the same arguments, the plan shown to the user, and this tool invoked only after explicit user agreement. It also states the required permission (organization:manage) and role (owner), leaving nothing to inference.

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

update_projectUpdate a projectA
Idempotent
Inspect

Rename a project, replace the website domains and brand names it is monitored for, or both. brandProfile replaces both lists entirely: pass every domain and name the project should keep. Safe to retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
projectIdYes
brandProfileNoReplaces the website domains and brand names the project is monitored for.
organizationIdYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is partly structured. The description goes beyond them with the critical 'brandProfile replaces both lists entirely: pass every domain and name the project should keep', which warns that unspecified entries are dropped, and 'Safe to retry' restates idempotency in operator-friendly terms.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the two actions and immediately followed by the replace semantics, which is the highest-value detail. The trailing 'Safe to retry' is slightly redundant with idempotentHint=true but is short enough not to be wasteful.

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

Completeness4/5

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

For a mutation tool with no output schema, the description covers what changes, how the list parameters behave, and retry safety. Remaining gaps are minor: permission requirements and how to confirm success are not stated, but nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is only 25%, and only brandProfile carries an inline schema description, so the description must compensate. It does so for the highest-risk parameter by spelling out replacement semantics and the requirement to re-send all retained values; name is covered by 'rename', while organizationId/projectId are self-evident identifiers.

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

Purpose4/5

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

Names specific operations and the affected resource: renaming a project and replacing its monitored website domains and brand names. This is enough to separate it from update_organization, update_competitor, or rename_cluster by resource, though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

The phrase 'or both' makes clear the two operations are independently optional, which is real usage guidance. However there is no when-not guidance, no mention of prerequisites such as ownership/admin rights, and no reference to siblings like preview_operation for validating the change first.

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

update_tracked_queriesChange tracked queriesA
Idempotent
Inspect

Change up to 100 tracked queries at once. operation "pause" stops their checks, "resume" restarts them, "set_check_frequency" changes how often they are checked (pass checkFrequency), "set_passes" changes how many answers each check captures (pass nPasses; above 1 only for AI engines). Lower frequency or fewer passes spend less budget; use get_usage to see the effect. Each one that cannot be changed is reported in "failed". Safe to retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nPassesNo
operationYes
projectIdYes
checkFrequencyNo
organizationIdYes
trackedQueryIdsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false, so the safety profile is covered. The description adds non-obvious behavior: partial failures are reported per-item in "failed", and the operation is explicitly "Safe to retry" — useful context beyond the structured hints. It could say more about the failure shape (e.g. what the failure objects contain), keeping it below a 5.

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

Conciseness4/5

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

Every sentence is load-bearing: batch limit, operation semantics, constraints, budget impact, failure reporting, retry safety. It is dense rather than bloated and leads with the core capability, though the tightly packed parentheticals make it slightly harder to scan than an ideal 5.

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

Completeness4/5

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

For a 6-parameter batch mutation with no output schema, the description covers operation semantics, parameter constraints, budget consequences, partial-failure reporting, and retry safety — enough for correct invocation. Only the identifiers (organizationId/projectId) and the exact failure payload are left unspecified.

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

Parameters4/5

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

Schema description coverage is 0%, so the description carries the burden, and it does: all four operation enum values are defined, checkFrequency and nPasses are tied to their triggering operations, the nPasses>1 constraint is stated, and the 100-item cap on trackedQueryIds is surfaced. organizationId/projectId are left implicit, which is the only gap.

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

Purpose5/5

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

States a specific verb+resource (batch-changing tracked queries) and immediately enumerates the four supported operations, which cleanly separates it from create_tracked_queries, delete_tracked_queries, and set_tracked_query_clusters. An agent can identify the tool's scope 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 Guidelines4/5

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

Gives operation-level guidance (pause stops checks, resume restarts, set_check_frequency needs checkFrequency, set_passes needs nPasses, nPasses>1 only for AI engines) and points to get_usage to gauge budget impact. It lacks explicit when-not-to-use framing or a direct pointer to the sibling tools an agent might confuse it with, so it falls short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 60 tool updatesv1.1.0
    • Addedapply_auto_clustering
    • Addedarchive_organization
    • Addedarchive_project
    • Addedcancel_invitation
    • Addedcreate_clusters
    • Addedcreate_competitor
    • Addedcreate_organization
    • Addedcreate_project
    • Addedcreate_tracked_queries
    • Addeddelete_cluster
    • Addeddelete_competitor
    • Addeddelete_tracked_queries
    • Addeddiscover_brands
    • Addeddiscover_keywords
    • Addeddiscover_prompts
    • Addedget_available_filters
    • Addedget_cited_sources
    • Addedget_cluster_breakdown
    • Addedget_competitor_cooccurrence
    • Addedget_job
    • Addedget_mencoro_guide
    • Addedget_mention_mix
    • Addedget_mention_samples
    • Addedget_metric_glossary
    • Addedget_organization
    • Addedget_organization_overview
    • Addedget_project
    • Addedget_project_rank_tracking_stats
    • Addedget_query_movers
    • Addedget_rank_tracking_time_series
    • Addedget_sentiment_breakdown
    • Addedget_share_of_voice_formula
    • Addedget_tracked_query
    • Addedget_tracked_query_matches
    • Addedget_tracked_query_time_series
    • Addedget_tracking_coverage
    • Addedget_usage
    • Addedinvite_member
    • Addedlist_ai_responses
    • Addedlist_clusters
    • Addedlist_keyword_listings
    • Addedlist_members
    • Addedlist_projects
    • Addedlist_search_snapshots
    • Addedlist_untracked_competitors
    • Addedpreview_operation
    • Addedrename_cluster
    • Addedreport_ai_response
    • Addedrestore_organization
    • Addedrestore_project
    • Addedrun_checks
    • Addedsearch_tracked_queries
    • Addedset_tracked_query_clusters
    • Addedstart_auto_clustering
    • Addedsuggest_brand_names
    • Addedupdate_competitor
    • Addedupdate_member
    • Addedupdate_organization
    • Addedupdate_project
    • Addedupdate_tracked_queries
  2. 1 tool updatev1.0.0
    • First observedmencoro_setup

TDQS

A3.7/5.0

Scored across 61 tools

Disambiguation4/5

Despite 61 tools, descriptions are unusually explicit, with many tools cross-referencing their neighbors (e.g. get_mention_mix vs get_sentiment_breakdown vs get_mention_samples, project-level vs per-query time series) to steer selection. A few boundaries remain soft—list_keyword_listings, search_tracked_queries and get_project_rank_tracking_stats all surface overlapping query metrics—but most purposes are clearly distinct.

Naming Consistency4/5

Nearly all names follow a snake_case verb_noun pattern (get_*, list_*, create_*, update_*, delete_*, restore_*, archive_*, run_*, discover_*). Minor deviations exist where the noun is dropped or a different verb is chosen (search_tracked_queries instead of list_, preview_operation, mencoro_setup), but the convention is broadly predictable.

Tool Count2/5

61 tools is far beyond the 25-tool threshold, and many are narrow single-metric readers (get_share_of_voice_formula, get_metric_glossary, get_cluster_breakdown, etc.) that could be consolidated into fewer parameterized tools. The domain is genuinely broad, but the surface is too heavy for an agent to navigate efficiently.

Completeness5/5

The surface covers full lifecycles for organizations, projects, competitors, clusters, tracked queries, members and invitations, plus analytics, background jobs, feedback reporting and a confirmation/preview flow. Almost no obvious dead ends remain; archive/restore and pause/resume cover non-destructive alternatives.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    22 npm
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to check brand mentions across AI search surfaces like ChatGPT, Claude, Gemini, Perplexity, and Google AI Overviews using natural language queries.
    4
    3 npm
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to monitor and analyze a brand's visibility across ChatGPT, Claude, Perplexity, and Google AI Overviews, providing insights, recommendations, and competitive analysis without switching tabs.
    25
    20 npm
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Monitors brand mentions, citations, sentiment, competitor share of voice, and GEO performance across AI search engines.
    1
    1
    MIT