Mencoro MCP server
You can use the Mencoro MCP server to ask an AI assistant to inspect your brand’s AI/search visibility and to set up and tune Mencoro monitoring.
Read organizations, projects, competitors, filters, clusters, tracked queries, usage, coverage, and job status.
Analyze rank positions and trends, share of voice, sentiment, mention mix and samples, query movers, cluster breakdowns, time series, head-to-head co-occurrence, cited sources, captured AI answers, and search/shopping snapshots.
Manage projects, competitors, tracked queries, and clusters: create/update/archive/restore, bulk pause/resume/change frequency or passes, delete, assign to clusters, and run auto-clustering.
Run checks now, discover brands/keywords/prompts, suggest brand names, and report mis-analysed AI answers.
With organization:manage, create/update/archive/restore organizations and manage invitations, member roles, project access, suspension, and reactivation.
Use preview_operation plus confirmation tokens for confirmable/destructive writes, with read, write, and organization:manage scopes.
Access the public Mencoro guide without signing in; otherwise connect via hosted remote MCP or the local stdio bridge using OAuth or a personal access token.
Tracks brand presence across Google Search, Shopping, AI Overview, and AI Mode, providing metrics such as rank, mentions, sentiment, and Share of Voice.
Tracks brand presence in ChatGPT AI answers, providing metrics such as rank, mentions, sentiment, and Share of Voice.
Tracks brand presence in Perplexity AI answers, providing metrics such as rank, mentions, sentiment, and Share of Voice.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mencoro MCP serverHow is my brand performing in AI search results?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 67 tools (31 that
read, 36 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/mcpThis 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
Clients that speak remote MCP (recommended)
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 |
|
Cursor | |
VS Code | |
OpenAI Codex | |
Gemini CLI | |
OpenCode | |
Google Antigravity |
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 |
| Every read tool. Always granted. |
| Creating, changing and deleting projects, competitors, clusters and tracked queries; running checks; starting discovery jobs. |
| 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
Authorizationheader 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 35 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 |
| The organizations and active projects you can see. Call this first — every other tool needs the ids it returns. |
| One project's status, website domains, brand names and competitors with their ids. |
| A project's keyword clusters, by name, with their ids. |
| Which engines, countries, keyword clusters and competitors a project actually has. |
| Maps everyday wording ("visibility", "tone", "ranking") onto the right metric and tool. |
| Current-state board across every active project in an organization, ranked by Share of Voice. |
| An organization's profile, status, your role in it, and its member, project and invitation counts. |
| An organization's members with their role and state, optionally with pending invitations. Owners only. |
| The subscription, tracked-query count and projected monthly checks, against the plan's limits. |
| The project summary: positions, trends, Share of Voice per competitor, sentiment split, mention/SERP/shopping rates. |
| Those metrics over time, bucketed daily, weekly or monthly, optionally per competitor. |
| The same history for one tracked query. |
| The tracked queries that gained or lost the most versus the previous period. |
| The same metrics broken down per keyword cluster. |
| Search and paginate a project's tracked queries with their latest positions. |
| One tracked query's settings: text, engine, country, status, frequency, passes, clusters and last check. |
| One row per query text across its engine and country variants, with every metric, sortable. |
| What is stale: paused, never-checked and overdue tracked queries. |
| Positive / neutral / negative split of your AI mentions, per engine and per competitor. |
| Mention counts by type, tone and qualifier — the inputs behind the Share of Voice weighting. |
| The raw AI mention texts, paginated and filterable, for qualitative review. |
| The weights and multipliers the Share of Voice score is built from. |
| Head-to-head: when you and a competitor appear in the same answer, who is named higher. |
| The domains and pages the answer engines cited, with counts and average citation rank. |
| The captured AI answers themselves: full text, engine, capture time and cited sources. |
| The captured Google Search and Shopping result pages. |
| Every mention or ranking behind one tracked query's metrics. |
| Progress and result of a background job started by a discovery or clustering tool. |
| What a confirmable change would affect and cost, plus the one-time token to run it. |
| Brands the AI answers name that you do not track yet, most-seen first: the competitors worth adding. |
| 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 a project from brand names and domains. | |
|
| Rename a project, or replace its website domains and brand names. | |
|
| C | Archive a project; its tracked queries stop being checked. |
|
| Bring an archived project back. | |
|
| Add a competitor to a project. | |
|
| Replace a competitor's name, website domains and brand names. | |
|
| C | Remove a competitor with every mention and search or shopping result recorded for it. |
|
| C | Add tracked queries in bulk across engines and countries; the preview shows the checks they will spend. |
|
| Pause up to 100 tracked queries; skipped checks are not made up. | |
|
| Resume up to 100 paused tracked queries. | |
|
| Change how often up to 100 tracked queries are checked. | |
|
| Change how many answers each check of up to 100 tracked queries captures. | |
|
| C | Delete up to 100 tracked queries with their captured answers, matches and history. |
|
| C | Check tracked queries now, spending budget. |
|
| Flag a captured AI answer that was analysed wrong. | |
|
| Create keyword clusters. | |
|
| Rename a cluster. | |
|
| C | Delete a cluster; its tracked queries stay. |
|
| Add tracked queries to clusters. | |
|
| Remove tracked queries from clusters. | |
|
| Start a job that proposes a clustering. | |
|
| Apply a proposal the user approved. | |
|
| Start a job that suggests brand names for a website. | |
|
| Start a job that finds other names a project's brand and its competitors go by. | |
|
| Start a job that proposes search keywords worth tracking. | |
|
| Start a job that proposes AI prompts worth tracking. | |
|
| C | Create an organization. |
|
| C | Change an organization's name, description or contact email. |
|
| C | Archive an organization. |
|
| C | Restore an archived organization. |
|
| C | Invite someone by email with a role and, optionally, the projects they will reach. |
|
| C | Cancel a pending invitation. |
|
| C | Give a member another role. |
|
| C | Limit a member to selected projects, or give them every project back. |
|
| C | Suspend a member, taking their access away. |
|
| C | Give a suspended member their access back. |
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 |
| 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. |
| Find new prompts or keywords worth tracking and add the ones you pick. |
| Let Mencoro propose a clustering, review it, and apply it. |
| 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 |
| A structured report for a period against the previous one, ending with recommended actions. |
| Whether a change (content, PR, a launch) moved visibility, before and after against a baseline. |
| A prioritised list of what to improve: where competitors win, sources to be present on, sentiment and coverage gaps. |
| 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 toolsDocker
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
| Personal access token. Without it the bridge still starts and still advertises the full catalogue; |
| Upstream endpoint. Defaults to |
| Same, as an argument. |
| Extra HTTP header, repeatable. An |
| Connect once, print the server version, negotiated protocol, tool and prompt catalogue, then exit. |
|
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 |
|
Batches | Tools that act on tracked queries or clusters by id take at most 100 per call (500 for |
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
| The stdio bridge published as |
| What the hosted server advertises, served by the bridge when it has no credential. |
| Manifest and catalogue checks run by CI. |
| The MCP registry manifest. |
| Glama directory ownership metadata. |
| ChatGPT app submission metadata and tool justifications. |
| Ten reusable Mencoro workflows for ChatGPT: six analyses and four guided changes. |
| The image published to |
| 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 currentTests run the TypeScript sources directly through Node's type stripping, so development needs Node 22.18 or newer. The published package targets Node 22+, 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
Product and account questions — support@mencoro.com
Bugs in this package — open an issue
Security — see SECURITY.md
About the server — mencoro.com/features/mcp-server
Privacy policy — mencoro.com/legal/#privacy
Terms of service — mencoro.com/legal/#terms
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
68 toolsadd_tracked_queries_to_clustersAdd tracked queries to clustersBIdempotentInspect
Add up to 100 tracked queries to one or more query clusters. Other cluster memberships are left alone. Each tracked query that cannot be changed is reported in "failed" without stopping the rest. Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes | ||
| queryClusterIds | Yes | ||
| trackedQueryIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive, idempotent, closed-world behavior, and the description still adds real value: the 100-item cap, additive (non-exclusive) membership semantics, and partial-failure handling where failures land in a 'failed' field without aborting the rest. 'Safe to retry' reinforces idempotency with operational meaning. It stops short of saying whether the whole call fails atomically or how the 'failed' entries are shaped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and cap, then additive semantics, then failure behavior, then retry safety. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations covering safety and no output schema, the description covers scope, cap, additivity, partial failure, and retry safety – enough to invoke correctly. The main remaining gap is that no parameter is described at 0% schema coverage, so an agent must infer which ID goes where.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 not name or explain organizationId, projectId, trackedQueryIds, or queryClusterIds, nor their ID formats or the requirement that queries and clusters belong to the given project/organization. It only vaguely gestures at 'tracked queries' and 'query clusters' and never notes that the 100 cap applies to each array independently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add ... tracked queries to ... query clusters') plus the batch ceiling, so the operation is unambiguous. It does not explicitly contrast with the sibling remove_tracked_queries_from_clusters, leaving the agent to infer the inverse relationship from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as remove_tracked_queries_from_clusters, create_clusters, or apply_auto_clustering, nor any stated prerequisites (e.g. that clusters must already exist). The only usage-adjacent statement, 'Other cluster memberships are left alone,' describes effect rather than selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_auto_clusteringApply a proposed clusteringADestructiveInspect
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. In "full_regroup" mode a tracked query the proposal places also leaves every cluster the proposal did not put it in; "fill_gaps" and "add_on_top" only add. No cluster or tracked query is deleted. 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. The response lists each tracked query's resulting clusters, not the memberships removed, so 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.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | ||
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description offers highly specific behavioral context beyond the annotations, detailing naming conventions (lower-cased reuse), cluster handling logic (what remains in 'full_regroup' mode), and the limitations of the response (it only shows resulting clusters, not memberships removed).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is quite long, which detracting from conciseness. However, every sentence is packed with unique, high-value technical constraints, so its density is appropriate despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of cluster management, operational modes, and the necessity of idempotency, the description is remarkably complete. It covers the how, why, and when of using this complex mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given that schema coverage is low (25%), the description provides vital semantic context. It specifies that `jobId` must belong to a *completed* job and details the required logic for the `requestId` to ensure idempotency on retry.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: applying a proposal from a completed auto-clustering job. It distinguishes itself by clarifying that it executes the job's proposed grouping, which is a more active process than just creating a cluster.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
This description provides excellent workflow guidance. It specifies usage based on operation modes ('full_regroup', 'fill_gaps', 'add_on_top') and gives a critical warning that the user must check the 'get_job' output first, preventing incorrect tool invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_organizationArchive an organizationADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
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.
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.
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.
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.
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.
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 projectADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| requestId | No | ||
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
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.
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.
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.
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.
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.
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 invitationADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| invitationId | Yes | ||
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
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.
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.
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.
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.
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.
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.
change_member_roleChange a member's roleADestructiveInspect
Give an organization member another role: owner, manager or viewer. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "change_member_role" 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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| memberId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this destructive and non-idempotent, and the description adds substantive context beyond that: the mandatory confirmationToken/preview flow, the permission and owner-role requirements. This tells the agent how to sequence the call and what authority is needed, which is exactly the burden a destructive mutation must carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action and the allowed roles, then the id caveat, then the gating workflow. Every clause carries information, though the token-flow sentence is dense enough that it could be split for scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 thin parameter coverage, the description covers the critical gaps: authorization, confirmation sequencing, and identifier source. It does not say whether the new role replaces the current one or whether constraints exist (e.g. demoting the last owner), which an agent would want before acting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (just requestId is documented), so the description must compensate, and it largely does: it defines memberId's provenance, lists the role enum values, and explains the purpose of confirmationToken. Only organizationId is left unexplained, which holds it below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Give an organization member another role') and enumerates the exact target values (owner, manager, viewer). It also disambiguates the key identifier by pointing to list_members and explicitly ruling out the user id, which separates it from sibling tools like set_member_project_access and invite_member.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete pre-flight workflow: call preview_operation with tool "change_member_role", show the plan, and only proceed after explicit user agreement — an unusually clear when-to-call gate. It also states access prerequisites (organization:manage permission plus owner role). It does not name alternative siblings for adjacent operations, so it stops short of the full when/when-not/alternatives bar.
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 add_tracked_queries_to_clusters, or let start_auto_clustering propose groups. Pass a fresh requestId and reuse it if you retry.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | ||
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavior well beyond the annotations: names are stored lower-cased, must be unique per project, and failures are per-name and non-blocking ('reported in failed without stopping the rest'). It also explains the idempotency-key retry semantics, which is the key nuance given idempotentHint=false (repeats would otherwise duplicate).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and limits, then behavioral caveats, then next steps. Dense but every clause carries information; the second sentence is long and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, it covers failure handling, normalization, limits, and retry guidance. It doesn't describe the overall response shape beyond the 'failed' field, leaving the success payload implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, but the description compensates by explaining the normalization and uniqueness rules that govern the names array and the retry semantics for requestId. organizationId and projectId remain undocumented, though they are conventional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create), resource (query clusters), and scope (up to 100 per project), plus a plain-language gloss of what a cluster is. An agent can distinguish this from list_clusters, rename_cluster, and the auto-clustering 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Points to add_tracked_queries_to_clusters for populating clusters and start_auto_clustering as an alternative way to propose groups, and explains the retry contract for requestId. It doesn't explicitly say when to create manually versus using auto-clustering, but the follow-up paths are clear.
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. list_untracked_competitors shows the brands AI answers name that are not tracked yet. Pass a fresh requestId and reuse it if you retry.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| brandNames | Yes | ||
| organizationId | Yes | ||
| websiteDomains | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (not read-only, not destructive, not idempotent); the description adds the important consequence that once added, mentions and rankings are tracked alongside the brand's ongoing — a durable side effect the agent would otherwise have to infer. The idempotency guidance (fresh requestId, reuse on retry) also adds operational context beyond the hints without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose and the tracking consequence before the sibling pointer and retry note. The requestId sentence slightly restates the schema's own description of that field, keeping it just short of maximal efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, durable effect, discovery alternative, and retry semantics for a 6-parameter mutation with no output schema. Missing is duplicate-handling behavior (what happens if the domain is already tracked) and any indication of the returned object, but the essential call decision information is present given annotations supply the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 17% — only requestId is documented in the schema. The description compensates for two parameters by explaining websiteDomains and brandNames semantically, but leaves name, organizationId, and projectId entirely to inference, so it is partial rather than adequate compensation for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Add a competitor to a project") and immediately specifies the two payload concepts the caller must supply (website domains, mentioned names). It is clearly distinguishable from update_competitor, delete_competitor, and list_untracked_competitors, which is named separately as the discovery path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete routing rule: use list_untracked_competitors to see which AI-mentioned brands are not yet tracked, implying this tool is the follow-up action. It does not state exclusions (e.g., what to do if the competitor already exists, or when update_competitor is the right call instead), so it falls short of a full when/when-not treatment.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| confirmationToken | Yes |
TDQS
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.
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.
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.
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.
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.
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. Refused to a member restricted to selected projects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| brandNames | Yes | The names the brand is mentioned by, e.g. ["Acme", "Acme Corp"] | |
| competitors | No | ||
| organizationId | Yes | ||
| websiteDomains | Yes | The brand's own domains, e.g. ["acme.com"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic write profile; the description adds real behavioral context: the permission restriction that causes refusal, the requestId retry contract that prevents duplicate projects, and the fact that tracked queries are a separate later step. There is a mild tension with idempotentHint=false, but the description's idempotency is opt-in via requestId, so it does not contradict the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and each following sentence carries non-redundant workflow or constraint information. It runs a bit long and ends with a terse fragment ("Refused to a member restricted to selected projects") that would read better fused with the preceding guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter creation tool with no output schema, the description covers intent, preconditions, sibling routing and retry safety well. The notable gap is what the call returns — presumably a project identifier the agent would need for the follow-up create_tracked_queries step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, but the description compensates by explaining brandNames as the names the brand is mentioned by, websiteDomains as the brand's own domains, competitors as optional with their own sites and aliases, and requestId as a reused-on-retry key. Only organizationId and name remain unelaborated, which are self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a project") and immediately defines what the project contains: website domains, brand names, optional competitors. It also distinguishes itself from the nearest sibling by noting that tracked queries are added afterwards via create_tracked_queries, so an agent won't confuse it with create_organization or the query tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly sequences the workflow: gather brand names from suggest_brand_names, propose competitors yourself (noting no tool finds competitors), and use list_untracked_competitors after first checks. It also states a hard precondition (refused for members restricted to selected projects) and retry behavior, 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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Optional two-letter language the engines should answer in | |
| engines | Yes | ||
| nPasses | Yes | Answers captured per check; more than 1 only for AI engines. Each pass counts as one check against your plan; a Claude pass counts as five. | |
| countries | Yes | ISO 3166-1 alpha-2 codes, e.g. ["US", "ES"] | |
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| queryTexts | Yes | ||
| checkFrequency | Yes | ||
| organizationId | Yes | ||
| queryClusterIds | No | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations: discloses budget spend per check, the 100-combination cap, duplicate/skip behavior with reporting, and the confirmation-token gate. The idempotentHint=false annotation plus the requestId retry instruction is complementary rather than contradictory, though it could state more explicitly whether reuse of requestId with changed args is rejected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core semantics, then skip rules, then the confirmation workflow — logical ordering with no filler. Sentences are dense and long, but each carries load-bearing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nontrivial mutating, cost-incurring operation with no output schema, the description covers the creation semantics, cost implications, skip/report behavior, and the safety workflow. Remaining gaps (locale, queryClusterIds, project scoping) are secondary but real for an 11-parameter call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 36% across 11 params, and the description compensates for the important ones: it defines queryTexts/engines/countries as a cross-product with a 100 cap, ties nPasses and checkFrequency to checking behavior and budget, and explains confirmationToken and requestId. It says nothing about locale, queryClusterIds, or organizationId/projectId, leaving a meaningful gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Start tracking queries: every combination of queryTexts x engines x countries (at most 100) becomes a tracked query" states a specific verb, resource, and the exact construction semantics. An agent can distinguish this from add_tracked_queries_to_clusters or preview_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit prerequisite chain is spelled out: call preview_operation with this tool name and arguments, show the plan and cost to the user, call only after explicit agreement. It also names what is skipped, so the agent knows when combinations will not be created.
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 clusterADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| clusterId | Yes | ||
| projectId | Yes | ||
| requestId | No | ||
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
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.
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.
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.
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.
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.
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 competitorADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| requestId | No | ||
| competitorId | Yes | ||
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
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.
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.
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.
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.
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.
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 queriesADestructiveInspect
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 pause_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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| requestId | No | ||
| organizationId | Yes | ||
| trackedQueryIds | Yes | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, but the description adds what annotations cannot: which related data is destroyed (answers, matches, metrics history), that the action is irreversible, the 100-query batch ceiling, and a mandatory two-step confirmationToken protocol. That is substantial context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what is destroyed and the irreversibility warning, then the safer alternative, then the confirmation procedure. Every clause carries operational weight; nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive batch tool with no output schema, the description covers blast radius, reversibility, batch limits, the safer alternative, and the exact prerequisite call sequence. An agent has everything needed to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It usefully explains the non-obvious confirmationToken (obtained from preview_operation with the same arguments) and reflects the 100-item maxItems on trackedQueryIds, but organizationId, projectId and requestId are never mentioned, leaving gaps the schema cannot fill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 scope of collateral removal (captured answers, matches, metrics history) and the 100-item cap. An agent can tell immediately this is not the softer sibling pause_tracked_queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use pause_tracked_queries when the goal is to stop spending budget without losing history, and use this tool only after preview_operation plus explicit user agreement. Both the alternative and the required pre-call choreography are spelled out.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ||
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| shoppingEnabled | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| country | No | ||
| language | No | ||
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| excludeQueries | No | ||
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | ||
| country | Yes | ||
| language | No | ||
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| excludeQueries | No | ||
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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 filtersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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 pagesARead-onlyIdempotentInspect
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, claude, 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".
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dateTo | Yes | ||
| offset | No | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (only AI engines carry citations) | |
| groupBy | No | "domain" to roll up by host, "page" to roll up by exact URL | domain |
| dateFrom | Yes | ||
| projectId | Yes | ||
| organizationId | Yes |
TDQS
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 description correctly spends its space on non-obvious behavior: results are UNFILTERED by ownership, only AI engines produce citations (so google_serp/google_shopping yield nothing), and retention limits the date window. It also enumerates the per-source metrics returned, which no structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first clause, followed by the returned metrics, the ownership caveat, and the engine constraint. It is a dense paragraph but nearly every sentence carries information; only the trailing example question feels slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 well by naming the fields returned per source (citation count, distinct answers, tracked queries, average rank). With 8 parameters at 25% schema coverage, the gaps are the pagination parameters, but the rest of what an agent needs to call this correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description does useful work by explaining the two groupBy modes and reinforcing that only AI engines carry citations. However, limit and offset — the pagination controls — are never mentioned in description or schema, and the four required IDs get no framing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — the domains or pages most cited across a project's AI answers in a date window — and immediately clarifies the groupBy switch that determines whether it returns domains or pages. The 'sources the answer engines drew on' framing makes it clearly distinct from siblings like list_ai_responses or get_mention_samples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context with the concrete example question ('which websites and pages does the AI cite or quote for me versus competitors') and notes the prerequisite that dates must fall inside the retention window. What's missing is an explicit routing statement versus a near-neighbor sibling, and no when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cluster_breakdownRank tracking by keyword clusterARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| organizationId | Yes | ||
| queryClusterIds | No | restrict to these keyword clusters | |
| includeUngroupedQueries | No | Sent alone, returns only the ungrouped row: the tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds that row to those clusters. Omit both for every cluster plus the ungrouped row. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description focuses on adding context: the retention-window constraint on dates and the shape of the result (one row per cluster with named metrics), which matters since there is no output schema. It does not discuss pagination, empty-result behavior for the cluster/ungrouped combinations, or cost of wide date ranges, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the metric grain and then the constraint and usage examples; nothing is padding. The second example question is somewhat redundant with the first, keeping it just short of tightest possible form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter read tool with no output schema, the description does well to describe the result rows, but it leaves the empty-list defaults for engines and countries unexplained and offers no routing to sibling tools. An agent can call it, but must infer default filter semantics from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 50% schema coverage, the schema documents engines, countries, queryClusterIds and the subtle includeUngroupedQueries semantics, while organizationId, projectId and both dates are bare. The description reinforces the date window and its retention constraint but says nothing about the required identifiers or what an empty engines/countries array means (presumably all), leaving the coverage gap partly unaddressed. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: rank-tracking metrics broken down per keyword cluster, with the exact output grain (one row per cluster) and the metrics included (positions, share of voice, sentiment). That grain-plus-metrics phrasing clearly separates it from sibling breakdowns such as get_sentiment_breakdown or get_rank_tracking_time_series without needing to open a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example questions ("which keyword clusters are strongest or weakest", "how does my niche compare to my generic queries") give concrete contexts that map directly to this tool. It also states the date-retention prerequisite. It stops short of naming alternatives or exclusions, e.g. when to prefer get_project_rank_tracking_stats or list_clusters instead.
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)ARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions) | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| competitorId | No | optional competitor UUID to focus on a single rival; competitor UUIDs are listed by get_available_filters (competitors[].id) | |
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description adds real behavior: the answers subset is restricted to co-mentions, output is one row per tracked competitor, only tracked competitors are included, and dates must fall within the retention window. It stops short of describing ordering, row count limits, or what happens when there are zero co-mentions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The defining constraint (both mentioned, who ranks higher) is front-loaded, followed by the row shape and then optional narrowing. The output-field enumeration in the middle sentence is a bit list-like, but every clause carries information an agent needs to interpret the result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 spells out the return columns (co-appearance counts, win/loss/tie splits, win rate, average positions, representative query). It also flags the retention-window and tracked-competitor preconditions. Remaining gaps are minor: sort order, empty-result behavior, and response size are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 43%, and the description only enriches two parameters: competitorId (focus on a single rival) and the date range (must be inside the retention window). The four ID/date parameters are self-evident, and engines/countries already carry their own schema descriptions, so this is adequate but not compensating for the uncovered fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states the exact operation: comparing best mention position for answers where brand and competitor both appear, and the row granularity is explicit ('one row per tracked competitor'). It enumerates the returned metrics, which cleanly separates it from siblings like get_share_of_voice_formula or get_rank_tracking_time_series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is stated through concrete example questions ('who wins when we both appear', 'do I outrank competitor X') plus the population constraint 'For the AI answers where the brand and a competitor are BOTH mentioned'. It also notes the optional single-competitor narrowing. What's missing is any explicit routing to alternative tools when the user wants overall share rather than head-to-head.
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 jobARead-onlyIdempotentInspect
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. A discover_prompts job usually finishes within 15 minutes and fails with error.code timed_out after about 30 minutes. A failed job carries error.code (timed_out, provider_failed, submission_failed or internal_error) and error.message, which says what to do next.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | ||
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare readOnly/idempotent/non-destructive; the description adds genuinely new behavioral context: expected latency (about 15 minutes, timeout near 30), the timeout code, and the full enumeration of error.code values with the note that error.message prescribes next steps. That is exactly the operational detail a polling client needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what is returned, then polling guidance, then timing, then error shape. Four tight sentences, each carrying distinct operational information with no restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 compensates well by describing the status/result/error payload shapes. The remaining gap is parameter identification (which id goes where), the only thing an agent could still get wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — neither jobId nor organizationId has any documentation, and the description never mentions either parameter or clarifies that jobId must be the id returned by the producing job. With no schema-level help, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a background job) and what is returned (status, then result), and names the exact sibling tools that create such jobs (discover_brands, suggest_brand_names, discover_keywords, discover_prompts, start_auto_clustering). This lets an agent place the tool precisely in the workflow without consulting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit polling cadence (every few seconds), explicit stop conditions (status completed or failed), and an explicit prohibition (do not start the job again while pending or running). That is when-to-use, when-to-stop, and what-not-to-do in one place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mencoro_guideMencoro guideARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | The topic to read; omit it, or pass "index", for the list of topics. |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/safe profile, yet the description adds genuinely non-obvious behavior: counts are raw per-pass rows, cited links are excluded, and the numbers therefore differ from share-of-voice inputs which average per-pass and weight links. It also flags the data retention constraint on dates. That is exactly the kind of caveat an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Scope and grouping are front-loaded, and the sibling routing follows immediately. Minor waste: 'Use to understand mention composition' restates the opening, and the example-question sentence is optional garnish, but nothing is confusing or out of order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 convey the return shape (counts grouped by type, tone and qualifier, raw per-pass) and the caveat that they are not share-of-voice inputs. What remains thin is the identifier/date parameter contract, which neither schema nor description covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%: engines and countries are documented in the schema, but organizationId, projectId, dateFrom and dateTo carry no descriptions. The description only partially compensates — it says dates must fall within the retention window but never states the date string format or what the identifiers represent. Enough to be usable, not enough to be complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('AI text-mention counts ... grouped by type, tone and qualifier') with explicit scope: the project brand only, competitors and unrelated brands excluded. An agent can distinguish it from get_sentiment_breakdown, get_mention_samples and the share-of-voice tools on the strength of 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two concrete alternatives and the condition selecting each ('For the positive/neutral/negative sentiment split use get_sentiment_breakdown; to read the actual mention texts use get_mention_samples'). It also states a negative case — this is not the tool for share-of-voice inputs — and gives example questions that pin down the intended use.
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 textsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dateTo | Yes | ||
| offset | No | ||
| sortBy | No | recent | |
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| sentiment | No | ||
| mentionType | No | ||
| competitorId | No | UUID of a single competitor to filter to; competitor UUIDs are listed by get_available_filters (competitors[].id). Omit to include all competitors | |
| organizationId | Yes |
TDQS
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 substantive context beyond that: the data-retention window constraint on dates, the pagination model, and the 1-50/default-20 limit. It stops short of describing sort semantics or how paging via offset interacts with new data arriving.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the core purpose front-loaded and alternatives after. No filler, though the closing 'Answers questions like...' sentence is somewhat redundant with the opening.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 parameters, no output schema, and 25% schema coverage, gaps remain: how to page with offset, what each sortBy option means, and how countries filtering interacts with the date range are all unexplained. Adequate for routing, incomplete for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must carry weight; it does explain the limit range/default and the filters (engine, sentiment, mention type, competitor), but leaves sortBy, offset, countries, and the date format/semantics undocumented in both places. 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.
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' — and explicitly contrasts it with get_sentiment_breakdown (aggregate split) and get_mention_mix (counts by type/tone/qualifier). An agent can pick the right tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'use to READ individual mentions' plus two named alternatives with the conditions that select each. It also frames the answerable question ('show or export the actual AI mention texts'), which anchors intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metric_glossaryMetric glossaryARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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 organizationARead-onlyIdempotentInspect
An organization's profile, its status, the caller's own role in it, and how many active members and pending invitations it has, and how many of its projects the caller can access. Use list_projects first to find the organizationId.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds real value beyond them by disclosing the returned data shape (counts of active members, pending invitations, and accessible projects), which matters because no output schema exists. It stops short of saying whether counts are live or cached, or whether any permission is needed to read another org.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One long run-on sentence chained with multiple "and ... and" clauses, which obscures the primary object (the organization profile) behind a trailing list of counts. The prerequisite hint is a separate, useful sentence, but the first sentence should have been front-loaded with the verb and split.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 a fair job of naming the returned fields, which is the main completeness requirement here. It is still missing sibling disambiguation (notably get_organization_overview) and any note on error behavior for an unknown or inaccessible organizationId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required parameter, so the description must carry the burden — and it does partially by telling the agent to obtain organizationId via list_projects. It does not state the expected format (UUID vs. slug vs. name), which is the remaining ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool returns: org profile, status, caller's role, active member and pending invitation counts, and accessible project count. That is specific and resource-focused, though it is a noun-phrase list rather than a verb+resource statement, and it never distinguishes itself from sibling get_organization_overview, which sounds like it covers similar ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 concrete prerequisite for obtaining the required ID, which is genuinely actionable. However, there is no guidance on when to pick this tool over get_organization_overview, get_project, or list_members, so the usage decision against siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organization_overviewOrganization brand overviewARead-onlyIdempotentInspect
Latest-snapshot rank-health board across the active projects the caller can access in an organization: one row per brand (share of voice, mention rate, average mention position, positivity, tracked-query count in total and per engine family: AI, SERP, Shopping) 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".
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes |
TDQS
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 still adds real context the annotations cannot: it is a current-state snapshot with no date parameter, it is implicitly scoped to projects the caller can access, and output is ranked one-row-per-brand with an org aggregate. It stops short of covering result limits, pagination, or behavior when the organization has no active projects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core snapshot/one-row-per-brand framing before the metric enumeration and the alternative-tool guidance. The first sentence is dense and long, but the parenthetical metric list is load-bearing given there is no output schema; only the trailing example question is arguably surplus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 describe the return shape, and it does: one row per brand with named metrics, an organization-level aggregate, and ranking order. Combined with the explicit no-date-window constraint and the pointer to per-project tools for time series, an agent has everything needed to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one obvious identifier parameter and 0% schema description coverage, the description carries some burden; it clarifies the scope semantics indirectly ("active projects the caller can access in an organization"), which tells the agent that organizationId governs the row set. However, it never says what an organizationId looks like, how to obtain one, or what happens if the caller lacks access, so it doesn't fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — a "latest-snapshot rank-health board across the active projects the caller can access" — and enumerates exactly what a row contains (share of voice, mention rate, average mention position, positivity, tracked-query counts per engine family) plus the organization-level aggregate. The scope (one row per brand, ranked by share of voice) is precise enough to distinguish it from per-project siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when NOT to use it ("takes NO date window") and names the alternative path with a concrete sibling ("call the per-project tools (e.g. get_project_rank_tracking_stats) for each project id returned here"). It even supplies a sample question it answers, leaving no ambiguity about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet a projectBRead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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 overviewARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| organizationId | Yes | ||
| queryClusterIds | No | restrict to these keyword clusters | |
| includeUngroupedQueries | No | Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered; the description adds the retention-window constraint, which is real behavioral guidance not present in annotations. It also discloses the returned metric families, which matters since there is no output schema. It stops short of describing aggregation semantics (e.g. how averages are weighted across engines/countries).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: what it returns, when to prefer it, and what questions it answers. The metric inventory is long but informative rather than redundant; the only mild waste is the somewhat run-on enumeration in sentence one.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, read-only aggregation tool with no output schema and no nested objects, the description supplies the essential missing pieces: what data comes back and the retention constraint on the date range. Remaining gaps (aggregation/weighting behavior, how empty filters default) are secondary for a query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% — engines, countries, queryClusterIds and includeUngroupedQueries are documented in the schema, while dateFrom/dateTo, organizationId and projectId carry no field descriptions. The description only partially compensates, adding the date-window/retention constraint but nothing about the scope-control parameters (clusters, ungrouped queries, country/engine filtering).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (aggregated rank-tracking summary for a project) plus a concrete inventory of what it aggregates: positions, trends, share of voice, sentiment, mention/SERP/shopping rates, distribution 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 any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives and the ordering condition ('prefer it before the per-cluster or time-series tools'), and anchors usage in concrete user questions ('how visible is my brand', 'am I ahead of competitors'). It also states a hard precondition — dates must fall within the data retention window — which prevents a predictable failure mode.
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 moversARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dateTo | Yes | ||
| offset | No | ||
| sortBy | No | which trend delta to rank by | trend_share_of_voice |
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| sortOrder | No | desc for top gainers, asc for top losers | desc |
| organizationId | Yes |
TDQS
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 genuinely useful behavior beyond that: the preceding-window comparison, the sign convention (positive = improved), the per-row grain (one engine + country), and the 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core rank-definition in the first sentence, then row shape, sort semantics, and constraints. The final question examples are slightly redundant but still earn their place by anchoring usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly sketches the returned row (position/share/sentiment plus signed delta). It also covers window semantics and retention limits. Only pagination behavior (limit max 50, offset) is unaddressed for a 10-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, but the description supplies meaning for the two enum-bearing params (sortBy = which trend delta to rank by; sortOrder desc/asc = gainers/losers). It says nothing about limit/offset pagination or the date parameter format, leaving several of the 10 params to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (ranks) and resource (tracked queries) and precisely defines the comparison basis: change between the given window and the immediately preceding window of equal length. This clearly distinguishes it from sibling time-series tools like 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the questions it answers ("which queries moved the most", "biggest gains and drops versus last period") and explains how sortBy/sortOrder select gainers vs losers. No sibling alternative is named, so it stops short of a full when-not routing.
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 seriesARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| granularity | No | daily | |
| competitorIds | No | UUIDs of competitors to add as extra series; competitor UUIDs are listed by get_available_filters (competitors[].id) | |
| organizationId | Yes | ||
| queryClusterIds | No | restrict to these keyword clusters | |
| includeUngroupedQueries | No | Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety bar is pre-cleared. The description adds genuine behavior beyond them: the retention-window constraint on dates, and the response-size implication of picking coarse granularity. It does not say what metrics the series carries or how the lines are keyed, which would be the remaining disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, followed by the performance heuristic, then the retention constraint, then intent-matching examples — a sensible ordering with little filler. The example-question sentence is slightly loose but earns its place by anchoring intent recognition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, no-output-schema tool with only 50% coverage, the description leaves notable gaps: it never says which rank-tracking metrics are returned (rank position? visibility? share of voice?) or how the series and optional competitor lines are labeled, so an agent cannot anticipate the shape of the response. What it does cover — windowing, bucketing, competitor and engine splits — is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% across 10 params, so the description must add meaning, and it does for granularity ('daily, weekly or monthly' plus a selection heuristic) and competitorIds ('per-competitor lines') and engines ('split by engine'). It says nothing about `queryClusterIds`, `countries`, or `includeUngroupedQueries` beyond the schema text, so it partially compensates rather than fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — a time series of rank-tracking metrics for a project, bucketed by granularity — which is concrete enough to act on. It implicitly separates itself from the query-level sibling (`get_tracked_query_time_series`) by scoping to 'a project', but never names that sibling, so the differentiation is inferential rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers real usage context: prefer weekly/monthly for long windows, dates must fall inside the retention window, and example questions ('what changed in my AI visibility', 'share-of-voice trend split by engine') that map intent to this tool. It stops short of naming alternatives or exclusions — nothing says when to reach for `get_project_rank_tracking_stats` or `get_tracked_query_time_series` instead.
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 breakdownARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| dateFrom | Yes | ||
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| organizationId | Yes | ||
| queryClusterIds | No | restrict to these keyword clusters | |
| includeUngroupedQueries | No | Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low. The description adds real context beyond them: the date window must fall inside the data retention window (a failure mode an agent would otherwise hit), and the output is broken down per engine and per competitor. It does not describe pagination or response size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the output shape, then alternatives, then the retention caveat, then examples. Slightly redundant to give both the 'tone/sentiment questions' cue and two example questions, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter read-only analytics tool with no output schema, this covers what the tool returns (sentiment split per engine/competitor), when to reach for it, and a key data constraint. A hint about default filtering when dimension arrays are empty would close the last gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the description adds one meaningful constraint for the date parameters ('Dates must fall within the data retention window') but says nothing about how engines, countries, queryClusterIds or includeUngroupedQueries shape the result — the latter's semantics live only in the schema. Adequate, not compensatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+breakdown dimensions: 'Positive/neutral/negative sentiment split of the brand's AI mentions over a date window, per AI engine and per competitor.' An agent can distinguish this from get_mention_mix and get_mention_samples 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('Use for tone/sentiment questions'), names two alternatives with the conditions that select them ('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'), and adds concrete example questions.
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 queryBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes | ||
| trackedQueryId | Yes |
TDQS
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.
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.
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.
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.
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.
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 matchesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| dateTo | No | ||
| offset | No | ||
| dateFrom | No | ||
| projectId | Yes | ||
| sortOrder | No | desc | |
| organizationId | Yes | ||
| trackedQueryId | Yes |
TDQS
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.
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.
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.
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.
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.
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 seriesARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | ||
| dateFrom | Yes | ||
| projectId | Yes | ||
| granularity | No | daily | |
| competitorIds | No | UUIDs of competitors to add as extra series; competitor UUIDs are listed by get_available_filters (competitors[].id) | |
| organizationId | Yes | ||
| trackedQueryId | Yes | a tracked query UUID from search_tracked_queries (items[].id) |
TDQS
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.
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.
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.
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.
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.
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 & stalenessARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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 usageARead-onlyIdempotentInspect
An organization's subscription, how many tracked queries its projects the caller can access have, 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. For a member restricted to selected projects, the plan, billing cycle, check budget, consumption and deactivation reason in "subscription" are null too. Use it before creating tracked queries or raising check frequency, to stay within the plan.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them by disclosing conditional nullability: entitlements are null for non-owners, and for members restricted to selected projects the plan, billing cycle, check budget, consumption and deactivation reason are all null. This is non-obvious, role-dependent behavior that an agent would otherwise misread as missing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all carrying load: the return contents first, then the two nullability conditions, then the usage condition. The opening sentence is long and stacked, but the most important information (what you get back) is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 return values, and it does so at a reasonable level of detail including the role-conditional nulls. It stops short of describing the shape of the counts/projections or the deactivation-reason semantics, but nothing needed 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description says nothing about organizationId. The parameter name is self-explanatory and it is the only input, so the risk is low, but the description does not compensate for the coverage gap by saying where the organizationId comes from or what form it takes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and enumerates the exact contents: subscription, tracked-query count, projected monthly checks, and entitlements. It is clearly a read of plan/usage state, distinguishable from get_organization and get_organization_overview by the billing/limit framing. It opens with a noun phrase rather than a verb, so the operation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to call it 'before creating tracked queries or raising check frequency, to stay within the plan', which gives a concrete triggering condition. It does not name a sibling alternative or state when not to use it, but the use case is unambiguous for a read-only plan lookup.
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) and, optionally, the projects they will reach (projectAccess); 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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| Yes | |||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| projectAccess | No | Optional. The projects the invitee will reach once they accept: {"mode": "all"}, the default, or {"mode": "selected", "projectIds": [...]} with 1 to 500 distinct project ids of this organization from list_projects; a repeated id counts once. An owner always reaches every project, so an owner invitation cannot carry a selection. | |
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the standard annotations, the description provides critical behavioral requirements, specifically noting the required permissions ('organization:manage' and 'owner role') and the state change behavior for existing members.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool definition is highly dense but extremely efficient. Every sentence contributes critical operational or workflow information without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of roles, project scoping, and the necessary pre-invocation workflow, the description covers every major complexity point, making it highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant semantic value beyond the schema, especially for the `projectAccess` parameter. It clarifies that these projects are defined only for when the invitee accepts and details a crucial constraint: an owner invitation cannot include project selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and the outcome: 'Invite someone to the organization by email.' It is unambiguous about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage guidelines are explicit and procedural. It mandates a specific workflow (call `preview_operation` first), defines the required user agreement, and handles the edge case where the email address already exists.
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 answersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dateTo | No | ||
| offset | No | ||
| engines | No | ||
| dateFrom | No | ||
| projectId | Yes | ||
| sortOrder | No | desc | |
| organizationId | Yes | ||
| trackedQueryId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, so the safety profile is covered. The description adds useful behavior: 'newest first by default', the filter dimensions, and the format of returned records, which goes beyond the annotations. Pagination behavior (limit/offset) is left unstated, so it isn't fully complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool returns, then filters, then the use-vs-aggregates routing. Three sentences, all substantive, with no filler. Slightly dense but every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with annotations covering safety and no output schema, the description covers returned contents, filtering, and default ordering well. Missing only pagination semantics and the obvious required IDs, so it is nearly complete without being exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, and it does explain the key filtering params: engine filtering, single tracked query, and date range with the YYYY-MM-DD format plus default sort order. It does not mention limit/offset or the required organizationId/projectId, leaving some of the 9 params unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('list the AI answers captured for a project's tracked queries') and enumerates the returned fields (answer text, engine, capture time, cited sources). It also differentiates scope from the aggregate metric tools, so an agent can tell it apart from siblings like get_mention_mix or get_sentiment_breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it 'to read what an engine actually said' and to use 'the metric tools' for aggregates, giving a clear selection rule. It offers no named alternatives and no explicit when-not conditions, keeping it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clustersList query clustersCRead-onlyIdempotentInspect
A project's query clusters (the groups its tracked queries are organized in), by name, with their ids.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| projectId | Yes | ||
| sortOrder | No | asc | |
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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 performanceARead-onlyIdempotentInspect
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). A variant not checked in the range contributes its latest earlier position; carriedPositions says which position figures were carried and from when. Filter by engine, country, cluster, status, check frequency, passes or text; sort by any metric. The keyword-level view of a project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dateTo | Yes | ||
| offset | No | ||
| search | No | ||
| sortBy | No | keyword | |
| status | No | ||
| engines | No | ||
| nPasses | No | ||
| dateFrom | Yes | ||
| countries | No | ||
| projectId | Yes | ||
| sortOrder | No | asc | |
| organizationId | Yes | ||
| queryClusterIds | No | ||
| checkFrequencies | No | ||
| includeUngroupedQueries | No | Sent alone, restricts to keywords with variants that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all keywords. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description still adds genuinely non-obvious behavior: a variant not checked in the range contributes its latest earlier position, and carriedPositions discloses which figures were carried and from when. The inclusive date-range semantics are also spelled out. Missing only pagination/truncation behavior for the result set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the row grain and metrics, then the carried-position edge case, then filtering/sorting, then a one-line scope framing. Nearly every clause carries information; density is high but no sentence is wasted. Could be marginally tighter around the metric list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 16 parameters, no output schema, and near-zero schema descriptions, the description does the heavy lifting: it defines the return grain, metric set, date-range semantics, carry-forward behavior, and filter/sort dimensions. The remaining gap is result-set size and pagination behavior, which matters for a list tool with a default limit of 20.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 6%, so the description must compensate; it does so partially by mapping "filter by engine, country, cluster, status, check frequency, passes or text; sort by any metric" onto the corresponding parameters. However, pagination (limit default 20 / max 100, offset) and the meaning of individual filter values go unaddressed, leaving several of the 16 parameters with no prose support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact grain ("one row per tracked query text across all its engine and country variants") and enumerates the metrics returned, so an agent knows precisely what this returns. It also positions itself with "The keyword-level view of a project," which sets it apart from cluster- or snapshot-level siblings. It stops short of naming the specific alternative (search_tracked_queries, get_tracked_query_time_series) that an agent should choose instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: "The keyword-level view of a project" hints at scope, and the filter/sort listing implies the intended query pattern. There is no explicit statement of when to prefer this over sibling tools such as search_tracked_queries or get_cluster_breakdown, and no exclusions or prerequisites given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList organization membersARead-onlyIdempotentInspect
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 change_member_role, suspend_member and reactivate_member take.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| organizationId | Yes | ||
| includeInvitations | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description adds real context on top: an authorization requirement (owners only), the deterministic ordering (oldest first), and the critical id-vs-userId distinction that will silently break downstream mutations if missed. It does not describe pagination behavior or what the invitation entries look like, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler. The core behavior and the permission gate come first, and the cross-tool id caveat is placed last where it is most actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in by naming the returned fields and ordering, and the owners-only note plus the id warning cover the two things most likely to cause a wrong call. Only pagination and the shape of the invitation records are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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; it clarifies includeInvitations ("optionally also its pending invitations") and treats organizationId implicitly as the target org. The limit and offset parameters are never mentioned, leaving pagination semantics (page size cap of 100, default of 20) entirely to the schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (an organization's members), the returned fields (role, state), the sort order (oldest first), and the optional extra (pending invitations), which is enough to separate it from get_organization or invite_member. It is written as a noun phrase rather than a verb+resource, but the listing intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Owners only, as in the web app" gives an explicit caller-permission gate, and the closing sentence routes the agent to change_member_role / suspend_member / reactivate_member by telling it which identifier those tools consume. It stops short of contrasting with sibling read tools such as get_organization, so there is no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList organizations and projectsARead-onlyIdempotentInspect
List every organization the caller belongs to and the active projects they can access in it. Call this FIRST: the returned (organizationId, projectId) pairs are required by every other tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 genuinely new context — the cross-tool dependency that its output is a prerequisite for other calls — plus a hint at the return shape (organizationId, projectId pairs). It stops short of describing pagination or what happens when the caller has no organizations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing. The scope statement comes first and the critical 'call this FIRST' directive second, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explaining what comes back, and it names the key returned fields and their purpose. It is complete enough for an agent to know when and why to call it, though it omits edge cases such as an empty membership list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate; the baseline for a no-param tool applies. The description's mention of returned IDs is return-value context rather than parameter semantics, but it does not mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and two resources ('List every organization the caller belongs to and the active projects they can access'), and scopes it to the caller's own memberships. This clearly distinguishes it from siblings like get_organization, get_project, and list_members.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this FIRST' and gives the reason: the returned (organizationId, projectId) pairs are required by every other tool. That is an unambiguous ordering directive an agent can act on without inference.
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 resultsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| limit | No | ||
| dateTo | No | ||
| offset | No | ||
| dateFrom | No | ||
| projectId | Yes | ||
| sortOrder | No | desc | |
| organizationId | Yes | ||
| trackedQueryId | No |
TDQS
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.
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.
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.
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.
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.
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 trackARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dateTo | No | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions) | |
| dateFrom | No | ||
| countries | No | ISO-3166 alpha-2 country codes; a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, but the description adds real operational context: results count in no metric until tracked, websites are unknown here and must be confirmed with the user, and checks must have run. This is behavior an agent cannot infer 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core definition and the actionable takeaway follows quickly. The return-field enumeration in the opening sentence is a long clause chain, but every element listed is information the caller would otherwise lack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and the description fully spells out what comes back (counts, frequency, average position, sample query, last-seen) plus prerequisites and next steps. Remaining gaps are filter parameters (engines, countries, limit) that the schema only weakly documents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It does add value for dateFrom/dateTo (YYYY-MM-DD format, default last 30 days, which the schema's null default does not convey) and implies most-seen-first ordering for limit, but leaves limit bounds, engines, and countries undocumented in the prose (engines/countries only get partial schema hints).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: brands named in a project's AI answers that are NOT tracked as competitors, with an inline definition of competitor. This clearly separates it from siblings like discover_brands or get_competitor_cooccurrence, which operate on different populations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit downstream action ('this is where to find competitors worth adding with create_competitor') and a prerequisite ('needs checks to have run', with the note that first checks run immediately after project creation). No explicit exclusion versus discover_brands or suggest_brand_names, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mencoro_setupMencoro setup instructionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
pause_tracked_queriesPause tracked queriesADestructiveIdempotentInspect
Pause up to 100 tracked queries: their checks stop until resume_tracked_queries restarts them, so they spend no budget meanwhile; use get_usage to see the effect. Checks skipped while paused are never made up later, and pausing also cancels a check still in progress. Each one that cannot be paused is reported in "failed". Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes | ||
| trackedQueryIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: skipped checks are never made up later, an in-progress check is cancelled, failures surface in a "failed" field, budget is preserved while paused, and the operation is safe to retry. These details align with idempotentHint=true and destructiveHint=true rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, leading with the action and scope before covering side effects, alternatives, failure reporting, and retry safety. Every clause adds material value and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 side effects, cancellation behavior, budget impact, error reporting, and retry safety. Combined with the annotations, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 states the 100-item cap (duplicating maxItems) and references the "failed" result, but does not clarify the roles of organizationId/projectId or the expected ID format, leaving half the burden on the schema's bare names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Pause') and resource ('tracked queries') with an explicit cap of 100, and names the sibling operation that reverses it (resume_tracked_queries). An agent can distinguish it from delete_tracked_queries or set_tracked_query_check_frequency 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly indicates the alternative (resume_tracked_queries restarts them) and points to get_usage to observe the budget effect. It lacks an explicit 'do not use this if X' exclusion, but the context for when to pause versus resume is clear.
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 itARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | ||
| arguments | Yes | The arguments the write tool would be called with, without confirmationToken and requestId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds context they cannot carry: the token is single-use, expires in a few minutes, and is refused if anything in the plan has changed. That staleness/lifecycle behavior is exactly the operational detail an agent needs to avoid a wasted call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the tool returns, then the call pattern, then the constraints. No repetition of the enum contents and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers the workflow, the token semantics, and the argument-shaping rule. The remaining gap is that 'the returned plan' is never characterized, so the agent doesn't know what it will be presenting to the user or how to summarize it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, and the description compensates by explaining the enum's meaning (the name of the write tool) and the non-obvious constraint that arguments must omit confirmationToken and requestId. The generic nested "arguments" object is still untyped in both places, so the agent gets no validation hints for per-tool argument shapes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — describe what a confirmable write tool would do and return the confirmationToken it requires — which no sibling does. The meta-tool role (a pre-flight wrapper around the write tools in the enum) is unmistakable and cannot be confused with the mutation tools themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the exact call sequence: pass the write tool name as "tool", pass its arguments as "arguments", show the plan to the user, wait for an explicit yes, then re-call the write tool with the same arguments plus the token. It also names the alternative path implicitly (calling the write tool directly) and the condition that makes this necessary — the tool requires a token.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reactivate_memberReactivate a memberAInspect
Give a suspended member their access to the organization back. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "reactivate_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.
| Name | Required | Description | Default |
|---|---|---|---|
| memberId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say non-readOnly, non-destructive, non-idempotent; the description adds the crucial gated two-step confirmation workflow, the permission/role requirements, and the ID disambiguation that can cause silent mis-targeting. This is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences, each carrying distinct load: purpose, ID semantics, then the confirmation gate plus permissions. No repetition of schema or annotation facts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the prerequisites, workflow, and ID source with no output schema to explain. Minor gaps: no mention of edge cases (already-active member) or what the confirmation token's validity/lifetime is, but nothing that would cause a wrong call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, but the description compensates for the two non-obvious params: memberId's provenance ('from list_members, not the user id') and confirmationToken's acquisition procedure via preview_operation with the matching tool name and arguments. Only organizationId is left implicit, which is unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Give a suspended member their access to the organization back'), which makes it clear this is the inverse of suspend_member. 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative for obtaining the ID ('from list_members, not the user id'), mandates calling preview_operation first, and gives the exact gating condition: only after the user explicitly agrees. Prerequisites (organization:manage, owner role) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tracked_queries_from_clustersRemove tracked queries from clustersADestructiveIdempotentInspect
Take up to 100 tracked queries out of one or more query clusters. Other cluster memberships are left alone. Removing also takes the tracked query's past results out of that cluster's reports until it is added back with add_tracked_queries_to_clusters. Each tracked query that cannot be changed is reported in "failed" without stopping the rest. Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes | ||
| queryClusterIds | Yes | ||
| trackedQueryIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructive/idempotent hints) by disclosing the actual consequence: past results vanish from that cluster's reports until re-added, while other cluster memberships are untouched. It also discloses the non-atomic failure model ("each tracked query that cannot be changed is reported in 'failed' without stopping the rest"), which is exactly what an agent needs before invoking a destructive batch operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with zero filler, front-loaded with the action and its limit, then consequences, then failure semantics, then retry safety. Each sentence contributes operational information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive batch mutation with no output schema, the description covers the critical unknowns: side effects on reports, partial-failure reporting via a 'failed' collection, and idempotency. The remaining gap is the shape of the success response (counts of removed vs. failed memberships), which is minor but would have made it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all four parameters are required, so the description carries the full burden — yet it only implies plurality for queryClusterIds and trackedQueryIds. The 100-item cap is already in the schema (maxItems) and nothing is said about ID format, whether organizationId/projectId scope the cluster lookup, or whether IDs are validated up front.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ("Take ... tracked queries out of ... query clusters") with explicit scope: up to 100 items, one or more clusters. Distinguishes itself from the inverse operation by naming add_tracked_queries_to_clusters, so an agent can tell the two apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for use (selective removal of query-cluster memberships) and an explicit reversal path via add_tracked_queries_to_clusters, plus "Safe to retry" guidance for retry behavior. It stops short of naming exclusions or contrasting with delete_cluster, so it is clear but not fully prescriptive.
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 clusterAIdempotentInspect
Rename a query cluster. The name is stored lower-cased and must be unique in the project. Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| clusterId | Yes | ||
| projectId | Yes | ||
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | ||
| comment | No | ||
| projectId | Yes | ||
| requestId | No | ||
| aiResponseId | Yes | ||
| organizationId | Yes | ||
| trackedQueryId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
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.
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.
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.
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.
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.
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 projectAIdempotentInspect
Bring an archived project back: it reappears in the project list and its active tracked queries are checked again on their schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
resume_tracked_queriesResume tracked queriesAIdempotentInspect
Restart the checks of up to 100 paused tracked queries; they spend budget again, so use get_usage to see the effect. Checks skipped while they were paused are not made up. Each one that cannot be resumed is reported in "failed". Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| organizationId | Yes | ||
| trackedQueryIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: budget is consumed again, skipped checks are permanently lost, failures are reported in 'failed', and retries are safe. It reinforces idempotentHint and clarifies the cost and irreversibility of the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly packed sentences, front-loaded with the main action and limit. Each sentence adds distinct value—cost, irreversibility, failure reporting, retry safety—with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the mutation complexity and lack of output schema, the description covers cost, skipped-check consequences, failure reporting, and retry safety well. It falls short only on explaining the required organization/project scope parameters, which is a non-trivial gap at 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only partially does: 'up to 100 paused tracked queries' clarifies the trackedQueryIds array and its limit, but organizationId and projectId are never mentioned, leaving their scope and purpose undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Restart') and resource ('checks of up to 100 paused tracked queries'), with a built-in limit. An agent can immediately distinguish it from the sibling pause_tracked_queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: use get_usage afterward to see budget impact, and 'Safe to retry' tells the agent retries are fine. It doesn't explicitly say when not to use it or name the pause counterpart, but the implied condition (paused queries) is clear.
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 (each pass counts as one check; a Claude pass counts as five). 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.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | ||
| projectId | Yes | ||
| requestId | No | ||
| organizationId | Yes | ||
| trackedQueryIds | No | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, destructiveHint=false; the description adds cost semantics (one check per pass, a Claude pass counts as five), budget consumption, the skipped-running-check behavior, the confirmation requirement, and that results are asynchronous and must be read later with analytics tools. That is substantive context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: mode selection first, then cost, then the required confirmation sequence, then where results land. No sentence is filler despite the description's length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent, budget-spending tool with no output schema and 0% param documentation, the description supplies cost, prerequisite, async-return, and follow-up tool guidance – everything an agent needs before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well for the two mode-defining parameters: trackedQueryIds (up to 100) and all:true, plus the confirmationToken's origin from preview_operation. It leaves organizationId, projectId, and requestId undescribed, so it does not fully cover all six parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Check tracked queries now') and immediately contrasts it with the scheduled alternative, distinguishing it from siblings like set_tracked_query_check_frequency and resume_tracked_queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives both selection modes (name up to 100 ids vs all:true for every active tracked query) and the mandatory prerequisite workflow: call preview_operation first, show the plan to the user, and only proceed after explicit agreement. It also notes running checks are skipped, which is a usage-relevant exclusion.
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 queriesARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| search | No | ||
| sortBy | No | queryText | |
| status | No | ||
| engines | No | allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping | |
| countries | No | ISO-3166 alpha-2 country codes (e.g. "US", "GB", "DE"); a project's configured codes are listed by get_available_filters | |
| projectId | Yes | ||
| sortOrder | No | desc | |
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful operational detail — limit range 1–100 with default 20, filtering options, sortable fields, and pagination — beyond what annotations provide. It does not describe the return shape, but no output schema is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then adds filters/sort and example questions in three compact sentences. The long sort-field list is necessary content rather than filler, and there is no repetition of schema boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter search tool with no output schema and poor schema coverage, the description covers the key filtering, sorting, and pagination behavior required to call it correctly. Minor gaps remain around offset usage and what fields are returned, which an agent may need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (20%), so the schema documents little for most parameters. The description compensates by enumerating the sort fields, explaining the status filter (active/paused), free-text search, and limit bounds, though it leaves offset semantics and organizationId/projectId to schema naming.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Search and paginate the tracked queries') plus the scope ('of a project with their latest rank positions and metrics'). It implicitly distinguishes this bulk/filtered view from siblings like get_tracked_query (single query), create_tracked_queries, and delete_tracked_queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context through examples ('list my top queries by share of voice', 'find a specific tracked query') and names the available filters and sort fields. However, it does not explicitly name alternative tools (e.g. get_tracked_query for a single item) or state when not to use this search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_member_project_accessSet a member's project accessADestructiveInspect
Set which projects of the organization a member reaches: every project (mode "all") or only the projects in projectIds (mode "selected"); a project outside a selection answers as if it did not exist. It applies from the member's next request, including through their API keys and MCP connections. An owner always reaches every project and cannot be limited. memberId is the member id from list_members, not the user id; projectIds come from list_projects. Requires a confirmationToken: call preview_operation with tool "set_member_project_access" 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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| memberId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| projectIds | No | The projects a "selected" access reaches: at least one and at most 500 distinct projects, all of this organization; a repeated id counts once. Leave it out for "all". | |
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by disclosing that changes take effect on the member's next request, propagate to their API keys and MCP connections, that an owner is exempt, and that out-of-selection projects appear nonexistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single dense paragraph that front-loads the access semantics before prerequisites; every sentence carries information, though the run-on structure could be broken up for faster scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, permission-gated mutation with no output schema, it covers effect timing, blast radius, exemptions, parameter sourcing, and the confirmation protocol — everything needed to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema coverage, the description compensates well: it explains memberId provenance (from list_members, not the user id), projectIds provenance (list_projects), mode semantics, and the confirmationToken flow. organizationId is the one parameter left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Set which projects of the organization a member reaches') and immediately defines both modes, making it clearly distinct from siblings like change_member_role and invite_member.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: tells it to call preview_operation with tool "set_member_project_access" first, show the plan, and only proceed after user agreement, plus required permission and role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tracked_query_check_frequencySet how often tracked queries are checkedADestructiveIdempotentInspect
Change how often up to 100 tracked queries are checked: daily, weekly or monthly. A lower frequency spends less budget; use get_usage to see the effect. Checks skipped at a lower frequency are never made up later. Each one that cannot be changed is reported in "failed". Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| checkFrequency | Yes | ||
| organizationId | Yes | ||
| trackedQueryIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: the 100-item cap, that skipped checks are never backfilled, that per-item failures surface in a 'failed' field (partial-success semantics), and that the call is safe to retry (consistent with idempotentHint). This is the exact kind of disclosure an agent needs for a destructive, batch mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact clauses front-loaded with the action and its limit, then cost, then side effects, then failure reporting. No filler sentences; each line carries a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive batch mutation with annotations and no output schema, the description covers cost, irreversibility of skipped checks, and the 'failed' response field. The main residual gap is the role/format of the organization and project identifiers, but overall an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 explain the frequency values and the 100-item limit (both already implied by the enum and maxItems), but says nothing about organizationId or projectId and gives no format guidance for trackedQueryIds. Partial compensation for a 4-parameter, undocumented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Change how often ... are checked') plus resource ('tracked queries') and scope ('up to 100'). It clearly delineates the mutation, though it does not explicitly differentiate itself from the sibling set_tracked_query_passes or pause/resume_tracked_queries, leaving the agent to infer the boundary between frequency and other query settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use by pairing the change with its cost consequence ('A lower frequency spends less budget') and pointing at get_usage to evaluate the effect. It stops short of stating when-not to use it or naming the alternative tools for the other tracked-query settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tracked_query_passesSet how many answers each check capturesADestructiveIdempotentInspect
Change how many answers each check of up to 100 tracked queries captures (nPasses; above 1 only for AI engines). Fewer passes spend less budget; use get_usage to see the effect. Passes no longer captured are never made up later. Each one that cannot be changed is reported in "failed". Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| nPasses | Yes | ||
| projectId | Yes | ||
| organizationId | Yes | ||
| trackedQueryIds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantive context beyond the annotations: reduced passes are lost permanently ('never made up later'), which explains the destructiveHint, and 'safe to retry' reinforces idempotentHint. It also discloses that unchangeable queries are surfaced in a 'failed' field, which is output behavior not visible anywhere else.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight clauses, each carrying distinct information (scope, constraint, budget effect, irreversibility, failure reporting, retry safety). Front-loaded with the action and its scope, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, retry-safe mutation with no output schema, the description covers irreversibility, failure reporting, cost impact, and retry safety. Only the two ID scoping parameters remain unaddressed, which is a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains nPasses well (semantics, and that values above 1 apply only to AI engines) and notes the 100-query batch limit on trackedQueryIds, but says nothing about organizationId or projectId, leaving half the parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: changing how many answers each check captures for up to 100 tracked queries, naming the controlling parameter (nPasses). Distinguishable from the sibling set_tracked_query_check_frequency, which governs timing rather than per-check pass count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context: fewer passes spend less budget, and it points to get_usage to observe the effect. It does not explicitly contrast with the sibling frequency tool or state when not to use it, so it falls short of a full routing statement.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| projectId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| trackedQueryIds | Yes | ||
| restrictToExistingClusters | No |
TDQS
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.
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.
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.
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.
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.
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. Refused to a member restricted to selected projects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| country | No | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| websiteDomains | Yes | ||
| enteredBrandNames | No | Names the user already knows the brand by |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, open-world, non-idempotent, non-destructive, so the description adds real value on top: it is asynchronous, results arrive via get_job, and it can be refused for restricted members (an authorization constraint the annotations do not convey). It does not cover cost, duration, or failure modes of the background job.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what the tool does, followed by the workflow and the access constraint. No filler or restated title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an async job tool with no output schema, the description supplies the missing pieces an agent needs: that it returns a job handle and results must be fetched via get_job, and that user confirmation is required before create_project. Minor gaps remain around what a refusal or failed job looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate. It clarifies the two core inputs ('from its name and website'), but country, organizationId, and enteredBrandNames get no meaning from the description; enteredBrandNames and requestId are only documented in the schema itself. Partial compensation puts it at a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and outcome: starts a background job that proposes the names a brand is mentioned by, derived from its name and website. It also pins its position in the lifecycle (before the project exists). It never distinguishes itself from the sibling discover_brands, which sounds like it could overlap, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context (first step of project setup, before the project exists) and an explicit follow-up sequence: poll get_job, confirm names with the user, then create_project. It also states a hard exclusion: refused for members restricted to selected projects. The only gap is that it does not name a sibling alternative for cases where a project already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suspend_memberSuspend a memberADestructiveInspect
Suspend an organization member: they lose access immediately but stay a member, and reactivate_member gives it back. memberId is the member id from list_members, not the user id. Requires a confirmationToken: call preview_operation with tool "suspend_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.
| Name | Required | Description | Default |
|---|---|---|---|
| memberId | Yes | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already mark this as destructive, the description adds important behavioral context: access is revoked immediately, membership is retained, reactivation is possible via reactivate_member, and the operation requires the organization:manage permission plus the owner role. It also discloses the mandatory confirmation-token workflow, which is not captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the effect of suspension, then moves through parameter clarification, confirmation workflow, and permissions. Every sentence adds actionable information, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, permission-gated mutation with no output schema and low schema description coverage, the description is complete enough to call correctly. It covers the effect, reversibility, parameter source, confirmation-token prerequisite, and authorization requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description carries substantial weight. It explains that memberId is the member id from list_members rather than a user id and fully documents the confirmationToken workflow; requestId is covered by the schema itself. organizationId is left implicit, which is a minor gap given the otherwise strong parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Suspend an organization member') and immediately explains the consequence: access is lost immediately but membership remains. It also distinguishes the operation from its sibling reactivate_member, so an agent can identify the tool's role 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly requires calling preview_operation first with the same arguments, showing the plan to the user, and only invoking suspend_member after explicit agreement. It also names the inverse operation reactivate_member and clarifies that memberId must come from list_members rather than being a user id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_competitorUpdate a competitorADestructiveIdempotentInspect
Replace a competitor's name, website domains and brand names. Replaces all three: pass every domain and name the competitor should keep. A domain or brand name left out is removed, and later checks no longer match on it; results already recorded are not re-matched or deleted. Show the user the full new lists before calling. Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| projectId | Yes | ||
| brandNames | Yes | ||
| competitorId | Yes | ||
| organizationId | Yes | ||
| websiteDomains | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint and idempotentHint, but the description goes well beyond them: it explains that omitted domains/brand names are removed, that future checks stop matching them, and that already-recorded results are neither re-matched nor deleted. That last point is exactly the kind of consequence detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with purpose, then replace semantics, then data consequences, then the confirmation instruction. No filler and nothing repeated from the annotations verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, all-required-parameter mutation with no output schema, the description covers destruction scope, persistence of past results, and the safety ceremony. It omits permissions/auth requirements and what the call returns, which are minor given no output schema exists to document.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry weight: it clarifies that websiteDomains and brandNames are full replacement lists rather than appends, and that name is the new name. The three identifier parameters (organizationId, projectId, competitorId) are left undeclared but are self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (replace) plus the exact resources touched (name, website domains, brand names), and the replace-all framing immediately differentiates it from create_competitor or delete_competitor. An agent can tell 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition — 'Show the user the full new lists before calling' — which is actionable and appropriate for a destructive tool. It never explicitly contrasts with siblings like create_competitor or delete_competitor, so the routing guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_organizationUpdate an organizationADestructiveIdempotentInspect
Change the name, description or contact email of an organization; arguments left out are unchanged. A value passed overwrites the current one, and no tool returns the old value afterwards. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| requestId | No | Optional idempotency key, 8-255 printable characters. Reuse it only to retry this same call. | |
| description | No | ||
| contactEmail | No | ||
| organizationId | Yes | ||
| confirmationToken | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, it discloses that passed values overwrite current ones, omitted arguments remain unchanged, and no tool returns the old value afterwards. It also adds the confirmationToken workflow and permission requirements, which are important behavioral constraints for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the operation scope, then immediately gives the overwrite behavior and confirmation workflow. Every sentence carries important information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description covers the critical missing context: partial-update semantics, overwrite behavior, irreversibility of the old value, confirmation workflow, and permission requirements. An agent has enough information to invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, but the description compensates by naming the three updatable fields and explaining that omitted arguments are unchanged while passed values overwrite. It also explains confirmationToken's workflow role. It does not explain organizationId or requestId, though requestId has a schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Change the name, description or contact email of an organization') and precisely scopes the operation to partial updates via 'arguments left out are unchanged.' It clearly distinguishes this from sibling tools like create_organization, archive_organization, and restore_organization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit preconditions and workflow: call preview_operation first, show the plan, and invoke only after explicit user agreement. It also states the required permission and owner role. It does not explicitly compare against alternative update tools, but there is no competing sibling for this exact operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_projectUpdate a projectADestructiveIdempotentInspect
Rename a project, replace the website domains and brand names it is monitored for, or both. A rename alone removes nothing. brandProfile replaces both lists entirely: pass every domain and name the project should keep. A domain or brand name left out is removed, and later checks no longer match on it; results already recorded are not re-matched or deleted. Show the user the full new lists before calling. Safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| projectId | Yes | ||
| brandProfile | No | Replaces the website domains and brand names the project is monitored for. | |
| organizationId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/idempotentHint annotations by spelling out exactly what is destroyed (omitted domains and names), what is not (already-recorded results are not re-matched or deleted), and what changes downstream (later checks no longer match). 'Safe to retry' corroborates the idempotency hint rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with the two operations, then the destructive consequence, the caller obligation, and the retry note. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive four-parameter mutation with no output schema, it supplies the full-replacement semantics, the non-destructive path, the blast radius (past results preserved), and the pre-call confirmation requirement. An agent has everything needed to call this safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 risky parameter: brandProfile 'replaces both lists entirely' and callers must pass every domain and name to keep. It also clarifies name as the rename path. organizationId/projectId are left undiscussed, but as conventional identifiers that is a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with the exact two mutation modes: rename, replace the monitored website domains and brand names, or both. This distinguishes it clearly from siblings like rename_cluster, update_organization, and archive_project without needing schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two usage modes and when each applies ('A rename alone removes nothing'), and adds a concrete precondition: 'Show the user the full new lists before calling.' It does not name an alternative tool or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
30 tool updates
v2.0.0- Added
add_tracked_queries_to_clusters - Added
change_member_role - Changed
create_tracked_queries2 fields changed- changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +] - changed
Input schema / properties / nPasses / descriptionPrevious value: -"Answers captured per check; more than 1 only for AI engines. Each pass costs one check."New value: +"Answers captured per check; more than 1 only for AI engines. Each pass counts as one check against your plan; a Claude pass counts as five."
- Changed
get_cited_sources2 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode (only AI engines carry citations)"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (only AI engines carry citations)" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +]
- Changed
get_cluster_breakdown3 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +] - added
Input schema / properties / includeUngroupedQueries / descriptionAdded value: +"Sent alone, returns only the ungrouped row: the tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds that row to those clusters. Omit both for every cluster plus the ungrouped row."
- Changed
get_competitor_cooccurrence2 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +]
- Changed
get_mention_mix2 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +]
- Changed
get_mention_samples2 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +]
- Changed
get_project_rank_tracking_stats3 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +] - added
Input schema / properties / includeUngroupedQueries / descriptionAdded value: +"Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries."
- Changed
get_query_movers2 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +]
- Changed
get_rank_tracking_time_series3 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +] - added
Input schema / properties / includeUngroupedQueries / descriptionAdded value: +"Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries."
- Changed
get_sentiment_breakdown3 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +] - added
Input schema / properties / includeUngroupedQueries / descriptionAdded value: +"Sent alone, restricts to tracked queries that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all tracked queries."
- Changed
invite_member1 field changed- added
Input schema / properties / projectAccessAdded value: +{ + "default": null, + "description": "Optional. The projects the invitee will reach once they accept: {\"mode\": \"all\"}, the default, or {\"mode\": \"selected\", \"projectIds\": [...]} with 1 to 500 distinct project ids of this organization from list_projects; a repeated id counts once. An owner always reaches every project, so an owner invitation cannot carry a selection.", + "properties": { + "mode": { + "enum": [ + "all", + "selected" + ], + "type": "string" + }, + "projectIds": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "mode" + ], + "type": "object" +}
- Changed
list_ai_responses1 field changed- changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode" +]
- Changed
list_keyword_listings2 fields changed- changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +] - added
Input schema / properties / includeUngroupedQueries / descriptionAdded value: +"Sent alone, restricts to keywords with variants that belong to no cluster (refused if there are none). Sent with queryClusterIds, adds them to those clusters. Omit both for all keywords."
- Changed
list_untracked_competitors2 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode (SERP/Shopping have no AI text mentions)" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +]
- Added
pause_tracked_queries - Changed
preview_operation1 field changed- changed
Input schema / properties / tool / enumPrevious value: -[ - "delete_competitor", - "archive_project", - "delete_cluster", - "create_tracked_queries", - "delete_tracked_queries", - "run_checks", - "create_organization", - "update_organization", - "archive_organization", - "restore_organization", - "invite_member", - "cancel_invitation", - "update_member" -]New value: +[ + "delete_competitor", + "archive_project", + "delete_cluster", + "create_tracked_queries", + "delete_tracked_queries", + "run_checks", + "create_organization", + "update_organization", + "archive_organization", + "restore_organization", + "invite_member", + "cancel_invitation", + "change_member_role", + "suspend_member", + "reactivate_member", + "set_member_project_access" +]
- Added
reactivate_member - Added
remove_tracked_queries_from_clusters - Added
resume_tracked_queries - Changed
search_tracked_queries2 fields changed- changed
Input schema / properties / engines / descriptionPrevious value: -"allowed values: chatgpt, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping"New value: +"allowed values: chatgpt, claude, perplexity, google_ai_overview, google_ai_mode, google_serp, google_shopping" - changed
Input schema / properties / engines / items / enumPrevious value: -[ - "chatgpt", - "perplexity", - "google_ai_overview", - "google_ai_mode", - "google_serp", - "google_shopping" -]New value: +[ + "chatgpt", + "claude", + "perplexity", + "google_ai_overview", + "google_ai_mode", + "google_serp", + "google_shopping" +]
- Added
set_member_project_access - Added
set_tracked_query_check_frequency - Removed
set_tracked_query_clusters - Added
set_tracked_query_passes - Added
suspend_member - Removed
update_member - Changed
update_project1 field changed- changed
Input schema / properties / brandProfile / typePrevious value: -[ - "null", - "object" -]New value: +[ + "object", + "null" +]
- Removed
update_tracked_queries
60 tool updates
v1.1.0- Added
apply_auto_clustering - Added
archive_organization - Added
archive_project - Added
cancel_invitation - Added
create_clusters - Added
create_competitor - Added
create_organization - Added
create_project - Added
create_tracked_queries - Added
delete_cluster - Added
delete_competitor - Added
delete_tracked_queries - Added
discover_brands - Added
discover_keywords - Added
discover_prompts - Added
get_available_filters - Added
get_cited_sources - Added
get_cluster_breakdown - Added
get_competitor_cooccurrence - Added
get_job - Added
get_mencoro_guide - Added
get_mention_mix - Added
get_mention_samples - Added
get_metric_glossary - Added
get_organization - Added
get_organization_overview - Added
get_project - Added
get_project_rank_tracking_stats - Added
get_query_movers - Added
get_rank_tracking_time_series - Added
get_sentiment_breakdown - Added
get_share_of_voice_formula - Added
get_tracked_query - Added
get_tracked_query_matches - Added
get_tracked_query_time_series - Added
get_tracking_coverage - Added
get_usage - Added
invite_member - Added
list_ai_responses - Added
list_clusters - Added
list_keyword_listings - Added
list_members - Added
list_projects - Added
list_search_snapshots - Added
list_untracked_competitors - Added
preview_operation - Added
rename_cluster - Added
report_ai_response - Added
restore_organization - Added
restore_project - Added
run_checks - Added
search_tracked_queries - Added
set_tracked_query_clusters - Added
start_auto_clustering - Added
suggest_brand_names - Added
update_competitor - Added
update_member - Added
update_organization - Added
update_project - Added
update_tracked_queries
1 tool update
v1.0.0- First observed
mencoro_setup
TDQS
Scored across 68 tools
The descriptions are unusually strong and explicitly cross-reference related tools, so most boundaries are clear. Still, the analytics surface has several closely related tools (project stats, time series, movers, keyword listings, mention samples/mix), and the sheer size increases misselection risk.
Almost all tools follow a predictable snake_case verb_noun pattern (list_, get_, create_, update_, delete_, set_, archive_, restore_, etc.). The main outlier is mencoro_setup, with a few noun-first or setup-style names, but the convention is otherwise very readable.
68 tools is far beyond a practical MCP tool surface for an agent, even for a broad platform. Many tools are specialized and earn a place in the product, but the overall count creates a heavy context and selection burden.
Coverage is extensive across organizations, projects, members, competitors, clusters, tracked queries, analytics, jobs, usage, and guidance. Minor gaps remain, such as full deletion/removal flows for some resources and broader cluster update operations, but archive/suspend workflows largely cover lifecycles.
Maintenance
Related MCP Connectors
Track how AI assistants mention, cite, and rank your brand and competitors in AI search.
Track how AI assistants talk about your brand and market, and learn how to show up better.
Track brand mentions, share of voice and cited URLs in ChatGPT, Perplexity, Gemini and AI Overviews.
Track your brand's visibility in ChatGPT, Perplexity, Claude, Gemini, Grok and DeepSeek answers.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.1623 npm1MIT
- AlicenseBqualityCmaintenanceEnables AI agents to check brand mentions across AI search surfaces like ChatGPT, Claude, Gemini, Perplexity, and Google AI Overviews using natural language queries.418 npm1MIT
- AlicenseAqualityBmaintenanceEnables 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.251,239 npm1MIT
- -licenseNot gradedqualityCmaintenanceEnables AI assistants to perform comprehensive SEO and GEO measurements, including site audits, keyword research, ranking tracking, and brand visibility analysis across search engines and generative AI platforms.-