Skip to main content
Glama

Server Details

SEO, AEO and GEO audits, rank tracking, AI-citation scans and WordPress editing for any site.

Ownership verified
Status
Healthy
Uptime
99.5% over 21 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.3/5.0

Scored across 240 tools

Disambiguation2/5

With 240 tools there are many genuinely overlapping reads: get_site_insights, seo_insights, site_overview, technical_health, get_site_health, get_gsc_metrics, get_gsc_queries/pages/sitemaps, get_site_stats and get_analysis all answer adjacent 'how is this site doing' questions, and assist_classify_keywords vs classify_tracked_keywords, get_audit vs get_audit_report vs export_audit_report, and wp_get_page vs assist_page_digest vs wp_list_pages require careful reading to route correctly. The descriptions do an unusually good job of steering ('prefer this over X', 'use this instead of Y'), which rescues the set from a 1, but boundaries remain fuzzy at this scale.

Naming Consistency4/5

Almost everything is snake_case with a predictable prefix_verb_noun shape (get_/list_/create_/update_/delete_ plus well-defined namespaces: wp_, code_, assist_, framer_, gbp_) which maps cleanly onto subsystems. Minor deviations exist where a noun-only or verb-first name is used instead of verb_noun (api_access, site_overview, seo_insights, technical_health, content_for_goal, keyword_chat), but the pattern is still readable and consistent overall.

Tool Count1/5

240 tools is an extreme mismatch for any single server surface, and the tool list is multiple products bundled together (SEO analytics, a full WordPress/Elementor page editor, Vercel/GitHub code deploys, Framer editing, Shopify, audits, content writing). Even with heavy descriptions, an agent cannot select reliably among this many options, and per-tool context cost alone is prohibitive.

Completeness4/5

Coverage is genuinely broad and lifecycle-aware: connection flows, crawls with continuation/cancel, keyword research through ranking and funnel classification, content brief → draft → score → sources → publish → outcomes, WordPress read/patch/clone/restore/snapshot, plus GA/GSC/Shopify/Framer/code-site integrations. Notable gaps are mostly acknowledged rather than hidden (GBP edits/replies not writable, no update/delete for some audit and report entities, no site-level rename), so agents can route around them.

Available Tools

240 tools
accept_sourceAInspect

Write the source the USER chose into the draft at the claim, as a markdown link (it replaces the [SOURCE NEEDED] marker). Only call after the user picked it. Clears the score — re-score after. claim_id comes from suggest_sources.

NameRequiredDescriptionDefault
urlYesThe source URL the user chose
titleNoLink text (the source's name)
brief_idYesThe brief ID
claim_idYesThe claim id from suggest_sources

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent write with open-world access. The description adds real behavioral detail beyond that: it replaces a specific marker, and it clears the score so a re-score is required afterward — a side effect an agent would otherwise miss.

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

Conciseness5/5

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

Three short sentences, front-loaded with the mutation itself, then the precondition, then the side effect. Every sentence carries distinct information with no padding.

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

Completeness4/5

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

For a no-output-schema mutation tool, the description covers the write target, the marker replacement, the precondition and the score-clearing side effect. The main residual gap is the return value/confirmation format, which is minor given the tool's simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, so url, title, brief_id and claim_id are all documented. The description's note that claim_id comes from suggest_sources largely repeats the schema's own wording, adding little new meaning. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource: writes the user-chosen source into the draft at the claim as a markdown link, replacing the [SOURCE NEEDED] marker. This is concrete enough to separate it from sibling tools like suggest_sources or assist_draft.

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

Usage Guidelines4/5

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

'Only call after the user picked it' gives an explicit precondition, and pointing to suggest_sources identifies where claim_id originates, implicitly routing the agent through that tool first. It does not state what to do if the user changed their mind or if the marker is absent, but the core when-to-use guidance is clear.

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

add_tracked_keywordsA
Destructive
Inspect

Save target keywords to a brand's account — the keywords you and the user decided to track and build for. Pass keywords as a JSON array. Plain strings work: ["local seo pune","seo audit"]. BETTER: when you researched the keywords, pass rich objects so the brand record is complete from the start: [{"keyword":"seo audit","intent":"commercial","funnel_stage":"mofu","cluster_name":"SEO services"}] (intent: informational/commercial/transactional/navigational; funnel_stage: tofu/mofu/bofu; also accepts cluster_name, notes, source). Mixed lists are fine; 1-200; dedups automatically. Then recall with list_tracked_keywords and review coverage with get_keyword_funnel. Adding does not run the paid rank check; your intent/funnel_stage are kept.

NameRequiredDescriptionDefault
site_idYesThe brand/site ID
keywordsYesJSON array of keyword strings and/or rich objects {keyword, intent?, funnel_stage?, cluster_name?, notes?, source?}

TDQS

A4.4/5.0
Behavior4/5

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

With annotations already declaring destructiveHint=true and idempotentHint=false, the description adds real behavioral context: automatic dedup, a 1-200 batch bound, mixed-list tolerance, and that adding does not trigger the paid rank check while intent/funnel_stage are persisted. It does not explain whether existing tracked keywords are overwritten, but the added operational detail goes meaningfully beyond the annotations.

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

Conciseness4/5

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

Front-loaded with the core purpose, then format, examples, and follow-up tools in a logical order. The two worked examples earn their space, though the run-on parentheticals make it denser than strictly necessary.

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

Completeness4/5

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

For a two-parameter mutation tool with no output schema but full annotation coverage, the description supplies enough to call it correctly: accepted formats, field enums, limits, and follow-up tools. Only the effect on pre-existing tracked keywords is left unaddressed.

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

Parameters5/5

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

Schema coverage is 100% (baseline 3), yet the description still adds substantial meaning the schema omits: it enumerates allowed intent values (informational/commercial/transactional/navigational), funnel_stage values (tofu/mofu/bofu), the extra optional fields (cluster_name, notes, source), the accepted string-vs-object formats, and the 1-200 count limit.

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

Purpose5/5

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

States a specific verb and resource ('Save target keywords to a brand's account') and immediately clarifies the scope as the keywords the user decided to track. It names sibling tools (list_tracked_keywords, get_keyword_funnel) so an agent can distinguish saving from recalling and reviewing.

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

Usage Guidelines4/5

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

Gives clear context for use ('the keywords you and the user decided to track and build for') and routes follow-up work to list_tracked_keywords and get_keyword_funnel. It stops short of naming true alternatives like remove_tracked_keywords, promote_research_keywords, or seed_keywords_from_gsc, so it is strong but not complete on when-not/alternatives.

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

adopt_site_redirectA
Idempotent
Inspect

The site's homepage redirects to a DIFFERENT domain — point the site at that domain and re-crawl, in one call. Use this when a crawl returns 0 pages and its coverage carries seed_redirects_to (the status detail says "X redirects to Y"): the user added the domain they own, it 301s to their canonical one, and the crawler will not follow a redirect off-site. The redirect is re-verified live before anything is changed. Refuses if the target is already a site in the workspace, or if the redirect is gone.

NameRequiredDescriptionDefault
site_idYesThe site ID whose domain redirects elsewhere

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safety profile (mutation, idempotent, non-destructive, open-world), so the description's job is lower. It adds genuinely useful behavior: the redirect is re-verified live before any change, and two refusal conditions are spelled out. It stops short of describing what happens to existing crawl data or the response shape, 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.

Conciseness5/5

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

Three tight sentences, front-loaded with the action, then the trigger condition, then the refusal guard. No sentence is filler and the ordering matches how an agent decides and calls.

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

Completeness4/5

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

For a one-parameter mutation tool with no output schema and rich annotations, the description covers the action, the trigger, verification, and failure modes. The only minor gap is that it doesn't indicate the return/outcome shape or the effect on prior crawl results.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, so the schema already carries the semantics. The description reinforces the meaning ('the site whose homepage redirects elsewhere') but adds no syntax or format detail beyond the schema, making the baseline 3 correct.

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

Purpose5/5

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

The description states a specific verb and resource: point the site at the domain its homepage redirects to and re-crawl. It is clearly distinguishable from siblings like refresh_site or start_crawl because it names the exact precondition (homepage 301s off-site) that only this tool addresses.

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

Usage Guidelines5/5

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

It gives an explicit, observable trigger: use when a crawl returns 0 pages and coverage carries `seed_redirects_to` with a 'X redirects to Y' status detail. It also states when the tool will refuse (target already a site, redirect gone), so the agent knows both when to call it and when it will fail.

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

api_accessA
Read-only
Inspect

How to fetch any tool's full data straight from the REST API with your own key and process it in code, instead of pulling it through this context. Returns base URL, auth and the endpoint behind each heavy tool.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context by disclosing the return payload (base URL, auth, per-tool endpoints), which annotations cannot convey.

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

Conciseness4/5

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

Two tight sentences with the purpose front-loaded and the return contents second. Minor looseness in 'straight from the REST API with your own key' but no filler or redundancy.

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

Completeness4/5

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

With no input schema and no output schema, the description carries the burden and does explain the returned fields. It could say more about format or how endpoints map to tools, but it's sufficient for an agent to know what to expect.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to describe; baseline 4 applies. Nothing is missing here.

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

Purpose4/5

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

States a specific purpose: a meta-tool that returns the REST API base URL, auth, and endpoints behind heavy tools so data can be fetched directly. It's distinct from every sibling (all of which are SEO/WP operations), so an agent can identify it quickly.

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

Usage Guidelines4/5

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

Provides a clear when-to-use rationale: 'instead of pulling it through this context,' i.e., use this when you want to process data in code with your own key. It names the alternative pattern (context/tool call) but gives no explicit exclusions or prerequisites beyond needing a key.

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

assist_balanceA
Read-onlyDestructive
Inspect

Check the user's XeoRank Assist credit balance. Assist ops (like assist_classify_keywords) run on XeoRank's server-side small models and debit this balance — YOUR tokens are untouched. Credits come from coupon codes (assist_redeem_coupon) or one-off top-ups; when a balance is 0 or an op returns credits_exhausted, the response includes a top_up object with pay links to show the user.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

With only readOnlyHint available in annotations, the description carries real extra weight: it explains that assist ops run on server-side small models rather than the caller's tokens, that the balance is debited by those ops, where credits originate (coupons or top-ups), and that exhaustion responses embed a top_up object with pay links. That is operational behavior an agent could not derive from the annotations or the empty schema.

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

Conciseness5/5

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

Three sentences, front-loaded with the purpose, then the mechanism (server-side models, balance debit), then the credits-source and exhaustion path. No filler, and every clause conveys something the agent acts on.

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

Completeness5/5

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

There is no output schema, so the description supplies the missing return-value information: the top_up object with pay links appears on zero balance or credits_exhausted. Combined with the annotation-declared read-only nature, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; a baseline of 4 applies. The description correctly does not invent parameter guidance.

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

Purpose5/5

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

States a specific verb+resource ('Check the user's XeoRank Assist credit balance') and names the exact concept — Assist credits — that separates it from siblings like assist_savings or get_usage. It also names the sibling operations that consume the balance (assist_classify_keywords), so the agent can place it in the workflow without opening any schema.

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

Usage Guidelines4/5

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

It gives clear context for when the tool matters: when a balance is 0 or an assist op returns credits_exhausted, and it points to assist_redeem_coupon as the credit source. It stops short of an explicit 'call this before/after running an assist op' directive, so the invocation trigger 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.

assist_classify_keywordsA
Destructive
Inspect

OFFLOAD keyword classification to XeoRank's server-side model instead of reasoning over keyword lists yourself — saves your own tokens. Classifies intent (informational/commercial/transactional/navigational), funnel_stage (tofu/mofu/bofu), and cluster_name for tracked keywords, and stores the results. Omit keywords to classify every unclassified tracked keyword on the site. Costs Assist credits (~1/keyword); prefer this over classify_tracked_keywords when a balance is available.

NameRequiredDescriptionDefault
storeNoPersist onto tracked keywords (default true)
site_idYesSite UUID (from list_sites)
industryNoOptional industry/context hint to sharpen classification
keywordsNoOptional JSON array of keyword strings; omit to classify all unclassified tracked keywords

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds valuable beyond-schema context — cost (~1 Assist credit/keyword) and that results are stored — but does not clarify what the destructiveHint actually destroys (e.g. whether existing intent/funnel values are overwritten when store=true).

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

Conciseness4/5

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

Front-loaded with the core action and the token-saving rationale, and each sentence carries signal (what it classifies, the omit-default, the cost, the sibling preference). Slightly padded by the 'saves your own tokens' framing, but overall tight.

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

Completeness4/5

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

For a mutation tool with no output schema but full annotation coverage, the description covers purpose, storage behavior, cost, and the sibling alternative, which is nearly everything an agent needs. It stops short of explaining the destructive/overwrite semantics flagged by the annotations.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all four parameters including the 'omit to classify all unclassified' behavior of keywords. The description largely restates that, adding no syntax or format detail beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource ('Classifies intent, funnel_stage, and cluster_name for tracked keywords') and immediately distinguishes itself from the sibling by explaining it is a server-side offload rather than local reasoning. An agent can tell it apart from classify_tracked_keywords without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit routing rule: 'prefer this over classify_tracked_keywords when a balance is available,' plus the operational condition 'Omit keywords to classify every unclassified tracked keyword.' It names the alternative and the selecting condition, 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.

assist_design_lintA
Read-onlyDestructive
Inspect

Pre-apply structural lint of a WordPress page (server-side, no browser). Flags Pro-widget use, deep container nesting, empty bands, section bloat — plus the two defects that survive every per-element check because they only exist BETWEEN elements: (1) row_without_breakpoint, a multi-column row with no tablet/mobile override, which stays that wide at 768px because Elementor never stacks a row for you; (2) sibling_drift, cards or columns that disagree on a colour where the majority agree, the signature of elements authored one at a time. Run it after building a section and before you publish. Costs a few Assist credits.

NameRequiredDescriptionDefault
post_idYesWordPress page/post numeric ID
site_idYesSite UUID (from list_sites)

TDQS

A4.1/5.0
Behavior4/5

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

Adds genuinely useful traits beyond the annotations: server-side with no browser, pre-apply (non-mutating analysis), and a cost signal (“Costs a few Assist credits”). The only gap is that the description does not reconcile with the odd destructiveHint=true in the annotations, though it never claims to modify anything, so there is no real contradiction.

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

Conciseness4/5

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

Front-loaded with the verb+resource, then the specific defect classes, then the invocation window. It is long and dense, but nearly every clause carries information the agent needs to know what will be flagged.

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

Completeness4/5

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

There is no output schema, so the description does the work of explaining what findings look like — the defect names and what each means (row_without_breakpoint, sibling_drift). Combined with the cost and execution-model notes, an agent has what it needs, though it never says whether results are returned as a pass/fail list or detailed issues.

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

Parameters3/5

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

Schema description coverage is 100% and the two parameters (site_id, post_id) are documented in the schema itself. The description adds no syntax, format, or constraint detail for them, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (“structural lint of a WordPress page”) and enumerates exactly what it flags (Pro-widget use, deep nesting, empty bands, section bloat, row_without_breakpoint, sibling_drift). An agent can distinguish this from generic page tools like assist_page_digest or wp_compare_pages without opening a schema.

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

Usage Guidelines4/5

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

Gives clear timing guidance: “Run it after building a section and before you publish.” That establishes context, but it never names an alternative (e.g. design_recommend or assist_page_digest) or states when NOT to use it, so it stops short of explicit routing.

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

assist_draftAInspect

LAST-RESORT WRITER (Pro + Assist credits). Drafts the brief's piece from the AUTHOR'S OWN MATERIAL — their interview answers and/or rough draft — inside the brand's voice profile, then loops review → revise until there are no blockers, no cadence findings and the voice is in range. Refuses (needs_author_material) when the brief has neither: it will not write from evidence alone. Appends a disclosure line. You, the user's Claude, remain the default writer; use this when a draft has failed score_content_draft twice or the user asks for it. The user still reviews and decides — their name is on it.

NameRequiredDescriptionDefault
saveNoSave as the brief's draft (default true); false returns the markdown only
brief_idYesThe brief ID (with human_inputs or author_draft on it)
max_passesNoReview→revise passes, 1–4 (default 3)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only cover safety flags (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true). The description adds real behavior the annotations cannot: it refuses with needs_author_material, loops review→revise until no blockers/cadence findings and voice in range, appends a disclosure line, and requires Pro + Assist credits. It stops short of stating persistence/reversibility of the saved draft, but the disclosure and refusal semantics are substantial additions.

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

Conciseness4/5

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

Front-loaded with the hardest constraint (LAST-RESORT, Pro + Assist credits) and the material requirement, followed by refusal behavior, then the escalation condition. Dense but every clause carries distinct information; only the nested parentheticals slightly reduce scanability.

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

Completeness5/5

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

For a non-idempotent, open-world writer tool with no output schema, the description covers prerequisites (author material, Pro + Assist credits), refusal behavior, the revision loop, side effects (disclosure line, saved draft), and the human-review boundary. An agent has everything needed to decide and invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented. The description contextualizes max_passes (the review→revise loop) and save (the appended disclosure/stored draft), but adds no syntax, ranges, or defaults beyond what the schema states. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb (drafts) and resource (the brief's piece) with a precise input constraint (from the AUTHOR'S OWN MATERIAL — interview answers and/or rough draft). It explicitly distinguishes itself from the sibling score_content_draft and from the default writer role, so an agent can place it without opening the schema.

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

Usage Guidelines5/5

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

Gives an explicit escalation trigger: 'use this when a draft has failed score_content_draft twice or the user asks for it,' plus the self-label 'LAST-RESORT WRITER.' It also states the negative condition (refuses when the brief has no author material), which is the strongest form of when-not guidance.

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

assist_edit_sectionA
Destructive
Inspect

EDIT a page element BY INTENT without handling HTML yourself. XeoRank reads the element's current text server-side, rewrites it on a small model per your instruction, and applies it through the validated patch path (round-trip checked, write-gated). You orchestrate; XeoRank reads+generates+writes. Get element ids from assist_page_digest. Use dry_run=true to preview. Costs Assist credits.

NameRequiredDescriptionDefault
dry_runNoPreview the rewrite without writing (default false)
node_idYesElement id to edit (from assist_page_digest sections/elements, or wp_get_page)
post_idYesWordPress page/post numeric ID
site_idYesSite UUID (from list_sites)
instructionYesNatural-language edit, e.g. 'lead the hero with audit speed' or 'make the CTA more urgent'

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and non-idempotence; the description goes further by disclosing the credit cost, the round-trip-checked and write-gated write path, and the dry_run escape hatch. It also clarifies the division of labor (agent orchestrates; service reads, generates, writes), which is behavior an agent cannot infer from the schema.

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

Conciseness4/5

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

Front-loaded with the verb and differentiator, then prerequisites and cost. The 'You orchestrate; XeoRank reads+generates+writes.' line is slightly rhetorical but does encode the responsibility split, so almost every sentence earns its place.

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

Completeness4/5

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

With no output schema and a destructive, credit-metered write, the description covers the workflow, id sourcing, preview, gating, and cost. It does not spell out failure/rollback behavior or the write-enablement prerequisite implied by 'write-gated' (cf. wp_enable_writes), leaving a small gap for a mutation tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: where node_id comes from (assist_page_digest), the natural-language register expected for instruction (with worked examples), and the preview semantics of dry_run. That is above the baseline without being exhaustive.

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

Purpose5/5

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

States a specific verb+resource ('EDIT a page element') plus the key differentiator: intent-based rewriting with no HTML handling on the caller's side. It also names the mechanism (server-side read, small-model rewrite, validated patch) that separates it from sibling writers like wp_patch_page or wp_replace_section.

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

Usage Guidelines4/5

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

Gives a concrete prerequisite ('Get element ids from assist_page_digest'), a safe-preview path (dry_run=true), and the cost implication ('Costs Assist credits'). It stops short of an explicit when-not-to-use or a named alternative for direct HTML editing, so it is strong context without full routing guidance.

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

assist_page_digestA
Read-onlyDestructive
Inspect

OFFLOAD reading a WordPress page. Instead of wp_get_page (which dumps the full page HTML into YOUR context — the single costliest op), this returns a compact digest: top-level sections with a semantic type + one-line summary, the flat editable-element skeleton (element ids you can edit), and SEO gaps. Understand any page in ~1KB. Costs Assist credits. Feed the element ids straight into assist_edit_section or wp_patch_page.

NameRequiredDescriptionDefault
post_idYesWordPress page/post numeric ID (from wp_list_pages)
site_idYesSite UUID (from list_sites)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not carrying the safety burden. It adds genuinely useful context the annotations cannot convey: that the call consumes Assist credits and what the ~1KB payload contains. It does not, however, discuss failure modes or the cost magnitude.

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

Conciseness4/5

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

Front-loads the key differentiator ('OFFLOAD reading a WordPress page') and stays tight overall. The parenthetical aside about wp_get_page's cost is slightly verbose but earns its place by justifying the tool's existence.

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

Completeness5/5

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

With no output schema, the description carries the return-shape burden and does so precisely: semantic section types, one-line summaries, flat editable-element skeleton, and SEO gaps. An agent knows both inputs and outputs before calling.

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

Parameters3/5

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

Schema coverage is 100%, so site_id and post_id (with their provenance hints) are already fully documented. The description adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (read a WordPress page as a compact digest) and explicitly contrasts itself with the sibling wp_get_page. The output contents (sections, editable-element skeleton, SEO gaps) make the tool's scope unmistakable.

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

Usage Guidelines5/5

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

Gives an explicit when-to-use (instead of wp_get_page) and names concrete next-step tools (assist_edit_section, wp_patch_page) that consume the element ids. The routing logic from digest to edit is spelled out, 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.

assist_redeem_couponA
Destructive
Inspect

Redeem an Assist credit coupon code (e.g. one shared at a XeoRank workshop) — adds credits to the user's balance. Once per user per code. If the user mentions having a code, redeem it for them.

NameRequiredDescriptionDefault
codeYesThe coupon code (case-insensitive)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this is a destructive, non-idempotent, open-world write, so the safety profile is covered. The description adds genuinely useful behavior the annotations don't: the credit effect on the user's balance and the per-user-per-code rate limit. It omits error behavior for invalid, expired, or already-redeemed codes, keeping it out of 5 territory.

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

Conciseness5/5

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

Two sentences, both carrying weight: the first states action, source example, effect, and limit; the second states the trigger. The action leads and nothing is repeated from the schema or annotations.

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

Completeness4/5

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

For a one-parameter mutation with full annotation coverage and no output schema, the description covers action, effect, frequency limit, and call trigger. The remaining gap is failure handling — what to tell the user when a code is invalid or already redeemed — which an agent would have to discover at runtime.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the single `code` parameter including case-insensitivity, so the baseline is 3. The description adds provenance context ("e.g. one shared at a XeoRank workshop") that helps the agent recognize what a valid code looks like, a modest but real addition.

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

Purpose5/5

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

States a specific verb and resource ("Redeem an Assist credit coupon code") plus the observable effect ("adds credits to the user's balance"). No sibling tool does anything similar — assist_balance and assist_savings are read-oriented — so an agent can select this without ambiguity.

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

Usage Guidelines4/5

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

Gives an explicit trigger condition ("If the user mentions having a code, redeem it for them") and a constraint ("Once per user per code"). It stops short of stating when NOT to call it or naming the alternative for balance/credit questions (e.g. assist_balance), but the positive routing is unambiguous.

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

assist_savingsA
Read-onlyDestructive
Inspect

Report how many of the user's OWN agent tokens XeoRank Assist has saved them so far (by offloading reads/edits/classification server-side), what it cost in credits, and the estimated large-model spend avoided. Use it to show ROI after a session.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered; the description adds useful semantic detail on what is counted as "saved" and how it was offloaded. It does not address the surprising destructiveHint=true flag on what is clearly a reporting operation, nor does it describe return format. With annotations carrying the safety profile, a 3 is appropriate.

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

Conciseness5/5

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

Two sentences, front-loaded with the primary output and followed by the single usage condition. No filler; every clause carries information.

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

Completeness4/5

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

With no parameters and no output schema, the description compensates by enumerating the three reported metrics, so an agent knows what it gets back. It is complete for the call itself, missing only any note about the anomalous destructive annotation.

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

Parameters4/5

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

The tool takes zero parameters and schema coverage is 100%, so the baseline is 4. The description usefully clarifies the semantics of the reported values (own tokens saved, credits spent, spend avoided), which is more than the empty schema conveys.

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

Purpose4/5

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

The description names a specific verb (Report) and the precise resource set it produces: agent tokens saved, credits cost, and estimated large-model spend avoided. The parenthetical mechanism (server-side offloading of reads/edits/classification) makes the scope concrete. It does not name a sibling to differentiate from, so it falls short of a 5.

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

Usage Guidelines4/5

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

"Use it to show ROI after a session" gives a clear triggering context for the tool. However, it names no alternative (e.g. assist_balance or get_usage) and states no exclusions, so it is a solid context statement rather than explicit when/when-not guidance.

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

assist_security_auditA
Read-onlyDestructive
Inspect

Read-only WordPress security posture audit of a connected site: core-version currency, plugin/theme inventory, user-enumeration exposure, XML-RPC, version-leak files, missing security headers, and directory listing. Returns a graded (A-F), severity-ranked report with concrete fixes. Runs server-side (no page changes, no wp-cli/SSH needed). Costs Assist credits.

NameRequiredDescriptionDefault
site_idYesConnected WordPress site UUID (from list_wordpress_sites)

TDQS

A4/5.0
Behavior4/5

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

With annotations covering read-only, open-world, non-idempotent, and destructive flags, the description still adds real value: it discloses the credit cost, that execution is server-side with 'no page changes', and that the output is a graded, severity-ranked report with fixes. The 'Read-only / no page changes' claim matches readOnlyHint=true but sits uneasily next to destructiveHint=true in the annotations, a tension the description does not address.

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

Conciseness5/5

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

Two sentences, both front-loaded: the first names the operation, scope, and full check list; the second covers return shape, execution model, and cost. No filler or restated boilerplate — every clause carries information.

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

Completeness4/5

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

For a single-parameter, no-output-schema tool, the description is nearly complete: it explains what is inspected, what is returned (A–F grade, severity ranking, concrete fixes), how it runs, and that it consumes credits. It could go slightly further on cost magnitude or prerequisites (e.g., that the site must be connected first), but nothing essential is missing.

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

Parameters3/5

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

There is a single parameter and schema description coverage is 100% — the schema already documents site_id as a connected WordPress site UUID sourced from list_wordpress_sites. The description adds nothing about the parameter, so the baseline 3 for fully-covered schemas is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Read-only WordPress security posture audit of a connected site') and then enumerates the exact checks performed (core-version currency, plugin/theme inventory, user-enumeration, XML-RPC, version-leak files, headers, directory listing). This clearly separates it from sibling WordPress tools like get_site_health, technical_health, or wp_capabilities without needing to open any schema.

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

Usage Guidelines3/5

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

It gives useful context for invoking it — the site must be a connected WordPress site, it runs server-side, and no wp-cli/SSH is required — plus a cost warning. However it never routes the agent between this and adjacent tools (technical_health, get_site_health, plan_search_audit), and gives no when-not conditions, so usage is implied rather than directed.

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

assist_transform_pageA
Destructive
Inspect

Intelligently transform ALL of a page's text by a HIGH-LEVEL instruction (e.g. 'respecialize this urology page to pulmonology' or 'rewrite for a Mumbai audience') — handles the long tail of related terms a literal find/replace can't (conditions, procedures, patient language). XeoRank reads every text field server-side, rewrites them contextually (HTML preserved), and applies through the validated patch path. Use dry_run=true FIRST — it previews sample rewrites + the estimated credit cost for FREE; only a real apply (dry_run=false) debits credits. Best for making a cloned page genuinely about a different topic. Pages/posts only — for a header/footer/single template use wp_patch_template.

NameRequiredDescriptionDefault
dry_runNoPreview sample rewrites + estimated credit cost for FREE, without writing or charging (default false)
post_idYesWordPress page/post numeric ID
site_idYesSite UUID (from list_sites)
instructionYesHigh-level transform, e.g. 'respecialize from urology to pulmonology — swap conditions, procedures and patient language'

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructive=true, non-idempotent, open-world, but the description adds substantial context beyond them: server-side reading of every text field, HTML preservation, application via the validated patch path, and a credit model where dry_run previews are free while real apply debits credits. These are exactly the behavioral traits an agent needs before invoking 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.

Conciseness4/5

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

The core purpose is front-loaded in the first clause, followed by examples, mechanics, and cost guidance in a logical order. It is dense with em-dash clause stacking but every sentence carries actionable information, so almost nothing is wasted.

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

Completeness4/5

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

For a destructive mutation with no output schema, the definition covers scope, mechanics, cost behavior, and the dry-run workflow thoroughly. It does not describe what a real (non-dry-run) apply returns or how to verify the result, a minor gap given the absence of an output schema.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description slightly exceeds it by reinforcing that dry_run is the preview-plus-cost-estimate path and that instruction is a high-level intent rather than a literal string. It stops short of adding new semantics not already in the schema, so it is a modest addition over the structured fields.

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

Purpose5/5

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

The description names a specific verb (transform) and resource (a page's text) driven by a high-level instruction, with concrete examples ('respecialize this urology page to pulmonology'). It explicitly distinguishes itself from the sibling wp_patch_template for header/footer/single-template edits, so an agent can route without opening a schema.

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

Usage Guidelines5/5

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

It states when to use it ('best for making a cloned page genuinely about a different topic'), a mandatory workflow step ('use dry_run=true FIRST'), and names the alternative (wp_patch_template) with the condition that selects it. When-to-use, when-not, and alternatives are all covered.

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

assist_widget_keysA
Read-onlyDestructive
Inspect

WHICH ELEMENTOR KEY DO I NEED? Give a widget and what you want to change; get back the 2-3 REAL control keys, read from this site's live Elementor registry. Use this instead of wp_widget_controls when you want an answer rather than a catalogue: a single widget's registry can exceed a thousand controls once responsive variants are counted, and pulling it in to learn two names is the costliest avoidable op there is. The registry is read server-side, and every key returned is verified to exist in it (invented names are dropped and listed under dropped_not_in_registry), so this cannot become a smaller model guessing. Elementor keys are often NOT the obvious word — icon-box alignment is text_align, a counter's number is end. Costs a few Assist credits; wp_widget_controls stays free.

NameRequiredDescriptionDefault
tabNoNarrow the registry first: content | style | advanced. Optional.
intentYesWhat you want to change, in plain words — e.g. "make the title red and centred", "stack the cards on tablet", "set the button hover background".
site_idYesSite UUID (from list_sites)
widget_typeYesElementor widget type, e.g. "icon-box", "heading", "nav-menu". For a container/section pass "container".

TDQS

A4.8/5.0
Behavior5/5

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

Despite annotations already declaring readOnlyHint, the description adds substantial behavioral context: server-side registry read, verification that every returned key exists, invented names dropped and surfaced under dropped_not_in_registry, and a credit cost versus a free sibling. It also warns keys are non-obvious (text_align, end), which shapes how an agent interprets results.

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

Conciseness4/5

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

Front-loaded with the core question and answer shape, and most sentences carry decision-relevant information (cost, verification, non-obvious naming). It is slightly long and rhetorically framed, but no sentence is pure filler.

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

Completeness5/5

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

No output schema exists, so the description carries the return-value burden and does: 2-3 verified keys plus a dropped_not_in_registry list. Combined with cost and verification semantics, an agent has everything needed to call and interpret it.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description still adds meaning by explaining that a widget registry can exceed a thousand controls with responsive variants and that 'container' is passed for sections — context the schema alone hints at but does not convey in terms of scale and cost.

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

Purpose5/5

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

States a precise verb+resource ('give a widget and what you want to change; get back the 2-3 REAL control keys') and explicitly distinguishes itself from the sibling wp_widget_controls by framing this as an answer rather than a catalogue. 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.

Usage Guidelines5/5

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

Names the alternative (wp_widget_controls) and the exact condition that selects this tool over it ('when you want an answer rather than a catalogue'), plus the cost trade-off. When-to-use is fully specified.

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

assist_writing_fixA
Read-only
Inspect

Writing Agent editor pass (Pro plan + Assist credits): proposes the SMALLEST find→replace patches that resolve review_writing / score_content_draft findings, using a Sonnet-class editor model — not the lite tier. It never rewrites the document, never applies anything, and never invents a number, source or quote: an unsourced claim is qualified, marked [SOURCE NEEDED: …] or removed. Every patch is anchored to text that exists (unanchored ones are dropped) and flagged if it introduces a digit. Show the user each patch with its why, apply the accepted ones verbatim, then review_writing again. Fixed cost per call for up to 12 findings; if you pass no findings the detector runs first and a clean text costs nothing.

NameRequiredDescriptionDefault
textYesThe draft (markdown/plain, ≤ 60k chars)
site_idNoOptional brand/site id for cost attribution
findingsNoJSON array of findings from review_writing (default: run the detector)
voice_notesNoThe user's voice/terminology notes to preserve
max_findingsNoUp to 12 findings per call (default 12)
target_keywordNoOptional target keyword

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover safety (readOnlyHint=true, destructiveHint=false), and the description adds substantial context beyond them: never applies anything, never invents numbers/sources/quotes, unsourced claims get qualified/marked/removed, unanchored patches are dropped, digit-introducing patches are flagged, and it discloses fixed cost per call up to 12 findings with free clean text.

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

Conciseness4/5

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

Front-loaded with the core purpose and dense with substance; nearly every clause earns its place (constraints, workflow, cost). Some sentences are run-on and pack multiple behaviors, but there is little waste.

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

Completeness5/5

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

No output schema, yet the description explains what the tool returns (patches with their 'why'), how they should be applied, and the cost model. For a read-only proposal tool with full schema coverage, 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.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning for otherwise opaque params: findings defaults to running the detector, max_findings is capped at 12, and site_id drives cost attribution. It elaborates on the cost model tied to the findings parameter.

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

Purpose5/5

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

States a specific verb+resource ('proposes the SMALLEST find→replace patches') and names the sibling findings sources it resolves (review_writing / score_content_draft). It also distinguishes itself from the editor-model alternatives by noting 'not the lite tier' and 'never rewrites the document' vs rewrite_content.

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

Usage Guidelines4/5

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

Gives clear context: invoke after review_writing/score_content_draft findings exist, and the full workflow ('Show the user each patch... then review_writing again'). It stops short of explicitly naming rewrite_content as the alternative for full rewrites, so the sibling routing 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.

audit_chatB
Destructive
Inspect

Chat with the AI about an audit's findings. Ask questions about specific issues, get implementation guidance, or discuss priorities.

NameRequiredDescriptionDefault
messageYesYour question or message about the audit
audit_idYesThe audit ID

TDQS

B3.3/5.0
Behavior2/5

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

Annotations declare destructiveHint=true, openWorldHint=true, idempotentHint=false, yet the description portrays a purely informational 'ask questions' interaction and never warns that the chat may modify state or take actions. It also omits any statement about conversation persistence or whether prior turns are retained across calls, which matters for a non-idempotent chat tool.

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

Conciseness5/5

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

Two short sentences, purpose front-loaded, and the second sentence adds concrete use cases rather than filler. Nothing is wasted.

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

Completeness3/5

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

For a two-parameter, no-output-schema tool the description is adequate on intent, but given the destructive/openWorld annotations it should say what the call actually returns or whether it can alter the audit. An agent can call it correctly but cannot predict its effect.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are already documented ('Your question or message about the audit', 'The audit ID'). The description adds no format, length, or contextual constraints beyond what the schema states, so the baseline 3 applies.

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

Purpose4/5

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

States a specific interaction (conversing with an AI) bound to a specific resource (an audit's findings) and enumerates the kinds of exchanges supported. It is clearly distinct from siblings like get_audit or get_audit_report, though it never contrasts itself with the other chat-style sibling (keyword_chat).

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

Usage Guidelines3/5

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

It implies when to use it (you have an audit and want to ask about issues, guidance, or priorities), which is decent implied usage. But there is no explicit when-not guidance, no prerequisite (e.g. an existing completed audit), and no routing versus list_audits/get_audit_report.

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

batch_inspectA
Read-only
Inspect

Inspect multiple URLs at once for indexing status and issues. More efficient than inspecting one at a time.

NameRequiredDescriptionDefault
urlsYesJSON array or comma-separated list of URLs (max 50)
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety and read-only profile is covered without description help. The description adds only the purpose-level claim about indexing status; it does not mention rate limits, what happens when some URLs fail, or that idempotentHint=false means repeat calls may return different results.

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

Conciseness5/5

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

Two short sentences, purpose first, differentiation second, and every clause carries information. Nothing is repeated from the schema or the title.

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

Completeness4/5

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

For a read-only, three-parameter inspection tool with full schema coverage and annotations covering safety, the description covers what the tool does and when it beats the alternative. The remaining gap is return-shape and partial-failure behavior, which is modest given the absence of an output schema and the low complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the meaning of site_id, urls and detail (including the concise/detailed behavior) is fully documented in the schema. The description adds no parameter-level semantics beyond the schema, which is exactly the baseline 3 case.

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

Purpose4/5

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

States a specific verb (inspect), resource (multiple URLs), and outcome (indexing status and issues), so the agent knows exactly what it gets back. It implicitly separates itself from the single-URL sibling by contrasting with 'inspecting one at a time', though it never names inspect_url or get_url_inspections outright.

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

Usage Guidelines3/5

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

The phrase 'More efficient than inspecting one at a time' gives an implied usage rule (use this when you have several URLs), which is better than nothing. However, it never names the alternative tool (inspect_url) or states the boundary conditions — e.g. that a single URL should go elsewhere, or that batches are capped at 50 (that constraint only lives in the schema).

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

check_tracked_keyword_rankingsA
Destructive
Inspect

Live rank check (~$0.015/keyword) for all tracked keywords against the brand's ranking location; set_ranking_location first. Over 8 keywords it runs in the background and returns status=started with run_id and estimated_seconds — then read list_tracked_keywords: its last_check.status goes running → completed | partial | failed and carries the error. Do not call again while it is running.

NameRequiredDescriptionDefault
site_idYesThe brand/site ID

TDQS

A4.5/5.0
Behavior4/5

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

Goes well beyond the annotations: per-keyword cost (~$0.015), the >8-keyword background threshold, the returned status=started with run_id and estimated_seconds, and the async polling contract via list_tracked_keywords.last_check.status. It does not explain why the tool is marked destructiveHint=true/non-read-only (account spend, mutating last_check state), which is the one behavioral trait an agent might not anticipate.

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

Conciseness5/5

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

Two tight sentences, front-loaded with purpose and cost, then the prerequisite, the async behavior, and the do-not-recall warning in order of operational need. Every clause carries information an agent must act on.

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

Completeness5/5

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

No output schema exists, yet the description fully compensates by describing the immediate return (status=started, run_id, estimated_seconds) and the terminal states (running → completed | partial | failed with the error) read elsewhere. Nothing needed to call it correctly or interpret its result is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter (site_id) is fully documented in the schema, so the baseline is 3. The description implies scope ('all tracked keywords') but adds no syntax or format detail beyond what the schema already provides.

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

Purpose5/5

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

States a specific verb and resource ('Live rank check for all tracked keywords against the brand's ranking location') and scopes it to the brand's ranking location. An agent can separate it from siblings like tracked_keyword_performance, keyword_competitor_ranks, or set_ranking_location without opening any schema.

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

Usage Guidelines5/5

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

Gives an explicit prerequisite ('set_ranking_location first'), an explicit exclusion ('Do not call again while it is running'), and routes the agent to the right alternative for results (list_tracked_keywords). Nothing about when to invoke or avoid it 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.

classify_tracked_keywordsA
DestructiveIdempotent
Inspect

Store YOUR keyword classification on a brand's tracked keywords. YOU classify each keyword using your own reasoning — intent (informational/commercial/transactional/navigational), funnel_stage (tofu = awareness, mofu = evaluation/comparison, bofu = purchase/action), and cluster_name (a short 2-4 word topic group, REUSED across related keywords; aim for 5-15 clusters). Xyle records — it does not classify for you. Pass updates as a JSON array: [{"keyword":"best crm","intent":"commercial","funnel_stage":"mofu","cluster_name":"CRM comparison"}]. Matches existing tracked keywords by keyword text; run after adding keywords or when get_keyword_funnel reports unclassified ones.

NameRequiredDescriptionDefault
site_idYesThe brand/site ID
updatesYesJSON array of {keyword, intent?, funnel_stage?, cluster_name?, notes?, ranking_url?} objects — your classification of the brand's tracked keywords. Set ranking_url to CORRECT which page answers a keyword when get_site_journeys shows it mapped to the wrong one; it must be a URL on this site's own domain or it is ignored.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=true, idempotent=true, openWorld=true, and the description adds real behavioral context: matching is done by keyword text, ranking_url is ignored unless it is on the site's own domain, and Xyle records rather than generates classifications. It never spells out what a re-run overwrites for already-classified keywords, which is the main gap against the destructive hint.

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

Conciseness4/5

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

Front-loaded with the core action, then definitions, example, matching behavior, and trigger, in a logical order. Dense but almost every clause carries information; it is on the long side but contains no padding.

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

Completeness4/5

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

For a 2-parameter, high-coverage mutation tool with no output schema, the description covers field semantics, invocation format, matching behavior, correction semantics, and a trigger. It omits return-value expectations and permission/auth requirements, which keeps it short of fully complete.

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

Parameters5/5

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

Despite 100% schema coverage, the description supplies semantics the schema lacks — there are 0 enums in the schema, yet the description defines allowed intent values (informational/commercial/transactional/navigational), funnel_stage meanings (tofu/mofu/bofu), cluster_name conventions (2-4 words, reused, aim 5-15 clusters), and a concrete JSON payload example. This meaningfully exceeds the schema baseline.

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

Purpose5/5

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

States a specific verb and resource — storing your own keyword classification onto a brand's tracked keywords — and draws a clear boundary against the agent's own reasoning ('Xyle records — it does not classify for you'). This distinguishes it from add_tracked_keywords and assist_classify_keywords, which an agent could otherwise confuse it with.

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

Usage Guidelines4/5

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

Gives concrete triggers: 'run after adding keywords or when get_keyword_funnel reports unclassified ones,' and names get_site_journeys as the signal for using ranking_url to correct a mapping. It stops short of explicitly excluding the similar assist_classify_keywords sibling, so the agent must infer when to prefer one over the other.

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

code_build_logsA
Read-onlyDestructive
Inspect

Fetch a SMALL tail of Vercel build log events for a deployment (from code_deploy_status) to diagnose a failure, then fix + code_write_files. LAZY: prefer errors_only=true first (just error/warning lines); only pull more with limit if needed. Never dump a full build log.

NameRequiredDescriptionDefault
limitNoTail size, default 25, max 100
errors_onlyNoOnly error/warning lines (cheap — try this first)
deployment_idYesVercel deployment uid

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description needn't restate safety. It adds real behavioral context beyond them: the lazy/cheap-first retrieval strategy, the cost signal on errors_only, and the anti-pattern warning against full-log dumps. It does not explain truncation behavior (what happens when the tail is cut off mid-stream), which is the remaining behavioral gap. Note the annotation set itself is internally odd (destructiveHint=true alongside readOnlyHint=true), but the description's 'fetch' framing is consistent with readOnlyHint, so this is an annotation inconsistency rather than a description contradiction.

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

Conciseness5/5

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

Front-loaded with the core action, then the workflow pointer, then the retrieval policy. Every sentence earns its place and nothing is padded; the telegraphic 'LAZY:' framing is intentional signaling rather than noise.

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

Completeness4/5

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

No output schema exists, and the description covers the essential shape (a small tail of build log events, error/warning lines when filtered) plus the diagnosis-then-fix workflow and cost discipline. Only the truncated-tail case is unaddressed; everything an agent needs to call it correctly is present.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents limit (default 25, max 100) and errors_only. The description still adds decision semantics the schema lacks: when to prefer errors_only=true (first, cheap) and when limit is worth raising (only if the error-only tail is insufficient). That is added meaning, not repetition.

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

Purpose5/5

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

States a specific verb+resource+scope: 'Fetch a SMALL tail of Vercel build log events for a deployment.' It also positions itself in the workflow by naming code_deploy_status as the source and code_write_files as the follow-up, so an agent can distinguish it from those siblings without opening a schema.

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

Usage Guidelines5/5

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

Explicit when-to-use and how-to-sequence: diagnose a failure here, then fix with code_write_files; 'prefer errors_only=true first'; 'only pull more with limit if needed'; and an explicit exclusion, 'Never dump a full build log.' This is a complete usage policy, not implied guidance.

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

code_deploy_statusA
Read-onlyDestructive
Inspect

Get the latest Vercel deployment for a code site (state + url + target). Deploys are push-triggered, so call this after code_write_files to watch the build. When state is READY and target is production, prod_url is recorded.

NameRequiredDescriptionDefault
site_idYesCode site id

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint, openWorldHint), and the description adds genuinely new behavioral context beyond them: the push-triggered deploy model, the correct call sequence after code_write_files, and the state/target semantics that determine prod_url. It leaves one gap: the annotations declare destructiveHint=true while the operation reads as a pure query, and the description does nothing to explain that discrepancy.

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

Conciseness5/5

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

Three short sentences, each earning its place: what is returned, when to call it, and how to interpret the result. The core verb and resource are front-loaded.

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

Completeness4/5

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

No output schema exists, so the description must carry the return shape, and it does summarize it (state, url, target, prod_url). It is nearly complete for a one-parameter read tool, though it omits whether polling/retry is expected while a build is pending.

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

Parameters3/5

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

With a single parameter and 100% schema description coverage, the schema already carries the meaning of site_id. The description adds no format, id-source, or lookup guidance beyond it, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("Get the latest Vercel deployment for a code site") and even names the returned fields (state, url, target), so an agent can distinguish it from siblings like code_status, code_build_logs, or code_write_files.

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

Usage Guidelines4/5

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

Gives clear triggering context: "Deploys are push-triggered, so call this after code_write_files to watch the build." It does not, however, name an alternative (e.g. code_build_logs for logs) or state when not to use it, so it stops short of the explicit 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.

code_local_setupA
Read-onlyDestructive
Inspect

Get the exact commands to clone a code site onto the user's LOCAL machine and keep it in sync (clone, install, dev server, push-to-deploy, branch flow). Use when the user wants to work locally with their own Claude/Codex. After clone, git is the sync engine: edit locally → push → the git-linked Vercel project auto-builds. XeoRank only helps set up the local drive; it does not touch the user's filesystem.

NameRequiredDescriptionDefault
site_idYesCode site id

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is partly covered; the description usefully adds that it returns commands and never touches the user's filesystem, plus the git->push->Vercel auto-build sync model. However it never addresses the destructiveHint=true flag, leaving an unresolved tension an agent must guess about, and it says nothing about permissions or platform prerequisites.

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

Conciseness4/5

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

Three sentences, front-loaded with the action and its output, then usage context, then the sync model and scope caveat. No filler, though the parenthetical list partially repeats the clone concept and the final disclaimer sentence could sit earlier.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description covers what is returned (commands), when to invoke it, and its boundaries. The only gap is the shape of the response (single command block vs. per-platform steps) and the unexplained destructive annotation.

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

Parameters3/5

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

Schema coverage is 100% for the single site_id parameter, so the schema fully documents it and the description adds nothing about the parameter (e.g. where to obtain a site id). Per the high-coverage baseline, 3 is the correct score.

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

Purpose5/5

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

States a specific verb and resource ('Get the exact commands to clone a code site onto the user's LOCAL machine') and enumerates the delivered artifacts (clone, install, dev server, push-to-deploy, branch flow). This is clearly distinguishable from siblings like code_write_files (which mutates the site) or list_code_sites (which enumerates).

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

Usage Guidelines4/5

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

Gives an explicit trigger: 'Use when the user wants to work locally with their own Claude/Codex.' It also carves out scope ('XeoRank only helps set up the local drive; it does not touch the user's filesystem'). It does not name a competing sibling tool or say when NOT to use it, so it falls short of a 5.

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

code_set_domainA
Destructive
Inspect

Attach a domain to a code site's Vercel project. Returns verification records if DNS setup is needed.

NameRequiredDescriptionDefault
domainYesDomain to attach (e.g. mysite.com)
site_idYesCode site id

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already disclose that this is destructive (destructiveHint=true), mutating (readOnlyHint=false), and non-idempotent, so the safety profile is covered. The description adds the useful return-behavior detail "Returns verification records if DNS setup is needed," which helps the agent anticipate response content, but doesn't cover auth, reversibility, or side effects on existing domains.

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

Conciseness5/5

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

Two concise sentences with zero waste; the core action is front-loaded and the return behavior follows naturally.

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

Completeness3/5

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

For a destructive, non-idempotent operation with no output schema, the description should cover more: what happens to an existing domain (replacement/conflict), required permissions, or that the action cannot be undone. It states the purpose and a partial return behavior but leaves meaningful operational gaps.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters documented ("Domain to attach (e.g. mysite.com)" and "Code site id"). The description does not add syntax, format, or meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description delivers a specific verb and resource ("Attach a domain to a code site's Vercel project"), clearly distinguishing it from siblings like connect_vercel, vercel_link, and code_set_public. An agent can identify its exact operation from the text alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as vercel_link or connect_vercel, nor any prerequisites or exclusions. The agent must infer usage from the name and description alone.

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

code_set_publicA
Destructive
Inspect

Make a code site publicly accessible (disable Vercel Authentication) or re-protect it. New sites are already public by default — use this when a site shows a Vercel login/SSO screen instead of loading, or to lock a site behind auth (public=false).

NameRequiredDescriptionDefault
publicNotrue = public, no login (default); false = require Vercel auth
site_idYesCode site id

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is carried structurally. The description adds useful state context (default-public behavior for new sites, reversibility of the lock), but it never explains why destructiveHint is flagged or what exposure making a site public creates. Adequate but not rich beyond the annotations.

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

Conciseness5/5

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

Two sentences, zero filler, with the primary action and the default-state caveat front-loaded before the when-to-use routing. Every clause carries information.

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

Completeness4/5

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

For a two-param toggle with no output schema and rich annotations, the description covers purpose, trigger, inverse case, and default behavior. It lacks only the return/confirmation behavior and any propagation delay note, which keeps it short of a 5.

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

Parameters3/5

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

Schema description coverage is 100%: both site_id and the public boolean are already documented inline with the same true/public, false/auth mapping. The description restates 'public=false' semantics without adding format or edge-case detail, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (make publicly accessible / re-protect) and resource (code site), and names the concrete mechanism (disable Vercel Authentication). An agent can distinguish this from code_set_domain, code_status, or delete_site without opening a schema.

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

Usage Guidelines5/5

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

Explicitly gives the triggering condition ('when a site shows a Vercel login/SSO screen instead of loading') and the inverse case ('to lock a site behind auth (public=false)'). It also pre-empts a likely misuse by noting new sites are already public by default, so the tool need not be called for them.

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

code_statusA
Read-onlyDestructive
Inspect

Cheap flow check: whether GitHub/Vercel are connected AND a flow object with the current step + next_step nudge. Call this ONCE to orient instead of re-listing repos/sites every turn — it tells you exactly what to do next.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already carry the full safety profile (readOnlyHint, openWorldHint, destructiveHint, idempotentHint), so the description's added burden is lower. The description adds a useful cost hint ('cheap') and sketches the return shape (current step + next_step), but it does not address the surprising destructiveHint=true, leaving an unexplained behavioral flag. Value added is real but modest against a rich annotation set.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the core summary ('Cheap flow check') followed by the output shape and the usage directive. Every clause earns its place with no filler or restated metadata.

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

Completeness4/5

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

There is no output schema and no parameters, so the description must carry the return-value burden — which it does by naming the connected-status flags and the `flow` object with current step and `next_step`. It is complete enough to invoke correctly, though the exact shape of `flow` is only described at a high level.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly spends no words on parameter semantics.

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

Purpose4/5

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

The description states a specific purpose: a status/flow check reporting whether GitHub/Vercel are connected plus a `flow` object with the current step and `next_step`. It distinguishes itself from the many sibling listing tools (list_code_sites, github_list_repos) by explicitly framing itself as a single orientation call rather than a re-listing operation. The jargon ('flow object', 'nudge') slightly muddies the verb, keeping it from a clean 5.

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

Usage Guidelines4/5

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

It gives an explicit usage rule — 'Call this ONCE to orient instead of re-listing repos/sites every turn' — which tells the agent both when to use it (orientation) and what not to do (repeated listing). It stops short of naming the alternative tools by name, so an agent still has to infer which siblings this replaces.

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

code_write_filesA
Destructive
Inspect

Commit one or more files to a code site's repo in a single commit (create or overwrite). files is a JSON array of {"path":"...","content":"..."}. This pushes to the default branch; if the site is Vercel-linked, the full repo snapshot is also deployed to Vercel in the same call — then poll code_deploy_status.

NameRequiredDescriptionDefault
filesYesJSON array: [{"path":"src/index.ts","content":"..."}]
messageNoCommit message
site_idYesCode site id

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds concrete behavior beyond them: writes always target the default branch with no branch choice, existing files are overwritten, and a Vercel deployment side effect fires in the same call. It omits permission/auth requirements and error behavior.

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

Conciseness5/5

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

Three tightly packed sentences with the action and overwrite semantics front-loaded, then the input format, then the side effect and next step. No filler or restated boilerplate.

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

Completeness4/5

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

With no output schema, the description carries return-value burden and does mostly well by pointing to code_deploy_status for the deployment outcome. It leaves unstated what the commit confirmation looks like and what happens on failure, but an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates the `files` format (JSON array of path/content) already documented in the schema and never explains message or site_id, adding no meaning beyond the structured fields.

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

Purpose5/5

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

States a specific verb and resource (commit files to a code site's repo), specifies the scope (single commit), and clarifies create-vs-overwrite semantics. An agent can distinguish it from siblings like code_deploy_status, github_create, and the wp_* write tools without opening any schema.

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

Usage Guidelines4/5

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

Gives clear operational context: files go to the default branch, and for Vercel-linked sites a deploy is triggered in the same call, so the agent should poll code_deploy_status afterward. It names the follow-up tool explicitly, but offers no explicit when-not or guidance on choosing this over github_create/wp_update_page for other site types.

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

compute_content_gapsAInspect

Work out which topics rivals cover that this site's own ranking pages do not, and store the answer. Free of money but metered against the plan's monthly content-gap allowance (free 25, pro 150, agency 500), one unit per page+keyword analysed. Deliberately on-demand — nothing computes gaps on a schedule, so call this when the user actually wants the answer. It picks the neediest pages itself: ones ranking 4-30 where we hold rival pages we have read, preferring pages that rank on page one but earn almost no clicks. Use dry_run first to show the user what would be analysed and how many units it costs. If the allowance runs out part-way the finished gaps are kept and cap_reached is true — report that honestly rather than presenting a partial list as complete. Read results later for free via get_competitive_landscape (content_gaps).

NameRequiredDescriptionDefault
limitNoMaximum page+keyword pairs to analyse (default 10, max 50). Each one consumes a unit.
dry_runNoList what would be analysed and the unit cost without spending any
site_idYesThe site ID

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, idempotent=false) by disclosing the metered cost model, per-plan allowances, the unit-per-page+keyword accounting, the partial-result behavior when the cap is hit (finished gaps kept, cap_reached true), and the internal page-selection heuristic. This is unusually rich operational context for a mutation-style tool.

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

Conciseness4/5

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

Long but dense and front-loaded: purpose first, then cost model, then on-demand constraint, then selection heuristic, then dry_run/result guidance. Every sentence carries distinct information, though it could be trimmed slightly.

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

Completeness5/5

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

No output schema exists, yet the description covers where results land (get_competitive_landscape -> content_gaps), the partial-cap caveat, and the cost, which is everything an agent needs to invoke and report correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds meaning by tying each analysis to a unit cost and clarifying that dry_run spends nothing while limit caps the pairs analysed. It reinforces rather than merely repeats the schema.

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

Purpose5/5

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

States a specific verb and resource ('work out which topics rivals cover that this site's own ranking pages do not') and names where the output goes, distinguishing it from read/analysis siblings. An agent can tell what it does without opening the schema.

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

Usage Guidelines5/5

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

Explicit when-to-use: 'Deliberately on-demand — nothing computes gaps on a schedule, so call this when the user actually wants the answer.' It also directs the agent to run dry_run first and to fetch results later for free via get_competitive_landscape, naming the alternative consumer.

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

connect_framerAInspect

Connect a Framer project for SERVER-SIDE editing (no open editor needed — this is XeoRank's own transport, not Framer's editor-bound MCP plugin). Ask the user to create an API key in Framer: Site Settings → General → API Keys, and paste it with the project URL. Validates the key, stores it encrypted, returns framer_site_id for framer_cms / framer_canvas / framer_publish. Re-connecting updates the key. Call with no arguments to LIST already-connected projects.

NameRequiredDescriptionDefault
labelNoOptional friendly label
domainNoAlternative to site_id — the brand domain to bind to
api_keyNoFramer project API key (Site Settings → General → API Keys)
projectNoFramer project URL (https://framer.com/projects/<id>) or bare project id
site_idNoXeoRank brand site id (from list_sites) to bind this project to. STRONGLY recommended: Framer's API exposes no domain, so without it the project can't be joined to crawl/audit/AI-visibility data and connect returns a warning.

TDQS

A4.6/5.0
Behavior5/5

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

With only basic annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description carries the behavioral burden well: it discloses that the key is validated and stored encrypted, that a framer_site_id is returned for downstream framer_cms/framer_canvas/framer_publish, that re-connecting updates the key, and that a missing site_id yields a warning. No contradiction with the annotations.

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

Conciseness4/5

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

Dense and front-loaded — the server-side scope and the sibling distinction come first, then setup steps, then the return value and the no-arg list mode. The parentheticals are informative rather than filler, though the run-on density is slightly heavy.

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

Completeness5/5

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

No output schema exists, yet the description names the key return value (framer_site_id) and its consumers, documents the zero-argument list behavior, and supplies the user-facing prerequisite flow. Nothing an agent needs to invoke or sequence this tool is missing.

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

Parameters4/5

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

Schema coverage is already 100%, but the description adds relationship-level meaning the schema states only per-field: the strongly-recommended site_id binding and its consequence (warning + inability to join crawl/audit/AI-visibility data), domain as an alternative to site_id, and the key+project pairing workflow. This exceeds the baseline 3 for full-coverage schemas.

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

Purpose5/5

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

States a specific verb+resource ("Connect a Framer project") and immediately scopes it to server-side editing, explicitly distinguishing itself from Framer's editor-bound MCP plugin and implicitly from the other connect_* siblings. An agent knows exactly what this tool does and what it is not.

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

Usage Guidelines4/5

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

Gives concrete operational steps for when to use it: ask the user for an API key via the named Framer UI path, paste key with project URL, and call with no arguments to LIST already-connected projects. It does not name a competing sibling (e.g. connect_wordpress/connect_vercel) or state an explicit when-not condition, so it falls just short of the top tier.

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

connect_gaB
DestructiveIdempotent
Inspect

Initiate the Google Analytics connection flow for a site.

NameRequiredDescriptionDefault
site_idYesThe site ID to connect GA for
property_idYesThe GA4 property ID to connect

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, idempotent, open-world operation, so the safety bar is lowered. The word 'flow' usefully signals an interactive/redirect-based auth exchange, which annotations do not convey, but the description never discloses the destructive consequence declared by destructiveHint=true (e.g. overwriting or replacing an existing GA connection).

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

Conciseness4/5

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

A single front-loaded sentence naming the verb and resource with no filler. It is efficient, though so terse that it omits information the six dimensions above show is missing.

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

Completeness2/5

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

For a state-mutating, open-world connection tool with destructiveHint=true and no output schema, the description says nothing about preconditions, what the returned flow requires, or what existing data may be affected. An agent could call it correctly but not safely.

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

Parameters3/5

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

Schema description coverage is 100%, so both site_id and property_id are already documented in the schema, and the description adds nothing about their format or relationship (e.g. that the property must belong to the site). Baseline 3 applies when the schema carries parameter meaning.

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

Purpose4/5

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

States a specific verb ('Initiate') and resource ('Google Analytics connection flow for a site'), which separates it from connect_google_ads, connect_framer, connect_github and the other connect_* siblings by resource. It is clear but does not explain how it differs from the read-side siblings like get_ga_status.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus an alternative, no mention of prerequisites such as a connected site or an existing OAuth session, and no note on what to do if a GA connection already exists.

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

connect_githubA
Destructive
Inspect

Connect the user's GitHub account for code sites. Call with NO arguments to get a clickable Connect link (OAuth) — the user clicks it, approves on GitHub, and the token is captured and stored automatically (no paste). Present the returned auth_url as a link, then poll code_status to confirm. (Advanced fallback: pass a Personal Access Token as token to connect without the browser flow.) Requires a site registered in XeoRank first (create_site).

NameRequiredDescriptionDefault
tokenNoOptional: a GitHub Personal Access Token to connect directly instead of OAuth

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), so the description earns credit for adding the OAuth mechanics, the fact that the token is stored automatically with 'no paste', and the sequencing constraint of polling code_status. It does not explain why destructiveHint is set (e.g. what a reconnect does to an existing token), which is the only real gap.

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

Conciseness4/5

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

Three sentences, front-loaded with the primary no-argument flow before the fallback, and no filler. The parenthetical fallback is slightly dense but keeps the main path readable.

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

Completeness4/5

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

With no output schema, the description helpfully names the returned `auth_url` field the agent must present, names the prerequisite and the verification step, and covers both connection paths. Complete enough for a one-optional-param connector; only the return shape beyond auth_url is unstated.

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

Parameters3/5

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

Schema coverage is 100% and the sole parameter is optional, so the schema already documents `token`. The description adds marginal value by framing it as an 'advanced fallback ... without the browser flow', but offers no format or scope details beyond that. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb+resource ('Connect the user's GitHub account') and scopes it to 'code sites', which separates it from the many sibling connectors (connect_vercel, connect_ga, connect_framer, connect_wordpress). An agent can route to it without opening the schema.

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

Usage Guidelines5/5

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

It is explicit about the default path (call with NO arguments), the exact user flow (click link, approve on GitHub, token auto-captured), the prerequisite (site registered via create_site), and the follow-up (poll code_status). It even names the advanced alternative (PAT via `token`) and 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.

connect_google_adsA
DestructiveIdempotent
Inspect

Get the OAuth link for the user to connect their Google Ads account to a site. Xyle's developer token is approved — Keyword Planner data activates as soon as the connection completes.

NameRequiredDescriptionDefault
site_idYesThe brand/site ID to connect Google Ads for

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is partly covered. The description usefully adds the downstream consequence that Keyword Planner data activates on completion, but it never explains the destructive aspect, the link's expiry/reuse behavior, or what happens if the site is already connected — the tension between 'Get the OAuth link' and destructiveHint=true is left unaddressed.

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

Conciseness4/5

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

Two tight sentences with the purpose front-loaded; the second sentence delivers real context rather than filler. 'Xyle's developer token is approved' is slightly promotional and could be trimmed, keeping it just short of a 5.

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

Completeness5/5

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

For a one-parameter connect tool the definition tells the agent what it returns (an OAuth link), what it connects (Google Ads to a site via site_id), and the payoff after the handshake. With no output schema required for such a simple flow, nothing essential is missing for a correct invocation.

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

Parameters3/5

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

Schema coverage is 100% for the single site_id parameter, and the description neither names it nor adds format/constraint detail beyond the schema. Baseline 3 is appropriate when the schema fully carries the parameter documentation.

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

Purpose4/5

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

The description names a concrete verb and resource: it returns an OAuth link so the user can connect a Google Ads account to a site. That is far more specific than a tautology, and the effect (Keyword Planner activation) rounds out the purpose. It does not, however, explicitly contrast itself with the nearby get_google_ads_status or the other connect_* siblings, so differentiation relies partly on the tool name.

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

Usage Guidelines3/5

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

Usage is only implied: the agent can infer 'use this to connect Google Ads,' but there is no statement of when to call it versus checking existing status (get_google_ads_status) or reconnecting an already-linked site. No prerequisites or exclusions are mentioned, leaving the routing decision to inference.

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

connect_vercelA
Destructive
Inspect

Connect the user's Vercel account. Call with NO arguments to get a clickable Connect link (OAuth) — the user approves on Vercel and the token + team are captured and stored automatically (no paste). Present the returned auth_url as a link, then poll code_status to confirm. (Advanced fallback: pass an access token as token, and optionally team_id.)

NameRequiredDescriptionDefault
tokenNoOptional: a Vercel access token to connect directly instead of OAuth
team_idNoOptional Vercel team id (only used with the token fallback)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=true, so the safety profile is covered. The description adds real value beyond them: the OAuth approval happens on Vercel, the token and team are captured and stored automatically with no paste, and the agent must poll code_status afterwards. It does not explain what an existing connection being overwritten would mean, despite destructiveHint=true.

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

Conciseness4/5

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

Front-loaded with the primary action ('Call with NO arguments') and the fallback is clearly parenthesized as secondary. Dense but nearly every clause earns its place; the ellipses and stacked asides are slightly informal for a tool definition.

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

Completeness4/5

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

With no output schema, the description usefully names the returned auth_url field and the follow-up code_status poll, which is exactly what an agent needs to complete the flow. It stops short of describing success/error outcomes or what the tool returns in the token-fallback path.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are already documented there, including that team_id is only used with the token fallback. The description restates the same fallback semantics, adding no syntax, format, or validation detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource ('Connect the user's Vercel account') and immediately distinguishes the two operating modes: no-argument OAuth flow versus the token fallback. An agent can tell this apart from generic account tools like vercel_link or connect_github without opening a schema.

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

Usage Guidelines4/5

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

It gives explicit operational guidance: call with NO arguments to get the OAuth link, present the returned auth_url, then poll code_status; use the token/team_id path only as an advanced fallback. It does not state prerequisites (e.g., needing an existing Vercel project) or contrast with the sibling vercel_link tool, 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.

connect_wordpressAInspect

Connect a WordPress site to XeoRank. Just pass the domain (https:// and www are stripped for you). Returns onboard_url — PRESENT THAT TO THE USER AS A CLICKABLE LINK and stop there. That one page walks them through installing the connector plugin, opens their wp-admin, and completes the connection automatically — there is NO Application Password to copy and NO follow-up tool call needed. Poll list_wordpress_sites (or verify_wordpress) to confirm it flipped to verified. Pass transport='ssh' only as a Hostinger fallback.

NameRequiredDescriptionDefault
labelNoOptional friendly name for the site
domainYesThe site domain, e.g. example.com
transportNoConnection method: 'ssh' (default) or 'plugin'

TDQS

A4.8/5.0
Behavior5/5

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

With no output schema, the description carries the full burden and delivers: it names the returned field (onboard_url), explains the downstream wizard behavior (installs connector plugin, opens wp-admin, completes automatically), and rules out the common alternatives (no Application Password, no follow-up call). This is rich behavioral context beyond the readOnly/destructive/openWorld annotations.

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

Conciseness4/5

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

Front-loaded with the core action, then the required next step, then verification, then the edge case — a logical progression with no filler sentences. The all-caps emphasis and layered clauses make it slightly dense, but every sentence carries operational weight.

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

Completeness5/5

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

For a connection tool with no output schema, the description supplies the return value, the user-facing next action, the verification loop, and the transport edge case. Nothing an agent needs to invoke and then correctly handle the result is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the structural baseline is 3, but the description adds real semantics: domain normalization ('https:// and www are stripped') and a usage condition for transport. Minor tension: the schema documents 'ssh' as the default transport while the description frames 'ssh' as a Hostinger-only fallback, which could mildly confuse an agent.

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

Purpose5/5

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

States a specific verb and resource ('Connect a WordPress site to XeoRank') and immediately disambiguates from the crowding of connect_* and set_wordpress_connection siblings by describing the plugin-based onboarding flow. An agent can tell what this does and how it differs from the other connection tools without opening any schema.

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

Usage Guidelines5/5

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

Explicitly prescribes the post-call action ('PRESENT THAT TO THE USER AS A CLICKABLE LINK and stop there'), names the follow-up verification path (list_wordpress_sites or verify_wordpress), and gives a conditional exception (transport='ssh' only as a Hostinger fallback). When-to-use, when-not-to-act, and alternatives are all covered.

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

content_for_goalAInspect

START HERE when the user says 'write the blog / page for this goal'. Resolves the goal's existing brief or opens one (keyword derived from the goal title unless you pass target_keyword — confirm a derived keyword with the user), links the brief to the goal, moves the goal to active, and returns the next step of the content loop: interview → voice → outline → draft → score → sources → publish → outcomes. Publishing later ticks the goal's progress. Then follow next_step exactly as the content_engine prompt describes.

NameRequiredDescriptionDefault
notesNoWhat the user said about angle or audience
goal_idYesThe goal ID (list_goals)
site_idYesThe site ID
target_keywordNoThe keyword the piece targets, if the goal title does not say

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the annotations (which only flag it as a mutating, open-world, non-idempotent write), the description discloses concrete side effects: resolving or opening a brief, linking it to the goal, moving the goal to active, and returning the next loop step. It also warns that a derived keyword must be confirmed with the user. It does not describe failure modes or error behavior, holding it below a 5.

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

Conciseness4/5

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

Front-loaded with the 'START HERE' trigger, which is exactly the right priority. The remaining content is dense but all relevant, though the second sentence runs long with several chained clauses that could be split for readability.

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

Completeness5/5

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

For a multi-step orchestration entry point with no output schema, the description covers the trigger, the state mutations, and the shape of the returned next_step (the full interview-to-outcomes loop), and tells the agent to follow it exactly. An agent has everything needed to invoke it and act on the result.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds real meaning for target_keyword (it is derived from the goal title unless passed, and a derived keyword should be confirmed), which is semantic value the schema does not provide. It adds nothing for notes, goal_id, or site_id.

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

Purpose5/5

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

States a specific verb and resource (resolves/creates a goal's content brief and returns the next loop step) and clearly scopes it to goals rather than pages, which distinguishes it from the sibling content_for_page and create_content_brief. An agent can tell what this does without opening any schema.

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

Usage Guidelines4/5

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

Gives an explicit trigger phrase ('START HERE when the user says write the blog / page for this goal'), which is strong when-to-use guidance. It does not name the page-level alternative (content_for_page) or state when-not to use it, so it falls just short of a full when/when-not/alternatives statement.

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

content_for_pageAInspect

OPTIMISE A PAGE THAT ALREADY EXISTS — start here when the user wants an existing blog or page improved. XeoRank fetches the live page, makes its text the brief's author_draft and draft (its own title/meta/slug as front-matter — nothing re-typed), picks the target from the page's STRIKING-DISTANCE Search Console queries (positions 4–20, most impressions first; override with target_keyword), saves the before-score and the 28-day Search Console baseline, and returns optimisation guidance: keep the URL, change the least, fix title/meta where click-through lags the position, add an H2 per striking question, add first-hand material, de-AI the cadence findings. publish_content_brief then UPDATES the existing WordPress post in place; outcomes are read as uplift against the baseline.

NameRequiredDescriptionDefault
urlYesThe live page URL on this site
notesNoWhat the user wants from the edit
goal_idNoThe roadmap goal this serves, if any
site_idYesThe site ID
target_keywordNoOverride the derived target
author_wrote_itNotrue only if the author confirms the live text is their own unedited writing — then it also feeds their voice profile. Default false: an AI-assisted page must not teach the voice profile its tics.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not destructive, open world), so the bar is lower. The description still adds real side-effect context: it fetches the live page, saves the before-score and a 28-day GSC baseline, creates the brief draft, and clarifies the actual post write happens later via publish_content_brief — consistent with readOnlyHint=false.

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

Conciseness4/5

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

The core directive is front-loaded in caps, followed by dense but relevant pipeline detail. It is long and clause-heavy, but for a complex orchestration tool most sentences carry functional information; some phrasing (author_draft/draft/front-matter) is packed tightly.

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

Completeness5/5

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

With no output schema, the description still explains what comes back (optimisation guidance with specific actions like keeping the URL, fixing title/meta on CTR lag, adding H2s) and how outcomes are read (uplift against the saved baseline). For a complex tool this covers what an agent needs to invoke and interpret it.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description goes beyond it by explaining how the derived target is chosen (striking-distance GSC queries, positions 4–20, most impressions first) and that target_keyword overrides it, giving useful semantics for that field despite the schema already documenting it.

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

Purpose5/5

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

The description opens with a specific directive ('OPTIMISE A PAGE THAT ALREADY EXISTS') and scopes it to 'an existing blog or page', distinguishing it from new-content tools in the sibling set. It names the concrete resource (a live page) and the downstream action (publish_content_brief updates in place). An agent can identify the verb+resource without opening the schema.

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

Usage Guidelines4/5

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

It states a clear trigger — 'start here when the user wants an existing blog or page improved' — and gives the override escape hatch ('override with target_keyword'). It does not explicitly exclude the new-content alternative or name which sibling handles that case, so guidance is strong but not fully bounded.

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

content_opportunitiesA
Read-onlyDestructive
Inspect

Rank what this site should write or improve next, from every signal already stored: Search Console queries on page 2 / low CTR, RISING DEMAND (live 28-day vs prior-28-day Search Console comparison: queries whose impressions are climbing or that did not exist a month ago — demand forming is the wave to catch), content gaps rivals cover, keyword clusters with no ranking page, tracked keywords stuck on page 2-3 (with position momentum from ranking snapshots), and AI-answer prompts where the site is not cited. Each opportunity carries its evidence, an impact_clicks estimate, a kind (optimize = improve a page that already ranks; create = new page), an optional trend (new / rising / improving — boosted in the score) and a score that divides impact by effort and rewards keywords several signals agree on. Lead with trending ones when presenting: they are cheaper to win now than after rivals notice. Free — reads stored data. If a source shows 0, that signal was never collected: sync_search_console, compute_content_gaps, create_keyword_session, add_tracked_keywords and run_visibility_scan each fill one. Start of the content_engine workflow: present the top few to the user and let them choose.

NameRequiredDescriptionDefault
limitNoHow many to return (default 25, max 100)
detailNosummary (default) | full
trendsNoFetch live Search Console windows for rising/new demand (default true; needs the user's GSC connection)
site_idYesThe site ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld, but the description adds that it is 'Free — reads stored data', discloses the return shape (evidence, impact_clicks, kind, trend, score) absent an output schema, and warns that a 0 source means the signal was never collected. It does not explain the internally inconsistent destructiveHint=true annotation, but it does not contradict readOnly either.

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

Conciseness4/5

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

Front-loads the purpose and keeps every clause informational, but the single dense paragraph with nested parentheticals and caps-emphasis is heavy; splitting the signal list from the workflow guidance would read faster. Still, no sentence is filler.

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

Completeness4/5

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

For a no-output-schema, 4-param read tool this covers the essentials: what it returns conceptually, the kind/trend/score semantics, why trending items matter, the free/read nature, and dependency remediation. Grouping rules for 'several signals agree' are gestured at but the exact scoring mechanics remain implicit.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains what the `trends` flag actually computes (live 28-day vs prior-28-day GSC windows for rising/new demand) and what limit/detail feed ('present the top few'). That is more than the schema's terse one-liners provide.

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

Purpose5/5

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

States a specific verb+resource ('Rank what this site should write or improve next') and enumerates the exact signals it consolidates (GSC page-2/low-CTR queries, rising demand, content gaps, clusters without a ranking page, tracked keywords, AI-answer prompts). It distinguishes itself from siblings by naming the tools that feed it rather than produce the same output.

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

Usage Guidelines4/5

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

Positions the tool explicitly in a workflow ('Start of the content_engine workflow: present the top few to the user and let them choose') and gives a presentation rule ('Lead with trending ones when presenting'). It also explains how to remediate empty signals by pointing at sync_search_console, compute_content_gaps, create_keyword_session, add_tracked_keywords and run_visibility_scan, though it never names a sibling to use *instead* when this tool is the wrong choice.

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

content_outcomesA
Read-onlyDestructive
Inspect

Every published brief on a site: score at publish vs the clicks and position it earned at a checkpoint (14/30/60 days), with a rank correlation once 5+ pages have that checkpoint — whether a higher score really meant better results for this site. Use it to report content ROI and to decide what to write next.

NameRequiredDescriptionDefault
refreshNoRe-read Search Console for due pages first (default false)
site_idYesThe site ID
checkpointNo14 | 30 (default) | 60

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnly, openWorld, idempotent=false, destructive=true). The description adds genuine context beyond them: the checkpoint windows matter and the rank correlation only appears once 5+ pages share a checkpoint. It is silent, though, on the refresh side-effect and on why a reporting tool carries destructiveHint=true, so the behavioral picture stays incomplete.

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

Conciseness4/5

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

Two sentences, front-loaded with the resource and metrics, then the action guidance. The first sentence is dense and clause-heavy but every clause carries information; nothing is padding.

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

Completeness4/5

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

With no output schema, the description does the work of describing returns (publish score vs clicks/position, correlation once 5+ pages qualify), which is the key thing an agent needs. It is only incomplete on the operational side (refresh behavior, destructive semantics) given the annotated hints.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents site_id, checkpoint (14|30|60, default 30) and refresh. The description reinforces checkpoint meaning and the 5+ page threshold tied to it, but adds no syntax or default detail the schema lacks. Baseline 3 for a fully covered schema is appropriate.

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

Purpose4/5

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

States a specific resource (every published brief on a site) and the exact metrics produced (score at publish vs clicks/position at a checkpoint, plus rank correlation). This is far more than a restatement of the name. It only falls short of 5 because it never distinguishes itself from the close sibling get_content_outcome (singular), leaving the aggregate-vs-single-page scope to inference.

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

Usage Guidelines4/5

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

"Use it to report content ROI and to decide what to write next" gives clear usage context. However, it names no alternative and sets no exclusions, so an agent cannot tell from the text alone when get_content_outcome or content_for_goal is the better pick.

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

continue_crawlA
Destructive
Inspect

Extend a crawl that stopped at its page limit (status "partial", coverage.reason "page_limit_reached") and resume from its saved frontier. Poll get_crawl_status afterwards.

NameRequiredDescriptionDefault
job_idYesThe partial crawl job ID
additional_pagesNoPages to add to the limit (default 500; the plan cap still applies)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety bar is lower. The description still adds real behavioral context beyond them: it resumes from a saved frontier (explaining the non-idempotent resume semantics) and consumes additional page budget. It does not clarify why the operation is flagged destructive, which is the remaining gap.

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

Conciseness5/5

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

Two tight sentences: the precondition and core action are front-loaded, and the trailing sentence is an actionable next step rather than filler. No sentence is redundant.

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

Completeness5/5

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

With no output schema, the description compensates by telling the agent to poll get_crawl_status for results. For a 2-parameter mutation tool, precondition, action, and post-action are all covered.

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

Parameters3/5

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

Schema description coverage is 100% – both job_id and additional_pages (including the 500 default and plan-cap note) are fully documented in the schema. The description only alludes to the page limit, adding no syntax or semantics beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

Specific verb (extend/resume) applied to a specific resource (a crawl), with the exact state precondition (status "partial", coverage.reason "page_limit_reached"). This cleanly distinguishes it from start_crawl (new crawls) and get_crawl_status (read-only polling).

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

Usage Guidelines4/5

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

Gives a precise when-to-use condition via the status/reason pair and names the follow-up tool (get_crawl_status). It stops short of an explicit when-not-to-use (e.g., 'for new crawls use start_crawl', or behavior on failed crawls), so it is strong but not fully closed-loop.

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

create_api_keyA
Destructive
Inspect

Create a new API key for your Xyle account. The full key is only shown once upon creation.

NameRequiredDescriptionDefault
nameYesA descriptive name for the API key (e.g. 'Claude Desktop', 'CI/CD')

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a genuinely important non-schema behavior: the full key is only shown once upon creation, which tells the agent how to handle and relay the result.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and resource, then the critical one-time-display caveat. Nothing is wasted.

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

Completeness4/5

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

For a single-parameter creation tool with annotations covering safety traits and no output schema, the description is nearly complete: it identifies the account scope and the one-time key disclosure. Minor gaps (scopes/permissions on the new key, whether names must be unique) keep it short of a 5.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage that already includes examples ('Claude Desktop', 'CI/CD'). The description adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Create') and resource ('API key') scoped to the Xyle account, which cleanly separates it from siblings like list_api_keys and revoke_api_key. It doesn't explicitly name an alternative, but the operation is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of sibling alternatives such as revoke_api_key or list_api_keys. The agent must infer the trigger context entirely.

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

create_auditB
Destructive
Inspect

Create a comprehensive SEO audit for a site. Analyzes technical SEO, content, performance, and provides prioritized action items. Before writing the polished report, get_audit_framework(section=report_template) gives the required tab structure and footer.

NameRequiredDescriptionDefault
domainYesThe domain to audit, e.g. example.com
client_nameYesName of the client/business being audited

TDQS

B3.1/5.0
Behavior2/5

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

Annotations declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, idempotentHint=false. The description does not disclose any of this behavioral profile: it doesn't say whether creating an audit overwrites or replaces an existing audit, what side effects occur (crawl, external API calls, etc.), or whether the operation can be re-run idempotently. With no annotations-carried warnings amplified and no destructive/idempotency context added, transparency is weak. No contradiction with annotations, so not a 1.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action and then a concrete prerequisite step. No filler, though the second sentence's reference is somewhat terse and could be slightly more explicit about ordering.

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

Completeness2/5

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

For a destructive, non-idempotent, open-world creation tool with no output schema, the description should do more: describe what the output is (a report? an audit ID?), whether it can be re-run, and how it relates to the many sibling audit/report tools. As written it leaves the agent without critical behavioral context.

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

Parameters3/5

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

The input schema has 100% description coverage for both required parameters (domain, client_name), so the schema already documents them fully. The description adds no parameter-specific detail beyond naming the site being audited, which is baseline behavior when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a specific verb and resource ('Create a comprehensive SEO audit for a site') and enumerates the analysis areas (technical SEO, content, performance, prioritized actions). It's clear what it does, though it doesn't directly distinguish itself from close siblings like get_audit, list_audits, or audit_chat, so it's one notch below a 5.

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

Usage Guidelines3/5

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

It gives an important sequencing hint – call get_audit_framework(section=report_template) before writing the polished report – which is concrete guidance about prerequisite steps. However, it doesn't clarify when this tool should be used versus the many sibling audit tools (get_audit, get_audit_report, gbp_audit, start_prospect_audit), so usage guidance is only partially covered.

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

create_content_briefAInspect

Open a brief for one keyword. XeoRank collects the evidence bundle the draft must satisfy: related Search Console queries, the site's own pages that rank for them (internal-link targets and cannibalisation risk), rival pages with their headings and entities, stored content gaps, the keyword cluster, tracked-keyword data, AI-visibility rows, and derived targets — word_count, must_cover topics, questions, entities, secondary_keywords, internal_links. Pass the opportunity object from content_opportunities so its reasoning is kept with the brief. When fewer than three rival pages are on file, XeoRank fetches the LIVE Google results for the keyword once (~$0.0155, on us): the top pages become rivals (their headings feed must_cover), and Google's People-Also-Ask questions and related searches go into targets.questions / secondary_keywords — evidence.serp shows what was fetched. Returns the brief with evidence and a next_step. One open brief per keyword per site — an existing one is returned instead.

NameRequiredDescriptionDefault
kindNocreate | optimize (inferred when omitted)
notesNoAnything the user said about angle, audience or constraints
titleNoWorking title, if the user already has one
intentNoinformational | commercial | transactional | navigational
goal_idNoThe goal this piece serves (from list_goals). Prefer content_for_goal when the user starts from a goal.
site_idYesThe site ID
live_serpNoFetch live Google results when rivals are thin (default true); false = stored evidence only
opportunityNoJSON: the opportunity object from content_opportunities (kept verbatim)
target_keywordYesThe keyword / prompt the piece targets

TDQS

A4.5/5.0
Behavior5/5

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

With annotations already covering write/open-world/destructive profile, the description adds substantial context beyond them: the exact evidence collected, the <3-rivals trigger for a live Google fetch, its ~$0.0155 cost, and what lands in evidence.serp. The dedupe rule (existing brief returned) is exactly the kind of behavior an agent cannot infer from the annotations.

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

Conciseness4/5

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

Long but front-loaded: the purpose and keyword scope come first, then evidence, then the live-SERP fallback, then the return and dedupe rule. Dense enumerations of evidence fields are justified for a tool this complex, though the list of artifacts is close to exhaustive.

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

Completeness4/5

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

For a 9-parameter, no-output-schema mutation tool, the definition covers what is created, what side effects occur (SERP fetch, cost), and what the response contains ('brief with evidence and a next_step'). Minor gap: it doesn't describe the brief's own structure or what next_step values imply.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema strings: it explains the opportunity object's passthrough semantics ('kept verbatim', reasoning preserved), the live_serp trigger condition, and names the specific derived target fields. It stops short of clarifying kind/intent interaction or the notes field.

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

Purpose5/5

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

States a specific verb and resource ('Open a brief for one keyword') and immediately spells out the evidence bundle it assembles. An agent can distinguish it from get_content_brief, list_content_briefs, update_content_brief and publish_content_brief without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete routing guidance: pass the opportunity object from content_opportunities, and the 'one open brief per keyword per site — an existing one is returned instead' rule tells the agent this is safe to call repeatedly. It doesn't explicitly say when to prefer get_content_brief or when a brief should be updated rather than opened, so it stops short of full when/when-not coverage.

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

create_goalAInspect

Create a goal for a brand. Two levels only: a top-level goal, or a sub-goal under one (pass parent_id). THE BASELINE IS MEASURED SERVER-SIDE at creation — you do not pass a starting number, and you should not invent one. WORKED EXAMPLE, a measured goal: title='Get cited by AI answer engines', category='aeo', stage='grow', metric_key='ai_citation_rate', target_value=30 — the citation rate is scored 0-100, so 30 means 30% of buying prompts citing the brand. WORKED EXAMPLE, a goal no metric covers: title='Publish 5 route pages', category='content', stage='build', manual_total=5 and no metric_key — progress then tracks manual_done/5. If you omit BOTH metric_key and manual_total, progress falls back to the fix-queue issues you link with link_goal_issues. Pick whichever of the three actually reflects the work; a goal with none of them reads as unmeasurable forever.

NameRequiredDescriptionDefault
tagsNoJSON array of freeform labels, e.g. ["q3","client-ask"]
stageNodiscover | fix | build | grow | defend
titleYesWhat the brand is trying to achieve, in plain language
due_atNoISO 8601 date/time this goal is due, e.g. 2026-12-15
site_idYesThe brand/site ID
categoryNoseo | aeo | geo | technical | content | authority — same vocabulary as the fix queue, so goals and issues line up
priorityNolow | medium | high
parent_idNoMake this a sub-goal of an existing top-level goal
starts_atNoISO 8601 date/time this goal starts, e.g. 2026-10-01
metric_keyNoA key from goal_metrics. Omit for a manual or issue-backed goal.
descriptionNoWhy it matters, or how it will be done
owner_emailNoWho owns it; defaults to the calling user
manual_totalNoFor a goal no metric covers: how many things need doing
target_valueNoThe number to reach. For a 'down' metric this is lower than today, e.g. orphan_pages target 0.

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, idempotentHint=false) by disclosing that the baseline is measured server-side at creation and must not be passed or invented. It also explains the downstream progress-tracking behavior of each of the three measurement modes, which is critical context an agent cannot infer from schema or annotations.

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

Conciseness4/5

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

Front-loaded with the core rule and hierarchy, then examples. It is longer than average but nearly every sentence carries a decision the agent must make. The parenthetical about citation rate scoring is slightly verbose relative to its value.

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

Completeness4/5

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

For a 14-parameter mutation tool with no output schema and open-world behavior, the description covers the novel, non-obvious mechanics thoroughly (server-side baseline, three measurement modes). Some ancillary parameters and any post-creation behavior beyond progress tracking are left to the schema.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description still adds substantial meaning: it explains the interaction between metric_key, manual_total, and the fallback to link_goal_issues, and the ai_citation_rate example clarifies target_value semantics. It does not, however, clarify several of the 14 parameters (tags, stage, priority, due_at).

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

Purpose5/5

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

States the specific verb+resource (create a goal for a brand) and immediately constrains the hierarchy to exactly two levels (top-level or sub-goal via parent_id). It clearly distinguishes itself from siblings like update_goal, delete_goal, list_goals, and content_for_goal.

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

Usage Guidelines5/5

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

The three worked examples function as explicit when-to-use guidance: use metric_key when a metric covers it, manual_total when no metric covers it, and neither when progress should track linked issues. It ends by telling the agent to pick whichever reflects the work, with the failure mode spelled out.

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

create_keyword_sessionB
Destructive
Inspect

Start a new keyword research session. Provide a seed topic or URL to discover related keywords, search volumes, and clustering.

NameRequiredDescriptionDefault
topicYesThe seed topic, keyword, or URL to research
countryNoTarget country code (e.g. 'us', 'uk', 'de'). Default: 'us'
site_idNoOptional site ID to associate the session with
languageNoTarget language code (e.g. 'en', 'de', 'fr'). Default: 'en'

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=false, so the safety profile is covered. The description adds nothing behavioral — it doesn't warn that each call creates a separate persistent session (non-idempotent) or that this may consume quota/credits, which would be useful context beyond the annotations.

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

Conciseness4/5

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

Two sentences, front-loaded with the action; the second sentence usefully previews outputs since there is no output schema. The 'provide a seed topic or URL' clause slightly overlaps the schema but is not wasteful.

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

Completeness4/5

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

With no output schema, the description correctly summarizes what the session yields (related keywords, volumes, clustering), and a required description of mutation semantics is partly carried by the destructive annotation. It could better note that sessions persist and are individually addressable (get_keyword_session/list_keyword_sessions), but it is adequate for a 4-parameter creation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so topic, country, site_id, and language are all documented in the schema. The description only mentions a seed topic or URL, adding no syntax, defaults, or format details beyond what the schema provides. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (start a keyword research session) and names the outputs (related keywords, search volumes, clustering). It does not explicitly distinguish itself from siblings like keyword_chat, get_keyword_session, or seed_keywords_from_gsc, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

The description says what seed input to provide but gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as keyword_chat or list_keyword_sessions. The agent must infer context from the name alone.

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

create_siteB
Destructive
Inspect

Add a new website to your Xyle account for SEO tracking and analysis.

NameRequiredDescriptionDefault
domainYesThe domain of the website to add (e.g. example.com)

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, which is a lot of behavioral signal. The description adds nothing beyond that — no mention of the surprising destructive flag on a create operation, no cost/credit implications, and no note about what happens if the domain is already registered.

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

Conciseness5/5

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

One short sentence, front-loaded with the action and resource, with zero wasted words. Nothing to trim.

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

Completeness3/5

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

For a one-parameter create tool with rich annotations and full schema coverage, the description is minimally sufficient. It still leaves open the behavior on duplicate domains and the practical meaning of the destructive flag, which are the details an agent would most want before invoking it.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'domain' parameter is fully documented with an example format in the schema. The description contributes no additional parameter meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Add a new website') plus the account scope and intended domain of use (SEO tracking and analysis). It does not, however, differentiate itself from adjacent siblings such as delete_site, list_sites, or get_site, so the reader must infer the distinction from the name alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. Nothing tells the agent what conditions should trigger creating a site versus adopting one via adopt_site_redirect or connecting an existing property like connect_ga or connect_wordpress.

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

create_voice_profileAInspect

Build the brand's VOICE FINGERPRINT from the author's own unedited writing — Pro (Writing Agent). Pass 6–10 URLs of pieces everyone agrees sound like them (unedited drafts beat published posts) and/or pasted text; 5,000+ words recommended, 2,000 minimum. XeoRank records 14 plain features (sentence rhythm and spread, contractions, I/we and you, dashes, colons, brackets, questions, word length, lexical diversity, sentence openers) plus function-word rates, with the author's own range. From then on every brief carries evidence.voice (constraints to write to) and review_writing(site_id) / score_content_draft report each draft's distance from the author — e.g. "you use 'I' 12× per 1,000 words; this draft 3×". This is never an AI-detection score. Ask the user for the samples; do not pick them yourself.

NameRequiredDescriptionDefault
textNoPasted unedited writing by the author (adds to urls)
urlsNoJSON array or comma-separated list of the author's own page URLs (max 25)
labelNoWhose voice this is, e.g. 'Vikas — founder posts'
site_idYesThe site ID
registerNoblog (default) | docs | email | landing — keep one profile per kind of writing

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly, openWorld, non-idempotent) by disclosing what gets recorded (14 named features plus function-word rates with the author's own range), what persists downstream (every brief carries evidence.voice), and an important non-behavior guardrail ('This is never an AI-detection score'). This is rich, non-obvious context that annotations cannot convey.

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

Conciseness4/5

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

Purpose is front-loaded and the sentences are dense with useful specifics rather than filler. It is on the long side and could be trimmed slightly, but nearly every clause carries actionable information.

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

Completeness4/5

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

For a tool with no output schema, it explains the downstream payoff (distance metrics reported by review_writing/score_content_draft) and the input requirements thoroughly. The only modest gap is that it does not describe what create_voice_profile itself returns on the call.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds substantive meaning: URL count guidance (6-10, vs the schema's max 25), word-count thresholds, preference for unedited drafts, and the rule to keep one profile per register. This meaningfully augments the schema rather than restating it.

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

Purpose5/5

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

States a specific verb and resource — building a 'VOICE FINGERPRINT' from the author's own unedited writing — and names the downstream artifacts (evidence.voice, review_writing, score_content_draft). An agent can distinguish it from siblings like declare_voice, get_voice_profile, and voice_probe without opening any schema.

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

Usage Guidelines4/5

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

Gives concrete input guidance (6-10 URLs, 5,000+ words recommended, 2,000 minimum, unedited drafts beat published posts) and an explicit behavioral instruction: 'Ask the user for the samples; do not pick them yourself.' It does not explicitly name alternative sibling tools or state when-not to use it, so it falls short of a 5.

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

declare_voiceAInspect

No writing samples yet? Ask the author six quick questions and save the answers as DECLARED voice constraints — used (and labelled 'declared') until the measured profile builds itself from their interview answers and rough drafts (automatic once 2,000 words of their own writing are on file). Questions: contractions (yes/no); person (i/we/neither); reader addressed as you (yes/no); dashes (dashes/commas); formality (casual/plain/formal); sentences (short/mixed/long). Ask them in one message; skip any the author does not care about.

NameRequiredDescriptionDefault
answersYesJSON object, e.g. {"contractions":"yes","person":"we","reader":"yes","dashes":"commas","formality":"plain","sentences":"mixed"}
site_idYesThe site ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety envelope (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the bar is lower, but the description adds real lifecycle context beyond them: the declared constraints are labelled 'declared' and are superseded automatically when a measured profile builds. It also instructs 'Ask them in one message; skip any the author does not care about', which is behavioral guidance not present in the schema.

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

Conciseness4/5

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

Front-loaded with the when-to-use condition, then the mechanics, then the question list. Information-dense with no filler, though the parenthetical about the 2,000-word threshold and the trailing instruction make it longer than strictly needed.

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

Completeness4/5

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

No output schema exists, but the description explains what is produced and how it is later replaced, so the agent understands the state change. The only gap is the return value/confirmation shape, which is minor for a small two-parameter write.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description enumerates the six answer keys and their allowed values (contractions yes/no; person i/we/neither; dashes dashes/commas; formality casual/plain/formal; sentences short/mixed/long), which the free-text 'answers' JSON schema does not constrain. That is meaningful added semantics for a schema with zero enums.

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

Purpose5/5

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

States a specific verb+resource ('ask the author six quick questions and save the answers as DECLARED voice constraints') and names the exact artifact produced. It also distinguishes itself from the measured-profile path by spelling out coexistence ('used and labelled declared until the measured profile builds itself'), so an agent can tell it apart from create_voice_profile and get_voice_profile.

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

Usage Guidelines4/5

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

Opens with the selecting condition 'No writing samples yet?' and adds a concrete trigger point (automatic once 2,000 words are on file), which tells the agent when this tool is the right one. It stops short of naming sibling alternatives (voice_probe, create_voice_profile) explicitly.

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

delete_goalA
DestructiveIdempotent
Inspect

Permanently delete a goal. Its sub-goals (if any) survive as top-level goals rather than being deleted with it, and any fix-queue issues linked to it are unlinked, not deleted. Use this to clean up a duplicate or superseded goal instead of leaving it around marked 'do not use' — there is no separate archive state, this is the only cleanup path.

NameRequiredDescriptionDefault
goal_idYesGoal id from list_goals
site_idYesThe brand/site ID

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description goes further by disclosing cascade behavior that annotations cannot express — sub-goals survive as top-level goals and linked fix-queue issues are unlinked rather than deleted. That is exactly the kind of non-obvious side-effect an agent needs before calling a destructive tool.

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

Conciseness4/5

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

Front-loads the core action and cascade semantics in the first sentence, then the usage rationale. The final clause is somewhat wordy ('there is no separate archive state, this is the only cleanup path') but each sentence carries distinct, useful information.

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

Completeness5/5

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

For a two-parameter destructive delete with no output schema and full annotation coverage, the description supplies everything an agent needs: purpose, confirmation of permanence, cascade effects, and the alternative cleanup context. No meaningful gap remains.

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

Parameters3/5

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

Schema description coverage is 100%, with both goal_id and site_id documented ('Goal id from list_goals', 'The brand/site ID'). The description adds no additional parameter meaning, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Permanently delete a goal') and immediately clarifies scope with the 'Permanently' qualifier, distinguishing it from update_goal and list_goals. An agent knows exactly what operation this performs without consulting siblings.

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

Usage Guidelines5/5

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

Explicitly says when to use it ('to clean up a duplicate or superseded goal') and contrasts with the alternative ('instead of leaving it around marked do not use'), plus notes there is no archive state and this is the only cleanup path. Nothing about selection is left to inference.

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

delete_keyword_sessionC
DestructiveIdempotent
Inspect

Delete a keyword research session.

NameRequiredDescriptionDefault
session_idYesThe keyword session ID to delete

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds nothing beyond that – it does not say whether the deletion is permanent, what happens to derived data (keywords, rankings), or whether it requires ownership/permissions.

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

Conciseness4/5

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

One short sentence with the action front-loaded and zero filler. It is appropriately sized for a trivial single-parameter delete, though it is arguably too sparse to be a model of conciseness-with-substance.

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

Completeness3/5

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

The tool is simple, annotations cover the destructive/idempotent profile, and the schema documents the only parameter, so the core is not missing. Still, for a destructive operation the description could note permanence or affected related data, leaving a modest gap.

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

Parameters3/5

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

There is a single parameter and schema description coverage is 100%, so the schema already documents session_id fully. The description adds no format, source, or retrieval guidance beyond the schema, giving the baseline 3 for a fully-covered parameter.

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

Purpose4/5

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

States a specific verb ('Delete') and resource ('keyword research session'), so the agent knows exactly what the tool does. However it offers no differentiation from sibling deletions like delete_goal, delete_site, or delete_wordpress_site.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus get_keyword_session/list_keyword_sessions or create_keyword_session. No prerequisites, no warning about irreversibility, and no indication of the selection condition that should trigger this tool.

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

delete_siteA
DestructiveIdempotent
Inspect

Remove a website from your Xyle account. This does not delete any external data.

NameRequiredDescriptionDefault
site_idYesThe unique ID of the site to remove

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true, and readOnlyHint=false. The description adds valuable scope context by specifying that the removal is only from the Xyle account and explicitly does not delete external data, which helps the agent understand what is actually destroyed.

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

Conciseness5/5

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

Two short sentences with zero waste. The core action is front-loaded, and the scope caveat follows immediately.

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

Completeness4/5

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

Given the low complexity, a fully documented single parameter, and rich annotations covering the safety profile, the description is nearly complete. It could be improved by explicitly distinguishing this from related tools like delete_wordpress_site, but it covers what the agent needs for a correct basic invocation.

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

Parameters3/5

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

The schema fully documents the single required parameter site_id, including its description. The description does not add any syntax, format, or constraint details beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Remove') and resource ('a website from your Xyle account'), making the core purpose clear. However, it does not explicitly differentiate this tool from siblings such as delete_wordpress_site or create_site.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no alternatives. The statement 'This does not delete any external data' is a scope clarification rather than usage guidance.

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

delete_wordpress_siteA
Destructive
Inspect

Disconnect a WordPress site from Xyle and delete its stored key reference.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful scoping: what is removed is the connection plus the stored key reference, not the WordPress site's content — an important distinction given the tool name says 'delete site'. It omits reversibility and the behavior on a second call despite 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.

Conciseness5/5

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

A single sentence with zero filler, front-loading the primary action (disconnect) before the secondary effect (key reference deletion). Nothing is padded or repeated.

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

Completeness4/5

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

For a one-parameter teardown tool with rich annotations and no output schema, the description covers the essential question of what is destroyed. Minor gaps remain around idempotency/reversibility and how to re-establish the connection, but nothing critical is missing.

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

Parameters3/5

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

Only one parameter (site_id) and schema description coverage is 100%, so the schema fully documents it. The description adds no format hints or meaning beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb pair and resource: 'Disconnect a WordPress site from Xyle and delete its stored key reference.' This clearly sets it apart from connect_wordpress, verify_wordpress, set_wordpress_connection, and get_wordpress_site. It does not explicitly name a sibling, but the action is distinctive enough that an agent can place it.

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

Usage Guidelines2/5

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

No indication of when to use this versus alternatives (revoke_api_key, set_wordpress_connection, or simply leaving the connection in place), and no prerequisites or exclusions. The agent must infer that this is the teardown counterpart of connect_wordpress.

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

design_recommendA
Read-only
Inspect

Recommend a complete design system (palette, style, font pairing, page sections, key UX rules, anti-patterns) for a project. Works for ANY page type. Best results: first get a SNAPSHOT from the user and pass what you observed as keywords.

NameRequiredDescriptionDefault
industryNoe.g. skincare, dev tools, real estate
keywordsNostyle/brand cues, e.g. 'minimal, trust, dark, bold' — include what you saw in a snapshot
page_typeNolanding | ecommerce_pdp | dashboard | blog | portfolio | pricing | about | contact
project_typeNoe.g. SaaS, e-commerce, agency, portfolio, fintech, healthcare

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the 'works for any page type' scope and a usage hint, but does not explain the non-idempotent behavior (idempotentHint=false) or what the returned recommendation looks like. Moderate added value over annotations.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the core purpose and output list, followed by the practical usage hint. No filler or redundancy.

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

Completeness4/5

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

For a read-only, all-optional-parameter tool with no output schema, the description adequately conveys what the tool produces by enumerating the design system components. It could say more about the return structure, but the enumerated outputs largely cover that need.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four optional parameters with examples. The description only adds a hint about populating 'keywords' from a snapshot, which is marginal over the schema's own example ('minimal, trust, dark, bold — include what you saw in a snapshot'). Baseline 3 applies.

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

Purpose4/5

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

The description uses a specific verb ('Recommend') plus resource ('complete design system') and enumerates the concrete outputs (palette, style, font pairing, sections, UX rules, anti-patterns), which clearly separates it from the sibling design_search. It stops short of explicitly naming a sibling alternative, so it falls just below a 5.

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

Usage Guidelines4/5

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

It gives clear operating context ('Works for ANY page type') and a concrete recommended workflow ('first get a SNAPSHOT from the user and pass what you observed as keywords'). It does not state when NOT to use it or name an alternative tool, so it lacks exclusions.

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

discover_competitorsA
Read-onlyDestructive
Inspect

Organic competitors for ANY domain (yours or a prospect's) in one call — domains ranking for the same keywords, with the overlap counted. TREAT THE OUTPUT AS A CANDIDATE LIST, NOT AN ANSWER: for a site with few ranked keywords the top rows are platforms (LinkedIn, Reddit, Substack, Wikipedia) that co-rank by accident. The real signal is avg_position — a domain ranking 4th where it overlaps you is a competitor; one ranking 14th is usually a publisher. Shortlist 4-6 real companies by hand, then call domain_keyword_profile on each. See docs/competitor-analysis-runbook.md.

NameRequiredDescriptionDefault
limitNoCandidates to return after filtering (default 10)
domainYesDomain to find competitors for, e.g. cogniswitch.ai
location_codeNoCountry code for the index: 2840 US (default), 2356 India, 2826 UK, 2036 Australia, 2124 Canada. Pass the brand's market.

TDQS

A4.3/5.0
Behavior5/5

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

Goes well past the annotations, which only declare readOnly/openWorld/idempotent flags. The description discloses output-quality behavior that no structured field carries: that low-keyword sites surface LinkedIn/Reddit/Substack/Wikipedia as false positives, and that avg_position is the discriminator (4th = competitor, 14th = publisher). This is exactly the kind of operational context an agent cannot infer.

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

Conciseness4/5

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

Front-loaded with the purpose, then the caveat, then the remedy — a good information hierarchy. It is dense and every sentence carries weight, though the docs/competitor-analysis-runbook.md pointer is a reference the agent may not be able to resolve, and the caps-lock warning is slightly heavy for the length.

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

Completeness4/5

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

No output schema exists, so the description must carry return semantics, and it largely does: overlapping keyword domains, a counted overlap, an avg_position signal, and a post-filter candidate count. It stops short of describing the full row shape (what other columns come back), which is the only real remaining gap for an agent consuming the result.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents domain, limit (post-filter count, default 10), and location_code with example codes. The description only adds a light gloss ('yours or a prospect's') and no format or syntax detail beyond the schema, so the baseline 3 for fully-covered parameters applies.

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

Purpose5/5

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

States a specific verb+resource with scope: 'Organic competitors for ANY domain (yours or a prospect's) in one call — domains ranking for the same keywords, with the overlap counted.' That is precise enough that an agent can distinguish it from sibling landscape tools like get_competitive_landscape or get_competitor_keyword_overlap without opening a schema.

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

Usage Guidelines4/5

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

Explicitly frames the output as a candidate list rather than an answer, warns that platform domains co-rank by accident on thin sites, and prescribes a next step ('Shortlist 4-6 real companies by hand, then call domain_keyword_profile on each'). What it does not do is route against the sibling competitor tools (get_competitive_landscape, list_competitors, get_competitor_keyword_overlap), so alternative selection is left to inference.

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

domain_keyword_profileA
Read-onlyDestructive
Inspect

Every keyword a domain ranks for, with search volume and position — ONE request (~$0.05), works for any domain including competitors you do not own. This is the data an onboarding or pilot report is built from: run it for the client and for each shortlisted competitor, then diff. Source is our index of Google, so it lags a live SERP and is not device-specific — say so when you publish the numbers.

NameRequiredDescriptionDefault
limitNoMax keywords (default 100). Raise to 200-500 for large competitors — still one request.
domainYesDomain to profile, e.g. neo4j.com
location_codeNoCountry code: 2840 US (default), 2356 India, 2826 UK, 2036 Australia, 2124 Canada.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover safety and world assumptions, but the description adds material context they cannot: per-call cost (~$0.05), that it is one request regardless of domain, that the data comes from a proprietary Google index which lags a live SERP, and that results are not device-specific. It even frames the disclosure obligation when publishing the numbers.

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

Conciseness4/5

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

Three sentences, front-loaded with the core payoff (keywords plus volume and position, one request, any domain). Every sentence carries information, though the capitalised 'ONE' and the cost/pitch framing are slightly promotional for a tool definition.

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

Completeness4/5

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

With no output schema, the description does indicate the return shape at a high level (keywords with search volume and position) and covers cost, source, and freshness caveats. It stops short of describing output structure or size limits in detail, but nothing critical for a correct call is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents domain, limit (with the 200-500 guidance and 'still one request'), and location codes. The description reinforces the one-request-per-call economics but adds no parameter syntax beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource: every keyword a domain ranks for, with search volume and position. It also scopes the tool apart from siblings by noting it works for any domain including competitors you do not own, so an agent can distinguish it from ownership-bound tools like get_gsc_queries or competitor-overlap tools.

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

Usage Guidelines4/5

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

Gives a concrete when-to-use context (onboarding or pilot reports, run for client plus shortlisted competitors, then diff), which is strong situational guidance. It does not name alternative sibling tools or state exclusions, 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.

download_disavow_fileA
Read-only
Inspect

Generate a Google Search Console disavow file from the site's cached backlink profile, flagging links at or above a toxicity threshold. Read-only — never triggers a new paid fetch. Returns 404 if the backlink profile hasn't been fetched yet (call get_backlink_profile first).

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds behavioral value beyond that: it will never trigger a new paid fetch (cost behavior) and returns 404 under a specific pre-condition (error behavior), neither of which is in the annotations. It does not explain the idempotentHint=false flag, which is a minor gap.

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

Conciseness5/5

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

Two tightly packed sentences, front-loaded with the action and scope before the caveats. Every clause earns its place (threshold behavior, cost guarantee, 404 dependency); no filler.

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

Completeness4/5

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

For a one-parameter, no-output-schema tool whose annotations cover safety, the description supplies the key operational facts an agent needs: caching behavior, cost guarantee, and the 404 prerequisite. What the returned file looks like is not described, but that is minor for this tool.

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

Parameters3/5

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

Single parameter site_id with 100% schema description coverage, so the schema carries the parameter burden. The description adds no syntax, format, or sourcing detail for site_id beyond what the schema states. Baseline 3 is appropriate.

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

Purpose5/5

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

Specific verb (generate/download) plus resource (Google Search Console disavow file) and scope (from the site's cached backlink profile, filtered by toxicity threshold). It explicitly names the sibling get_backlink_profile as the prerequisite, so an agent can distinguish it from that tool without opening either schema.

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

Usage Guidelines4/5

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

Gives a clear invocation condition and prerequisite: 'Returns 404 if the backlink profile hasn't been fetched yet (call get_backlink_profile first).' This routes the agent correctly. It doesn't state a negative case or an alternative tool for the refresh path, but the context is unambiguous.

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

download_reportB
Read-only
Inspect

Get the downloadable PDF content of a report.

NameRequiredDescriptionDefault
site_idYesThe site ID
report_idYesThe report ID

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that the output is downloadable PDF content, which is useful but does not detail authentication needs, rate limits, or error behavior. With annotations doing the heavy lifting, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It immediately conveys the action and the return type.

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

Completeness3/5

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

Given two required parameters and no output schema, the description states the output format (PDF content) but does not explain how the content is delivered (e.g., binary stream vs. URL) or any error conditions. Combined with existing annotations and schema, it is minimally sufficient but leaves some gaps for a download tool.

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

Parameters3/5

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

Schema description coverage is 100%, but the schema descriptions are minimal ('The site ID', 'The report ID'). The description adds no further parameter meaning beyond what the schema provides. Per the rubric, high schema coverage yields a baseline of 3 even without additional param info in the description.

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

Purpose4/5

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

The description uses a specific verb (Get) and resource (report), and clarifies the output is 'downloadable PDF content', which distinguishes it from a generic report fetch. However, it does not explicitly name or contrast with sibling tools like get_report or generate_report.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_report or export_audit_report. It merely states what the tool does, leaving the agent to infer appropriate usage contexts.

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

elementor_categoriesA
Read-only
Inspect

List the Elementor knowledge categories with their topic titles — the map/router for browsing what's available before searching.

NameRequiredDescriptionDefault
detailNo"concise" (default) trims each category to 5 topics; "detailed" lists all topics.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, covering the safety profile. The description adds that results are categories plus topic titles (a structural/map behavior), but says nothing about pagination or result size caps beyond what the schema's 'detail' param implies.

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

Conciseness5/5

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

One tight sentence with no filler; the core purpose is front-loaded and the secondary usage framing is appended after a dash. Every clause carries information.

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

Completeness4/5

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

No output schema exists, so the description usefully conveys the shape of the return (categories with topic titles) and one optional param handled by the schema. It is nearly complete for a trivial read-only listing tool, though it could note that it is Elementor-specific navigation rather than a content search.

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

Parameters3/5

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

Schema description coverage is 100%, so the 'detail' parameter (concise=5 topics vs detailed=all topics) is already fully documented in the schema. The description mentions 'topic titles' but adds no syntax, defaults, or format detail beyond that. Baseline 3 for high schema coverage.

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

Purpose4/5

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

States a specific verb ('List') and resource ('Elementor knowledge categories with their topic titles'), which is concrete enough for an agent to distinguish it as a discovery/listing tool. It does not directly name siblings like elementor_search or elementor_get, so 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.

Usage Guidelines4/5

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

'the map/router for browsing what's available before searching' gives clear usage context: call this first, in a reconnaissance role, ahead of a search. It stops short of explicitly naming elementor_search as the follow-up alternative or stating when-not to use this tool.

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

elementor_getA
Read-only
Inspect

Fetch one Elementor knowledge entry by id (from elementor_search results) — returns the full distilled guide, a real PHP/JS code snippet, the source docs URL, and related entry ids to drill into.

NameRequiredDescriptionDefault
idYesentry id, e.g. 'widgets-widget-base-structure' or 'controls-repeater'

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=true). The description adds real value beyond them by disclosing the return payload: a distilled guide, a real PHP/JS snippet, the source docs URL, and related entry ids. This matters because there is no output schema. It does not explain the unusual idempotentHint=false, but that is minor.

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

Conciseness5/5

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

One sentence, front-loaded with the action and resource, with the parenthetical source and the return-content list earning their place. Zero filler.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so concretely (guide, code snippet, docs URL, related ids). Combined with the 100%-covered single parameter and read-only annotations, an agent has everything needed to call and interpret it.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the id format with two examples, so baseline 3 applies. The description goes slightly beyond by naming the provenance of the id (elementor_search results), which helps the agent supply a valid value.

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

Purpose5/5

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

Specific verb (Fetch) + resource (one Elementor knowledge entry) + cardinality (one), and it explicitly ties itself to the sibling elementor_search as the source of ids. An agent can distinguish elementor_get from elementor_search/elementor_categories without opening schemas.

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

Usage Guidelines4/5

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

States the precondition clearly: the id comes 'from elementor_search results', which tells the agent this follows a search. It doesn't spell out a when-not case (e.g. use elementor_search when you don't have an id yet), but the workflow is unambiguous.

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

export_audit_reportA
Destructive
Inspect

Render findings — from a prospect audit OR a normal site audit — into the same branded, Deloitte-style document real XeoRank audits use, saved as a Google Doc in YOUR OWN Drive (not the prospect's), and get back a shareable link — open it, download as PDF from Google Docs' own File > Download menu, or share it directly. Requires your own account to have Google connected with Drive permission; if not, this returns a clear one-line fix rather than a raw error. Pass report_data as a JSON object built from what get_prospect_audit (or the site audit tools) returned, PLUS your own writing: set report_data.executive_narrative to the client-facing prose you wrote (personalize it — match style_reference if one was given), and optionally report_data.agency_appendix for internal-only delivery notes that never show up in a client-facing export (omit it for the client version, include it for the agency's own copy — same data, two calls, two links). Costs one doc-export credit.

NameRequiredDescriptionDefault
urlYesThe audited URL/domain, shown on the report cover
site_idNoOptional — the prospect audit's site_id, to file this export against it
report_dataYesJSON object: {domain, scores:{seo,aeo,geo}, cwv, aeo_signals, geo_signals, recommendations, executive_narrative, agency_appendix?, ...}. Unknown/omitted keys degrade to "N/A" in the rendered sections rather than erroring.

TDQS

A4.2/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: costs one doc-export credit, saves to YOUR OWN Drive rather than the prospect's, degrades unknown keys to "N/A" instead of erroring, returns a one-line fix instead of a raw error when Google isn't connected, and explains that agency_appendix never surfaces in client-facing exports. This is exactly the behavioral detail annotations can't convey.

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

Conciseness4/5

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

The purpose and output medium are front-loaded, and the dense run-on sentence still carries mostly load-bearing detail (credit cost, Drive ownership, degradation behavior, two-version workflow). It is longer than ideal for a single paragraph but wastes little.

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

Completeness4/5

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

For a tool with no output schema and an open-world write, the description covers prerequisites, cost, failure handling, and the returned shareable link. The one unexplained element is the destructiveHint=true annotation, since creating a new doc is not described as overwriting anything, leaving a small behavioral gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and the description genuinely adds meaning: it explains that report_data must be built from prior audit output plus the agent's own writing, specifies executive_narrative as client-facing prose to personalize against style_reference, and defines the opt-in nature of agency_appendix. That is real semantic value beyond the schema text.

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

Purpose4/5

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

States a specific verb and artifact: render findings into a branded Deloitte-style document saved as a Google Doc in your own Drive, returning a shareable link. It names the source tools (get_prospect_audit / site audit tools), but does not differentiate from nearby siblings like generate_report, download_report, or get_audit_report, so an agent must infer the split.

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

Usage Guidelines4/5

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

Explains context clearly: usable for either a prospect audit or a normal site audit, requires Google connected with Drive permission, and calls out the two-call pattern (client version with appendix omitted vs agency copy with it included). No explicit when-not or direct routing against the report-generating siblings.

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

find_siteA
Read-only
Inspect

Find the brand for a domain across EVERY workspace you belong to, in one call. Returns each match's site_id, workspace and Search Console status, and warns when the same brand exists in more than one workspace. Use this instead of listing workspaces one by one.

NameRequiredDescriptionDefault
domainYesThe brand's domain or URL, e.g. navyaai.com or https://www.navyaai.com/

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it enumerates what each match contains (site_id, workspace, Search Console status) and discloses the duplicate-brand warning, which is unexpected non-obvious behavior for the agent.

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

Conciseness5/5

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

Three tight sentences with zero padding: scope first, then return contents, then the alternative. Every sentence carries load and the key selling point (one call, all workspaces) is front-loaded.

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

Completeness5/5

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

With no output schema, the description compensates by naming what is returned and the cross-workspace warning condition. For a single-parameter read tool, an agent has everything needed to select and invoke it correctly.

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

Parameters3/5

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

Only one parameter with 100% schema description coverage, so the schema already documents format and accepted examples (navyaai.com vs full URL). The description restates 'for a domain' but adds no format or edge-case guidance beyond what the schema gives, making the baseline 3 correct.

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

Purpose5/5

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

States a specific verb (find) and resource (the brand for a domain) plus the distinguishing scope: across EVERY workspace you belong to in one call. This clearly differentiates it from single-workspace lookups like get_site/list_sites without requiring the agent to open either schema.

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

Usage Guidelines4/5

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

The final sentence gives an explicit alternative and the condition that selects it: 'Use this instead of listing workspaces one by one.' It doesn't name the sibling tool (list_workspaces) or state when not to use it, so it stops short of a full 5.

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

framer_canvasAInspect

Framer CANVAS READS and low-level node ops. For DESIGN work (layout, typography, styling) use framer_design instead — set_attributes/set_text below bypass the design layer. action: 'pages' (list web pages: id, path, draft), 'children' (node_id — list direct children; run this on a page id to find the 'Desktop' breakpoint frame, which is the real render root you must parent sections to), 'node_info' (node_id — resolved attributes of one node; use it to tell a rejected attribute from an applied one), 'text_styles' (list existing text style presets — read before creating more, duplicate names get auto-renamed), 'text_nodes' (list text nodes with content; args: search, limit — find the headline to change), 'set_text' (node_id + text — rewrite a heading/paragraph), 'set_attributes' (node_id + attributes_json of Framer node attributes, e.g. '{"backgroundColor":"#0E2F54","visible":true}'), 'set_custom_code' (html + location headStart|headEnd|bodyStart|bodyEnd — JSON-LD schema, meta tags, analytics). Read text_nodes first, then edit by node id. NOT live until framer_publish.

NameRequiredDescriptionDefault
htmlNoHTML snippet (set_custom_code)
textNoNew text (set_text)
limitNoMax text nodes (default 300)
actionYespages | children | node_info | node_dump | text_styles | text_nodes | set_text | set_attributes | set_custom_code
searchNoFilter text_nodes by substring
node_idNoTarget node id (set_text / set_attributes)
locationNoheadStart | headEnd | bodyStart | bodyEnd (set_custom_code, default headEnd)
framer_site_idYesFrom connect_framer
attributes_jsonNoJSON object of node attributes (set_attributes)

TDQS

A4.6/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), but the description adds genuinely useful traits: changes are 'NOT live until framer_publish', editing bypasses the design layer, and duplicate style names get auto-renamed. These go beyond what annotations declare, though return/pagination behavior is not described.

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

Conciseness4/5

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

One dense paragraph, but front-loaded with the critical routing constraint (use framer_design for design) before the action list. Coverage is broad for nine actions and nine params, so the length is largely earned, though it reads as run-on.

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

Completeness5/5

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

For a nine-action read/write tool with no output schema, the description covers every action, its primary args, the read-before-write workflow, the publish requirement, and the design-layer bypass. An agent has enough to select and invoke correctly.

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

Parameters4/5

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

Schema coverage is 100% so the parameter→action mapping is already documented. The description adds real value by pairing each action with its args and giving a concrete attributes_json example ('{"backgroundColor":"#0E2F54","visible":true}') plus the location enum values, exceeding the schema baseline.

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

Purpose5/5

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

States a specific verb+resource ('Framer CANVAS READS and low-level node ops') and explicitly distinguishes itself from the sibling framer_design for design work. Each action is enumerated with its resource, so an agent can match intent to tool without opening the schema.

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

Usage Guidelines5/5

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

Explicitly routes design work to framer_design and warns that set_attributes/set_text bypass the design layer. Also gives workflow ordering ('Read text_nodes first, then edit by node id') and a concrete discovery step (run 'children' on a page id to find the 'Desktop' breakpoint frame).

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

framer_cmsAInspect

Framer CMS operations on a connected project. action: 'collections' (list collections + their fields), 'create_collection' (name + fields_json='[{"name":"Title","type":"string"},{"name":"Content","type":"formattedText"}]' — idempotent by name, also adds any missing fields; stand up a Blog collection before writing posts), 'items' (list items of collection=, args: limit), 'upsert_items' (create/update by slug: collection=, items_json='[{"slug":"my-post","fields":{"Title":"…","Content":"…"}}]' — field NAMES as keys). Perfect for publishing SEO content: keyword clusters → blog posts. Changes are NOT live until framer_publish.

NameRequiredDescriptionDefault
nameNoNew collection name (create_collection)
limitNoMax items to return (default 100)
actionYescollections | create_collection | items | upsert_items
collectionNoCollection id or name (for items / upsert_items)
items_jsonNoJSON array for upsert_items
fields_jsonNoJSON array of {name,type} (create_collection). type: string|formattedText|number|boolean|image|link|date
framer_site_idYesFrom connect_framer

TDQS

A3.9/5.0
Behavior4/5

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

With annotations indicating readOnlyHint=false, idempotentHint=false, and openWorldHint=true, the description adds valuable context: idempotency by name for create_collection, and the crucial note that changes are not live until framer_publish. It does not cover permissions or error behaviors, but adds substantial behavioral insight beyond annotations.

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

Conciseness3/5

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

The description is a single dense sentence listing actions and details, which may be hard to parse quickly. It front-loads the main purpose but could be improved with better formatting for readability. It is somewhat verbose but every part seems relevant.

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

Completeness4/5

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

Given the tool's complexity (7 parameters, multiple actions, no output schema), the description covers the key operations, example JSON structures, and an important post-condition (publish required). It misses edge cases or error handling, but is largely complete for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the schema documents all parameters. The description enriches parameter semantics by explaining how action-specific arguments like fields_json and items_json are structured with examples, and notes field NAMES as keys for upsert_items. This adds meaning beyond the schema's basic descriptions.

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

Purpose4/5

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

The description clearly states the resource (Framer CMS on a connected project) and enumerates four actions with specific behaviors, making the tool's purpose clear. However, it does not explicitly differentiate itself from sibling Framer tools like framer_canvas or framer_design, though the focus on CMS operations is distinct.

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

Usage Guidelines4/5

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

The description provides actionable guidance, such as 'stand up a Blog collection before writing posts' and 'Changes are NOT live until framer_publish', which implicitly tells when to use this tool versus the publishing sibling. It lacks explicit 'when not to use' or alternative tools, but the context is sufficient.

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

framer_designAInspect

Framer DESIGN surface — build real, native, client-editable Framer pages server-side (layout, typography, design tokens, components, native animation). THIS is the tool for any design/layout/styling work; framer_canvas set_attributes/set_text are low-level node ops that bypass the design layer and silently produce Framer's default typography. action: 'guide' (START HERE — returns the compact DSL reference; no framer_site_id needed, and it is the same for every project so fetch it ONCE per session), 'apply' (dsl=, optional page_path — builds/edits the canvas; returns errors, linter warnings and renamedIds mapping your temp ids to canonical ids you MUST use in later edits), 'find_images' (query= — stock photo candidates), 'add_image' (url= — uploads it into the project and returns a permanent asset URL; always do this before using an image in fill=, remote URLs fetch inconsistently and fail silently). Changes are NOT live until framer_publish.

NameRequiredDescriptionDefault
dslNoDSL commands (action=apply | validate). Every command ends with ';'. apply runs a local pre-flight first and REFUSES to send known-wrong attributes — the API accepts them and silently does nothing, so this is the only place they can be caught.
urlNoImage URL to upload (action=add_image)
codeNoReact/TSX source (action=create_code_file). This is the ONLY way to get continuous motion or texture — an animated gradient, a grain overlay, a carousel, an animated counter. The DSL silently ignores appearEffect.loop/.repeat/loopEffect.*, so anything that moves forever has to live here. Export a default component and use addPropertyControls so the client can tune it in Framer afterwards.
nameNoComponent file name (action=create_code_file), e.g. 'AuroraGrain.tsx'
briefNoaction=suggest: describe the page and the feel you want, e.g. 'dark premium studio hero, iridescent moving background'. Returns a build plan naming the NATIVE primitive for it — which shader, the preset set, the two layout rules that silently ruin a build, and how to verify. START HERE for any design work: it costs no round trip and it is the difference between using the one-line shader Framer ships and hand-writing a React component to imitate it.
queryNoImage subject (action=find_images)
actionYessuggest | guide | validate | apply | find_images | add_image | code_files | create_code_file | add_component
page_pathNoOptional page path to scope the change (action=apply)
insert_urlNoaction=add_component: the export's insertURL from action=code_files. NOT url or identifier — both read back undefined, and using them looks exactly like the component not existing.
framer_site_idNoFrom connect_framer (not needed for action=guide)
skip_validationNoaction=apply: send even if pre-flight found errors. Rarely correct — each error is an attribute Framer accepts and ignores, so the apply reports success while nothing lands.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations cover mutation safety (readOnlyHint=false, destructive=false, idempotent=false, openWorld=true), yet the description adds extensive behavior beyond them: silent failures from remote URLs and ignored attributes, the mandatory renamedIds round-trip, the apply pre-flight refusal, and the requirement to publish before changes go live.

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

Conciseness4/5

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

Purpose and the sibling differentiation are front-loaded, and each action clause carries actionable content rather than filler. It is dense and long, but nearly every sentence earns its place by naming a concrete failure mode or ordering constraint.

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

Completeness4/5

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

For an 11-param, multi-action tool with no output schema, the description covers workflow order, return artifacts (errors, linter warnings, renamedIds, permanent asset URL) and the publish dependency. Some actions referenced in the schema (validate, code_files, add_component, suggest) get only partial prose coverage, leaving minor gaps.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds sequencing semantics the schema cannot express — add_image must precede fill=, guide takes no site id, and renamedIds from apply must feed later edits — which raises it above baseline.

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

Purpose5/5

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

States a specific verb+resource ('build real, native, client-editable Framer pages server-side') and enumerates the sub-capabilities (layout, typography, design tokens, components, animation). It explicitly contrasts itself with the sibling framer_canvas, so an agent can pick the right tool without opening either schema.

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

Usage Guidelines5/5

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

Explicit routing: 'THIS is the tool for any design/layout/styling work', with framer_canvas named as the low-level alternative that bypasses the design layer. Each action carries a when-to-use note ('guide' START HERE, fetch once; 'add_image' always before fill=; changes not live until framer_publish).

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

framer_publishAInspect

Publish a connected Framer project — pushes all staged CMS/canvas changes live. Pass deploy=true to also promote the deployment to production hosting. Run this after framer_cms / framer_canvas edits, then re-crawl to verify. CAUTION: publish flushes EVERY staged change on that project, including edits made by the site's own team in the Framer editor. On a shared/client project, confirm with the user before publishing.

NameRequiredDescriptionDefault
deployNoAlso deploy to production (default false)
framer_site_idYesFrom connect_framer

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish write/non-idempotent/open-world, but the description adds genuinely new behavior: deploy=true promotes to production hosting, and publishing 'flushes EVERY staged change on that project, including edits made by the site's own team'. That blast-radius warning is the kind of context annotations cannot convey. There is a mild tension with destructiveHint=false (flushing others' edits), but publish applies rather than deletes data, so it is not a true contradiction.

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

Conciseness5/5

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

Front-loaded with the core action, then deploy semantics, then workflow sequencing, then a clearly labeled CAUTION. Every sentence earns its place; nothing is redundant with the schema or annotations.

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

Completeness5/5

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

For a mutation tool with no output schema, the description covers what it does, when to run it, the side-effects, the parameter's real-world effect, and the collaboration risk. An agent has everything needed to invoke it correctly and safely.

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

Parameters4/5

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

Schema coverage is 100% and the schema already describes both params, so 3 is the baseline. The description earns above-baseline by explaining the consequence of deploy=true ('promote the deployment to production hosting') beyond the schema's terse 'Also deploy to production (default false)', clarifying the effect rather than just the flag.

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

Purpose5/5

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

States a specific verb and resource ('Publish a connected Framer project') and defines scope precisely as pushing 'all staged CMS/canvas changes live'. It explicitly ties itself to the framer_cms/framer_canvas sibling edits, so an agent can distinguish it from other framer_* tools without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit sequencing ('Run this after framer_cms / framer_canvas edits, then re-crawl to verify') and a clear precondition with an exclusion ('On a shared/client project, confirm with the user before publishing'). This is exactly the when-to-use / when-to-be-careful guidance the dimension rewards.

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

gbp_auditA
Read-only
Inspect

Audit a business's public Google Business Profile (local SEO / local AEO). Returns a completeness score plus ranked recommendations — categories, hours, description, photos, reviews — and recent public reviews. Read-only, uses public data (Places API), so it needs no login to the business. Provide query (business name + city, or full address) OR a Google place_id. NOTE: this tells you WHAT to fix; applying edits/replies to the profile is not yet available (pending Google Business Profile API write approval).

NameRequiredDescriptionDefault
queryNoBusiness name + city, or full address (e.g. 'Malnad Realty, Shivamogga')
place_idNoGoogle place_id (skips the lookup)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real beyond-schema context: no authentication to the business is required, the data source is the Places API, and the return payload is described (score, ranked recommendations, reviews). It does not explain the non-idempotent lookup behavior declared in annotations, 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.

Conciseness5/5

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

Front-loaded with purpose, then inputs, then a clearly flagged limitation in caps. No filler sentences; each clause adds distinct information an agent needs.

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

Completeness5/5

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

With no output schema and only two optional parameters, the description still tells the agent what comes back, what data is used, whether login is needed, and what the tool cannot do. That is complete for this tool's complexity.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds semantics beyond the schema by stating the two parameters are alternatives ('query OR place_id') and that the tool is usable without login - information the schema fields do not convey.

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

Purpose5/5

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

States a specific verb ('Audit') and resource ('Google Business Profile'), and its deliverable (completeness score + ranked recommendations + recent reviews). An agent can distinguish it from siblings like get_audit, create_audit, or get_prospect_audit without opening any schema.

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

Usage Guidelines4/5

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

Explicitly states the input paths (query OR place_id), the no-login/public-data condition, and an important scope boundary ('this tells you WHAT to fix; applying edits is not yet available'). It does not name a competing sibling to route away from, 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.

generate_reportA
Destructive
Inspect

Generate a Search Console business report for one period (clicks, impressions, rankings, branded vs non-branded, page movers, narrative) compared with the previous period. Needs Search Console paired on the site. Defaults to the last full calendar month.

NameRequiredDescriptionDefault
site_idYesThe site ID to generate a report for
period_endNoPeriod end, YYYY-MM-DD, not in the future. Default: last day of last month
brand_termsNoBrand query terms (JSON array or comma-separated) for the branded vs non-branded split
period_typeNo"monthly" (default; period must be one full calendar month), "weekly" (exactly 7 days) or "custom"
period_startNoPeriod start, YYYY-MM-DD. Default: first day of last month
comparison_modeNo"previous_period" (default), "year_over_year" or "none"

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful context (GSC pairing requirement, calendar-month default), but it never explains what the destructive/non-idempotent behavior actually means for a report generator — e.g. whether it overwrites an existing report or persists an artifact.

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

Conciseness5/5

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

Two dense sentences with zero filler; the core action and report contents lead, and the prerequisite and default follow. Nothing is repeated or wasted.

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

Completeness4/5

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

With no output schema, the description usefully enumerates what the report contains, and the prerequisite plus default period make the call self-contained for a 6-parameter tool. The remaining gap is the unexplained destructive side effect, which the description leaves entirely to the annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in the schema; the baseline is 3. The description adds one marginal detail by restating the default period ("last full calendar month") that period_start/period_end already express, but contributes nothing new about period_type, comparison_mode, or brand_terms.

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

Purpose4/5

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

The description names a specific verb and resource ("Generate a Search Console business report") and enumerates the report's contents (clicks, impressions, rankings, branded split, page movers, narrative), so the agent knows exactly what is produced. It does not explicitly differentiate itself from siblings like get_report, download_report, or list_reports, which keeps it short of a 5.

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

Usage Guidelines4/5

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

It gives a clear precondition ("Needs Search Console paired on the site") and a default operating range ("Defaults to the last full calendar month"), which tells the agent when the tool is applicable. There is no guidance on when NOT to use it or which sibling to prefer for retrieving versus downloading an existing report.

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

generate_schema_markupA
Read-only
Inspect

Generate VALID schema.org JSON-LD for a page, grounded on its real content (never invents facts). Returns 'jsonld' plus an 'html_snippet' that is READY TO APPLY as-is, and 'notes' with placement guidance + existing-schema warnings. Apply it via the platform's own tools: on Wix add the html_snippet as a Custom Code embed in the site HEAD using the user's connected Wix MCP (site-wide for organization/localbusiness, per-page for faq/article/howto); on WordPress use Xyle's wp tools; otherwise hand the snippet to the user to paste into their . For faq/howto/localbusiness, pass real page facts via 'context' when the page text alone is not enough — never fabricate.

NameRequiredDescriptionDefault
urlYesFull page URL to generate schema for
contextNoOptional grounded facts, e.g. {"faqs":[{"q":"...","a":"..."}], "business_name":"...", "address":{...}, "telephone":"...", "logo":"...", "author":"..."}
schema_typeNofaq | organization | article | howto | breadcrumb | localbusiness | auto (default auto — picks from page shape)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds genuine behavioral context beyond that — output fields, the anti-fabrication grounding rule, and that 'notes' carries placement guidance plus existing-schema warnings. It does not address the idempotentHint=false signal, leaving a small gap.

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

Conciseness4/5

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

Front-loaded with the core action and return shape, then application steps. It is one dense paragraph that runs long, but nearly every clause earns its place (outputs, grounding rule, per-platform apply path, context trigger); only minor tightening is possible.

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

Completeness5/5

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

With no output schema, the description fully carries the burden: it names all three return fields and explains what each is for, and it covers the applying step the agent needs to complete the job. Nothing required to call or act on the result is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains when 'context' must be supplied (when page text alone is insufficient) and reinforces the no-fabrication constraint on that object, plus reiterates the enum-ish schema_type choices.

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

Purpose5/5

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

States a specific verb and resource — generating valid schema.org JSON-LD for a page — and names the exact artifacts returned ('jsonld', 'html_snippet', 'notes'). This clearly separates it from sibling utilities like snippet_check or wp_widget_schema, which inspect or embed rather than generate.

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

Usage Guidelines4/5

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

The description gives concrete application guidance (Wix Custom Code embed via the Wix MCP, Xyle wp tools for WordPress, otherwise hand the snippet to the user) and tells the agent when to pass 'context' for faq/howto/localbusiness. It does not explicitly state when to prefer this tool over neighboring schema-related siblings, so it stops short of a full when/why-alternative map.

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

get_analysisB
Read-only
Inspect

Get the results of a previously run SEO analysis.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
analysis_idYesThe analysis ID

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds essentially nothing on top: no mention of whether results expire, persistence of the analysis, or why idempotentHint is false for what reads like a fetch. The implicit prerequisite is the only extra signal.

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

Conciseness4/5

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

A single short sentence with the resource front-loaded and zero waste. It is efficient, though its extreme brevity borders on under-specification rather than model conciseness.

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

Completeness3/5

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

There is no output schema, so the description would ideally hint at the shape or size of results (the detail param hint partially covers size). For a low-complexity 2-param read tool with full schema coverage and safety annotations, this is minimally adequate but leaves the agent guessing about return content.

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

Parameters3/5

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

Schema description coverage is 100%, with the detail parameter well documented (concise vs detailed, top-25 trimming) and analysis_id described. The description adds no parameter meaning of its own, so the baseline 3 applies when the schema carries the full burden.

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

Purpose4/5

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

States a specific verb (get) and resource (results of a previously run SEO analysis), which is clearer than a bare tautology. It does not distinguish itself from nearby siblings like list_analyses, run_analysis, or get_report, so the agent must infer the distinction rather than being told.

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

Usage Guidelines3/5

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

"Previously run" implies a prerequisite (an analysis must already exist), giving some implied usage context. However, there is no explicit statement of when to use this versus list_analyses (discovery) or run_analysis (execution), and no mention of what to do if the analysis ID is unknown.

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

get_auditB
Read-only
Inspect

Get the results of an SEO audit including scores, issues, and action items.

NameRequiredDescriptionDefault
audit_idYesThe audit ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=false, covering the safety profile. The description adds useful context about the returned content (scores, issues, action items) but does not disclose error behavior, pagination, or rate limits beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb first and no wasted words. It is appropriately sized for a simple one-parameter read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full schema coverage and rich annotations, the description's summary of returned content is mostly sufficient. It stops short of mentioning error handling if the audit_id is invalid and does not distinguish this from other audit-report siblings, leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single audit_id parameter is fully documented in the schema as 'The audit ID'. The description adds no additional meaning such as format, source, or validation expectations, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: retrieve SEO audit results including scores, issues, and action items. However, it does not differentiate from close siblings such as get_audit_report, get_audit_framework, or export_audit_report, so an agent cannot tell when this is the correct tool without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given. The description does not mention alternatives like get_audit_report or list_audits, nor does it state prerequisites such as needing a valid audit_id from create_audit or list_audits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_audit_frameworkA
Read-onlyDestructive
Inspect

Full reference detail for one section of the Five-Layer Search Audit framework — call this AFTER plan_search_audit, for the piece you actually need next, not as a first move (the full framework is 26 modules / 295 checks and will bloat your context if fetched all at once). Sections: 'module' (pass module_id, e.g. G2 — one module's full checklist), 'deliverable' (the 17-part client report structure, prioritization/forecast formulas, delivery discipline, tier definitions, agent-governance matrix, boundaries the practice declines, re-audit protocol), 'report_template' — call this EVERY TIME right before you write a polished HTML/artifact report, no exceptions, even if you (or another session) built one minutes ago: the exact tab structure (overview/goals/issues/data/competitors/roadmap), what each tab must contain, and the required methodology footer. Building from memory of a past report instead of fetching this fresh is exactly how the Roadmap tab got silently dropped twice in a row (2026-09-13) — memory compresses and drops whole sections without you noticing, this endpoint doesn't. 'tool_standards' (what Screaming Frog/Ahrefs/Semrush/etc. already check, for reconciling against a report the client already ran on themselves), 'modules' (the filtered module list for a profile/tier — same shape plan_search_audit already gives you, prefer that for a specific domain), 'profile_matrix' (the full weight table by profile), 'overview' (default — five layers, profile-selection questions, tier definitions; small, safe to fetch first if you skipped plan_search_audit). IMPORTANT: this is internal reference material for deciding what to check and how to prioritize it — module IDs, tier names and profile codes must never appear in the client-facing report itself.

NameRequiredDescriptionDefault
tierNoFor section=modules: core | deep | autonomous
profileNoFor section=modules: P1 | P2 | P3 | P4
sectionNooverview (default) | profile_matrix | modules | module | deliverable | report_template | tool_standards
module_idNoRequired for section=module — e.g. F1, G2, T6

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true (though destructiveHint=true is oddly noisy for a reference fetch), so the safety bar is lower. The description goes well beyond the annotations by disclosing context-bloat risk, the memory-compression failure mode that dropped the Roadmap tab, the freshness requirement for report_template, and a strong 'never let module IDs/tier names appear in the client output' constraint. It does not describe response format, but with annotations present this is rich added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and the AFTER-plan_search_audit ordering, then sections, then the critical report_template warning. It is dense and long, with a narrative aside about the dropped Roadmap tab, but the length is largely justified by genuinely critical behavioral constraints rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a reference-fetch tool with no output schema and fully documented parameters, the description covers purpose, ordering, section semantics, freshness discipline, and an output-usage constraint (no internal IDs in client reports). The only gap is the lack of any indication of return size/shape per section, which matters given the explicit context-bloat warning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns an extra point by explaining what each section actually returns ('module' takes a module_id like G2 for one module's checklist; 'deliverable' is the 17-part report structure plus formulas; 'modules' is a filtered list; 'overview' is the small default) and when tier/profile apply. That is meaning the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('full reference detail for one section of the Five-Layer Search Audit framework') and explicitly positions itself relative to the sibling plan_search_audit ('call this AFTER plan_search_audit'). An agent can tell apart what this returns versus what plan_search_audit returns without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('for the piece you actually need next'), when-not ('not as a first move', because 26 modules / 295 checks will bloat context), the alternative for a specific domain ('modules' — prefer the plan_search_audit shape), and even a mandatory rule ('call report_template EVERY TIME right before you write a polished report, no exceptions'). This is unusually complete routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_audit_reportA
Read-only
Inspect

Get a formatted audit report with all findings, scores, and recommendations. Before writing the polished report, get_audit_framework(section=report_template) gives the required tab structure and footer.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
audit_idYesThe audit ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds the shape of the result (findings/scores/recommendations) and an ordering dependency, but does not explain anything about the non-idempotent read behavior or how the formatted output differs from the raw audit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the purpose is front-loaded and the workflow hint follows immediately. Every clause carries information the agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no output schema, the description conveys what is returned and the follow-up call needed to produce the polished artifact, and annotations cover the safety profile. It is nearly complete, missing only disambiguation from the several report/audit siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: audit_id and detail (concise vs detailed, with the top-25 trimming rule) are both fully documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a formatted audit report') and enumerates the payload (findings, scores, recommendations), which differentiates it somewhat from a raw get_audit. However, it never names the lookalike siblings (get_audit, export_audit_report, download_report, generate_report), so the agent must guess which report accessor is intended.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a concrete precondition and ordering hint (call get_audit_framework(section=report_template) before writing the polished report), which is genuinely useful workflow guidance. It still offers no explicit when-to-use or when-not-to-use versus get_audit/export_audit_report, so it remains implied usage rather than stated selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_brand_profileA
Read-onlyDestructive
Inspect

The brand's positioning profile (Site Intelligence tab): industry, USP, ideal customer profile, target audience, brand summary, logo/favicon. THE context to load before writing or optimizing any page for the brand — tone, audience, and positioning come from here. Lazily generated server-side if missing. Free read. (Different from get_site_insights, which is GSC/GA traffic intelligence.)

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe brand/site ID

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds genuine context beyond annotations: lazy server-side generation when missing, and cost ('Free read'). However, annotations declare destructiveHint=true and idempotentHint=false, and the description never explains what side effect or state change could justify that — 'free read' sits in tension with a destructive hint. The generation behavior partially explains it, but this is not clearly reconciled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences plus one parenthetical, all front-loaded and purposeful: content inventory, usage trigger, generation/cost behavior, sibling disambiguation. Some caps emphasis ('THE') is stylistic padding, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields, and it covers generation timing, cost, and the competing sibling. A brief note on response structure or the effect behind the destructiveHint would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the detail concise/detailed enum semantics, so the schema already carries parameter meaning. The description adds nothing about site_id or the detail option, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource (get the brand's positioning profile) with an explicit inventory of the fields returned (industry, USP, ICP, audience, summary, logo/favicon). It also names the sibling it is NOT (get_site_insights, which is traffic intelligence), so an agent can discriminate without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger: 'THE context to load before writing or optimizing any page for the brand.' It also supplies an explicit exclusion/alternative and the reason (positioning vs. GSC/GA traffic intelligence). Nothing about when to reach for this tool 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_competitive_landscapeA
Read-only
Inspect

Who is taking this site's search traffic. Returns rivals, how many of the site's keywords each takes, and their pages per funnel stage against the site's own — e.g. six competitor bottom-of-funnel pages against your one. Free. Check the depth field before trusting detail: "serp" means real per-keyword rivals, "known" means we know who competes but not on which terms, "none" means nothing on file. Note it reports rivals ranked ABOVE the site, not the whole results page.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, open-world, non-destructive. Beyond that the description discloses genuinely useful traits: the cost model ('Free'), the meaning of each depth value ('serp'/'known'/'none'), and the critical scope caveat that it reports only rivals ranked ABOVE the site rather than the full results page. That scope caveat materially changes how an agent should interpret results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, followed by output summary, cost, interpretation caveat, and scope limitation in descending priority. Every sentence adds information, though the funnel-stage example adds length without much decision value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns, and it does: rivals, keyword counts, funnel-stage page comparisons, plus the depth-field semantics. Combined with the scope caveat, an agent has enough to call and interpret it correctly, though pagination/verbosity interaction with the detail param is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (detail, site_id) are already documented structurally. The description's 'depth' explanation refers to a returned output field, not an input parameter, so it adds no parameter-level meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific framing ('Who is taking this site's search traffic') and enumerates the concrete outputs: rivals, keyword counts per rival, and funnel-stage page comparisons. It distinguishes itself from generic competitor siblings by scope (rivals ranked above the site), but never names an alternative sibling like discover_competitors or get_competitor_keyword_overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives interpretive guidance ('Check the depth field before trusting detail', 'Free', and the caution that rivals are only those ranked above), which implies intended use. However it never states when to reach for this versus neighboring tools, and no explicit when-not guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_competitor_keyword_overlapA
Read-only
Inspect

Which keywords this site's competitors are relevant for, where that overlaps the site's own terms, and which of their keywords the site has nothing for. Free — Google Keyword Planner, no paid SERP calls. Use it to decide WHICH keywords deserve an exact rank check rather than checking everything. Two limits to pass on to the user: it reports what a domain is RELEVANT for, never where it ranks; and search volumes are bucketed ranges unless the querying Ads account has active spend. Returns configured:false with an explanation when Google Ads is not set up — that is not an error, just fall back to get_competitive_landscape.

NameRequiredDescriptionDefault
site_idYesThe site ID
location_codeNoCountry location code, e.g. 2840 United States, 2826 United Kingdom, 2356 India, 2036 Australia, 2124 Canada (default 2840)
limit_per_domainNoKeyword ideas per competitor domain (default 200)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover read-only/idempotent/open-world hints, but the description adds substantial context beyond them: free data source (Google Keyword Planner, no paid SERP calls), the critical limitation that it reports relevance never rankings, that volumes are bucketed ranges unless the Ads account has active spend, and that configured:false is a non-error state. These are exactly the behavioral traits an agent needs to avoid misusing the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loads the core purpose first, then use case, then caveats and fallback. Almost every sentence earns its place, though the multi-clause opening sentence is slightly heavy. It stops just short of being overlong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full return-value burden and does so: it explains the overlap/coverage structure, the relevance-not-ranking caveat, the bucketed volume caveat, and the configured:false shape. An agent has everything needed to call it and interpret the response correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so site_id, location_code and limit_per_domain are already documented in the schema. The description adds no per-parameter syntax or defaulting details beyond that. Baseline 3 is appropriate when the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — the overlap between competitors' relevant keywords and the site's own terms, plus keywords the site has no coverage for. It distinguishes itself from nearby siblings like keyword_competitor_ranks and get_competitive_landscape by its relevance-overlap framing rather than ranking data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use it: 'to decide WHICH keywords deserve an exact rank check rather than checking everything.' It also provides a concrete fallback path — when Google Ads is not configured, 'just fall back to get_competitive_landscape.' Both the primary use case and the alternative are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_content_briefB
Read-onlyDestructive
Inspect

One brief in full: evidence bundle, outline, draft markdown, last score with checks and fixes, publish state, and the next_step.

NameRequiredDescriptionDefault
detailNosummary (default) | full
brief_idYesThe brief ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds real value by enumerating the returned contents (important with no output schema), but it says nothing about pagination, auth, rate limits, or the 'in full' vs default-summary behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the field list is long but every item earns its place given there is no output schema to document the return shape.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned payload (evidence bundle, outline, draft, score with checks/fixes, publish state, next_step) is exactly the context an agent needs to use the result. Only the detail=summary-vs-full distinction is left ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so brief_id and detail are already documented and the baseline is 3. The description could add meaning about what detail=full changes, but instead 'in full' is stated unconditionally even though the schema defaults detail to summary, adding no compensating detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States it returns a single content brief and enumerates the payload (evidence bundle, outline, draft markdown, score, publish state, next_step), which is specific enough to separate it from list_content_briefs and get_content_outcome. It does not explicitly name a sibling to differentiate against, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as list_content_briefs. The only implicit hint is 'in full', which is not enough to tell an agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_content_outcomeA
Read-onlyDestructive
Inspect

Did this published piece rank? Search Console clicks, impressions, CTR, position and top queries for the page at 14, 30 and 60 days after it went live, plus the last 28 days, next to the rankability score it had at publish. Tracking starts when the WordPress post goes live (or from update_content_brief(published_url=...)). States: awaiting_live, tracking, no_search_console (connect GSC), no_page_identity.

NameRequiredDescriptionDefault
brief_idYesThe brief ID

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=true simultaneously, and the description gives no hint of any destructive behavior — it reads purely as a read/report tool. The description enriches behavior by disclosing the tracking lifecycle states (awaiting_live, tracking, no_search_console, no_page_identity) and the fixed measurement windows, which is genuinely useful, but it never explains or reconciles the destructive annotation, leaving an agent with a serious unexplained conflict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core question, then packs metrics, time horizons, baseline comparison, tracking trigger, and status enum into a compact paragraph. Dense but every clause carries information; the inline enum list at the end is a bit terse and slightly hard to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only reporting tool with no output schema, it explains metrics, horizons, comparison baseline, and lifecycle states well. But it omits how results are returned/shaped and, more importantly, leaves the destructive hint unexplained, so an agent lacks enough to fully reason about side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, brief_id, with 100% schema coverage, which is the baseline-4 case for a zero/near-zero-param tool. The description adds context by tying the brief to publication events and the tracking window, though it doesn't spell out what a valid brief_id looks like beyond the schema's 'The brief ID'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with the concrete question 'Did this published piece rank?' and then enumerates the exact metrics returned (clicks, impressions, CTR, position, top queries) at specific time horizons. An agent can distinguish this from siblings like get_content_brief or check_tracked_keyword_rankings because the resource is scoped to a single published piece keyed by brief_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage: call this after a brief has been published to check search performance, and it names update_content_brief(published_url=...) as the trigger that starts tracking. It does not explicitly state when NOT to use it or name the sibling tool (content_outcomes / get_gsc_pages) an agent should prefer for other cases, keeping it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crawl_resultsA
Read-only
Inspect

Get the pages and issues of a completed crawl, paged. Each list carries total/limit/offset; raise offset to read the rest, or filter issues by severity, category, rule_id or query to get every affected URL for one finding.

NameRequiredDescriptionDefault
limitNoRows per list (default 25 pages / 50 issues; max 500 pages / 1000 issues)
queryNoIssues only: substring match on the page URL or message
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
job_idYesThe crawl job ID
offsetNoRows to skip in each list (default 0). Use with limit to page
includeNoWhich lists to return: "both" (default), "pages" or "issues"
rule_idNoIssues only: one rule id (e.g. OP-H-003) — returns every affected URL for that finding
categoryNoIssues only: filter by category (e.g. on_page, technical, schema)
severityNoIssues only: critical | high | medium | low | info
page_filterNoPages only: broken | redirect | thin

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly=true, destructive=false, openWorld=true), so the bar is lower. The description adds genuine behavioral context the annotations lack: the paging model (each list carries total/limit/offset) and the fact that filtering by rule_id returns every affected URL rather than a paged slice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, no filler, front-loaded with what is returned before the paging and filtering instructions. Slightly packed, but every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, no-output-schema read tool, the description covers pagination, list selection, and filter behavior adequately. It stops short of characterizing what a 'page' or 'issue' record contains, which with no output schema would be the remaining useful addition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all ten parameters including filtering semantics and defaults. The description's mention of severity/category/rule_id/query mostly restates the schema, adding only the 'every affected URL for one finding' framing. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'pages and issues of a completed crawl, paged' — which clearly distinguishes it from list_crawls (enumeration) and get_crawl_status (progress). It does not explicitly name those siblings, but the 'completed crawl' qualifier implies the boundary well enough for selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives real usage guidance: use offset/limit to page, or filter issues by severity/category/rule_id/query to enumerate affected URLs for one finding. However, it never states when not to use this vs get_crawl_status, get_analysis, or list_crawls, nor that the crawl must already be complete before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crawl_statusB
Read-only
Inspect

Check the status of a running or completed crawl job. Stuck or unwanted crawl? Pass cancel=true to stop it instead of polling forever.

NameRequiredDescriptionDefault
cancelNoCancel the job (stops a stuck/unwanted crawl) and return its final status
job_idYesThe crawl job ID

TDQS

B3.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly instructs the agent to pass cancel=true to stop a crawl, a state-changing operation, while the annotations declare readOnlyHint=true and destructiveHint=false. The read-only declaration does not hold for the documented cancel mode, so the description contradicts the structured safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the primary action and then the conditional cancel path — no filler. The rhetorical 'Stuck or unwanted crawl?' phrasing is slightly informal but still earns its place by motivating the cancel flag.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of describing what 'status' returns (progress, terminal states, error reporting), and it does not. For a two-parameter job-status tool this is adequate-but-gapped: the agent knows when to call it but not what it will get back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both job_id and cancel already documented in the schema itself, so the baseline is 3. The description adds only a rationale for cancel (avoid polling forever) rather than new semantics such as what state the job ends in or whether cancellation is reversible.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — checking the status of a crawl job — with scope ('running or completed'), which separates it conceptually from get_crawl_results and list_crawls. It never names those siblings, so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use ('status of a running or completed crawl job') plus a conditional action for the stuck/unwanted case, which is genuinely useful routing guidance. It stops short of naming alternatives such as get_crawl_results, so the exclusion is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cwv_resultsC
Read-only
Inspect

Get Core Web Vitals measurement history for a site.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
deviceNoFilter by device: 'mobile' or 'desktop'. Omit for both.
site_idYesThe site ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds almost nothing beyond that: no data source (field vs. lab vs. CrUX), no time window, no granularity, and notably no explanation of the unusual idempotentHint=false on a read tool. It essentially restates the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler or redundancy. It is arguably too terse for the tool's complexity, but there is no wasted text to penalize.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should carry the burden of explaining what 'measurement history' returns — time range covered, aggregation level (URL vs. site), metric set, and data source. None of that is present, leaving the agent unable to predict the response shape for a relatively complex analytics tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter descriptions are themselves rich (the 'detail' param explains concise vs. detailed trimming and size caps; 'device' explains the filter and omission behavior). The description adds nothing on top, so the baseline 3 for fully documented params is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get Core Web Vitals measurement history') scoped to a site, which is more informative than the name alone. It implicitly contrasts with the sibling measure_cwv (history vs. fresh measurement), but never names that alternative, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of when to prefer this over measure_cwv or the other CWV/analytics siblings, and no stated prerequisites such as a connected site or available historical data. The agent must guess the call context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_disclosureC
Read-onlyDestructive
Inspect

One honest line on how the piece was made — what the author did, what AI tools did — from the brief's own record. Put it at the end of the piece in italics; a short statement of a limited, specific AI role removes the trust penalty an unexplained one carries.

NameRequiredDescriptionDefault
authorNoThe author's name to use in the line
brief_idYesThe brief ID

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=true — a conflicting pair the description does nothing to resolve, since it implies a purely derived, harmless line. It adds only the data source ('from the brief's own record'); it says nothing about side effects, permissions, or why the call is non-idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what the line is, followed by where to use it. Dense with em-dashes but no filler; slightly awkward that half the text is placement advice rather than tool behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does describe the shape of the returned line, which is helpful. However, it omits what happens if the brief lacks AI-usage records, error behavior for an invalid brief_id, and any clarification of the contradictory annotation profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (author, brief_id), so the schema carries parameter meaning. The description adds no format or syntax detail for either parameter beyond what the schema states; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description conveys that the tool yields a single disclosure line about how a piece was made, drawn from a brief's record, but it never states the action directly (e.g., 'returns/generates') and reads partly as guidance for the agent. The resource is identifiable, yet no sibling differentiation is offered (e.g., versus get_content_brief).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It instructs where to place the output ('at the end of the piece in italics') and why a specific disclosure helps, but gives no conditions for invoking the tool, no prerequisites, and no comparison to alternatives like get_content_brief or get_audit_report.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ga_metricsC
Read-only
Inspect

Get Google Analytics metrics for a site: sessions, users, pageviews, bounce rate, and more.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID
end_dateNoEnd date (YYYY-MM-DD). Default: today
start_dateNoStart date (YYYY-MM-DD). Default: 28 days ago

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that — nothing about whether GA must be connected, rate limits, date-range/timezone handling, or result size behavior — so it leaves the lower, annotation-relieved bar unmet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the resource and gives an immediate metric preview with no wasted preamble. The trailing 'and more' is vague filler rather than earned content, keeping it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only metrics tool with annotations covering safety and 100% schema coverage, the essentials are present, and no output schema exists so return-format explanation is not strictly required. However, the missing connection prerequisite and any hint about the shape/volume of returned metrics leave a notable gap for an agent invoking it cold.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (site_id, start_date, end_date, detail) are already fully documented in the schema. The description adds no parameter-level meaning such as date syntax, default windows, or the top-25 trimming behavior of 'detail'. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('Get Google Analytics metrics') with a concrete enumeration of the metrics returned (sessions, users, pageviews, bounce rate). It is clear which data domain it covers, though it never explicitly contrasts with close siblings like get_gsc_metrics or get_shopify_analytics for an agent choosing between analytics sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no alternatives, and no exclusions. It also fails to state that Google Analytics must already be connected (e.g., via connect_ga) before this tool is meaningful, which is a real prerequisite an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ga_statusB
Read-only
Inspect

Check the Google Analytics connection status for a site.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond restating the purpose; it does not explain what the status check entails, whether authentication is required, or what a failed check looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with zero wasted words. It communicates the action and resource immediately, which is appropriate for a simple status-check tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status tool with one required parameter and rich annotations, the description covers the essential invocation context. However, since there is no output schema, it could clarify what 'status' returns (e.g., connected/disconnected, error details), leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the single site_id parameter is fully documented in the input schema. The description's phrase 'for a site' loosely maps to site_id but adds no format, syntax, or constraints beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Check') and resource ('Google Analytics connection status'), making the tool's core function clear. It implicitly distinguishes itself from siblings like connect_ga (which establishes a connection) and get_ga_metrics (which retrieves metrics), but does not explicitly name or contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives such as get_ga_metrics or connect_ga, nor does it state prerequisites like needing a connected Google Analytics account. Usage is only implied by the tool name and the phrase 'for a site'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_google_ads_statusA
Read-only
Inspect

Google Ads (Keyword Planner) connection status for a site. Xyle's developer token is approved and Keyword Planner data is live once the site owner connects their account via connect_google_ads. Note: for a site that hasn't connected yet, keyword ideas still come from YOUR research — generate them in-chat and store via add_tracked_keywords with rich objects.

NameRequiredDescriptionDefault
site_idYesThe brand/site ID

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint, so safety is covered. The description adds genuine behavioral context beyond that: the developer token approval status and the account-connection dependency that gates live data, plus a state-dependent fallback. No rate limits or return format, but solid added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the purpose before the prerequisite and the fallback note. Each sentence earns its place, though the add_tracked_keywords note is slightly tangential to a status-check tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only status tool with full annotation coverage and no output schema, the description covers purpose, prerequisites, and an alternative workflow. Nothing essential is missing, though it never describes what the status values themselves look like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage ('The brand/site ID'), so the schema carries the meaning. The description adds nothing beyond what the schema already documents, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: the Google Ads (Keyword Planner) connection status for a site. It is clearly distinguishable from sibling status tools like get_ga_status and get_shopify_status, and it names connect_google_ads as the related mutating sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the condition under which Keyword Planner data becomes live (once the owner connects via connect_google_ads) and gives a concrete alternative path for unconnected sites (generate ideas in-chat and store with add_tracked_keywords). It lacks an explicit 'call this to check whether connected' framing, but the guidance is strong and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gsc_keyword_candidatesA
Read-only
Inspect

Queries this site ALREADY ranks for but is not tracking, each with the page that ranks and its position. Free — reads stored Search Console data, no external call. Use this instead of asking the user to think up keywords. Empty means Search Console has not been synced for this site: run sync_search_console first.

NameRequiredDescriptionDefault
limitNoMax candidates to return (default 50)
site_idYesThe site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly and non-destructive, but the description adds value beyond them: it discloses the cost/latency profile ('Free — reads stored Search Console data, no external call') and explains what an empty result means operationally. That is real behavioral context the annotations do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the purpose, then cost, then usage and the empty-state remedy. No sentence is wasted and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does describe the shape of results (page that ranks plus position) and handles the empty case plus its prerequisite. It leaves pagination/limit behavior implicit, but the essential call-time knowledge is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (limit, site_id), so the schema carries the parameter burden. The description adds nothing about limit syntax or defaults, which is fine given the baseline for fully documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with sharp scope: keywords the site 'ALREADY ranks for but is not tracking,' and even names the return fields (the ranking page and its position). An agent can distinguish this from get_gsc_queries or get_live_keyword_ideas without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit behavioral direction ('Use this instead of asking the user to think up keywords') and a concrete recovery path for the empty case (run sync_search_console first). It stops short of naming sibling keyword-generation tools as alternatives, so it's clear context without full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gsc_metricsB
Read-only
Inspect

Get Google Search Console dashboard for a site: clicks, impressions, CTR, average position, top queries, top pages, coverage, sitemaps, and issues.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds that this is an aggregated dashboard spanning queries, pages, coverage, sitemaps, and issues, but says nothing about auth requirements, data freshness, or how it relates to the individual GSC tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the long metric list is dense but directly informative. It remains readable and appropriately sized for the tool's scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a read-only aggregate tool, the metric enumeration is helpful. However, given the crowded GSC sibling set, the description omits the boundary between this dashboard and get_gsc_pages/get_gsc_queries/get_gsc_sitemaps, leaving an important selection gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a thorough description of the 'detail' verbosity parameter, so the schema already does the heavy lifting. The description adds no parameter-level meaning beyond what the schema provides, which is the correct baseline for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (Google Search Console dashboard for a site) and enumerates the metric categories returned. It does not, however, distinguish itself from narrow siblings like get_gsc_pages, get_gsc_queries, and get_gsc_sitemaps, which overlap with the listed content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this aggregate dashboard versus the narrower GSC siblings, nor any stated prerequisites (e.g., site must be connected to Search Console). The agent must infer usage from the metric list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gsc_pagesA
Read-only
Inspect

Top PAGES by Search Console performance for a site — clicks, impressions, CTR, position per URL. (Previously this tool returned URL inspections; use get_url_inspections for that.)

NameRequiredDescriptionDefault
limitNoMaximum rows to return, highest clicks first. Omit for all of them.
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the metric payload and a useful migration note that the tool previously returned URL inspections, but says nothing about volume, sizing, or how the 'all rows' default behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the core purpose front-loaded and the disambiguation parenthetical trailing where it is cheap to skip. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the per-URL measures returned, and annotations carry the read-only/open-world profile. It omits any statement about ordering/pagination beyond what the limit param implies, which is a minor gap for a listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the three parameters (limit, detail, site_id) is documented inline, so the schema does the heavy lifting. The description adds no param-level detail beyond the metric list, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Top PAGES by Search Console performance for a site') and enumerates the returned measures (clicks, impressions, CTR, position per URL). It explicitly names the sibling it is not (get_url_inspections), so an agent can separate it from related GSC tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to reach for this tool (ranking pages by GSC performance for a site) and routes one alternative — get_url_inspections — to its proper tool. It stops short of distinguishing itself from the closely named siblings get_gsc_queries and get_gsc_metrics, which an agent must infer from 'PAGES'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gsc_queriesA
Read-only
Inspect

Top QUERIES by Search Console performance for a site — clicks, impressions, CTR, position per query. (Previously this tool returned sitemaps; use get_gsc_sitemaps for that.)

NameRequiredDescriptionDefault
limitNoMaximum rows to return, highest clicks first. Omit for all of them.
site_idYesThe site ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds one useful behavioral note — the historical behavior change from sitemaps — but says nothing about default row counts, time-window defaults, or data freshness, which matter for a metrics tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core purpose front-loaded and the disambiguation parenthetical placed after it. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields (clicks, impressions, CTR, position per query). It is nearly complete for a simple two-param read tool, missing only scoping details such as the default date range of the GSC performance data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only two parameters, and the limit parameter's ordering ('highest clicks first') is already documented in the schema. The description adds no parameter meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource ('top QUERIES by Search Console performance for a site') and enumerates the returned metrics (clicks, impressions, CTR, position). It also explicitly disambiguates from sibling get_gsc_sitemaps, so an agent can separate the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the sitemap use case to get_gsc_sitemaps, which is a genuine when-not statement. However it gives no guidance relative to the other GSC siblings (get_gsc_pages, get_gsc_metrics, get_gsc_keyword_candidates), leaving the broader selection context to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gsc_sitemapsB
Read-only
Inspect

Submitted sitemaps from Google Search Console with status, errors, and warnings.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that results include status, errors, and warnings, which is genuinely useful context about the returned content, but it offers nothing on permissions, sync prerequisites, or whether data must first be synced via sync_search_console.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no filler and the resource front-loaded. It is a fragment and could be tightened into a proper clause, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, the description usefully states the returned data shape (status, errors, warnings), which compensates for the missing output schema. Only the absence of any usage routing keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single site_id parameter at 100% schema description coverage, the schema carries full responsibility for parameter documentation. The description adds no meaning beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource — submitted sitemaps from Google Search Console — and lists the data returned (status, errors, warnings). This clearly distinguishes it from siblings like get_gsc_metrics, get_gsc_pages, and get_gsc_queries, though it is a sentence fragment rather than a full statement of purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as submit_sitemap (its natural counterpart) or the other get_gsc_* readers. No prerequisites or exclusions are stated, leaving usage to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_index_statusB
Read-only
Inspect

Check if a site has GSC (Google Search Console) connected and the scope of access.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=false, covering the safety and idempotency profile. The description adds that the check concerns GSC connection and access scope, which is useful but does not disclose additional behavioral details like response format, required permissions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It communicates the tool's core purpose efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status check with a fully documented single parameter and no output schema, the description covers what is necessary to call the tool. It omits when-to-use guidance and return details, but those are not strictly required for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage for the single site_id parameter, describing it as "The site ID." The description does not add any further meaning about the parameter, so the baseline of 3 is appropriate when the schema fully documents the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ("Check") and resource ("GSC connected and scope of access"), making the tool's purpose immediately clear. It distinguishes itself from other GSC tools like get_gsc_metrics or get_gsc_queries by focusing on connection status, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives such as sync_search_console or get_ga_status. It states what is checked but not the conditions or prerequisites that should prompt its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_keyword_clustersB
Read-only
Inspect

Get keyword clusters from a session. Keywords are grouped by semantic similarity and search intent.

NameRequiredDescriptionDefault
session_idYesThe keyword session ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a useful semantic note that clusters are grouped by similarity and intent, but says nothing about pagination, result size, or behavior for an empty/unknown session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler, and the core action is front-loaded. It could be marginally richer without losing concision, but there is no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, the description conveys what a cluster represents (semantic similarity and search intent), which compensates for the missing return documentation. Annotations cover safety, so the remaining gap is only pagination/edge-case behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single session_id parameter, so the schema already documents it fully. The description adds no format or sourcing detail beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (keyword clusters) scoped to a session, which is clear enough to distinguish it from generic session retrieval. However, it never names or contrasts with the obvious sibling get_keyword_session or get_keyword_funnel, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no mention of alternatives. 'From a session' implies a session must exist first, but the description never states the prerequisite or routes the agent between this and get_keyword_session, leaving usage to be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_keyword_funnelA
Read-only
Inspect

TOFU/MOFU/BOFU funnel view of a brand's tracked keywords: per-stage counts, total search volume, average position, and top opportunities (high volume, not ranking yet), plus a cluster breakdown. Free read — call any time to review coverage and gaps. If unclassified_count > 0, classify those keywords yourself and store via classify_tracked_keywords.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe brand/site ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds non-structured context — that the call is free, has no cost/rate barrier, and that a non-zero unclassified_count is a signal to take a downstream write action. It does not explain pagination/truncation behavior beyond the schema's 'detail' field. Minor tension: 'call any time' implies repeat-safety while idempotentHint=false, but this is not a substantive contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what the tool returns, then the cost/safety note, then the conditional workflow step. No filler or restated boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden and does so by listing the concrete fields an agent will get. It also supplies the next-step workflow, making it complete for a read-only analytics tool with a 2-parameter schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both 'site_id' and the 'detail' verbosity switch are documented in the schema itself. The description implicitly scopes results to a brand but adds no syntax, format, or semantics beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific artifact (TOFU/MOFU/BOFU funnel view of a brand's tracked keywords) and enumerates exactly what it returns: per-stage counts, total search volume, average position, top opportunities, and a cluster breakdown. An agent can distinguish this from list_tracked_keywords or tracked_keyword_performance without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance ('Free read — call any time to review coverage and gaps') and a conditional follow-up ('If unclassified_count > 0, classify those keywords yourself and store via classify_tracked_keywords'). It does not name alternative funnel/cluster views (e.g. get_keyword_clusters) or state when this view is the wrong choice, so it falls short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_keyword_sessionC
Read-only
Inspect

Get details and keywords from a keyword research session.

NameRequiredDescriptionDefault
session_idYesThe keyword session ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safe-read profile is covered and the description adds nothing on top. It does not explain the notable idempotentHint=false (why repeated reads may differ), session expiry, or whether missing/expired sessions error. For a read tool with full annotation coverage this is a minimal pass.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with zero filler. It is efficiently sized, though the brevity is close to under-specification rather than true economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of describing what comes back; 'details and keywords' is vague about the return shape (keyword list, metrics, counts). For a one-parameter read tool it is minimally adequate, but an agent cannot anticipate the response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage, so the schema fully documents session_id. The description adds no format, provenance, or lookup guidance beyond what the schema states, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (details and keywords from a keyword research session), which is materially clearer than a tautology. It implicitly distinguishes itself from list_keyword_sessions, create_keyword_session and delete_keyword_session by naming the session artifact, but never explicitly contrasts them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance, and no alternatives are named. The only inference available is that a session_id must already exist from create_keyword_session, which the agent must derive itself from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_live_keyword_ideasA
Read-only
Inspect

LIVE Google Ads Keyword Planner search from seed terms, targeted at a specific location — real search volume, competition and CPC to cite in reports, not estimates. Different from get_competitor_keyword_overlap: this is YOUR seed keywords, not a competitor domain's. Requires the SITE to have its own connected Google Ads account (connect_google_ads) — there is no platform-account fallback for this one, since it is answering for a specific site's own research rather than a domain lookup. Returns configured:false with an explanation if not connected yet — fall back to your own research, clearly labeled as an estimate, and note that check_tracked_keyword_rankings can verify individual candidates once added.

NameRequiredDescriptionDefault
limitNoMax ideas to return, 1-300 (default 100)
seedsYesJSON array of 1-20 seed keywords/phrases, e.g. ["machine vision integrator","edge ai manufacturing"]
site_idYesThe brand/site ID — must have its own connected Google Ads account
location_codeNoCountry location code, e.g. 2840 for United States, 2356 India (default 2840)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/open-world/non-destructive status, but the description adds material context beyond them: the per-site Google Ads connection requirement, the absence of a platform-account fallback and the reasoning for it, and the concrete failure mode (returns configured:false with an explanation). It also tells the agent what to do and how to label results when that failure occurs, which is exactly the behavioral detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single dense paragraph, but it is front-loaded with the core purpose and each subsequent sentence carries distinct payload (sibling differentiation, prerequisite, failure mode, fallback). The one slightly redundant element is the repeated framing of 'this is YOUR seed keywords,' but overall the length is justified by the number of behaviors it must convey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of explaining return behavior — and it does, specifying the configured:false shape and the recovery path. Combined with the prerequisite and sibling routing, an agent has everything needed to decide whether to call it and how to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (seeds, site_id, location_code, limit) are already documented in the schema, and the baseline is 3. The description reinforces that seeds are the agent's own seed keywords and that targeting is location-specific, but adds no format syntax or constraints beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource combination (LIVE Google Ads Keyword Planner search from seed terms) plus a scope qualifier (targeted at a specific location) and immediately states what the output can be used for (real volume, competition, CPC to cite in reports, not estimates). It explicitly distinguishes itself from the sibling get_competitor_keyword_overlap by contrasting seed-keyword research against competitor-domain lookup, so an agent can route between them without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States exactly when to use it (your own seed terms), when not to (competitor domain — use get_competitor_keyword_overlap instead), and the hard prerequisite (the site must have its own connected Google Ads account via connect_google_ads, with no platform-account fallback). It also prescribes the fallback workflow when the prerequisite is unmet, naming check_tracked_keyword_rankings for verifying candidates. This is explicit routing in both directions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_planA
Read-only
Inspect

Get your current Xyle subscription plan details including feature limits and caps.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that the payload contains feature limits and caps; it says nothing about auth requirements, caching, or whether the plan can change mid-call (relevant given idempotentHint=false).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, and the trailing clause about limits/caps is the only additional payload detail. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A trivial, parameterless read tool with no output schema, so the description only needs to convey what it returns; 'feature limits and caps' does that adequately. It falls short of 5 only because return shape (plan tiers, quota fields) remains unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies for a parameterless call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Get your current Xyle subscription plan details' with scope ('current', 'feature limits and caps'). It is distinguishable from most siblings, though it does not explicitly contrast with close neighbors like get_usage or list_invoices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as get_usage or list_invoices. The word 'current' implies a point-in-time read, but usage is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prospect_auditA
Read-only
Inspect

Poll a prospect audit. Returns status ('running'/'completed'/'failed'), progress, and once completed: crawl summary, SEO/AEO/GEO scores, Core Web Vitals, backlinks (or why they're unavailable), competitor keyword profiles, the AI-visibility scan, an explicit data_gaps list (what's missing and why — Search Console always appears here), and a suggested_outline for the write-up. Write the actual audit yourself from this data — this never writes prose for you.

NameRequiredDescriptionDefault
audit_idYesThe id returned by start_prospect_audit

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly, non-destructive, open-world); the description goes well beyond them by enumerating the full return payload, disclosing the data_gaps list semantics ("what's missing and why — Search Console always appears here"), and stating that unavailable backlinks come with an explanation. The explicit "this never writes prose for you" boundary is exactly the kind of behavioral trait 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph with the essential action front-loaded and no filler sentences; every clause carries information. The long mid-sentence enumeration of return fields is heavy to scan, but with no output schema it is doing necessary work.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async-poll tool with no output schema, the description supplies the missing return contract in detail, covers both the running and completed states, and flags the known always-present data gap. An agent can call this correctly and interpret the result without opening anything else.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single audit_id parameter is already documented as "The id returned by start_prospect_audit." The description adds no parameter-level detail (no format, no staleness or reuse guidance), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Poll a prospect audit") and immediately scopes it as a status/result reader for an async job, which cleanly separates it from start_prospect_audit, list_prospect_audits, and the generic get_audit/get_audit_report siblings. The return enumeration makes the resource unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Poll" plus the schema note that audit_id comes from start_prospect_audit establishes the trigger and the expected repeat-call pattern, and the closing sentence draws a clear responsibility boundary (the caller writes the prose, not this tool). It stops short of explicit when-not-to-use guidance or polling cadence, so it is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reportC
Read-only
Inspect

Get a previously generated business report.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID
report_idYesThe report ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing on top of that — no note on auth requirements, whether a report can expire, or why a read is flagged non-idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler — appropriately sized for a simple lookup. It is efficient but too sparse to earn a 5, since brevity here edges toward under-specification rather than tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-required-parameter read tool with full schema coverage and no output schema, the description is minimally sufficient. It still omits where report_id comes from, how it relates to list_reports/generate_report, and what a missing or expired report returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a clear explanation of the detail verbosity toggle, so the schema carries the parameter burden. The description adds no syntax, format, or ID-sourcing detail beyond what the schema already states, which is the expected baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource ("Get ... report") and scopes it to previously generated business reports, which implicitly separates it from generate_report and list_reports. However, it never names or contrasts those siblings, so the distinction must be inferred from the surrounding tool list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no pointer to alternatives such as list_reports or generate_report. "Previously generated" faintly implies the report must already exist, but that is inference rather than instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_shopify_analyticsB
Read-only
Inspect

Get Shopify store analytics including traffic, sales, and product performance data.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID
end_dateNoEnd date (YYYY-MM-DD)
start_dateNoStart date (YYYY-MM-DD)

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds only that returned data spans traffic, sales, and product performance — a useful but vague hint about output content, with no mention of date-range defaults or depth behavior beyond the schema's detail field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence, front-loaded with the verb and resource. It is not padded, though for a tool with four parameters and no output schema it may be under-specified rather than genuinely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the burden of explaining what is returned, yet it only lists broad domains without any shape, granularity, or date-range behavior. An agent cannot tell what the response looks like or whether start/end dates default to a window.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (site_id, start_date, end_date, detail) are documented in the schema, including the concise/detailed enum-like behavior. The description adds nothing about parameter usage, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get Shopify store analytics') and enumerates three data domains (traffic, sales, product performance). It does not differentiate from siblings such as get_ga_metrics, get_site_stats, get_traffic_sources, or get_shopify_products, which an agent could easily confuse with this.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives. The many sibling analytics tools (get_ga_metrics, get_gsc_metrics, get_site_stats, get_shopify_products) make routing ambiguous without explicit discrimination.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_shopify_productsB
Read-only
Inspect

Get Shopify products with SEO metadata (titles, descriptions, handles, images).

NameRequiredDescriptionDefault
pageNoPage number for pagination (default: 1)
limitNoNumber of products to return (default: 25)
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds what the payload contains (SEO metadata fields), which is genuinely useful, but says nothing about pagination caps, result size, or why idempotentHint is false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the resource and the returned data are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated read tool with no output schema, the description covers purpose but omits result shape, default page size interplay with the detail flag, and connection prerequisites. It is minimally adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, limit, detail, and site_id are all documented in the schema; the baseline is 3. The description's field list describes return content, not parameters, so it adds no parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (Shopify products) and enumerates the SEO fields returned (titles, descriptions, handles, images). It is implicitly distinguishable from siblings like get_shopify_analytics and get_shopify_status, but does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, nor any prerequisites (e.g., that the Shopify site must be connected/synced first). The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_shopify_statusC
Read-only
Inspect

Check the Shopify integration status for a site.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond them — no indication of what a 'status' result can be (connected, error, expired token) or why idempotentHint=false despite being a read. With annotations carrying the load, a description that contributes zero extra behavioral context scores below baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though the brevity shades into under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only probe this is minimally adequate, and annotations plus schema cover safety and the argument. However, with no output schema, nothing explains what 'status' values mean or what an agent should do with them, leaving a real gap for the caller.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema description coverage, so the schema already documents site_id fully. The phrase 'for a site' only restates that. Baseline 3 applies when the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (Shopify integration status) scoped to a site. The word 'status' plausibly separates it from siblings like get_shopify_analytics and get_shopify_products, but it never explicitly contrasts itself with them or with sync_shopify, so an agent still has to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus get_shopify_analytics, get_shopify_products, or sync_shopify. In particular it is silent on whether calling it triggers or requires a sync/reconnect, which is exactly the ambiguity an agent would face here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_siteA
Read-only
Inspect

Get a site's record: domain, workspace, connection status (Search Console, Framer, WordPress), latest crawl and the id of its latest page analysis. The full latest analysis is left out unless include_analysis=true (get_analysis returns it on its own).

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe unique ID of the site
include_analysisNoEmbed the full latest page analysis (~50 KB). Default false

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered and the description does not need to restate it. The description adds the useful behavioral fact that the analysis payload is withheld by default unless include_analysis=true, but says nothing about auth requirements, rate limits, or freshness of the crawl/status data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first front-loads the resource and its returned fields, the second front-loads the gating condition and the alternative tool. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden and does it well by enumerating the record's fields and flagging the ~50 KB analysis payload. It is only slightly incomplete: the detail=concise/detailed trimming behavior is left entirely to the schema and would matter for how verbosely results come back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (detail, site_id, include_analysis) are documented in the schema, so the baseline is 3. The description reinforces include_analysis with routing context (use get_analysis instead), but never mentions the detail verbosity parameter whose trimming behavior materially changes the output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ("Get a site's record") and then enumerates the exact fields returned: domain, workspace, connection statuses, latest crawl, latest analysis id. This lets an agent separate it from siblings like get_site_stats, get_site_health, and list_sites without opening the schema, and it points at get_analysis as the source of the full analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one explicit routing rule: the full latest analysis is intentionally omitted here, and get_analysis returns it on its own, so an agent knows when to pick the sibling instead. However, it never states when to prefer get_site over list_sites, site_overview, or get_site_insights, so coverage of alternatives is partial rather than complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_site_healthA
Read-only
Inspect

One consolidated health picture for a site: SEO/AEO/GEO scores with trend, error/warning/notice triage counts, issues grouped by rule (one row per issue with the pages it affects, not one row per page), ranked opportunities, and the new-vs-fixed delta. Each issue carries a locator naming the offending elements where we have one.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral detail beyond that: issues are returned one row per rule rather than per page, and each issue carries a locator 'where we have one' — a useful caveat about output granularity and possible nulls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence leads with the core purpose before the enumeration, and every clause earns its place by naming a distinct output component. It is dense and slightly run-on, but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description properly carries the return-value burden and does so thoroughly by enumerating scores, counts, grouped issues, opportunities, and delta. What is missing is any guidance on refreshing/recency or relationship to the sibling health tools, which keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (site_id and the concise/detailed detail enum) are fully documented in the schema. The description adds nothing about parameter behavior, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource (a consolidated health picture for a site) and enumerates exactly what it contains — SEO/AEO/GEO scores with trend, triage counts, rule-grouped issues, ranked opportunities, and new-vs-fixed delta. This rich content list lets an agent infer what it is, but it never names overlapping siblings such as technical_health, seo_insights, or site_overview, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'One consolidated health picture' implies this is the aggregate/summary entry point, but there is no explicit when-to-use, when-not-to-use, or alternative named among the many overlapping siblings (technical_health, get_site_insights, get_analysis). 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.

get_site_insightsA
Read-only
Inspect

Traffic Intelligence for a brand — DERIVED insights from Search Console + GA4 (last 28 days vs prior 28): striking-distance keywords (page-1 pushes with estimated extra clicks), CTR underperformers (rank fine, weak title/meta), rising/falling queries + content decay, keyword cannibalization (multiple pages competing), branded vs non-branded split, and AI-assistant referral traffic (ChatGPT/Perplexity/Claude/Gemini/Copilot) with growth and AI-visibility citation correlation. Every headline_insight carries an action — turn them into fixes: rewrite titles via wp_update_page, refresh decaying pages, consolidate cannibalized ones. Requires GSC and/or GA4 connected. Free read.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe brand/site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds meaningful context beyond them: the 28-day-vs-prior-28 comparison window, that results are DERIVED rather than raw, the connection prerequisite, and the built-in `action` field on headline_insight. No rate limits or pagination behavior disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the tool's identity and scope, and every clause maps to a distinct insight category rather than filler. It is dense and run-on, but nothing is redundant or padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the full burden of describing what comes back, and it does so exhaustively (insight categories, action field, comparison window) plus prerequisites and next-step workflow. An agent has everything needed to decide to call it and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (site_id, detail) are documented in the schema itself, including the concise/detailed behavior and top-25 trimming. The description adds no additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (DERIVED traffic insights for a brand from Search Console + GA4, last 28 days vs prior 28) and enumerates the exact output categories: striking-distance keywords, CTR underperformers, cannibalization, branded split, AI-referral traffic. This is clearly distinguishable from sibling raw-data tools like get_gsc_metrics, get_ga_metrics, or seo_insights.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a real prerequisite ('Requires GSC and/or GA4 connected'), signals cost ('Free read'), and prescribes follow-up actions (rewrite titles via wp_update_page, refresh decaying pages). It does not explicitly name the alternative tools (seo_insights, get_gsc_metrics) or state when not to use it, 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.

get_site_journeysA
Read-only
Inspect

Keyword journeys for a site: which page serves each funnel stage (tofu/mofu/bofu), which searches reach it, and where the funnel leaks — stages with no page at all, pages that earn no searches, and queries where two of your own pages compete. With Search Console connected these are real observed searches; without it, stages are inferred from each page's URL and title and the response says so.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds genuinely useful behavior the annotations cannot: with Search Console connected the searches are real observed data, without it stages are inferred from URL/title and the response discloses this. It does not cover pagination or rate limits, but the data-provenance disclosure is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, the first tightly enumerating the three output dimensions and the second front-loading the important data-source caveat. Dense but every clause carries information; only the long-running first sentence slightly taxes readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-shape burden and does so: it enumerates the leak types (no page, no searches, self-competing pages) and the funnel-stage mapping. Combined with annotations for safety, an agent has what it needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site_id and detail (concise vs detailed, top-25 trimming) are already documented in the schema. The description adds nothing about parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: keyword journeys per site mapping pages to funnel stages (tofu/mofu/bofu), the searches that reach them, and funnel leaks. It is clearly more specific than a generic 'get' tool, though it never names the closely related sibling get_keyword_funnel to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the GSC-connection note (use it to see journeys when Search Console data exists; otherwise results are inferred), but there is no explicit when-to-use/when-not statement and no routing to an alternative like get_keyword_funnel or get_gsc_queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_site_requirementsA
Read-only
Inspect

What 'good' means for THIS kind of site — a dental clinic and a SaaS docs site need different things. Returns the detected site type and a pass/fail/unknown checklist with why each matters and how to fix it. 'unknown' means we have not measured it yet (usually no crawl), never that it failed. Requires a completed crawl to evaluate.

NameRequiredDescriptionDefault
site_idYesThe site ID
site_typeNoOverride the detected type (saas, ecommerce, local_business, content_publisher, b2b_services, healthcare, portfolio_brand, general). Persisted as user-set.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the description's added value is interpretive: the meaning of the 'unknown' state, the crawl prerequisite, and that site_type is persisted as user-set (which explains the non-idempotent hint). That is useful context beyond structured fields, though output shape details remain thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences with the result shape front-loaded and the critical 'unknown' caveat and prerequisite called out. The opening analogy ('a dental clinic and a SaaS docs site need different things') is motivational filler that a stricter reading would trim, but nothing is misleading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so: it names the detected type, the checklist's three states, and the accompanying 'why' and 'how to fix' content. The crawl prerequisite closes the remaining gap an agent would need before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented, including the site_type override and its persisted nature. The description adds the concept of 'detected type' vs override but no new syntax or constraints, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states concretely what the tool delivers: the detected site type plus a pass/fail/unknown checklist with rationales and fixes. It is distinguishable from audit-framework and health siblings by its site-type-relative framing, but it never explicitly names or contrasts those siblings, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear precondition ('Requires a completed crawl to evaluate') and warns how to read results ('unknown' means not yet measured, never failed), which is real usage steering. It does not, however, say when to prefer this over get_audit_framework or technical_health.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_site_statsB
Read-only
Inspect

Get summary statistics for a site including page count, crawl history, and overall SEO health.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe unique ID of the site

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the shape of the result (page count, crawl history, SEO health), which is genuinely useful given no output schema, but says nothing about auth requirements, staleness of crawl data, or why a read is marked non-idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; the resource and its contents come first. It is efficient, though it spends its words on output contents rather than on disambiguation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the enumeration of returned fields partially compensates and the annotations cover safety. What is missing is routing guidance against the several similar site-summary tools, which is the main risk for a read-only reporting call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site_id and the detail verbosity switch are already documented in the schema. The description adds no parameter-level meaning beyond that, which matches the baseline 3 for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('summary statistics for a site') and enumerates the payload (page count, crawl history, SEO health), so an agent knows what it returns. It does not, however, distinguish itself from closely named siblings like get_site_health, get_site_insights, site_overview, or technical_health, which likely cover overlapping ground.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many overlapping site-level siblings, and no prerequisites (e.g., whether a crawl must exist first) are mentioned. The agent is left to infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_snapshot_diffA
Read-onlyDestructive
Inspect

Compare two analysis snapshots (IDs from list_snapshots): score deltas and what changed between them. Use after applying fixes — before-run vs after-run proves impact. Free read.

NameRequiredDescriptionDefault
afterYesLater snapshot ID
beforeYesEarlier snapshot ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true but also destructiveHint=true, which is internally confusing for a comparison tool; the description usefully resolves the ambiguity by framing this as a read ('Free read') and adds cost/quota context ('Free') that annotations don't convey. It also discloses the return shape at a high level (deltas, changes). No pagination or ordering guarantees, but the behavioral picture is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences: purpose and inputs first, the motivating workflow second. Zero filler, nothing repeated from structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming what comes back (score deltas, what changed) and by explaining where the IDs come from and when to run it. Only the ordering requirement and any output limits are left implicit, which the schema's 'Earlier/Later' labels largely cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already labels 'before'/'after' as earlier/later snapshot IDs; the description adds only the provenance of those IDs (list_snapshots). Baseline 3 applies since the schema carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Compare two analysis snapshots') and names the concrete output ('score deltas and what changed'), which cleanly separates it from adjacent tools like get_score_trends or list_snapshots. The parenthetical sourcing hint ('IDs from list_snapshots') removes ambiguity about what inputs it expects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit usage context ('Use after applying fixes — before-run vs after-run proves impact') and points at the sibling that produces the required IDs (list_snapshots). It does not state when NOT to use it or name a competing alternative, 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_traffic_sourcesA
Read-only
Inspect

GA4 traffic by source/channel with AI-assistant referral detection (ChatGPT, Perplexity, Claude, Gemini, Copilot...). Compares the window to the prior one: sessions, share, growth per AI source + overall channel mix. Requires GA4 connected. Free read.

NameRequiredDescriptionDefault
daysNoWindow length in days (7-90, default 28)
site_idYesThe brand/site ID

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, destructive=false, openWorld and non-idempotent, so safety is covered. The description adds useful context beyond them: the GA4-connection prerequisite, the zero-cost nature, and the comparison-against-prior-window behavior, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the resource and the differentiating AI-referral feature. Slight density of parenthetical examples but no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of naming return contents (sessions, share, growth per AI source, overall channel mix) and the connection prerequisite. Complete enough for an agent to call and interpret it, though it omits empty/missing-data behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (site_id, days) are already documented with ranges and defaults. The description's mention of comparing 'the window to the prior one' adds mild context about what days controls, but nothing beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('GA4 traffic by source/channel') plus a distinctive capability (AI-assistant referral detection) that clearly separates it from siblings like get_ga_metrics or get_visibility_sources. An agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear precondition ('Requires GA4 connected') and a cost signal ('Free read'), which tells the agent when the tool is usable and cheap to call. It does not name alternatives such as get_ga_metrics when that would be the better fit, so it stops short of 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.

get_url_inspectionsB
Read-only
Inspect

URL inspection results from Google Search Console — indexing status, crawl info, and issues per URL.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=false, covering the safety profile. The description adds that results are fetched live per URL from an external source (consistent with openWorld) and names the data categories returned, but it omits pagination, rate limits, or what happens when a URL is not indexed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the source, resource, and payload with no wasted words. Its brevity is efficient, though the same space could have carried sibling-routing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description helpfully sketches the returned fields (indexing, crawl info, issues), which is a plus. But for a tool sitting among near-duplicate inspection siblings and requiring a connected site_id, the absence of routing or prerequisite context leaves the definition only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, including the meaningful 'concise' vs 'detailed' verbosity toggle. The description adds nothing about either parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (inspections) plus resource (URL) and enumerates the returned data: indexing status, crawl info, and issues per URL, sourced from Google Search Console. However, it does not distinguish this tool from close siblings such as inspect_url, batch_inspect, get_index_status, or get_crawl_results, leaving an agent unsure when this is the right one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g. site_id must correspond to a connected GSC property), and no reference to alternatives like inspect_url or batch_inspect. The agent must infer the use case purely from the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usageB
Read-only
Inspect

Get your current usage across all Xyle features: analyses run, crawls performed, keywords researched, etc.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description usefully enumerates what the payload covers, but omits behavioral details an agent would care about: the time window (billing cycle vs. lifetime), whether counts are per-workspace or account-wide, and refresh/caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the verb and resource, with no preamble. The trailing 'etc.' slightly weakens precision by leaving the covered metrics open-ended.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description is the only source of return-value context, and it names only a few of the metrics ('analyses run, crawls performed, keywords researched') without describing the reporting period or aggregation scope. Adequate for a trivial getter, but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to clarify beyond what the empty schema already establishes. Baseline 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get your current usage') and enumerates the categories it covers (analyses, crawls, keywords), which is more specific than a tautology. It does not, however, distinguish itself from adjacent account/quota-style siblings such as assist_balance, get_plan, or list_invoices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this tool versus alternatives, no prerequisites, and no exclusion criteria. The only implied usage is the tautological 'call it to see your usage', which the name already conveys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_visibility_resultsC
Read-only
Inspect

Get the results of an AI visibility scan.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
scan_idYesThe visibility scan ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the safety profile is covered. The description adds nothing beyond that: no note on whether results are cached, whether an incomplete scan errors, or how fresh the data is, despite a non-idempotent read hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler, appropriate length for a simple read tool. It is terse to the point of under-specification rather than being padded, so it earns close to full marks on conciseness alone.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of indicating what a visibility scan result contains (sources, scores, answer visibility), but says only "the results." For a retrieval tool whose value depends on interpreting returned data, this is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – the detail parameter's concise/detailed verbosity and the scan_id meaning are fully documented in the schema. The description adds no extra semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Get") and resource ("results of an AI visibility scan"), so the operation is unambiguous. However it does not distinguish itself from siblings like get_visibility_sources, list_visibility_scans, or run_visibility_scan, leaving the agent to infer the division of labor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus list_visibility_scans, run_visibility_scan, or get_visibility_sources, and no prerequisite noted (e.g., that a scan must have completed first). The required scan_id only implicitly hints at the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_visibility_sourcesA
Read-only
Inspect

List the external domains AI engines actually CITE when answering questions in this site's space, ranked by citation count. These are the sources the engines already trust — the highest-value backlink targets. Requires at least one completed visibility scan.

NameRequiredDescriptionDefault
daysNoLook back this many days (default: 30)
limitNoMaximum domains to return (default: 25)
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, non-destructive, and non-idempotent, so safety is covered. The description adds genuinely new behavior: results are ranked by citation count, represent sources engines already cite/trust, and the scan prerequisite. No return-format detail, but that is a minor gap against the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and resource. The middle sentence ('highest-value backlink targets') is value framing rather than operational detail, which is slightly promotional, but the prerequisite lands cleanly at the end. Overall tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with no output schema, the description conveys what is returned (domains ranked by citation count) and the precondition for calling it. Parameters are fully covered by the schema. A note on pagination or output shape would push it higher, but nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and all four parameters (days, limit, detail, site_id) are documented in the schema with defaults and an enum-like verbosity value. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: lists external domains that AI engines cite in the site's space, ranked by citation count. This is clearly distinguishable in concept from get_visibility_results and suggest_sources. It stops short of explicitly naming a sibling to disambiguate, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a real usage condition: 'Requires at least one completed visibility scan,' which tells the agent when this tool will fail. It also frames the value (backlink targets). It does not name an alternative (e.g., run_visibility_scan first, or suggest_sources for a different purpose), so it is clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_voice_profileC
Read-onlyDestructive
Inspect

The brand's voice: the measured profile (the author's ranges per feature) or the declared answers, the plain-language constraints a writer should follow, and how many words of the author's own writing are on file toward the measured profile.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered structurally, and the description adds genuine return-content context (measured ranges per feature, declared answers, plain-language constraints, word count on file). Since no output schema exists, this is the only place the response shape is described — but it discloses nothing about behavior such as what happens when no profile or no writing exists, or what 'destructiveHint=true' alongside readOnlyHint=true actually implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler, but the nested parenthetical and the trailing clause 'how many words of the author's own writing are on file toward the measured profile' are convoluted and slow to parse for an agent scanning tool lists. It is concise but not structurally clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, describing the returned contents is the right instinct and partially fills the gap. It is still incomplete: the operation itself is never stated as a retrieval, and nothing distinguishes it from voice_profile-creating or voice-declaring siblings, leaving an agent with an accurate picture of the payload but an ambiguous picture of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (site_id) with 100% schema description coverage, so the schema does the work. The description adds nothing about the identifier — no format, no note that it scopes the returned profile — which is the expected baseline when coverage is this high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (the brand's voice profile) and enumerates its components, but never states the action — it reads as a noun phrase describing what a voice profile contains rather than 'retrieves the voice profile for a site.' It also does not distinguish this read tool from siblings like create_voice_profile, declare_voice, or voice_probe, leaving the agent to infer the read semantics from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: no mention of prerequisites (must a profile exist?), no note on how it relates to declare_voice or create_voice_profile, and no condition for choosing it over get_brand_profile or voice_probe. The agent gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wordpress_siteB
Read-only
Inspect

Get details (including the SSH public key) for one connected WordPress site.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds one genuinely useful behavioral detail beyond the annotations: that the response exposes the SSH public key, a security-relevant payload. It says nothing about auth requirements, staleness, or error behavior for a non-connected site, so it does not reach 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero filler, and the notable payload (SSH public key) is called out inline rather than buried. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing the return, and 'details' is vague — only the SSH key is specified. An agent learns it returns site details and a key but not what other fields to expect, so it is minimally adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single required parameter site_id, so the schema already carries the parameter semantics. The description adds nothing about ID format or where to obtain it, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (get) plus resource (details for one connected WordPress site), and the word 'one' scopes it as a single-site fetch, distinguishing it from the sibling list_wordpress_sites. It does not name an alternative tool explicitly, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no named alternatives among the many sibling tools (list_wordpress_sites, verify_wordpress, set_wordpress_connection, delete_wordpress_site). The only implied constraint is that the site must already be 'connected', which is thin.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_createA
Destructive
Inspect

Create a NEW GitHub repo as a code site. Ask the user whether it should be private or public first. Optionally scaffold from a template repo (owner/repo) — otherwise the configured SEO/AEO starter is used, or a bare repo if none. Returns a site_id.

NameRequiredDescriptionDefault
nameYesNew repo name
privateNoPrivate (default true) or public — ask the user
templateNoOptional template repo as owner/name to scaffold from

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag non-read-only, open-world, non-idempotent, and destructive. The description adds value beyond that by disclosing the fallback chain for scaffolding (template, then configured SEO/AEO starter, then bare repo) and the return value (site_id), which the agent cannot infer from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences with no filler: the action, the user-consultation rule, and the templating fallbacks plus return value. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter create tool with no output schema, the description covers defaults, the privacy prompt, templating fallbacks, and the returned site_id, which is enough to call it correctly. It stops short of noting permission/auth prerequisites, but the openWorld annotation partly covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents name, private, and template. The description reinforces that template is owner/repo and that private/public should be confirmed with the user, but adds no syntax or format beyond the structured fields, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create a NEW GitHub repo as a code site') and clarifies the product's interpretation of a repo. It distinguishes this from the read-oriented siblings github_list_repos and github_link, though it does not explicitly differentiate itself from create_site.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete operational guidance: ask the user about private vs public first, and use a template repo optionally. It lacks an explicit when-not-to-use or naming of an alternative, but the conditional behavior (template → SEO/AEO starter → bare repo) gives clear context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_list_reposA
Read-onlyDestructive
Inspect

List a SMALL page of the user's GitHub repos (name + private + updated only) so they can pick an existing one to link. LAZY: defaults to 10; pass query to filter by name rather than paging through everything. Only raise limit if the user's repo isn't shown — never dump the whole list into context.

NameRequiredDescriptionDefault
limitNoPage size, default 10, max 30
queryNoFilter repos by name substring (preferred over paging)

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is largely covered. The description adds real behavioral context beyond that: the paged/lazy default (10), the max-30 cap implied by usage, and the context-budget discipline of not dumping the full list. It doesn't mention auth requirements or rate limits, and notably the annotations' destructiveHint=true is unexplained by the description, leaving a small gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose, then usage policy, then the guardrail. Emphatic caps on SMALL and LAZY reinforce the key constraint without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming the returned fields (name, private, updated). Combined with the paging defaults and filtering guidance, an agent has everything needed to call this correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics beyond the schema: `query` is framed as the preferred filter mechanism over paging, and `limit` as a fallback to raise only when needed. This conveys intent and a usage priority the schema's terse descriptions do not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (user's GitHub repos), defines the returned field scope (name + private + updated), and gives the intent (so they can pick an existing one to link). This clearly separates it from siblings like github_link and github_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: prefer `query` filtering over paging, and only raise `limit` when the target repo isn't shown. It also names the anti-pattern (never dump the whole list into context), which is exactly the when-not guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

goal_metricsA
Read-only
Inspect

List every metric a goal can be measured against, with where each one is read from. Call this BEFORE create_goal so you pick a metric_key we actually measure — an unknown key is rejected rather than silently creating a goal that can never report progress. Covers site scores (seo/aeo/geo, signals passing), AI citation rate, tracked-keyword positions, Search Console clicks/impressions/non-brand clicks, open fix-queue issues, and crawl counts (pages, thin pages, orphaned URLs). No site needed.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context: unknown metric_key values are rejected rather than silently accepted, and no site is needed. It does not describe return format, but with annotations present this is a strong addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then the critical usage instruction, then a compact list of metric categories. Every sentence earns its place by helping the agent select and correctly use the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with no output schema, the description is nearly complete: it states the purpose, the pre-create_goal use case, validation behavior, and metric coverage. It does not specify the exact return shape, but the metric categories and source hint are sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the detail parameter is already fully documented in the schema. The description does not mention the detail parameter or add any meaning beyond the schema, which makes the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (List) and resource (every metric a goal can be measured against) and adds scope (with where each one is read from). It clearly distinguishes itself from sibling tools like create_goal and list_goals by focusing on available metric definitions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to call this BEFORE create_goal and explains why: to pick a metric_key that is actually measured, because unknown keys are rejected. This gives a clear when-to-use condition and names the dependent sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_urlA
Read-only
Inspect

Inspect a single URL for indexing status, crawl info, and Google Search Console data. Checks if the URL is indexed and identifies issues.

NameRequiredDescriptionDefault
urlYesThe URL to inspect
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the returned data categories, which is useful given there is no output schema, but it does not explain the notable idempotentHint=false (results change over time as GSC data updates) or any rate/permission constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the resource and scope front-loaded and no filler. It could drop the partially redundant second sentence ('Checks if the URL is indexed...') which restates the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only inspection tool with full schema coverage and no output schema, the description does enough: it names the resource, the required inputs, and the broad shape of the return. What is missing is any tie-in to the adjacent tools (batch_inspect) that would help an agent route correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so site_id, url, and the concise/detailed 'detail' toggle are fully documented in the schema itself. The description adds no syntax, format, or default information beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Inspect a single URL') and enumerates the data domains it covers (indexing status, crawl info, GSC data). The word 'single' implicitly distinguishes it from the sibling batch_inspect, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by 'single URL' — an agent can infer this is for one-off checks rather than bulk work, but the description never states when to prefer this over batch_inspect or get_index_status, nor any preconditions (e.g. the site must be connected to GSC).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

keyword_chatA
Destructive
Inspect

Chat with the keyword research assistant in a session; returns the reply plus real monthly search volumes and any saved clusters. Put keywords you want volumes for in double quotes, e.g. volume for "free mcp registry".

NameRequiredDescriptionDefault
messageYesYour message or question about the keywords
session_idYesThe keyword session ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, non-idempotent and open-world behavior, so the bar is lower, and the description does add non-annotation context about the output shape (reply plus volumes and saved clusters). However, it frames the call purely as something that "returns" data and never hints that the chat may mutate/persist session state, which is exactly what the destructive annotation flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded: the first states what the tool does and returns, the second gives the one non-obvious formatting rule with an inline example. No filler or restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the return payload, and the quoting convention covers the main invocation pitfall. What is missing is any note that session_id comes from a keyword session that must already exist, and any acknowledgement of the state-changing/destructive nature the annotations carry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description exceeds it by adding real calling convention: keywords whose volumes you want must be double-quoted, with a worked example. That is semantics not derivable from the two string parameters, though the meaning/origin of session_id is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a concrete verb+resource ("chat with the keyword research assistant in a session") and even states the return payload (reply, monthly search volumes, saved clusters), which is more than most siblings offer. It is distinguishable from get_keyword_session or get_live_keyword_ideas by its conversational/session framing, but it never names a sibling, so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: chat inside an existing keyword session, and quote keywords when you want volumes. There is no statement of when to prefer this over reading a session, pulling live keyword ideas, or listing clusters, and no prerequisites (e.g. the session must first exist via create_keyword_session).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

keyword_competitor_ranksA
Read-onlyDestructive
Inspect

Per-keyword competitive rank tracking: for the keywords a brand TRACKS, which domains rank and at what position — one request for the whole set. This is the tool to use for competitive analysis; discover_competitors answers the weaker question 'who co-ranks for what we ALREADY rank for', which is noise for a new site. Read avg_position, not keyword count: <=3 is entrenched and rarely worth attacking, 11-30 is where the fastest wins are (the bucket field says which). positions maps each keyword to that competitor's rank. Uses the brand's ranking location. Source is our index of Google, so it lags a live SERP.

NameRequiredDescriptionDefault
topNoWith by_keyword: domains per keyword (default 10, max 100)
limitNoCompetitors to return after filtering platforms (default 15, max 1000)
site_idYesBrand/site ID (from list_sites). Uses that brand's tracked keywords — add keywords first if it has none.
by_keywordNoAlso return by_keyword: each tracked keyword's best-ranked domains. Use it for 'who is #1 for X'; the competitor list is ordered by coverage and hides single-keyword leaders.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds context beyond the annotations: it discloses the data source ('our index of Google, so it lags a live SERP') and that it uses the brand's ranking location, plus output-field interpretation for avg_position/bucket. The annotations are internally mixed (readOnlyHint=true alongside destructiveHint=true and idempotentHint=false) but the description does not contradict them; it simply doesn't address that tension.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then alternative routing, then interpretation guidance and a data-source caveat — each sentence carries information. Slightly dense and mildly editorial ('which is noise for a new site'), but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry return-value meaning; it explains positions, bucket, and avg_position interpretation. It covers freshness and location scoping. Remaining gap is that it doesn't describe pagination or the exact shape of the returned competitor list beyond ordering by coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so top/limit/site_id/by_keyword are already documented. The description's field guidance (positions, bucket, avg_position) describes output rather than inputs and adds no syntax or format detail for the parameters. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Per-keyword competitive rank tracking' for the keywords a brand tracks, returning which domains rank and at what position. It explicitly distinguishes itself from the sibling discover_competitors, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use routing: 'This is the tool to use for competitive analysis' versus discover_competitors answering 'who co-ranks for what we ALREADY rank for.' It also gives interpretation guidance (read avg_position not keyword count; <=3 entrenched; 11-30 best wins, bucket field identifies which).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_analysesC
Read-only
Inspect

List all SEO analyses for a site.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)
site_idYesThe site ID to list analyses for

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds no behavioral context of its own — no note about result ordering, pagination behavior relative to the 'all' claim, or what an analysis record contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler is structurally clean, but it is under-specified rather than genuinely concise. The claim of 'all' results without addressing the limit parameter costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with full schema coverage and no output schema, the description is minimally adequate. However, it leaves open how analyses relate to audits and how pagination/limit affects the 'all' framing, which an agent would need when choosing among the many list_* siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both site_id and limit (default 25) documented in the schema itself, so the baseline is 3. The description contributes nothing beyond the schema, and the word 'all' arguably sits in mild tension with the unmentioned limit cap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (SEO analyses) scoped to a site, so the core operation is unambiguous. It does not differentiate itself from nearby siblings such as get_analysis or list_audits, leaving the agent to infer which listing/retrieval tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus get_analysis (single analysis) or list_audits, and no prerequisites or exclusions are stated. 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_api_keysA
Read-only
Inspect

List all API keys for your Xyle account. Shows key names, prefixes, and creation dates (not the full key).

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, covering the safety profile. The description adds valuable specifics about what is returned ('key names, prefixes, and creation dates (not the full key)'), which is genuinely useful for a secrets-adjacent tool. It doesn't address auth/permission requirements or pagination behavior, so it clears the lowered bar but doesn't exceed it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the action and scope, then the return-content clarification. Every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-optional-param read tool whose annotations cover safety, the description is close to complete. The one meaningful gap is that it doesn't mention pagination/limit semantics or who can list keys, which would help for an openWorld read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one optional parameter (limit) with 100% schema description coverage. The schema already documents it fully; the description adds nothing about the parameter, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('List all API keys for your Xyle account') with a clear scope qualifier. An agent can distinguish this from create_api_key and revoke_api_key among the many siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage (read-only enumeration of keys) but no explicit when-to-use/when-not guidance and no alternatives named. Adequate minimum but leaves the agent to infer context relative to api_access or create_api_key.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_auditsA
Read-only
Inspect

List SEO audits, most recent first. Pass site_id to see only that brand's audits.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)
site_idNoOnly audits for this site. Omit for every audit on the account.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the default sort order ('most recent first') but says nothing about pagination, return shape, or rate limits, so it adds only modest behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no wasted words. The ordering behavior is front-loaded, followed immediately by the optional filter, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with complete parameter documentation and annotations covering the safety profile, the description provides enough context to call it correctly. It lacks return-value or pagination detail, but no output schema exists and complexity is low.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters are documented in the schema. The description's mention of site_id is redundant with the schema, and it says nothing extra about limit or filtering syntax. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List SEO audits') and adds ordering ('most recent first'). It does not explicitly differentiate from nearby siblings such as list_prospect_audits or get_audit, so it is clear but not sibling-aware.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent how to filter with site_id, which is useful usage context. However, it gives no guidance on when to use this tool versus list_prospect_audits, get_audit, or other audit-related siblings, leaving alternatives to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_code_sitesB
Read-onlyDestructive
Inspect

List the user's code sites (repo, visibility, Vercel project, prod url, status).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered without description help. The description does add value by naming the fields returned, which matters because there is no output schema, but it says nothing about scoping, pagination, or how many sites come back.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the field list parenthetical kept tight. Nothing is wasted, though it is minimal enough that it could have afforded one more clarifying clause without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the enumerated return fields do much of the work the missing schema would have done, and annotations cover safety. Remaining gaps (scoping by workspace/user, result limits) are minor but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The parenthetical field list describes the response shape rather than inputs, which is fine but not parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List the user's code sites') and enumerates the returned fields, so an agent instantly knows this is a read of code-site records rather than sites, crawls, or deployments. It does not explicitly contrast itself with near siblings such as list_sites or code_status, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives (e.g. code_status for a single site or list_sites for general sites). The agent must infer usage purely from the name and field list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_competitorsB
Read-onlyDestructive
Inspect

The brand's tracked competitor set (same data as the dashboard Competitors tab): each competitor's domain and link, plus discovery reasoning when competitors were auto-discovered. Use before competitive work — content gaps, keyword overlap, backlink comparison (get_backlink_profile on their domains). Free read.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe brand/site ID

TDQS

B3.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description asserts "Free read," which directly contradicts the destructiveHint=true annotation on a tool that only lists stored data. An agent acting on "read" would not expect a destructive operation, and the description offers no reconciliation of that conflict. This is the exact pattern flagged in the calibration as an annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the returned content, then usage, then the cost note — each clause carries information. Minor waste in the parenthetical "same data as the dashboard Competitors tab," but overall tight and well-ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema, the description adequately covers what is returned and why to call it. However, if the destructiveHint were accurate, the omission of any warning would be a serious completeness gap; the description leaves the agent unable to resolve read-vs-destructive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site_id and the detail verbosity flag are already documented in the schema. The description adds no parameter-level guidance (it never mentions detail or the top-25 trim), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource ("the brand's tracked competitor set") and enumerates the returned fields (domain, link, discovery reasoning), so an agent knows precisely what it gets. It differentiates the content from ad-hoc discovery via "tracked" and "auto-discovered," but never names the sibling discover_competitors, which is the natural confusion point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use before competitive work — content gaps, keyword overlap, backlink comparison (get_backlink_profile on their domains)" gives explicit when-to-use context and routes the agent to a concrete follow-up tool. It lacks a when-NOT-to-use clause (e.g., contrast with discover_competitors for adding new competitors), 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.

list_content_briefsA
Read-onlyDestructive
Inspect

All content briefs for a site with status, kind, keyword, latest score and publish state (drafts omitted — use get_content_brief). Statuses: idea, brief, draft, review, published, archived.

NameRequiredDescriptionDefault
statusNoFilter by status
site_idYesThe site ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds useful behavioral context beyond the annotations: drafts are excluded from results, and the full set of status values is enumerated. It does not address the annotation's destructiveHint=true, leaving that inconsistency unresolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core list behavior and returned fields come first, followed by the draft exclusion and status values. Every sentence adds information without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly names the returned fields, and it explains the draft omission and status values. The only noticeable gap is that it does not clarify pagination or ordering, and it leaves the annotation's destructiveHint=true unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds meaning by enumerating the allowed status values (idea, brief, draft, review, published, archived) even though the schema has no enum. It does not add further detail beyond what the schema provides for site_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: all content briefs for a site, along with the fields returned. It also distinguishes itself from the sibling tool by noting that drafts are omitted and directing the agent to get_content_brief.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit alternative for the one important exclusion: drafts are omitted, so use get_content_brief. It does not spell out broader when-to-use guidance versus unrelated sibling tools, but for this straightforward list operation the key routing condition is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_crawlsB
Read-only
Inspect

List all crawl jobs for a site, ordered by most recent.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)
site_idYesThe site ID to list crawls for

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so safety is covered. The description adds the ordering behavior ('most recent'), which annotations do not convey, but says nothing about pagination or result volume.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the resource and scope, and every clause (site scoping, recency ordering) carries information. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description is the only place return shape could be described, and it only covers ordering. For a low-complexity two-parameter list tool with full annotation coverage this is adequate, but it leaves result contents and pagination unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, documenting both site_id and limit (with its default of 25), so the schema does the heavy lifting. The description adds only the 'ordered by most recent' detail, which is not a parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (crawl jobs) scoped to a site, plus the ordering ('most recent'). This clearly separates it from get_crawl_results, get_crawl_status and start_crawl, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives such as start_crawl (to create) or get_crawl_status (to check one job). An agent must infer that this is the enumeration entry point purely from the verb 'list'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_goalsA
Read-only
Inspect

The brand's goal tree with progress, plus how many fix-queue issues are rolled up to each goal and how many of those are resolved. READ progress CAREFULLY: null means the goal cannot be measured yet (usually the metric has no data for this brand — no Search Console, never crawled, no rank check). That is NOT 0% and must not be reported as no progress. The unmeasurable list names those goals so they can be fixed by connecting the missing source rather than chased.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe brand/site ID from list_sites

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower, yet the description adds genuine value beyond them: it explains that a null `progress` means unmeasurable (missing data source) rather than 0%, warns against misreporting it, and points to the `unmeasurable` list for remediation. It doesn't cover pagination or result-size behavior beyond the schema's `detail` param.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Opens with the core purpose, then front-loads the highest-risk interpretation caveat. The capitalised 'READ `progress` CAREFULLY' is emphatic but earns its place given the misuse it prevents; the only mild redundancy is restating the null-means-unmeasurable point twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must convey return semantics, and it does cover the key ones: progress values including null, fix-queue roll-up counts, and the `unmeasurable` list. For a 2-param read tool this is close to sufficient, though other fields in the goal tree are left unenumerated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so `site_id` and `detail` are already fully documented there; the description adds no parameter syntax or format detail. Its references to `progress` and `unmeasurable` describe output fields, not inputs. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: the brand's goal tree with progress and fix-queue issue roll-ups. An agent can tell it returns goals rather than metrics or content. It does not, however, explicitly differentiate itself from close siblings like goal_metrics, content_for_goal, or refresh_goals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied ('The brand's goal tree...'), with no explicit when-to-use guidance and no named alternative among the many goal-related siblings. It does supply interpretation guidance once called, but nothing that routes the agent between goal tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invoicesC
Read-only
Inspect

List your billing invoices.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. However, the description adds nothing beyond them — no note about result ordering, pagination, or whether all invoices are returned by default — leaving it as a pure restatement of the title.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero waste. It is appropriately tight, though its brevity borders on under-specification rather than genuine economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with full schema coverage and an annotations-declared safety profile, the description is minimally adequate. It omits ordering and pagination notes that would help an agent interpret results, and there is no output schema to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single `limit` parameter (default 25) is fully documented in the schema. The description adds no extra meaning, which makes the baseline of 3 appropriate for a one-parameter tool where the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List) and resource (billing invoices), which is unambiguous. It doesn't need to distinguish itself from siblings since none of the surrounding tools deal with invoices, but it also makes no effort to differentiate or scope beyond the bare resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus adjacent ones (e.g., list_reports, list_audits), nor any mention of prerequisites, filters, or pagination behavior. Usage is only implied by the tool name itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_keyword_sessionsA
Read-only
Inspect

List keyword research sessions. Pass site_id to see only that brand's sessions.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)
site_idNoOnly sessions for this site. Omit for every session on the account.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered structurally. The description adds the scoping behavior (site_id narrows to one brand, omission returns account-wide), which is genuinely useful, but says nothing about result format, pagination interplay, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, and the scoping constraint is front-loaded immediately after the purpose statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter read-only list tool with a fully documented schema and clear annotations, the description covers what the tool returns at a high level. It does not mention pagination or default result count, but with the limit parameter documented in schema and no output schema to reconcile, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (limit, site_id) are documented in the schema itself. The description's site_id note largely restates the schema text ('Omit for every session on the account'), and limit is not mentioned at all, so no meaning is added beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List keyword research sessions.' An agent can distinguish it from create_keyword_session / delete_keyword_session / get_keyword_session by the verb alone, though the description never explicitly names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one usage rule ('Pass site_id to see only that brand's sessions'), which covers the filtering case, but says nothing about when to use this list tool versus get_keyword_session for a single session or how the account-level default relates to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_prospect_auditsB
Read-only
Inspect

List your recent prospect audits, newest first.

NameRequiredDescriptionDefault
limitNoMax results, default 20

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds the one behavioral fact not in the annotations — results are ordered newest first — but says nothing about pagination or what a 'recent' window means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the ordering constraint is stated immediately. Its brevity is appropriate for a simple list tool, though it is arguably too thin to guide selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only list tool with no output schema, the definition covers the essentials (what it returns and in what order). It stops short of clarifying the recency window or how it relates to the sibling single-audit getter, leaving a small but real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has a full schema description ('Max results, default 20'), so coverage is 100% and the schema carries the load. The description adds nothing about limit or result shape, but the baseline of 3 applies when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (prospect audits) plus the ordering (newest first), which is more than a restatement of the name. It does not, however, distinguish itself from close siblings like get_prospect_audit or list_audits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance and never mentions the alternative tools in this cluster (get_prospect_audit for a single audit, list_audits for a broader list). The agent is left to infer routing 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_reportsC
Read-only
Inspect

List all generated business reports for a site.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint, idempotentHint=false), and the description adds nothing beyond a scope qualifier. It omits ordering, pagination behavior, and how 'all' interacts with the default limit/concise truncation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the scope is stated immediately. It is efficient, though perhaps too terse given the sibling ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a fully documented schema and no output schema, the description is minimally adequate but says nothing about result ordering, total available reports, or how detail interacts with listing. An agent can call it, but cannot predict the shape or completeness of what comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – limit, detail, and site_id are all documented in the schema, including the concise/detailed tradeoff. The description adds no parameter meaning beyond what is already there, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('List ... business reports') and scopes it to a site, so an agent knows this is the enumeration counterpart to get_report. However, it does no sibling differentiation against get_report, download_report, or generate_report, and the word 'all' is loose given the default limit of 25.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no alternatives named. The description never tells the agent that this lists reports while get_report fetches one and generate_report creates one, leaving the choice among four similarly-named siblings to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sitesA
Read-only
Inspect

List the brands in ONE workspace — by default your own, NOT every brand you can reach. If a brand you were given access to is missing, it belongs to a teammate's workspace: call list_workspaces, then call this again with that workspace's org_id. Brands are also not unique by domain: the same company can appear as several brands (a stray 'www.' duplicate, or your own empty copy of a client's domain) and only one of them holds the data. Never pick a brand by domain name alone — confirm with synced_queries, or use the site_id you were given.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)
org_idNoWorkspace to list, from list_workspaces. Omit for your own workspace.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, destructiveHint=false), so the description adds genuinely new behavioral context: the default scoping behavior, the fact that results are workspace-bound, and the important pitfall that brands are not unique by domain (www duplicates, empty copies) with only one holding data. None of this is derivable from the annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded in the first clause, and each subsequent sentence carries actionable content (routing, duplicate handling, verification). It is dense and slightly long for a two-parameter list tool, but there is little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list with no output schema, the description covers scoping, ownership, cross-tool routing, and data-ambiguity pitfalls well. It stops short of describing the shape of returned records (e.g., that entries carry site_id/domain/org_id), which is the only material gap given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents limit and org_id fully, making 3 the baseline. The description reinforces org_id's provenance ('from list_workspaces', omit for own workspace) but adds no format or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

StartsWith a concrete verb and resource plus explicit scope: 'List the brands in ONE workspace'. It clarifies the default (own workspace, not every reachable brand) and distinguishes itself from list_workspaces, which it names. An agent can identify the operation and its boundary without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: if a given brand is missing, call list_workspaces first, then re-invoke with that org_id. It also states an exclusion/verification rule — never pick a brand by domain name alone, confirm with synced_queries or use the provided site_id. This is precisely the when/when-not/alternative guidance the rubric reserves top marks for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_snapshotsA
Read-onlyDestructive
Inspect

Score history for a brand — the analysis snapshots behind the dashboard Activity timeline (SEO/AEO/GEO per run, newest first). Use to check whether recent fixes moved the scores. LAZY: default 20; raise limit only if needed. Free read.

NameRequiredDescriptionDefault
limitNoMax snapshots, default 20, max 100
site_idYesThe brand/site ID

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description labels this a 'Free read', which conflicts with the annotation destructiveHint=true while agreeing with readOnlyHint=true — the annotations are internally contradictory, and the description picks one side without resolving it, leaving an agent unsure whether calling this is safe. It does add real value beyond annotations (ordering, lazy-default behavior, run-type composition), but the safety claim is unreliable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource definition, then usage, then parameter economy, with no filler sentences. The 'LAZY:' shorthand is terse and slightly cryptic but effectively signals the default limit posture.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-oriented list tool with no output schema, the description covers what is returned (per-run SEO/AEO/GEO snapshots), ordering, and the limit default. It omits any note on whether the list is paginated beyond the limit cap, but that is minor given the schema already states max 100.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the schema, making 3 the baseline. The description only echoes the default limit value and adds a soft 'raise only if needed' hint; it adds no format or syntax meaning for site_id or limit beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (analysis snapshots / score history per run) with enough detail to distinguish it from get_score_trends, get_snapshot_diff, and list_analyses, and it discloses ordering ('newest first'). It stops short of explicitly naming the sibling it differs from, so it is clear but not sibling-differentiating at the top level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to check whether recent fixes moved the scores' gives a concrete when-to-use scenario, and 'LAZY: default 20; raise limit only if needed' guides parameter behavior. No when-not-to-use or explicit alternative (e.g. vs get_score_trends) is offered, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tracked_keywordsA
Read-only
Inspect

List the keywords tracked for a brand (with search volume, difficulty, and current rank position when available), plus last_check: the status of the most recent rank check (running | completed | partial | failed, with its error). Recall the agreed targets before building or optimizing pages.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe brand/site ID

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description goes beyond them by disclosing the returned fields and, importantly, the last_check status domain (running | completed | partial | failed, with its error) — meaningful behavioral detail that no output schema provides. It omits pagination/truncation behavior beyond what the schema says.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, with the core list-and-contents statement front-loaded before the workflow cue. The trailing 'Recall the agreed targets...' sentence is slightly editorial but still earns its place as usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so adequately by naming the fields and the last_check status values. It is complete enough to invoke correctly, though it could say more about list size/pagination or the default concise behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site_id and the detail verbosity parameter are already documented in the schema (including the top-25 trimming rule). The description adds no parameter-level detail, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('List the keywords tracked for a brand') and immediately scopes what is returned (search volume, difficulty, rank position, last_check status). It is clearly distinguishable from add/remove/check siblings by being the read/list operation, but it never names or contrasts with those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Recall the agreed targets before building or optimizing pages' gives a concrete workflow context for when to call it. However, it offers no when-not guidance and does not mention alternatives such as tracked_keyword_performance or check_tracked_keyword_rankings, so usage remains implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_visibility_scansC
Read-only
Inspect

List all AI visibility scans.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 25)
site_idNoOnly scans for this site. Omit for every scan on the account.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds nothing beyond that: no pagination behavior, no ordering, no indication of what a scan record contains or how results relate to get_visibility_results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single clean sentence with zero waste and the key noun front-loaded, but it is terse to the point of under-specification rather than genuinely economical prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only list tool with no output schema, the safety and scoping story is adequately covered by annotations and schema. Still, nothing explains how this list relates to get_visibility_results or what identifying field an agent should carry forward to fetch a scan's details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both limit and site_id, including the default of 25 and the 'omit for every scan' semantics, so the schema carries the full parameter burden. The description contributes no additional meaning, which lands at the baseline for fully documented schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (AI visibility scans), so an agent knows exactly what entity is being enumerated. It does not, however, differentiate itself from adjacent siblings such as get_visibility_results, get_visibility_sources, or run_visibility_scan, which all touch the same visibility domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives, despite several siblings operating on the same visibility-scan domain. The agent must infer from the name alone whether this is the right entry point versus get_visibility_results or run_visibility_scan.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_wordpress_sitesB
Read-only
Inspect

List the WordPress sites this user has connected to Xyle and their status.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only that a per-site status is returned; it says nothing about ordering, pagination, or what status values mean.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with the resource and returned field front-loaded. Nothing is wasted and nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool with no output schema, the description is minimally adequate but does not describe the shape of results (e.g., what statuses exist) or how it relates to get_wordpress_site. It leaves the agent to infer result structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond scope, which it does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (List) and resource (WordPress sites connected to Xyle) plus the returned attribute (status). It is clear but does not explicitly distinguish itself from close siblings like get_wordpress_site (singular) or list_sites (general).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus alternatives such as get_wordpress_site for a single site or list_sites for all sites. Usage is only implied by the word 'List' and the fact there are no parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workspacesA
Read-only
Inspect

The workspaces (organizations) you belong to, with your role and how many brands each holds. Call this first whenever an expected brand is missing from list_sites — a brand shared with you lives in the owner's workspace, and list_sites shows one workspace at a time. Pass the org_id you want into list_sites.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true). The description adds genuine behavioral context beyond that: the cross-workspace visibility model and the fact that list_sites is scoped to a single workspace, which explains the tool's role in the discovery workflow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what the tool returns, then the use condition, then the hand-off. No filler; every sentence carries actionable content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and annotations covering the safety profile, the description supplies everything needed: what is returned, when to reach for it, and how its output feeds list_sites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema carries no semantic burden and the baseline is 4. The mention of org_id refers to a parameter consumed by list_sites, not this tool, so it does not add parameter meaning here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — lists the workspaces (organizations) you belong to — and enriches it with what each entry contains (your role, brand count). It distinguishes itself from the sibling list_sites by naming both the relationship and the workspace-scoping model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit triggering condition ('call this first whenever an expected brand is missing from list_sites') and explains why the sibling misses it (shared brands live in the owner's workspace; list_sites shows one workspace at a time). It also states the follow-up action: pass the org_id into list_sites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

measure_cwvB
Destructive
Inspect

Measure Core Web Vitals (LCP, FID, CLS, INP, TTFB) for a URL using real PageSpeed Insights data.

NameRequiredDescriptionDefault
urlYesThe URL to measure
site_idYesThe site ID
strategyNoDevice strategy: 'mobile' or 'desktop'. Default: 'mobile'

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the safety profile is largely carried by structured metadata. The description adds only that it uses 'real PageSpeed Insights data' (a live external call), but never reconciles with the 'destructive' annotation, mentions latency/rate limits, or says whether results are persisted — an agent could reasonably mistake this for a harmless read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb, enumerates the metrics, and names the data source. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description's listing of the five metrics partially covers what comes back, which is useful. However, it omits how to choose between this and get_cwv_results, and says nothing about result persistence, timing, or the meaning of the destructive/openWorld annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so url, site_id, and strategy (with its mobile/desktop default) are fully documented in the schema. The description adds no parameter-level meaning beyond naming the measured metrics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Measure'), a concrete resource ('Core Web Vitals (LCP, FID, CLS, INP, TTFB)'), its scope ('for a URL'), and its data source ('real PageSpeed Insights data'). It does not explicitly differentiate itself from the sibling get_cwv_results, which appears to retrieve stored measurements, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to use this tool versus alternatives such as get_cwv_results, get_site_health, or inspect_url, nor any prerequisites or exclusions. It only says what the tool does, leaving all routing decisions to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_search_auditA
Read-onlyDestructive
Inspect

Turn a target client domain into a scoped Five-Layer Search Audit action plan in ONE call: infers the business profile (P1 local / P2 SMB / P3 mid-market / P4 enterprise) from a real crawl on file when you pass site_id, picks the module set for the chosen tier (core/deep/autonomous), and returns each module's one-line why + the exact Xyle tools to call for real data (deduped into suggested_tool_call_order) — NOT the full 295-check list, to keep this call cheap. Call get_audit_framework separately for one module's full checklist once you're actually working it, or for the 17-part client deliverable structure when it's time to write the report. Flags business-intelligence inputs (deal value, margin, named competitors, capacity) that need a real client conversation — never guess those. IMPORTANT: everything this returns — module IDs, tier names, profile codes — is YOUR internal working vocabulary for deciding what to check. Never surface it in the client-facing report (no 'Module G2', no 'Core tier', no 'P2 SMB profile', no naming 'the framework'); translate every finding into plain language instead. This is the recommended starting point for a Client Pro SEO Audit or any 'write me a pro-grade audit' request — prefer the search_audit PROMPT over calling this tool cold, it carries the full plan → farm → write recipe. See also start_prospect_audit for a domain that hasn't connected anything.

NameRequiredDescriptionDefault
tierNocore (default) | deep | autonomous
domainYesThe target client's domain, e.g. acme.com
profileNoOverride the inferred profile: P1 (local) | P2 (SMB) | P3 (mid-market) | P4 (enterprise)
site_idNoIf this domain is already a Xyle site, pass its id (list_sites) to infer the profile from a real crawl instead of guessing

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses that the call is deliberately cheap, that it does NOT return the full 295-check list, what it does return (module why-lines + deduped suggested_tool_call_order), and warns that BI inputs must come from a client conversation. It also flags internal vocabulary that must never surface in the client report. Annotations (readOnly/openWorld/idempotent=false) are not contradicted by the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, and the dense paragraph is justified by the tool's complexity (returns, downstream routing, vocabulary warning). It runs long with many parenthetical asides, which slightly hurts scanability, but each sentence carries distinct guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, output-schema-less planning tool, the description fully covers what it returns, what it withholds, the follow-up tools, and the client-facing constraint. Annotations plus description leave no critical gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds real meaning: tier selects the module set (core/deep/autonomous), profile overrides the inferred P1-P4 tier, and site_id triggers profile inference from a real crawl rather than guessing. That goes beyond the schema's terse enum-ish notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (plan), a specific resource (Five-Layer Search Audit action plan), and its scope (tier module set, why-lines, tool call order) in one call. It explicitly distinguishes itself from get_audit_framework and start_prospect_audit, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names when to use this tool (starting point for a Pro SEO Audit), when to use alternatives (get_audit_framework for one module's checklist or the 17-part deliverable), and even points to the search_audit PROMPT over calling cold. It also routes unconnected domains to start_prospect_audit. Nothing 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.

promote_research_keywordsA
DestructiveIdempotent
Inspect

RECORD keyword research against a brand: promote a research session's saved clusters into the brand's tracked keywords (source='research', keeps cluster names, intent, and session provenance). Do this at the END of keyword research so findings aren't stranded in the session. Optionally pass cluster_ids to promote specific clusters, and site_id if the session isn't linked to a brand.

NameRequiredDescriptionDefault
site_idNoTarget brand/site ID (defaults to the session's linked site)
session_idYesThe keyword research session ID
cluster_idsNoJSON array of cluster ids to promote (defaults to all clusters in the session)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds real behavioral context beyond the annotations: source='research' tagging, retention of cluster names/intent/provenance, and the default of promoting all clusters. However, annotations declare destructiveHint=true, and the description frames the operation as additive preservation without explaining what is destroyed or overwritten; that notable trait is left undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the core action front-loaded, followed by timing and optional-parameter conditions. No filler, though the parenthetical is dense and the sentence order slightly buries the timing advice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the action, timing, provenance, and parameter defaults, but for a mutation tool with destructiveHint=true and no output schema it omits key behavior: how duplicate/existing tracked keywords are handled, whether anything is removed from the session, and what the call returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, but the description meaningfully adds default semantics ('defaults to all clusters in the session', site_id defaults to the session's linked site) that convey intent beyond the bare field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (promote a research session's saved clusters) and resource (brand's tracked keywords), with a parenthetical spelling out what is preserved (cluster names, intent, session provenance). It is clearly distinct in intent from siblings like add_tracked_keywords and list_tracked_keywords, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear timing guidance ('Do this at the END of keyword research so findings aren't stranded') and conditional parameter guidance ('pass site_id if the session isn't linked to a brand'). It stops short of naming a sibling as an alternative or stating when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_content_briefAInspect

Create a WordPress DRAFT from the brief's markdown (Gutenberg blocks; never live). Uses the brand's verified WordPress connection — the caller's own or a teammate's under the org model — and the normal WordPress write gates. Use dry_run=true first to show the user the title, post type, a block preview and any writing blockers (would_refuse). The user reviews and publishes from wp-admin. WRITING BLOCKERS (placeholders, figures or superlatives with no source) refuse the publish. You cannot waive them: fix them (suggest_sources + accept_source for sources, assist_writing_fix for wording), or give the user the dashboard_url from the error — only a person can choose 'Publish anyway', with a reason, in the XeoRank dashboard. For non-WordPress platforms, hand the user the markdown from get_content_brief, then record the live URL with update_content_brief(published_url=...).

NameRequiredDescriptionDefault
dry_runNoPreview without creating anything
brief_idYesThe brief ID
post_typeNopost (default) | page
wp_site_idNoA specific WordPress connection ID (defaults to the brand's verified one)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the writing-blocker refusal mechanism, that blockers cannot be waived by the agent, the escape hatch (dashboard_url + human 'Publish anyway' with reason), and the connection/auth model (caller's own or teammate's under org model). These are behavioral traits 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but front-loaded with the core action first, then preview guidance, then the blocker policy, then the non-WordPress fallback. Dense and mostly justified, though the blocker paragraph is verbose enough to slightly dilute the primary instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a mutation tool with no output schema: it covers the safety profile, the preview affordance, failure modes and recovery, and the alternative workflow for other platforms. Nothing an agent needs to invoke or recover from errors is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description nonetheless adds real meaning by explaining what dry_run returns (title, post type, block preview, would_refuse blockers) and clarifying wp_site_id's default ('the brand's verified one'). post_type ('post | page') is left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Create), resource (WordPress DRAFT from the brief's markdown), and format (Gutenberg blocks), with an explicit scope qualifier ('never live'). An agent can immediately distinguish this from wp_create_page or get_content_brief.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit sequencing ('use dry_run=true first'), names who publishes ('The user reviews and publishes from wp-admin'), states the alternative path for non-WordPress platforms, and prescribes the follow-up (update_content_brief(published_url=...)). Both when-to-use and when-to-route-elsewhere are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redirect_checkA
Read-only
Inspect

Test the eight homepage spellings (http/https × www/non-www × / and /index.html) and, for a given path, its trailing-slash and upper-case variants: hop chain with status codes, final URL, and pass/fail on 'one https URL in at most one permanent hop'. Any public domain.

NameRequiredDescriptionDefault
pathNoAn inner path to test slash and case variants on, e.g. /services/ai-consulting
domainYesDomain or URL, e.g. navyaai.com

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower, and the description still adds real behavioral content: it defines the check's criterion ('one https URL in at most one permanent hop') and discloses what is returned (hop chain with status codes, final URL, pass/fail). It does not mention rate limits or that idempotentHint=false reflects changing live redirect state, but the disclosure is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence, but front-loaded with the concrete scope and the criterion, so every clause carries information. Slightly heavy punctuation but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must carry return semantics, and it does (hop chain, status codes, final URL, pass/fail verdict). With annotations covering safety and a 100%-documented schema, only minor gaps remain, such as handling of non-resolving or non-public domains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both 'domain' and 'path'. The description adds only marginal value, clarifying that a supplied path is tested for trailing-slash and upper-case variants rather than describing the path format itself; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Test) and a very precisely bounded resource (the eight homepage spellings plus trailing-slash/upper-case path variants), and names the exact pass/fail criterion. An agent can immediately tell this apart from neighbors like adopt_site_redirect, robots_check or sitemap_check without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the scope statement ('Any public domain') and by defining what the tool checks, but there is no explicit when-to-use/when-not guidance and no named alternative among the many redirect/health siblings. Adequate but with a clear gap in routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_goalsA
Idempotent
Inspect

Re-measure every metric-backed goal on a brand now, and report how many moved. This also runs nightly, so call it only when you have just changed something and want the goals to reflect it immediately — after a crawl, a rank check, an AI-visibility scan, or a batch of fixes.

NameRequiredDescriptionDefault
site_idYesThe brand/site ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (destructiveHint=false, idempotentHint=true, openWorldHint=true), and the description adds genuinely non-obvious behavior: a nightly scheduled run already exists, so manual invocation is for immediate freshness only. It stops short of describing duration, cost, or whether it blocks, which for a re-measurement sweep would be useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, action front-loaded, and the second sentence's length is justified by the concrete trigger list. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one simple required parameter, no nested objects, and no output schema, the description supplies what is needed: what it does, when to call it, and the shape of the result ('how many moved'). A minor gap is whether the response includes per-goal detail or just a count, but nothing blocks correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, so the schema already carries the semantics. The phrase 'on a brand' loosely ties site_id to the brand concept, but adds no format, ID source, or scoping detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Re-measure') and resource ('every metric-backed goal on a brand'), plus the immediate observable outcome ('report how many moved'). It is clearly distinguishable from siblings like goal_metrics (read metrics), update_goal (edit a goal), and list_goals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to call it ('only when you have just changed something') and enumerates the triggering events (crawl, rank check, AI-visibility scan, batch of fixes), while implicitly ruling out routine use because it also runs nightly. This is textbook 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.

refresh_siteA
Idempotent
Inspect

Re-crawl and re-analyse a site's page, refreshing its scores AND settling the issue list — issues that are fixed become resolved, new ones open. This is the site-wide path; run_analysis only covers a single URL. Run it after making fixes so get_site_health reflects them.

NameRequiredDescriptionDefault
urlNoSpecific URL to refresh (must be on this site's domain). Defaults to the homepage.
site_idYesThe site ID

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so safety is partly covered. The description goes further by disclosing the concrete side effect on state — issues that are fixed become resolved, new findings open — which the annotations do not express. It stops short of returning format, timing or auth details, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences: action, differentiating scope, then the recommended timing. The behavioral payoff (scores refreshed, issue list settled) 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no output schema, the description supplies everything an agent needs: what changes, when to run it, what downstream tool (get_site_health) will reflect the result, and which sibling handles the narrow case. No material gaps remain, especially with idempotent/non-destructive annotations covering the risk profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented (url: must be on the site's domain, defaults to homepage; site_id). The description adds only the vague phrase "a site's page" and no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific compound verb ("Re-crawl and re-analyse") plus the resource (a site's page/site-wide analysis) and immediately names the sibling it differs from ("run_analysis only covers a single URL"). An agent can distinguish refresh_site from run_analysis without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the triggering condition explicitly ("Run it after making fixes so get_site_health reflects them") and names the alternative plus its scope boundary (run_analysis = single URL). Nothing about when to prefer this tool over its sibling 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.

remove_tracked_keywordsA
DestructiveIdempotent
Inspect

Remove tracked keywords by id (get ids from list_tracked_keywords). Pass keyword_ids as a JSON array of ids.

NameRequiredDescriptionDefault
site_idYesThe brand/site ID
keyword_idsYesJSON array of tracked-keyword ids to remove, e.g. ["<uuid>","<uuid>"]

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds only the ID-sourcing step and the array format, without saying whether removal is reversible or what happens to keywords with recorded ranking history. Adequate but not rich beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and immediately followed by the prerequisite. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, fully documented mutation tool with no output schema, the description covers the action, the ID source, and the input format. Only minor gaps remain (e.g., behavior when an ID is invalid or absent), which the annotations partially mitigate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site_id and keyword_ids are already documented, including the JSON-array example. The description's mention of passing keyword_ids as a JSON array restates the schema rather than adding syntax, limits, or batching guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Remove tracked keywords by id') with the ID source named, which cleanly separates it from add_tracked_keywords and list_tracked_keywords in the sibling set. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear prerequisite and workflow ('get ids from list_tracked_keywords'), routing the agent to the right upstream tool. It does not state explicit when-not conditions, but the add/remove/list triad makes the intended use unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_screenshotA
Read-only
Inspect

Capture a screenshot of a URL (rendered in a real browser) and return it as an image so you can VISUALLY review the design — contrast, layout, spacing, overflow. Use after any design/page change (HTTP 200 + text checks can't see color-on-color or layout issues).

CHEAPER ALTERNATIVE FIRST: each capture uses the account's monthly screenshot allowance. If the user already has the page open in a browser, ask them to paste a screenshot into the chat — you can review it directly at NO cost. Reserve render_screenshot for automated/agent-driven checks, a URL the user doesn't have open, or precise element/region shots. (Editing, image uploads, and pasted images are always free — only server-side captures count.)

CAPTURE THE SMALLEST REGION THAT ANSWERS YOUR QUESTION — a full-page shot of a long page can exceed the image size limit and wastes most of your context: • element_id — an Elementor widget id straight from wp_get_page (BEST: after patching widget 'db438b6', screenshot exactly that widget) • selector — any CSS selector, e.g. '.hero' or '#pricing' • clip — 'x,y,width,height' pixel region Default is the viewport only (not the whole page). Set full_page=true only when you genuinely need the entire scroll height. LONG PAGES — TILE INSTEAD OF full_page: capture consecutive clip slices ('0,0,1280,2000' then '0,2000,1280,2000', ...) and review each; every tile stays under the image size limit and keeps section-level detail a squashed full-page shot loses.

JUDGING RESULTS — read the caption's byte size before concluding anything: a blank capture is <6 KB and returns an ERROR; a multi-KB success is real content even if it looks white (lazy-loaded images below the fold render white — capture the viewport or a parent instead). 'Element not found' means YOUR selector is wrong (check the widget type — e.g. nested accordions are .elementor-widget-n-accordion), not that the service is down. NEVER re-shoot the same target more than twice: if two captures disagree with your expectation, stop and ask the user to look — do not declare the service down and keep burning the allowance.

NameRequiredDescriptionDefault
urlYesThe page URL to screenshot (http/https)
clipNoPixel region 'x,y,width,height'. Cannot be combined with element_id/selector.
widthNoViewport width px (1280 desktop, 390 mobile; default 1280)
formatNojpeg (default) | webp | png. png is lossless and much larger.
qualityNo1-100 for jpeg/webp (default 80). Ignored for png.
selectorNoCSS selector to capture, e.g. '.hero'. Ignored if element_id is set.
full_pageNoCapture the full scrollable page (default FALSE — viewport only)
element_idNoElementor element id from wp_get_page (e.g. 'db438b6') — captures just that widget

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses the monthly capture quota, that blank captures return an ERROR at <6 KB, image size limits on full-page shots, lazy-load rendering white below the fold, and that 'element not found' means a bad selector rather than an outage. This is rich operational context, though the exact response shape (image bytes vs. caption) is only partly described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Despite its length, it is front-loaded (purpose in sentence one) and organized into labeled blocks for cost, region selection, tiling, and result judgment. Every section carries actionable content, though the multi-paragraph format is heavier than strictly necessary for a tool whose schema is already complete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and cost-bearing behavior, the description covers everything an agent needs: when to call, how to scope the capture, how to read the returned image and errors, and when to stop retrying. Nothing material is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: element_id should come straight from wp_get_page after patching a widget, selector and clip are mutually exclusive with it, full_page defaults to viewport-only, and long pages should be tiled with consecutive clip slices instead. It does not restate defaults for width/format/quality, which the schema already covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Capture a screenshot of a URL rendered in a real browser') plus the reason it exists (visual review of contrast, layout, spacing, overflow). An agent can immediately distinguish this from sibling inspection tools like wp_get_page or inspect_url.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it (after design/page changes that HTTP 200 + text checks cannot validate), when not to (user already has the page open — ask them to paste a screenshot for free), and names the cheaper alternative first. It also spells out the retry cap, which is a usage rule, not just advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

review_writingA
Read-only
Inspect

Writing Agent review of ANY text or public URL — Pro plan; deterministic, no credits, no brief needed. Returns a slop index (0–100, lower is better), five component scores (correctness, redundancy, genericness, evidence, structure, cadence) and findings with exact spans and fixes: filler phrases, paragraphs with no specifics, numbers/percentages/studies with no source in the paragraph, superlatives with no basis, placeholders left in copy, repeated sentences and openers, headings whose section opens with preamble or does not answer its question, dense sentences. A leading YAML front-matter block (title, meta_description, slug, target_keyword, internal_links, faq, schema) is parsed as the SEO head and scored separately (seo_score 0–100, seo.* findings, never blockers); pass site_domain for same-site link checks and expect_front_matter=true for a draft meant to publish. BLOCKERS are what publish_content_brief refuses. It measures the writing, never who wrote it. Run it before you show a draft to the user and after every revision; read the writing_guardrails prompt before drafting. On error=plan_required, tell the user it is a Pro feature (/pricing).

NameRequiredDescriptionDefault
urlNoOr a public page URL to fetch and review (main text only)
textNoMarkdown or plain text to review (≥ 40 chars, ≤ 200k)
shapeNotrue also returns `shape`: the same text after the deterministic SHAPE PASS — paragraph rhythm (a one-line paragraph where a short sentence closes a long one; two short neighbours joined), bold lead sentences un-bolded — with the word sequence unchanged (asserted), plus slop_index_after. Free. Apply `shape.text` when `changed` is true; it is the fix for cadence.uniform_paragraphs and bold_lead_paragraphs without rewriting a word.
site_idNoApply the brand's voice profile (create_voice_profile): the response gains a `voice` block — the draft's distance from the author's own writing, feature by feature, in the author's numbers. Also defaults site_domain.
originalNoThe text this is a REVISION of (the version before your edit, a paraphraser pass, or the live page). The response gains a `fidelity` block and fidelity.* findings: figures that changed or appeared in the author's sentences and flipped negations are BLOCKERS; dropped figures, weakened/strengthened hedges (show→suggest), quotes that lost their marks and dropped names are review. Pass it after every revision pass.
page_typeNoOverride the detected page type: comparison | roundup | howto | glossary | local | pricing | service | casestudy | article. Health/money/legal topics add a YMYL overlay automatically. The response reports the profile used.
site_domainNoOptional site domain (e.g. qapilot.io) so listed internal_links are checked to be same-site
target_keywordNoOptional target keyword (checks the H1 carries it)
expect_front_matterNotrue for a publishable draft: a missing YAML SEO head becomes a finding (default false)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/non-destructive/idempotent=false, and the description adds substantial behavioral context beyond them: deterministic, no credit cost, Pro-plan gate with error=plan_required messaging, and the meaning of a BLOCKER. It stops short of describing pagination or rate limits, but the safety and cost profile is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is dense and long, but front-loaded with the core purpose and cost/plan facts, and nearly every sentence adds actionable detail (output shape, conditional blocks, prereq, error handling). Given 9 parameters and no output schema, the length is largely justified, though some return-value enumeration borders on redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully carries the burden: it documents the slop index scale, the five component scores, findings with spans, the SEO head handling, and the conditional shape/voice/fidelity blocks. An agent has enough to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine usage guidance beyond the schema: passing site_domain for same-site link checks, expect_front_matter=true for a publishable draft, and the conditional response blocks that site_id, original, and shape produce. This helps select parameters, though it largely mirrors schema-specified behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('review of ANY text or public URL') and immediately scopes what it returns (slop index, component scores, findings) and its constraints (deterministic, no credits, no brief needed). An agent can distinguish it from rewrite_content or score_content_draft because it positions itself as a measurement-only reviewer with a defined output shape.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use is given: 'Run it before you show a draft to the user and after every revision', plus a prerequisite ('read the writing_guardrails prompt before drafting'). It also handles the plan_required error path and clarifies that BLOCKERS are what publish_content_brief refuses, routing the agent downstream.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_api_keyA
DestructiveIdempotent
Inspect

Revoke (delete) an API key. This action is irreversible.

NameRequiredDescriptionDefault
key_idYesThe ID of the API key to revoke

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds genuinely new context by stating the action is irreversible, which is stronger than 'destructive'. It could have also noted the idempotentHint=true nuance (repeated calls on a revoked key do not error), but the irreversibility warning is the key fact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the destructive warning front-loaded immediately after the action statement. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive operation whose annotations already cover the safety profile and whose parameter is fully documented, the description supplies the one missing behavioral fact (irreversibility). Nothing critical is absent, though recovery options or a 'revoke vs rotate' note would add polish.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema description coverage is 100% ('The ID of the API key to revoke'), so the schema fully documents it. The description adds no format, source, or validation detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (revoke) with a parenthetical synonym (delete) and a concrete resource (API key), so an agent can distinguish it from create_api_key and list_api_keys. It does not explicitly name those siblings, but the verb alone differentiates the operation clearly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the action name: call this to revoke a key. There is no explicit when-to-use, when-not-to-use, or pointer to list_api_keys for finding a key_id, and no stated preconditions (ownership, admin scope).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rewrite_contentA
Read-only
Inspect

Generate an improved page title, meta description, heading, or section outline for a URL (grounded on crawl + search data when available). The 'suggested' text is READY TO APPLY: on WordPress apply via wp_update_page/wp_patch_page; on Wix apply via the user's Wix MCP where that field is API-editable (blog posts, SEO settings) — for Wix editor-only fields give the user the exact text and where to paste it in the Wix editor. Rate-limited and metered.

NameRequiredDescriptionDefault
urlYesFull page URL
typeNotitle | meta | heading | section (default title)
queryNoTarget search query to optimize for (optional)
contextNoOptional extra context for the rewrite

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond annotations: it is rate-limited and metered, the output is 'READY TO APPLY' text, and grounding draws on crawl + search data when available. Annotations cover the safety profile (readOnly true, destructive false), and nothing here contradicts them since the tool generates rather than writes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose in the first clause, then application guidance. The Wix/WordPress sentence is long and dense, but each sentence carries actionable information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by explaining that the returned suggested text is ready to apply and how to apply it per platform. Combined with the metering/rate-limit note, an agent has enough to call and act on this correctly; only result shape details remain unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents url, type, query, and context, making 3 the baseline. The description echoes the four field types and the grounding on crawl/search data, but adds no format, length, or output constraints beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (generate) and resource (improved page title, meta description, heading, section outline) tied to a URL. It implicitly separates itself from wp_update_page/wp_patch_page by casting those as the application path rather than the generation step, though it never names a sibling that does the same job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context: use when you need suggested text for one of four field types, and explicit downstream routing (apply via wp_update_page/wp_patch_page on WordPress; via the user's Wix MCP where API-editable; hand text over for editor-only fields). It does not say when NOT to use it versus near-neighbors like assist_writing_fix, review_writing, or score_content_draft.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robots_checkA
Read-only
Inspect

Read a domain's robots.txt as crawlers do: raw file, parsed user-agent groups, Sitemap lines, and an allowed/blocked matrix for search and AI bots (Googlebot, Bingbot, GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot, Claude-SearchBot, Google-Extended, CCBot, Applebot, Bytespider…) over the homepage plus any urls given. Also reports whether /llms.txt exists and its shape. Any public domain.

NameRequiredDescriptionDefault
botsNoRestrict to these user agents (JSON array or comma-separated). Default: the full search + AI list
urlsNoPaths or URLs to test per bot (JSON array or comma-separated, max 25). The homepage is always included
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
domainYesDomain or URL, e.g. navyaai.com

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=true, and the description correctly aligns with them. It adds real value beyond the annotations by disclosing that /llms.txt existence is also checked and its shape reported, and that results span multiple bots and URLs in one call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and its outputs before the bot enumeration, and the closing "Any public domain" is a useful constraint. The long parenthetical bot list is the only costly element, though it does illustrate the default set.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so by naming the four result components plus the llms.txt check. It is complete enough to call correctly, missing only guidance on how results relate to sibling access-check tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents domain, bots, urls, and detail with their defaults and the max-25 cap. The description restates the default bot list and confirms the homepage is always included, but adds no syntax or semantics beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (robots.txt) plus the exact outputs: raw file, parsed user-agent groups, Sitemap lines, and an allowed/blocked matrix. This clearly distinguishes it from neighbors like sitemap_check, redirect_check, snippet_check, and inspect_url, which an agent could otherwise confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Any public domain" gives scope, and testing per-bot over the homepage plus supplied URLs implies when it's useful, but there is no explicit when-to-use guidance and no mention of how it differs from crawl-based or URL-inspection tools that also report access.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_analysisB
Destructive
Inspect

Run an SEO analysis on a page's content. Fetch the page first, then pass its HTML/text as content. Returns on-page SEO factors and recommendations immediately.

NameRequiredDescriptionDefault
urlYesThe page URL being analyzed
queryNoOptional target keyword/query to evaluate the page against
contentYesThe page HTML or text to analyze — fetch the URL first, then pass its content here

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), so the description only needs to add context. It does add the fetch-first sequencing and that results come back synchronously ('immediately'), but it never acknowledges the destructive/non-idempotent nature or why a re-run is not safe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the precondition, then the return characteristics. Nothing is padded, though the trailing 'immediately' sentence is on the edge of being filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully characterizes the return ('on-page SEO factors and recommendations') and states the required input workflow. It is still thin for a tool whose annotations flag it as destructive/open-world: no mention of side effects, persistence, cost, or failure modes when the fetch is blocked.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (url, query, content) are already documented; baseline is 3. The description restates the key constraint that `content` must be the page's fetched HTML/text, adding emphasis but no new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Run an SEO analysis on a page's content') and scopes it to on-page factors plus recommendations, which separates it from retrieval siblings like get_analysis/list_analyses. It never names those siblings explicitly, so the differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one concrete workflow precondition ('Fetch the page first, then pass its HTML/text as `content`'), which is genuinely actionable. However, it offers no when-to-use/when-not guidance relative to overlapping siblings such as score_content_draft, review_writing, snippet_check, or the audit tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_visibility_scanB
Destructive
Inspect

Run an AI visibility scan to check how your brand or site appears in AI-generated answers (ChatGPT, Gemini, Perplexity, etc.).

NameRequiredDescriptionDefault
queryNoOptional specific query to check visibility for
site_idYesThe site ID to scan visibility for

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, idempotentHint=false and openWorldHint=true, yet the description reads like a harmless 'check' and discloses none of this – no mention of quota/credit consumption, repeated-run cost, or external network calls. The only behavioral addition is naming the AI surfaces (ChatGPT, Gemini, Perplexity), which is context, not behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that identifies the action, the subject, and the value of the output with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a job-triggering, non-idempotent, potentially expensive tool with no output schema, the description should say what happens after the scan (results via get_visibility_results), whether it consumes credits, and how long it takes. It is adequate to identify the tool but incomplete for invoking it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site_id and the optional query are already documented in the schema. The description adds no format, scope, or defaulting detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (run) and resource (AI visibility scan) plus the concrete outcome: how the brand/site appears in AI-generated answers. It is distinguishable from the read-side siblings get_visibility_results and list_visibility_scans by implying a new scan is triggered, though it never names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites (e.g., site must exist or be connected), and no pointer to get_visibility_results/list_visibility_scans for retrieving results afterward. The agent is told what the tool does but not when to pick it over the sibling read tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_content_draftAInspect

Deterministic rankability score (0-100) of the saved draft against the brief's evidence — no model, every check is a rule a reviewer could re-run by hand: title and intro carry the keyword, density in range, topic coverage vs rival headings and gaps, entity coverage, questions answered, length vs rivals, structure, internal links to our pages, secondary keywords from the cluster, plus a REPETITION penalty (duplicated passages / sentences repeated 3+ times — padding never counts). If the brief has no rival pages or gaps on file the coverage checks pass vacuously, so the verdict is capped at 'close' with thin_evidence=true — run discover_competitors / compute_content_gaps, refresh, re-score. Every failed check comes with the concrete fix. 'ready' at >= 85 moves the brief to review. Free — run it after every revision. Also returns writing — the Writing Agent's slop index (0–100, lower is better), five component scores and findings with spans; writing BLOCKERS (placeholders, numbers/superlatives without a source) cap the score below ready and refuse publish_content_brief.

NameRequiredDescriptionDefault
brief_idYesThe brief ID

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing deterministic/no-model behavior, the vacuous-pass edge case (coverage checks pass when no rivals/gaps on file) and its cap at 'close' with thin_evidence=true, the >=85 -> review state transition, the repetition penalty, and that writing blockers cap the score below ready. These are exactly the non-obvious behaviors an agent needs that readOnlyHint/openWorldHint/idempotentHint 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core definition and every sentence carries substantive information, but it is delivered as a single dense run-on paragraph mixing purpose, edge cases, side effects and return values. Readable and information-rich, yet some clauses (e.g. the parenthetical explanation of the repetition penalty) could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing returns in detail: every failed check comes with the concrete fix, plus a separate `writing` slop index with component scores and span-level findings. Edge cases, caps, and downstream effects are all covered, leaving nothing an agent needs to call or interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (brief_id) with 100% schema description coverage, so the schema already carries the parameter meaning. The description situates the scoring against 'the saved draft' and 'the brief's evidence' but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Deterministic rankability score (0-100) of the saved draft against the brief's evidence') and immediately differentiates it from model-based or human review tools by declaring 'no model, every check is a rule a reviewer could re-run by hand'. The enumerated check list (keyword in title/intro, density, coverage, entities, questions, length, structure, links, secondary keywords, repetition penalty) makes the scope unambiguous versus siblings like review_writing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing ('run it after every revision'), cost ('Free'), the downstream consequence of a high score ('ready' at >= 85 moves the brief to review), and names the alternatives to run when the brief lacks rival pages or gaps (discover_competitors / compute_content_gaps, then refresh and re-score). It also states the interaction constraint that writing BLOCKERS 'refuse publish_content_brief'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seed_keywords_from_gscA
Idempotent
Inspect

Track every query this site already ranks for, in one call — the zero-typing way to populate keywords. Each keyword lands with its ranking page, position and funnel stage. Costs nothing: no paid ranking check is triggered. Preview with get_gsc_keyword_candidates first if the user should approve the list.

NameRequiredDescriptionDefault
limitNoMax keywords to add (default 50)
site_idYesThe site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true, destructiveHint=false and readOnlyHint=false. The description adds genuinely new context beyond them: the operation is free ('no paid ranking check is triggered') and it describes the resulting side effect (each keyword lands with ranking page, position, funnel stage). Auth/limits aren't covered, but the cost and outcome disclosure is valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action, then outcome, then cost, then the preview alternative. No filler; every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a simple two-parameter shape, the description supplies what an agent needs: what gets created, its fields, the cost profile, and the preview workflow. Minor gap is that limit behavior/scale isn't hinted beyond the schema default.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (site_id and limit with its default of 50) are already documented in the schema. The description adds no parameter-level syntax or constraints, so the baseline of 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: track/populate keywords from queries the site already ranks for in GSC. It clearly delineates the action (seeding tracked keywords from existing GSC data), distinguishing it from get_gsc_keyword_candidates (preview) and add_tracked_keywords without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete routing rule: 'Preview with get_gsc_keyword_candidates first if the user should approve the list.' It names the sibling and the condition that selects it, though it doesn't spell out when NOT to use this tool or contrast further with add_tracked_keywords.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seo_insightsA
Read-only
Inspect

One-call performance digest for a site: Google Search Console (clicks, impressions, top queries/pages, issues) PLUS Google Analytics (sessions, users) merged into a single result. Prefer this over calling get_gsc_metrics + get_ga_metrics separately.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, lowering the bar, and the description adds meaningful behavior beyond them: the output is a single merged result combining two data sources, and it enumerates the data categories returned. It does not disclose prerequisites (whether GA/GSC must be connected via connect_ga/connect_gsc) or latency/rate-limit behavior, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both load-bearing: the first defines the resource and its merged contents, the second routes the agent to prefer this over the split calls. No filler, and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description usefully enumerates the returned data (clicks, impressions, top queries/pages, issues, sessions, users), which compensates well for the missing schema. It stops short of noting that GSC/GA connections are prerequisites, a real consideration given connect_ga and connect_gsc are siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site_id and detail are already documented in the schema, including the concise-vs-detailed trimming of lists to top-25. The description adds nothing about either parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('performance digest') plus the exact resources it consolidates: Google Search Console metrics (clicks, impressions, top queries/pages, issues) and Google Analytics metrics (sessions, users). It explicitly names the sibling tools it supersedes (get_gsc_metrics + get_ga_metrics), so an agent can distinguish it from those without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Prefer this over calling get_gsc_metrics + get_ga_metrics separately' gives an explicit alternative and a clear selection condition (you want combined GSC+GA data). It lacks the inverse guidance — when a single-source call is preferable (e.g. GSC-only needs, or needing per-tool freshness/detail) — so it falls short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_ranking_locationA
DestructiveIdempotent
Inspect

Set the market every tracked keyword is ranked in: a country, state or city, plus language and device. Pass location ("India", "Hyderabad", "McKinney, Texas") and it is looked up; or a location_code. Brands with no location are ranked in the country their domain names (.in, .com.au, .co.uk); a .com/.io with none set must set one before ranking checks run.

NameRequiredDescriptionDefault
deviceNo"desktop" or "mobile", default "desktop"
site_idYesThe brand/site ID
locationNoCountry, state or city name to look up, e.g. "India" or "Hyderabad"
language_codeNoDefault "en"
location_codeNoExact location code instead of location, e.g. 2356 India, 2840 United States
location_nameNoHuman label, e.g. "United States" — inferred from location_code if omitted
location_typeNoe.g. "Country" — inferred from location_code if omitted

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the mutation profile is covered. The description adds genuinely new context beyond annotations: the lookup behavior for location strings, the domain-based default country rule (.in, .com.au, .co.uk), and the requirement that .com/.io brands set one before ranking runs. It does not disclose whether an existing location is overwritten or how per-keyword overrides interact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, all front-loaded with the core action first, then the input mechanism, then the domain-default edge case. Every sentence carries information, though the parenthetical example list is slightly heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter destructive mutation tool with no output schema, the description covers the action, the input alternatives, defaults, and the prerequisite for ranking to work. It stops short of stating what happens to any previously configured location or whether the change applies uniformly across all tracked keywords, which would matter for a destructiveHint=true tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, setting the baseline at 3, and the description adds real value on top: it frames location and location_code as mutually exclusive alternatives ("Pass location ... or a location_code") and explains that a passed name is looked up. This clarifies the relationship between the two location parameters that the flat schema cannot express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Set") and resource ("the market every tracked keyword is ranked in") with scope explicitly bounded to all tracked keywords. The country/state/city plus language and device detail makes the action unambiguous and distinguishable from sibling tools like check_tracked_keyword_rankings or add_tracked_keywords.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear precondition for use ("a .com/.io with none set must set one before ranking checks run") and explains the fallback behavior for brands with a ccTLD. It does not name sibling tools as alternatives, but the trigger condition for calling this tool is stated plainly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_wordpress_connectionAInspect

Finish connecting a site. For SSH: pass ssh_ip + username (from hPanel; port 65002, WP root ~/public_html by default). For the plugin method: pass site_url + wp_username + app_password (the WordPress Application Password). Auto-verifies either way.

NameRequiredDescriptionDefault
ssh_ipNoSSH method: IP shown in hPanel after enabling SSH
site_idYesThe WordPress site ID from connect_wordpress
wp_rootNoSSH method: override WordPress root (default ~/public_html)
wp_userNoWordPress user (optional)
site_urlNoPlugin method: site URL, e.g. https://example.com
usernameNoSSH method: username shown in hPanel
wp_usernameNoPlugin method: WordPress username for the Application Password
app_passwordNoPlugin method: the WordPress Application Password

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, open-world, non-idempotent, non-destructive operation, so the safety profile is covered. The description adds genuine behavioral context beyond that: 'Auto-verifies either way' discloses a verification side effect, plus the SSH defaults (port 65002, ~/public_html). It omits failure/retry behavior, but the additions are real value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the action and then the two method variants, with no filler. Every clause (method routing, default port, default root, auto-verify) carries information the caller needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an eight-parameter, one-required tool with no output schema, the description covers both invocation paths and the auto-verification outcome adequately. Minor gaps remain around the connect_wordpress prerequisite (only in the schema) and what happens if verification fails, but the core call is fully specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds combinatorial meaning the schema does not: it groups the eight parameters into two mutually exclusive method sets (SSH vs plugin) and tells the agent which subset to send. That pairing/exclusivity is more than the per-field descriptions convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Finish connecting a site') and lays out the two supported connection methods, which is enough to distinguish it from the sibling connect_wordpress that starts the flow. It does not name the sibling explicitly, so differentiation is implied through the word 'Finish' rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional guidance: use the SSH path with ssh_ip + username, or the plugin path with site_url + wp_username + app_password. It does not spell out prerequisites (e.g. that connect_wordpress must have run first, or when one method is preferred over the other), so it falls short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sitemap_checkA
Read-only
Inspect

Fetch a domain's sitemaps (robots.txt Sitemap lines plus the standard paths, index files followed) and return every URL with its lastmod, a staleness summary, foreign-host URLs, a status spot-check of sampled URLs and a pass/warn/fail verdict. Any public domain, no crawl.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
domainYesDomain or URL, e.g. navyaai.com
max_urlsNoCap on URLs returned (default 2000, max 5000)
status_sampleNoHow many sitemap URLs to spot-check for 200/redirect (default 10, max 25, 0 to skip)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, open-world, non-destructive. The description goes further by disclosing behavior not in the annotations: it fetches from robots.txt and standard paths, follows index files, performs a status spot-check (which explains the idempotentHint=false), and issues a pass/warn/fail verdict. This meaningfully augments the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the action and then lists return contents; every clause carries information about what is fetched or returned. It is long but not padded, though slightly list-heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the key return fields (URLs with lastmod, staleness summary, foreign-host URLs, status spot-check, verdict). For a no-crawl, read-only tool this is close to complete, with only minor gaps around output size limits already covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented (detail, domain, max_urls, status_sample). The description only loosely echoes the status spot-check and full-URL return, adding little beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (fetch a domain's sitemaps) and precisely scopes it: robots.txt Sitemap lines plus standard paths, index files followed. It also enumerates the return payload, so an agent can distinguish it from siblings like get_gsc_sitemaps and submit_sitemap without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Any public domain, no crawl" gives a clear usage condition and clarifies it does not crawl pages, implicitly separating it from crawl tools like start_crawl. It does not, however, explicitly name alternatives such as robots_check or get_gsc_sitemaps for the overlapping discovery use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

site_overviewA
Read-only
Inspect

One-call orientation for a site: its profile (domain, industry, USP, integrations) plus a Search Console headline. Use this first to understand a brand instead of chaining get_site + get_gsc_metrics.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and non-destructive behavior, so the description only needs to add context. It does supply useful aggregation semantics: this is a one-call rollup combining two otherwise separate data sources, which the annotations cannot convey. It does not discuss rate limits or freshness of the GSC headline, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, and the value proposition (what you get) is front-loaded ahead of the routing guidance. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the return-value burden, and it does describe the payload at a high level (profile fields plus GSC headline). It does not spell out the full shape of the profile or the Search Console metrics returned, which leaves a minor gap for a read-only orientation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the "detail" verbosity parameter fully documented in the schema (concise vs. detailed truncation behavior). The description does not restate or extend parameter meaning, which is the correct baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (orientation for a site) and enumerates the concrete content delivered: profile (domain, industry, USP, integrations) plus a Search Console headline. It distinguishes itself from get_site and get_gsc_metrics by name, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ("Use this first to understand a brand") and names the alternatives it replaces ("instead of chaining get_site + get_gsc_metrics"). This is the rare definition that gives both a trigger and a named substitute.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippet_checkA
Read-only
Inspect

Read the SEARCH SNIPPET head of up to 20 public URLs — ANY site, competitors included, no crawl, no site_id: , meta description, og:title/description, canonical (and whether it is self-referencing, off-page or missing), robots, H1s — each with character lengths and per-URL checks (title > 60, description outside 120–160, canonical off-page, noindex, H1 count), plus cross-URL duplicates (same title, same description, pages sharing one canonical target). Use it for 'how do Rox / Klue / Valley write their titles', and again after a title/meta/canonical fix to verify what a crawler now sees. Raw HTML only — JavaScript is not executed.

NameRequiredDescriptionDefault
urlsYesJSON array or comma-separated list of URLs (max 20). Bare domains are treated as https://

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare read-only, open-world, non-destructive; the description adds genuinely new behavioral facts: raw HTML only with no JavaScript execution, a hard 20-URL cap, no site_id prerequisite, and the exact per-URL checks and cross-URL duplicate detection performed. This goes well beyond what the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scope, then dense but information-bearing clauses. It is a long run-on sentence, but nearly every clause (no JS, max 20, no crawl) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the full return-value burden — and it does, spelling out the extracted elements, per-URL threshold checks, duplicate detection, and the raw-HTML limitation. An agent has everything needed to call and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single `urls` parameter is fully documented, including the JSON-array-or-comma-separated format and bare-domain handling. The description only restates the max-20 limit already present in the schema, so it adds no meaning beyond structured data — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read the SEARCH SNIPPET head of up to 20 public URLs') and immediately scopes it against crawl-based siblings ('no crawl, no site_id'). The enumeration of the extracted fields (title, meta description, og tags, canonical, robots, H1s) leaves no ambiguity about what the tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use scenarios: competitive snippet teardown ('how do Rox / Klue / Valley write their titles') and post-fix verification of what a crawler now sees. The 'ANY site, competitors included, no crawl, no site_id' clause implicitly routes agents away from start_crawl/get_crawl_results for quick external snippet inspection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_crawlA
Destructive
Inspect

Start a new crawl job for a site. Crawls pages to discover SEO issues, broken links, and page structure. Omit max_pages to crawl up to the plan's limit; a crawl that stops at the limit returns status "partial" and can be extended with continue_crawl.

NameRequiredDescriptionDefault
urlYesSeed URL to start crawling from, e.g. https://example.com
max_depthNoMax link depth from the seed URL (1-20, default 8)
max_pagesNoMax pages to crawl. Default: the plan limit (free 50, Pro 500, Agency 1000); higher values are clamped to it

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the 'partial' status outcome when the page limit is hit and the extension path via continue_crawl. It omits auth/plan-permission requirements, so not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose and then parameter guidance. No filler, every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully documents the partial-status return value. It covers the main invocation path but leaves the follow-up retrieval flow (get_crawl_status/get_crawl_results) and permission/plan prerequisites implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description earns extra by explaining the consequence of omitting max_pages (partial status, extendable via continue_crawl), a semantic detail the schema does not convey even though it documents the default and clamping behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (start) and resource (crawl job for a site) and describes the outcome (discovers SEO issues, broken links, page structure). It is immediately distinguishable from siblings like continue_crawl, get_crawl_status, and get_crawl_results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the key decision point for max_pages (omit to reach the plan limit) and routes the agent to continue_crawl for extending a partial crawl. It does not, however, distinguish when to use this vs adjacent tools like create_audit or start_prospect_audit, so guidance is contextual but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_prospect_auditA
DestructiveIdempotent
Inspect

Client Pro SEO Audit of a domain that has connected nothing: crawl, PageSpeed, backlinks, competitor keyword profiles and an AI-visibility scan, run under YOUR account and charged upfront from your Assist credits (Full scope on paid plans). Async: ~2-5 minutes at max_pages=200, 30+ minutes at the Pro default of 1,000 pages; poll get_prospect_audit.

NameRequiredDescriptionDefault
domainYesThe prospect's domain, e.g. acme.com
max_pagesNoCrawl page ceiling. Free accounts default to and cap at 300; Pro/Agency default to and can go up to 1,000. Omit to use your plan's default — this only needs setting to go narrower.
client_nameNoThe business/client name, for your own write-up later
agency_notesNoFreeform context for yourself — what the agency wants emphasized. Never interpreted, just handed back by get_prospect_audit.
style_referenceNoPaste the structure/tone of a past audit you want this one to match — round-tripped back to you unchanged; use it yourself when you write the narrative.
competitor_domainsNoJSON array of up to 5 competitor domains to profile, e.g. ["rival1.com","rival2.com"]. Omit to auto-discover.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: upfront credit charge, async behavior with concrete timings (~2-5 min at max_pages=200, 30+ min at the Pro 1,000-page default), and the poll target. Annotations already flag destructive/openWorld/idempotent, but the description never explains what the destructiveHint or idempotentHint actually mean for this job, so it is strong rather than complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with what runs and where it runs, followed by cost and async timing. Every clause earns its place; it is information-dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly discloses that results arrive asynchronously via get_prospect_audit and gives expected durations and billing behavior. It omits any notion of what the destructive/idempotent hints imply, but an agent has enough to invoke and follow up correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds useful meaning: max_pages=200 vs the 1,000-page Pro default ties directly to the stated runtime estimates, and it confirms competitor_domains auto-discovery. The agency_notes/style_reference round-trip semantics are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('start_prospect_audit' / 'Client Pro SEO Audit of a domain') and enumerates scope (crawl, PageSpeed, backlinks, competitor keywords, AI-visibility). The phrase 'a domain that has connected nothing' cleanly separates it from audits of connected properties, and it names the get_prospect_audit sibling for polling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the condition that selects this tool (a prospect domain with nothing connected, charged upfront from Assist credits) and tells the agent to poll get_prospect_audit. It does not explicitly contrast against create_audit or start_crawl, so routing is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_brand_kitAInspect

Store/replace a brand's COMPLETE brand guideline on XeoRank WITHOUT touching any live site — works for ANY brand/platform (WordPress, Shopify, Wix, code, static, or not-yet-connected). This is the 'populate the XeoRank end' path — capture the design system even when you can't style the live site. Author the FULL guideline, not a thin kit — every section below is stored verbatim and rendered in the Brand Kit tab + the downloadable HTML guidelines doc: meta{name,tagline,description,version}; colors (primary/secondary/accent/text/bg/border + hover/active/subtle states + success/warning/error/info + any ramp e.g. brand-900..50) with colorMeta {name:{purpose}} for roles; fonts[] (per-slot family/weight/lineHeight/letterSpacing/transform); typography{heading,body,scale(H1–H6+body+small with sizeTablet/sizeMobile/lineHeight/letterSpacing),links{color,hover,visited,focus}}; buttons{radius,padding,typography,variants[]}; images{radius,opacity,shadow,hover}; iconography{grid,style,stroke,sizes,palette[]}; forms{...}; header{...}; footer{...}; identity{siteName,tagline,logo,favicon}; background{color}; layout{containerWidth,contentWidth,boxedWidth,widgetSpacing,sectionSpacing,breakpoints}; lightbox; transitions; woocommerce; accessibility{contrast[]}. To ALSO apply the Elementor-writable subset as the global theme on a connected WordPress site, use wp_set_brand_kit. site_id is the BRAND id from list_sites (NOT a WordPress site id).

NameRequiredDescriptionDefault
site_idYesBrand/site id (from list_sites)
brand_kitYesBrand kit token object: colors (6 named slots + any extra named colors), typography, buttons, forms, images, layout.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnly=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds useful behavior beyond those hints: the guideline is stored verbatim, rendered in the Brand Kit tab and downloadable HTML doc, and does not touch any live site. It does not detail overwrite semantics for an existing kit or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening purpose and routing are front-loaded before the long brand_kit field enumeration. The density is high and could be more bullet-like, but the length is largely justified by the complete-guideline requirement and the empty nested schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex write tool with no output schema, the description supplies the missing nested parameter structure, distinguishes the sibling apply-tool, and states the stored/rendered outcome. With annotations covering the safety profile, the combined definition is complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the brand_kit object has empty nested properties, so the description carries most semantic weight. It provides an extensive nested field map (meta, colors, colorMeta, fonts, typography, buttons, etc.) and clarifies that site_id is the BRAND id from list_sites, not a WordPress site id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource: store/replace a complete brand guideline on XeoRank. It names the scope, says it works for any brand/platform, and distinguishes itself from wp_set_brand_kit, so an agent can identify the correct tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames this as the 'populate the XeoRank end' path and names the exact alternative, wp_set_brand_kit, for applying the Elementor-writable subset to a connected WordPress site. It also explains when this tool works even when the live site cannot be styled.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_agent_feedbackA
Read-only
Inspect

Report a gap or friction you (the agent) hit while using Xyle tools — e.g. a page came back missing structure or colors, a schema was wrong, output was too token-heavy, or a tool errored. This is a signal to the Xyle team to improve the tools; it does NOT change the site. Be specific about what was missing or wrong and which tool it concerned.

NameRequiredDescriptionDefault
toolNoOptional name of the tool this feedback concerns
messageYesWhat was missing or wrong; be specific and actionable.
site_idNoOptional site id this feedback concerns
categoryYesKind of issue
severityNolow | medium | high

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/no-destructive/openWorld, and the description adds a genuinely useful disclosure beyond them: feedback is a signal to the Xyle team and performs no mutation on the site. It stops short of stating that repeated submissions are not deduplicated (annotation marks idempotentHint=false), so it is thorough but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action, followed by the effect clarification and a specificity nudge. Dense but every clause carries information; the trailing 'be specific' sentence is slightly instructive rather than definitional but earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, five-parameter submission tool with no output schema, the description covers purpose, effect, and required specificity. The only omission is what the caller receives after submitting (acknowledgement vs. ticket id), a minor gap given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented, including the enum meanings. The description restates the issue categories that match the 'category' enum and hints at the 'tool' parameter ('which tool it concerned') but adds no format or syntax detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — reporting a gap or friction the agent hit while using Xyle tools — and immediately enumerates the kinds of issues (missing structure, wrong schema, token-heavy output, errors). No sibling tool performs this function, so there is nothing to confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear triggering conditions with concrete examples and clarifies the scope limitation ('it does NOT change the site'), which steers the agent away from expecting a fix. It does not name an alternative route for actually fixing problems, but for a feedback sink there is no competing tool to route to.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_sitemapA
DestructiveIdempotent
Inspect

DEPRECATED — use sync_search_console. This never submitted a sitemap; it syncs Search Console data.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds deprecation status and corrects the misleading tool name by stating the real operation: syncing Search Console data. Annotations already cover safety hints such as destructiveHint=true and idempotentHint=true, so the remaining gap around permission or rate-limit behavior is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one front-loaded sentence that begins with the most important signal, DEPRECATED. It uses the remaining text efficiently to explain the replacement and correct the misleading name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deprecated one-parameter tool with no output schema, the description gives the agent everything needed: do not use it, use sync_search_console instead, and understand what it actually does. Schema and annotations cover the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single site_id parameter is already documented in the schema as 'The site ID'. The description adds no further parameter meaning, format, or constraints, which matches the baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool is deprecated, names the replacement sync_search_console, and clarifies that despite its name it syncs Search Console data rather than submitting a sitemap. This gives an agent a precise, unambiguous understanding of what the tool actually does and how it differs from the sibling it points to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'use sync_search_console' and marks the tool as deprecated, leaving no inference required. The agent is told exactly when not to use this tool and which alternative to use instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_sourcesAInspect

Find sources for the draft's '[SOURCE NEEDED]' markers and unsourced figures/superlatives — Pro (Writing Agent). Candidates are FOUND, never generated: the brand's own data (first_party — cite with its period), the vendor's own page when the claim names a vendor seen in the SERP, and a live Google search per claim (~$0.0155 each, on us; web_search=false for free candidates only). Every web candidate is fetched and checked: states_figure=true means the page contains the claim's number, false means it does NOT — never cite that page for that number. Present each claim and its candidates to the user; on their choice call accept_source. No good candidate → cut or soften the claim.

NameRequiredDescriptionDefault
brief_idYesThe brief ID
max_claimsNoClaims to research (default 6, max 10)
web_searchNoSearch Google per claim (default true)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, non-idempotent, non-destructive) by disclosing cost (~$0.0155 per live Google search, free when web_search=false), that every web candidate is fetched and verified, and the semantics of states_figure. It explicitly warns never to cite a page whose states_figure is false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, and the remaining sentences each carry distinct operational payload (candidate origins, cost, verification semantics, next action, fallback). No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the missing return semantics (first_party candidates cited with their period, vendor pages, web candidates with states_figure) and the success/failure paths. For a 3-parameter tool with annotations, nothing an agent needs to invoke and interpret it is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond it: web_search=false yields free candidates only and live search costs ~$0.0155 per claim. This ties the boolean flag to a concrete cost trade-off the schema does not express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find) and resource (sources for the draft's '[SOURCE NEEDED]' markers, unsourced figures/superlatives), plus the scoping detail that candidates are found, never generated. This is clearly distinguishable from siblings like accept_source or assist_draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the end-to-end workflow: present each claim and candidates to the user, then call accept_source on their choice, and cut/soften the claim if nothing qualifies. It also names web_search=false as the free-only path. It lacks an explicit statement of when this tool should not be used versus other research siblings, so it falls just 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.

sync_search_consoleA
DestructiveIdempotent
Inspect

Pull fresh data from Google Search Console into XeoRank — queries, query-to-page mapping, and URL inspections. Run this FIRST if get_gsc_keyword_candidates, seed_keywords_from_gsc or get_site_journeys come back empty: they all read what this stores.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description usefully adds the dependency relationship (siblings read what this stores) but does not explain the destructive/idempotent behavior — it frames the call as a benign 'pull fresh data,' which understates what an overwriting sync may do.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and its payload, then the operational trigger. Every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema and full annotation coverage, the description covers purpose, usage, and dependency adequately. The only remaining gap is behavioral: it never clarifies what the destructive sync overwrites or how a re-run affects existing stored data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and only one required parameter (site_id) exists, so the schema fully documents it. The description adds no syntax or constraint detail beyond what the schema provides, which matches the baseline for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — pulling fresh Search Console data into XeoRank — and enumerates what is collected (queries, query-to-page mapping, URL inspections). It clearly distinguishes itself from read-only siblings like get_gsc_queries by naming itself as the thing they read from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use: 'Run this FIRST if get_gsc_keyword_candidates, seed_keywords_from_gsc or get_site_journeys come back empty.' It names the dependent alternatives and the triggering condition, 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.

sync_shopifyC
DestructiveIdempotent
Inspect

Trigger a sync of Shopify product and page data to Xyle.

NameRequiredDescriptionDefault
site_idYesThe site ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as non-read-only, open-world, idempotent and destructive, but the description adds nothing about behavior: what existing Xyle data may be overwritten, whether the call is synchronous or returns a job handle, and how long a sync takes are all undisclosed. The word 'trigger' hints at an async kickoff, which is the only extra signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. It is appropriately sized, though the terseness is partly what leaves behavioral gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with no output schema, the description omits key facts an agent needs: what gets replaced, whether success is terminal or eventual, and any prerequisite connection state. It is not complete enough for a write operation of this risk profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage, the schema already defines site_id. The description adds no further meaning (e.g. which site's Shopify store is targeted), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Trigger a sync') plus the resource and direction ('Shopify product and page data to Xyle'), which cleanly separates it from read-oriented siblings like get_shopify_products and get_shopify_status. It does not explicitly name an alternative, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when this should be run versus get_shopify_status or get_shopify_products, and no prerequisites stated (e.g. whether the Shopify connection must already exist). The agent must infer the whole usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

technical_healthA
Read-only
Inspect

One-call technical/indexing health for a site: Core Web Vitals + Search Console URL inspections (indexing status) + GSC access scope, merged. Prefer this over chaining get_cwv_results + get_gsc_pages + get_index_status.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe site ID

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=false, covering the safety profile. The description adds that the tool is a single-call merger of three data sources, which is useful behavioral context, but it does not disclose auth prerequisites, rate limits, partial-failure behavior, or return format. That matches the calibration level for a description that adds some context while annotations carry the core behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is two sentences, front-loaded with the primary purpose and immediately followed by the alternative-tool routing advice. Every clause carries useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only composite tool with no output schema, the description sufficiently explains what data is merged and when to prefer it, and annotations cover the safety profile. Minor gaps remain around what a caller should expect if one underlying source is unavailable or unauthorized (GSC access scope), but the definition is complete enough for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (site_id and detail) are already documented in the schema, including the concise/detailed verbosity behavior. The description adds no parameter detail beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific composite verb and resource: 'One-call technical/indexing health for a site' and explicitly lists the three data sources it merges (Core Web Vitals, Search Console URL inspections, GSC access scope). It also distinguishes itself operationally from sibling tools by naming the exact chain it replaces (get_cwv_results + get_gsc_pages + get_index_status), so an agent can identify its 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing advice: 'Prefer this over chaining get_cwv_results + get_gsc_pages + get_index_status.' That names the alternative tools and the condition that selects this tool, leaving no inference required about when to call it instead of those siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tracked_keyword_performanceA
Read-only
Inspect

Google Search Console performance for the tracked keywords: which already get impressions/clicks and at what position (matched), plus top opportunity queries the brand ranks for but isn't tracking yet. Use it to decide what pages/content to build.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe brand/site ID

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety is covered. The description adds real behavioral context beyond that: it discloses the tool returns a composite of matched keyword performance plus untracked opportunity queries, not a plain GSC dump. It says nothing about pagination, freshness, or auth, but the annotation coverage lowers the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and scope, and no filler. The parenthetical "(matched)" labels the result class cleanly. Slightly dense but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description sensibly sketches what comes back (matched performance data and opportunity queries), which is the key missing piece. For a read-only, two-parameter tool with 100% schema coverage, little else is needed; only routing guidance to sibling tools is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so site_id and the concise/detailed verbosity switch are already fully documented in the schema. The description adds no parameter-level meaning, which is the correct baseline of 3 when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (Google Search Console performance for tracked keywords) and details the two result sets: matched keywords with impressions/clicks/position, and untracked opportunity queries. It is distinguishable from generic siblings like get_gsc_queries or get_gsc_metrics, though it does not explicitly say how it differs from check_tracked_keyword_rankings or classify_tracked_keywords.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it to decide what pages/content to build" gives an implied purpose but no when-to-use/when-not guidance and no named alternative (e.g., get_gsc_keyword_candidates or content_opportunities). The agent must infer selection from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_brand_profileAInspect

Set a brand's positioning profile — industry, USP, ICP, target audience and summary. This is the single highest-leverage thing to fill in: keyword research, competitor discovery and every AI-visibility prompt are generated from it, and it is the one input that cannot be read off the website. Call get_brand_profile first and pass back the fields you are changing; omitted fields are left as they are. WRITE IT THE WAY THE BUYER TALKS, NOT THE WAY MARKETING DOES — these words become search queries. Vague input produces vague keywords. WORKED EXAMPLE for an AI-governance vendor: industry='AI governance & compliance software for regulated enterprises'; usp='Runtime policy enforcement for AI agents — governs what an agent does while it runs, not just what the model was trained on, with an auditable evidence trail for EU AI Act and NIST'; icp='Heads of AI governance, risk and compliance at 500+ seat healthcare and financial firms, triggered by an audit, a board mandate, or a first agent reaching production'; target_audience='Two motions. Product: platform teams searching "ai governance platform", "llm runtime governance". Services: compliance leads searching "ai governance consulting", "ai readiness assessment"'; summary='Trust infrastructure for enterprise AI agents — enforces policy at runtime and produces the audit evidence regulated buyers need.' Note how each answer names a mechanism, a job title, a trigger and the buyer's own phrasing. If the business sells in two motions, say so — each becomes its own keyword set.

NameRequiredDescriptionDefault
icpNoWho signs off, plus the moment that triggers the search
uspNoThe claim a competitor could not copy onto their homepage — name the mechanism, skip adjectives
site_idYesBrand/site id from list_sites
summaryNo2-3 sentences a stranger could repeat back correctly; this is what AI answer engines quote
industryNoNarrow sub-category people actually search, not 'software'
target_audienceNoIn the buyer's words. Note separate motions (product vs services) — each becomes its own keyword set

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), so the safety bar is partly cleared for the description. The description adds real behavioral context beyond that: partial-update semantics for omitted fields, the downstream fan-out into keyword and competitor generation, and the warning that vague input degrades outputs. It does not describe the response shape or failure behavior, which is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the highest-leverage rationale are front-loaded, followed by the call sequence, then the worked example. The example is long but every part of it demonstrates a distinct field with distinct reasoning, so it earns its place; the all-caps emphasis line is slightly shouty but is the single most operationally important instruction in the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter mutation with no output schema, the description covers what is written, how partial updates behave, what depends on the data downstream, and how to phrase each field. The only omissions are the return value and what happens on invalid or rejected input, which are minor relative to the richness provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description goes well beyond the schema by supplying a fully worked, field-by-field example for an AI-governance vendor that shows the expected altitude, phrasing and content of each value. The instruction to write in the buyer's language and to split multi-motion businesses into separate keyword sets adds semantic guidance the schema descriptions only gesture at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Set') and resource ('a brand's positioning profile') and enumerates exactly which fields constitute it: industry, USP, ICP, target audience, summary. It also implicitly separates itself from the sibling get_brand_profile by naming it as the prerequisite read step, so an agent can route between the read and write pair without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit call sequence ('Call get_brand_profile first and pass back the fields you are changing') and states the alternative behavior for the omitted case ('omitted fields are left as they are'). It also explains the justification for using the tool at all — that downstream keyword research, competitor discovery and AI-visibility prompts are generated from this data — which tells the agent when this tool is the right investment of effort.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_content_briefAInspect

Save work on a brief: the outline (JSON list of {heading, level, notes}), the draft in markdown (exactly one H1 = the title), title, intent, kind, status or notes. Saving a draft moves the brief to 'draft' and clears the previous score — call score_content_draft again. Set refresh_evidence=true after compute_content_gaps, sync_search_console or run_visibility_scan to re-collect the evidence (refresh_serp=true also re-fetches the live Google results). Published on a platform other than WordPress? Pass published_url (the live URL) — the brief becomes 'published' and XeoRank tracks its Search Console results against the score.

NameRequiredDescriptionDefault
kindNocreate | optimize
notesNoNotes
titleNoTitle
intentNoSearch intent
statusNoidea | brief | draft | review | published | archived
outlineNoJSON array: [{heading, level, notes}]
brief_idYesThe brief ID
draft_mdNoThe full draft in markdown
author_draftNoHUMAN-FIRST PATH: the author's own rough version, verbatim (typed or a dictation transcript). Save it before you touch it. Then structure and tighten it keeping their sentences; score_content_draft reports how much of their text survived and flags opinions that are not theirs. Also grows the brand's voice corpus.
human_inputsNoJSON object of the author's interview answers, e.g. {"expected_vs_happened": "...", "proof": "...", "pushback": "...", "got_wrong": "...", "who_for": "...", "dont": "...", "one_sentence": "..."}. Their words are the only source of opinions and first person in the draft; score_content_draft credits answers the draft uses.
refresh_serpNoWith refresh_evidence: fetch the live Google results again
published_urlNoThe live URL when the piece was published outside WordPress (starts outcome tracking)
refresh_evidenceNoRe-collect the evidence bundle from stored data

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavioral facts beyond the annotations: saving a draft transitions status to 'draft' and clears the previous score (a destructive-ish side effect), and supplying published_url flips the brief to 'published' and starts Search Console tracking. Annotations cover safety profile; the description covers side effects and state transitions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose before layering conditional side effects, and each sentence carries actionable content. Slightly dense with several clauses packed into the last two sentences, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full parameters schema but no output schema and 13 params, the description covers state transitions, score invalidation, evidence-refresh triggers, and the off-WordPress publish path. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the outline's shape, the 'exactly one H1 = title' rule for draft_md, and the precise effect of refresh_evidence/refresh_serp/published_url. It goes beyond the terse inline schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Save work on a brief') and resource, and enumerates the savable fields. It is clearly differentiated from sibling create_content_brief (new brief) and publish_content_brief (publish action).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditional guidance: call score_content_draft again after saving a draft, set refresh_evidence=true after compute_content_gaps/sync_search_console/run_visibility_scan, and pass published_url when publishing off WordPress. Alternatives and triggers are named, not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_goalAInspect

Update a goal — its status, target, tags, metric, dates, or the manual counter. Status is one of not_started | active | at_risk | achieved | abandoned. at_risk is set deliberately by a human or agent that knows the goal is slipping; nothing sets it automatically, so it stays meaningful. To advance a manual goal pass manual_done. Do not set current_value — measured goals are re-read from the source by refresh_goals. Passing metric_key CHANGES what this goal measures — it re-baselines from the new metric immediately (the old baseline meant nothing under the new one), it does not just relabel the existing progress. Call goal_metrics first to confirm the key. This is the fix for a wrong metric choice at create time — no need to delete and recreate the goal.

NameRequiredDescriptionDefault
tagsNoJSON array of labels — replaces the existing set
stageNodiscover | fix | build | grow | defend
titleNoNew title
due_atNoISO 8601 date/time this goal is due
statusNonot_started | active | at_risk | achieved | abandoned
goal_idYesGoal id from list_goals
site_idYesThe brand/site ID
categoryNoseo | aeo | geo | technical | content | authority
priorityNolow | medium | high
starts_atNoISO 8601 date/time this goal starts
metric_keyNoA key from goal_metrics. Changing this re-baselines the goal from the new metric, right now.
descriptionNoNew description
manual_doneNoHow many of manual_total are done
manual_totalNoRevised total for a manual goal
target_valueNoRevised target

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it is a non-idempotent, non-destructive write. The description adds substantive behavior: metric_key immediately re-baselines the goal rather than relabeling, at_risk is only ever set deliberately and never automatic, and current_value must not be set. That is real 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation and its field list, then layered with targeted caveats. Dense but nearly every sentence carries a distinct constraint; the metric_key paragraph is slightly long relative to the rest but earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation with no output schema and no idempotency guarantee, the description covers the risky behaviors (re-baselining, at_risk semantics, current_value prohibition) well. It leaves response shape and the behavior of unmentioned fields implicit, but annotations and the full schema description coverage fill much of that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds meaning the schema lacks: why at_risk carries signal, that manual_done advances a manual goal, and the re-baselining consequence of metric_key. It does not explain every parameter (e.g. stage, priority, category), so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (a goal), enumerates the mutable fields (status, target, tags, metric, dates, manual counter), and positions itself against siblings like create_goal, delete_goal, refresh_goals, and goal_metrics. An agent can distinguish it from those 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance: pass manual_done to advance a manual goal, do not set current_value (refresh_goals re-reads measured goals), call goal_metrics first before setting metric_key, and use this instead of deleting/recreating to fix a wrong metric. Alternatives and exclusions are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_wordpressAInspect

Verify a connected WordPress site: SSH into the Hostinger host with the Xyle key, pin the host key, and detect the WordPress install. Call this after set_wordpress_connection. Marks the site verified.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it performs SSH with a specific key, pins the host key, and leaves persistent state by marking the site verified. It does not describe failure modes or timeouts, so 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose and mechanism first, then the sequencing prerequisite, then the resulting state change. No filler, and the most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, non-destructive verification tool with no output schema, the description covers what it does, when to call it, and the side effect it produces. The main remaining gap is what a failed or partially successful verification looks like, which the absence of an output schema makes slightly more relevant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) with 100% schema description coverage, so the schema fully documents it and the description adds nothing parameter-specific. Baseline 3 is appropriate when the schema carries the entire parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (verify) and resource (connected WordPress site), then spells out the concrete mechanism: SSH to the Hostinger host with the Xyle key, pin the host key, detect the install. This clearly distinguishes it from siblings like connect_wordpress, set_wordpress_connection, and get_wordpress_site, which do not perform verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Call this after set_wordpress_connection" gives an explicit prerequisite and ordering relative to a named sibling, which is exactly the routing signal an agent needs. There is no explicit when-not or failure-handling guidance, 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.

voice_probeA
Read-onlyDestructive
Inspect

Two short sentence pairs about the author's own topic, each written two ways — 'Which reads more like you?'. Ask one or two per brief, as A / B, one line each, no explanation. Answers accumulate into the author's voice (traits: contractions, I/we, you, dashes, formality, sentence length, directness, number-or-story-first) with visible progress; the measured profile builds itself from their interview answers and drafts meanwhile. Pass brief_id so the pairs use their topic and their own facts.

NameRequiredDescriptionDefault
nNoPairs to return, 1–4 (default 2)
site_idYesThe site ID
brief_idNoThe brief being written (topic and facts come from it)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds real context beyond the annotations: answers accumulate into a voice profile with visible progress, and the profile builds from interview answers and drafts. But it never addresses the odd annotation set (readOnlyHint=true alongside destructiveHint=true), so an agent has no way to reconcile 'read-only probe' with a declared destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening and the brief_id sentence earn their place, but the middle clause is tangled ('Answers accumulate into the author's voice (traits: contractions, I/we, you, dashes, formality, sentence length, directness, number-or-story-first) with visible progress; the measured profile builds itself from their interview answers and drafts meanwhile'). The trait list adds bulk without changing how the agent calls the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-format burden and does so reasonably: A/B pairs, one per line, no explanation, 1–4 count. It omits what happens if the probe cannot be generated, but for a prompt-generating tool the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, and the description genuinely extends it: brief_id is explained as sourcing the topic and the author's own facts, and 'one or two per brief' maps the n range to intended usage. site_id is left unelaborated, but the schema label covers it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource: it returns 'two short sentence pairs about the author's own topic, each written two ways' for an A/B preference choice. That is a distinct output shape from siblings like get_voice_profile, create_voice_profile, declare_voice, and voice_probe_answer, though it never names a sibling to route against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operating instructions: 'Ask one or two per brief, as A / B, one line each, no explanation,' plus 'Pass brief_id so the pairs use their topic.' It stops short of explicit when-not guidance or naming the sibling that records the answer (voice_probe_answer).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

voice_probe_answerAInspect

Record the author's pick from a voice_probe pair (trait + side). Returns progress: 'Voice: 3/8 traits set · 1,240/2,000 words toward a measured profile'. Tell the user that line.

NameRequiredDescriptionDefault
sideYesThe side the author picked (the pair's a.side or b.side)
traitYesThe pair's trait key
site_idYesThe site ID
brief_idNoThe brief, for the record

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write-ish safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds value beyond that by disclosing the return payload format and the required user-facing action, though it says nothing about what persisting a pick does downstream or how repeated answers are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the action first, then the expected return and user-facing instruction. Every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by describing the progress string's shape and telling the agent to surface it. It does not explain the role of the optional brief_id or the persistence effect of the recorded pick, leaving a small gap for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented, and the description's 'trait + side' phrasing largely mirrors the schema. It adds no format, enum, or source detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Record the author's pick from a voice_probe pair (trait + side).' The link to the sibling voice_probe is explicit, so an agent knows this tool consumes the pairs that voice_probe produces without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description situates the tool in a workflow (answering a voice_probe pair) and instructs the agent to relay the returned progress line to the user. It does not explicitly state prerequisites such as 'call voice_probe first' or 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.

wp_activate_templateAInspect

ONE call to make a template the LIVE header/footer: publishes it, sets its display condition (default include/general = whole site), and demotes the previously-active same-type template. Replaces the create→set-conditions→exclude-old dance. Changes what renders SITE-WIDE — screenshot-review first. Writes-gated, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID
conditionNoDisplay condition (default include/general)
template_idYesThe template post ID to make live
demote_othersNoDemote prior active same-type templates (default true)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readonly, non-destructive, non-idempotent, open-world. The description adds meaningful context beyond that: it changes what renders SITE-WIDE, it is writes-gated, and it requires Xyle Connector v0.6.0+, which an agent needs to know before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its effects, and every clause carries information (side effects, replacement rationale, warning, gating, version). It is dense but not padded; slightly packed into one run-on block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, it discloses the key behaviors (site-wide render change, writes gating, version requirement) and defaults. Complete enough for correct invocation, though it doesn't describe the response or rollback of the demoted template.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description reinforces the default condition semantics ('default include/general = whole site') and demotion behavior, but adds little beyond what the schema states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (activate/make live) and resource (header/footer template) and enumerates the concrete side effects (publishes, sets condition, demotes prior active). It is clearly distinguishable from siblings like wp_set_template_status or wp_set_template_conditions by framing itself as the one-shot combined action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the context well: it 'Replaces the create→set-conditions→exclude-old dance,' which tells the agent when to prefer this over a multi-step sequence, and warns to 'screenshot-review first.' It doesn't name sibling tools explicitly as alternatives, but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_apply_styleA
DestructiveIdempotent
Inspect

Apply ONE style to MANY elements in a single call. Use this whenever several elements should look the same — the cards in a row, every kicker, all the headings in a section. Styling them one at a time is how six cards end up with three different accent colours: each edit is a fresh chance to typo a hex or forget a radius, and nothing ties them together afterwards. One payload cannot drift from itself. Same style vocabulary as wp_patch_page (wp_style_keys lists it), same per-element verification: the response reports effective for each node, so you can see if any element ignored the write. dry_run previews.

NameRequiredDescriptionDefault
styleYesJSON style object applied to every id, e.g. {"bg":"#FFFFFF","radius":16,"padding":28}. Keys from wp_style_keys.
dry_runNoPreview the diff without writing.
post_idYesPage/post numeric id
site_idYesWordPress site id
node_idsYesJSON array of element ids, e.g. ["a1b2c3","d4e5f6"] (from wp_get_page outline).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (destructiveHint=true, idempotentHint=true, openWorldHint=true). The description adds value beyond that: it discloses the per-element verification mechanism (response reports `effective` per node) and the dry_run preview path, which is useful given there is no output schema. It does not explicitly warn that existing per-element styles are overwritten, which would be the ideal addition for a destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action in sentence one, followed by rationale and verification detail. The 'six cards / three accent colours' illustration is motivational rather than strictly informational, adding mild length, but the sentences generally earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch destructive mutation with no output schema, the description covers when to use it, the shared vocabulary, dry-run previewing, and the verification signal returned. The main omission is an explicit note that existing styles on the target nodes are replaced, though the destructiveHint annotation partially covers this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter including examples for style and node_ids. The description reinforces the wp_style_keys vocabulary source but adds no format or syntax detail the schema lacks. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb, resource, and cardinality constraint ('Apply ONE style to MANY elements in a single call'), which immediately separates it from single-element siblings like wp_patch_page. Concrete examples (cards in a row, every kicker) make the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use trigger ('whenever several elements should look the same') plus a named anti-pattern (styling one at a time) and concrete drift/typo rationale. It also routes the agent to sibling resources (wp_style_keys for vocabulary, wp_get_page for outlines) and mentions dry_run for preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_assign_menu_locationAInspect

Assign a menu to a theme location (e.g. put the 'Primary' menu in the header's 'primary' slot). Get valid locations from wp_list_menu_locations. Writes-gated, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
menu_idYesThe menu id to assign (0 to clear)
site_idYesThe WordPress site ID
locationYesThe theme location slug (from wp_list_menu_locations)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation profile is covered. The description adds 'Writes-gated', a genuine constraint not present in annotations, but never explains what gating means or that wp_enable_writes must run first, so the added value is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences and a version tag, front-loaded with the action and example before the prerequisite. Nothing is padded, though the trailing version/connector note is metadata of limited use to an agent choosing the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, fully-described schema with annotations covering the safety profile and no output schema, the description supplies purpose, an example, and the source of valid locations. The only real gap is leaving 'writes-gated' unexplained for an agent that may need to enable writes first.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; every parameter (site_id, location, menu_id incl. '0 to clear') is already documented in the schema. The description's mention of sourcing locations from wp_list_menu_locations merely echoes the schema text, adding no new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Assign a menu to a theme location') and adds a concrete example ('put the Primary menu in the header's primary slot') that disambiguates the operation. It distinguishes implicitly from siblings like wp_set_menu_items or wp_create_menu, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear prerequisite routing by telling the agent to obtain valid locations from wp_list_menu_locations, which is the key dependency for correct invocation. It stops short of any when-not or alternative-selection guidance, so it doesn't reach 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_bulk_replaceAInspect

Deterministic find/replace across ALL of a page's editable text fields, server-side. Send a TINY [{find, replace}] list — XeoRank reads the page, applies the swaps to every text field, writes through the validated patch path, and returns only a replacement count + a few sample diffs (NEVER the full page). Use this for template work (swap terminology across many fields, e.g. one specialty page -> another) instead of pasting a huge ops payload into wp_patch_page. Round-trip safe; write-gated; dry_run previews counts+samples.

NameRequiredDescriptionDefault
dry_runNoPreview counts + sample diffs without writing (default false)
post_idYesThe page/post ID
site_idYesThe WordPress site ID
whole_wordNoMatch on word boundaries only (default false)
replacementsYesJSON array of {find, replace} term swaps, e.g. [{"find":"urologist","replace":"pulmonologist"},{"find":"urology","replace":"pulmonology"}]
case_insensitiveNoCase-insensitive matching (default false)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses key behavior: it is server-side, reads the page, applies swaps to every text field, writes through a validated patch path, returns only a replacement count plus sample diffs (never the full page), is round-trip safe and write-gated, and supports dry_run previews. This is substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and scope, then covers mechanics, return behavior, and usage guidance in four tight sentences. Every clause earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully covers what is returned (count and sample diffs, never full page) and notes write-gating and dry_run behavior. Required inputs are documented in the schema, so the definition is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameter semantics are already documented. The description reinforces the replacements format ('TINY [{find, replace}] list') and mentions dry_run previews, but adds no meaning beyond the schema for site_id, post_id, whole_word, or case_insensitive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (deterministic find/replace across all editable text fields), names the scope (whole page, server-side), and explicitly distinguishes itself from wp_patch_page as the alternative for large ops payloads. 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage context ('Use this for template work ... instead of pasting a huge ops payload into wp_patch_page') and names the sibling alternative to use instead in that scenario. This directly guides tool selection and reduces ambiguity with related write tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_capabilitiesA
Read-onlyDestructive
Inspect

WHAT ACTUALLY EXISTS on this WordPress site, and which XeoRank write path does it — call this before concluding anything is 'not supported'. Returns the connector version, Elementor version, Pro, Editor V4 state, the five write paths (sections = classic container spec; elements = raw JSON verbatim; atomic = Editor V4 spec, available when Editor V4 is active; patch = per-element ops incl. V4 tabs; blocks = Gutenberg) each with its conditions, the curated V4 element list, and the short list of things XeoRank cannot do at all (PHP filters, editing templates via page tools).

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID (list_wordpress_sites)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/openWorldHint already present, the description still adds substantial context: it enumerates exactly which versions, write paths and conditions are returned and explicitly lists what XeoRank cannot do (PHP filters, template editing via page tools). The destructiveHint=true annotation is inconsistent with this otherwise pure-discovery framing, though the description itself makes no destructiveness claim.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the actionable directive ('call this before...') front-loaded and the payload contents listed afterward. Everything earns its place, though the long run-on parentheticals make it heavier to parse than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the burden of explaining returns – and it does so thoroughly, listing versions, all five write paths with conditions, the V4 element list, and known limitations. Complete enough to act on; only the destructive/read annotation ambiguity remains unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) and schema description coverage is 100%, so the schema already documents it fully (including pointing to list_wordpress_sites). The description adds no additional syntax or source detail beyond that, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific purpose: report what actually exists on the WordPress site and which XeoRank write path applies, naming the concrete returned artifacts (connector/Elementor versions, five write paths, unsupported operations). This clearly separates it from generic siblings like get_wordpress_site or list_wordpress_sites, though the framing ('WHAT ACTUALLY EXISTS... which path does it') is slightly oblique rather than a crisp verb+resource statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage trigger – 'call this before concluding anything is not supported' – which tells the agent when this tool is the right call. It does not name an alternative sibling or state when-not to use it, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_clone_and_customizeAInspect

Clone a source Elementor page into N variants, applying each variant's find/replace to its clone — all server-side, in ONE call. Built for the 'one source page -> many near-identical variants with swapped terminology' pattern (e.g. specialty landing pages). Instead of N clone calls + N patches carrying full page payloads, send a source id + a compact list of variants. Returns per-variant {post_id, title, replacements_made} — never page content. Each variant is a draft you review. Round-trip validated; write-gated. For an INTELLIGENT transform beyond literal swaps (related conditions/procedures/language), run assist_transform_page on a clone instead.

NameRequiredDescriptionDefault
post_idYesThe SOURCE page/post ID to clone from
site_idYesThe WordPress site ID
variantsYesJSON array of variants, e.g. [{"title":"Pulmonologist Marketing","slug":"pulmonologist","replacements":[{"find":"urolog","replace":"pulmonolog"}]}] — each: {title, slug?, status?, replacements:[{find,replace}], whole_word?, case_insensitive?}

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true), but the description adds substantial context beyond them: server-side execution in ONE call, that it returns per-variant {post_id, title, replacements_made} and never page content, that each variant is a reviewable draft, and that it is round-trip validated and write-gated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core behavior comes first, then the rationale, then the return shape, then the sibling pointer. Every sentence carries distinct information, though the description is on the longer side for a three-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by spelling out the return shape ({post_id, title, replacements_made}, never page content) and the draft/write-gated semantics. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description goes further by framing 'variants' as a compact list replacing full page payloads and describing the shape of the returned replacements_made, tying the parameter to its purpose rather than just restating it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Clone a source Elementor page into N variants, applying each variant's find/replace to its clone') and immediately distinguishes itself from the nearest siblings by contrasting the N-clone-calls-plus-N-patches alternative. An agent can identify the tool's role without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the pattern it targets ('one source page -> many near-identical variants with swapped terminology') and names the alternative and its selection condition ('For an INTELLIGENT transform beyond literal swaps... run assist_transform_page on a clone instead'). Both when-to-use and when-to-choose-something-else are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_clone_pageAInspect

Duplicate a page EXACTLY, server-side — Elementor, Gutenberg or classic. An Elementor page's builder JSON is copied inside Xyle and never passes through your context — so nothing is truncated and nothing is rebuilt by hand. Use this for 'clone this page' instead of reading the source with wp_get_page and re-creating it: a large page's Elementor data is hundreds of KB and cannot be reproduced losslessly from the normalized node list. Creates a DRAFT by default; the source is untouched.

NameRequiredDescriptionDefault
slugNoPermalink slug for the new page (needs Connector v0.5.0+)
titleYesTitle for the new page
statusNodraft (default) | publish | private | pending
post_idYesThe SOURCE page/post ID to copy
site_idYesThe WordPress site ID
post_typeNopage (default) or post

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds meaningful context beyond annotations: the builder JSON never passes through context, nothing is truncated/rebuilt, and the source is untouched. Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the safety profile is covered; the description's added value is the mechanism and the non-destructive guarantee. It does not, however, explain side effects like what happens to menus, templates, or translations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action, and each sentence earns its place by adding mechanism and the sibling routing guidance. No waste, no repetition of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, mechanism, default status, source safety, and the key sibling alternative for a 6-param mutation tool with no output schema. It does not mention post_type's default or what the response contains (e.g., new page ID), but those are partially in the schema and less critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already documented. The description adds only the default status (DRAFT) and the semantic that post_id is the SOURCE to copy, but the schema already states this. Baseline 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Duplicate a page EXACTLY, server-side') and immediately qualifies coverage ('Elementor, Gutenberg or classic'). It also explicitly distinguishes itself from the nearest sibling (wp_get_page) and from the read-and-recreate approach.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when: 'Use this for clone this page instead of reading the source with wp_get_page and re-creating it,' plus the condition that makes the alternative fail (Elementor data is hundreds of KB and cannot be reproduced losslessly). It also states the default behavior (creates a DRAFT).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_compare_pagesA
Read-onlyDestructive
Inspect

Structural diff of two Elementor pages (same site or cross-site). Detects dropped sections, missing headings/FAQ items, changed CTA labels, and missing images — use it to PROVE a clone kept everything the source had. Read-only.

NameRequiredDescriptionDefault
clone_post_idYesClone page/post ID
clone_site_idYesClone (copy) site ID
source_post_idYesSource page/post ID
source_site_idYesSource (original) site ID

TDQS

A3.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description says 'Read-only', which directly contradicts the annotation destructiveHint=true (even though readOnlyHint=true matches). Per the contradiction rule, this scores 1. The added detection details about what is compared are useful, but the contradiction makes the behavioral profile unreliable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose, detection list, and usage rationale. The most important information is front-loaded, and every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should ideally explain what the diff result looks like (e.g., list of differences, severity). It covers purpose and use case but omits return format and error behavior, leaving a gap for an agent interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters are already documented in the input schema. The description adds no syntax, format, or pairing guidance beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Structural diff') and resource ('two Elementor pages'), scopes same-site/cross-site, and enumerates detection types (dropped sections, missing headings/FAQ items, changed CTA labels, missing images). This clearly distinguishes it from sibling tools like wp_clone_page or wp_get_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear context for use: 'use it to PROVE a clone kept everything the source had' and notes it works same-site or cross-site. It does not name an alternative tool or explicitly 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.

wp_copy_pageAInspect

Copy an Elementor page EXACTLY from ONE site to ANOTHER, server-side. Reads the source's raw builder JSON inside Xyle (never through your context, so nothing is truncated) and writes it verbatim to a new page on the destination — every section, text string and style preserved, nothing dropped. Use this for 'replicate this page onto site B' instead of reading with wp_get_page and rebuilding (a large page's data is hundreds of KB and cannot be reproduced losslessly by hand). Optionally re-hosts the source's images into the destination's media library so the copy is self-contained. Elementor Pro widgets are copied as-is and reported (they need Pro on the destination to render). Creates a DRAFT by default; the source is untouched. For a copy WITHIN one site use wp_clone_page instead.

NameRequiredDescriptionDefault
slugNoPermalink slug for the new page
titleYesTitle for the new page on the destination
statusNodraft (default) | publish | private | pending
post_idYesThe SOURCE page/post ID to copy
post_typeNopage (default) or post
dest_site_idYesThe DESTINATION WordPress site ID (where the copy is created)
rehost_imagesNoCopy the source's images into the destination media library and rewrite URLs (default TRUE). False = leave source-hosted URLs.
source_site_idYesThe SOURCE WordPress site ID (where the original lives)

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false): it discloses server-side raw-JSON handling, lossless verbatim transfer, that the source is untouched, that the result is a DRAFT by default, that images are optionally re-hosted, and that Pro widgets copy but need Pro to render. None of that is derivable from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the migration-mode distinction; subsequent sentences each add a distinct fact (fidelity, image rehosting, Pro caveat, draft default, sibling tool). Dense but zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-param cross-site mutation with no output schema, the description covers everything an agent needs: scope, safety of the source, default status, image handling, fidelity limits (Pro widgets), and the alternate tool. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds outcome-level meaning the schema lacks: rehost_images makes the copy 'self-contained' via media-library rewrite, status defaults to draft, and the copy is verbatim. It does not elaborate source/dest_site_id beyond what the schema already says, so it stops short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Copy an Elementor page EXACTLY from ONE site to ANOTHER, server-side') and immediately distinguishes itself from both wp_clone_page (same-site) and the wp_get_page rebuild path. An agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('replicate this page onto site B') with the named alternative rejected ('instead of reading with wp_get_page and rebuilding') and the sibling for the other case ('For a copy WITHIN one site use wp_clone_page instead'). Both branches of the decision are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_create_menuAInspect

Create a WordPress nav menu by name (returns the existing one if the name is taken). Then add items with wp_set_menu_items and assign it to a location with wp_assign_menu_location. Writes-gated, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
nameYesMenu name, e.g. 'Primary'
site_idYesThe WordPress site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description adds real behavioral value on top: the get-or-create fallback ('returns the existing one if the name is taken') and the operational prerequisite that the tool is writes-gated and needs Xyle Connector v0.6.0+. There is a mild tension between the get-or-create behaviour and idempotentHint=false, but it is a hint-level nuance rather than a direct contradiction of a stated effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short clauses, zero padding: the create semantics and collision behaviour are front-loaded, the workflow pointers follow, and the version/gating note is last. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema tool this covers the creation semantics, collision behaviour, follow-on workflow, and access gating. The one gap is that it does not say the response yields the menu identity needed to call wp_set_menu_items next; with no output schema, that handoff detail is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'name' and 'site_id' are already documented in the schema with an example value. The description adds nothing beyond that for either parameter, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource ('Create a WordPress nav menu by name') and immediately bounds the case where the object already exists. It also names the follow-on tools (wp_set_menu_items, wp_assign_menu_location), which distinguishes it from the other wp_* menu siblings an agent sees in the list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives forward workflow context — create the menu here, then populate it with wp_set_menu_items and attach it with wp_assign_menu_location — which is exactly the sequencing an agent needs. It stops short of an explicit 'do not use this to add items or assign locations' exclusion, so it is clear context rather than a full when/when-not pair.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_create_pageAInspect

Create a NEW DRAFT Elementor page OR blog post (set post_type='post' for a blog post; pages use the canvas template, posts the theme template). Safe — never touches existing/live pages). For a real design pass sections — the native Elementor CONTAINER spec (see wp_update_page for the shape + widget catalog, and elementor_search/elementor_get for exact widget fields); otherwise it seeds a heading+text. Requires writes enabled. If a Global Brand Kit is set, reference @tokens in widget styles (style.color:'@primary', style.typographyToken:'h1') instead of hardcoding hex/fonts — call wp_get_brand_kit first. Returns the new post_id.

NameRequiredDescriptionDefault
tagsNoComma-separated tag names or IDs. Connector v0.8.0+.
titleYesPage/post title
atomicNoEditor V4 ATOMIC spec (JSON array) for sites where Editor V4 is active: [{type: heading|paragraph|image|button|div|flex|grid|tabs, …}]; tabs = {type:"tabs", tabs:[{label, children:[…]}], active:0}. XeoRank emits valid V4 JSON (e-tabs/e-tabs-menu/e-tab/e-tabs-content-area/e-tab-content, typed envelopes, ids). wp_widget_schema("e-tabs") and wp_section_recipes("v4-tabs") show the shape. Raw elements also accepted via elementor_data/elements.
blocksNoGutenberg block markup (<!-- wp:heading -->…) — creates a BLOCK page instead of Elementor; plugin transport + Connector v0.3.0+
dry_runNoBuild + round-trip validate + return a preview (warnings, size) WITHOUT creating the page (no quota used)
headingNoOptional H1 heading text (used only if no sections)
site_idYesThe WordPress site ID
subtextNoOptional intro paragraph (used only if no sections)
sectionsNoPREFERRED for designs: native Elementor CONTAINER spec — [{direction,width,children:[{widthPercent,widgets:[{type,...}]}]}]
post_typeNopage (default) | post — use 'post' to create a blog post
categoriesNoComma-separated category names or IDs, e.g. "Guides, SEO". Names that do not exist are created. Needed for a taxonomy-driven archive — a Loop Grid queries by term, so an uncategorised post never appears in one. Connector v0.8.0+.
featured_imageNoFeatured image for a post: an attachment ID, or an image URL to sideload into the media library. REQUIRED for a post to appear in a Loop Grid or Posts widget — those render the thumbnail, so a post without one shows blank. Connector v0.8.0+.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=false and readOnlyHint=false, so the description goes further by asserting 'Safe — never touches existing/live pages', noting it creates a DRAFT, stating the write-enable prerequisite, and disclosing the return value ('Returns the new post_id'). It doesn't detail quota/rate-limit behavior beyond the dry_run note, but the added context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information-dense and front-loaded with the core action and the page/post distinction. It is a long run-on with many parentheticals, but nearly every clause earns its place; only minor tightening is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with no output schema, it covers the design spec path, brand-kit integration, dry_run preview semantics, the seeded fallback, and states the return value. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so 3 is the baseline, but the description adds real meaning beyond the schema: the precedence between `sections` and the heading/subtext fallback, how @tokens replace hardcoded hex/fonts, and the requirement to call wp_get_brand_kit first. This is genuine semantic value, not restatement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a NEW DRAFT Elementor page OR blog post') and immediately disambiguates the two variants via post_type. It clearly separates itself from siblings like wp_update_page, wp_create_template, and wp_create_menu.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use each mode (post_type='post' for blog posts; pass `sections` for a real design, otherwise it seeds a heading+text) and routes the agent to wp_update_page for the container shape, elementor_search/elementor_get for widget fields, and wp_get_brand_kit first when a Brand Kit exists. Prerequisites ('Requires writes enabled') are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_create_templateAInspect

Create an Elementor THEME BUILDER template as a DRAFT: header, footer, single-post, single-page, archive, search-results, error-404, loop-item, product, product-archive (Pro required for these), or page/section (free). Build content with sections (same native CONTAINER spec + style object as wp_create_page). Optionally pass conditions (Elementor include/exclude grammar, e.g. ["include/general"] = entire site, "include/singular/front_page", "include/singular/page/123", "include/archive", "exclude/singular/page/12") and publish=true to go live immediately — otherwise review the draft first, then wp_set_template_conditions. Templates render SITE-WIDE per their conditions — always screenshot-review before publishing. Requires writes enabled + Xyle Connector v0.3.0+.

NameRequiredDescriptionDefault
titleYesTemplate title
publishNoPublish immediately after setting conditions (default false — draft-first)
site_idYesThe WordPress site ID
sectionsNoJSON array — native Elementor CONTAINER spec (same shape as wp_create_page, incl. per-widget `style`)
conditionsNoJSON array of condition strings, e.g. ["include/general"]
page_settingsNoJSON object of Elementor page settings. For a POPUP (template_type=popup, Pro), this is the open/close triggers, e.g. {"triggers":{"page_load":"yes","page_load_delay":2}} for on-load, or {"triggers":{"exit_intent":"yes"}}. To open a popup from a BUTTON instead, build a button widget with `open_popup: <popup_id>` (no page_settings needed). Elementor renders the popup JS natively — no custom script.
template_typeYesheader | footer | single-post | single-page | single | archive | search-results | error-404 | loop-item | product | product-archive | popup | page | section
elementor_dataNoRaw _elementor_data JSON (advanced alternative to sections)

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (not read-only, not destructive, open-world, non-idempotent), and the description adds meaningful behavioral context beyond them: draft-vs-publish semantics, the site-wide scope of conditions, the mandatory screenshot review, and the writes-enabled + connector-version prerequisite. It does not cover reversibility or how conditions interact on repeat runs, so not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource, then flows through content, conditions/publish, and the safety warning. Every clause carries information an agent needs; no filler or repetition of structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description is complete: it covers creation scope, template types, draft/publish behavior, condition grammar, prerequisites, and the review-before-publish warning. An agent has everything needed to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real value: it gives multiple concrete examples of the include/exclude condition grammar ('include/general' = entire site, 'include/singular/front_page', 'exclude/singular/page/12') and clarifies that sections reuse the wp_create_page CONTAINER spec.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Create) plus a concrete resource (Elementor THEME BUILDER template) with an explicit enumeration of the supported template_type values and their free/Pro status. It clearly distinguishes itself from the closely-named sibling wp_create_page by scoping to Theme Builder templates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the default draft-first workflow and the follow-up step ('review the draft first, then wp_set_template_conditions'), and names the escalation path (publish=true). It routes the agent to wp_create_page for content shape and warns that conditions govern site-wide rendering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_delete_custom_codeA
Destructive
Inspect

Delete a site-wide code snippet by NAME (exact name from wp_list_custom_code). Removes it from every page immediately. To disable a snippet without losing it, call wp_set_custom_code with the same name and status='draft' instead.

NameRequiredDescriptionDefault
nameYesExact snippet name from wp_list_custom_code
site_idYesWordPress site id

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds real context beyond that: the effect is immediate and spans every page, and the disable-instead hint implies the deletion is lossy. It stops short of stating whether the deletion is recoverable or what the response returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, tightly front-loaded: the action and identifier come first, the alternative path second. No filler and every clause adds either routing or behavioral information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent delete with no output schema, the description covers action, identifier source, blast radius, and the safer alternative. The only gap is return/confirmation behavior, which is minor given the annotations carry the safety signals.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only two simple params, so the schema already documents them. The description reinforces the exact-match requirement for 'name' and its origin in wp_list_custom_code but adds no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Delete) and resource (site-wide code snippet), plus the required identifier (exact NAME from wp_list_custom_code). It also communicates scope ('site-wide', 'every page'), clearly distinguishing it from page-level delete siblings like wp_delete_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative when deletion is not the intent: call wp_set_custom_code with the same name and status='draft' to disable without losing the snippet. It also points to wp_list_custom_code as the source of the required name, 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.

wp_delete_pageA
Destructive
Inspect

Trash a page or post (recoverable — goes to Trash). Refused for the homepage. Pass confirm=true. Writes-gated, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
confirmYesMust be true to trash
post_idYesThe page/post ID to trash
site_idYesThe WordPress site ID

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveness, non-idempotency, and open-world behavior, but the description adds important context: the action is recoverable through Trash, the homepage is refused, confirm must be true, and writes must be enabled. This materially improves the agent's understanding of side effects and preconditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and constraints in four short, information-dense sentences. Every clause earns its place by covering recoverability, refusal condition, confirmation, and gating.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive write tool with full schema coverage and annotations, the description covers the key behavioral facts: recoverable trash, homepage refusal, confirm requirement, and write gating. It could be slightly more explicit about how writes are enabled, but overall it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and all three parameters are documented in the schema. The description only repeats that confirm=true is required, adding little semantic detail beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Trash a page or post,' with the scope clarified as recoverable via Trash. It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools such as wp_set_page_status or wp_update_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides operational conditions like 'Pass confirm=true' and an exclusion ('Refused for the homepage'), but it does not say when to choose this tool versus alternatives for trashing or updating page status. Usage is implied by the deletion context rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_delete_templateA
Destructive
Inspect

Trash a template (recoverable — goes to Trash, clears its conditions first so it stops rendering). Pass confirm=true. Writes-gated, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
confirmYesMust be true to trash
site_idYesThe WordPress site ID
template_idYesThe template post ID to trash

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (which only declare destructive/idempotent/open-world flags), the description discloses that the deletion is recoverable via WordPress Trash, that template conditions are cleared as a side effect, that confirm=true is mandatory, and that writes must be enabled. This is exactly the behavioral context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense, front-loaded sentences with no filler; the recoverability and side-effect facts are in the first sentence where they matter most. The trailing 'Writes-gated, Xyle Connector v0.6.0+' is terse but earns its place as a compatibility/prerequisite note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-param destructive tool with no output schema, the description covers recoverability, side effects, the confirm gate, and write-gating prerequisites. It omits any hint of the response shape or failure modes, which keeps it just short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter (site_id, template_id, confirm) already carries a description. The description restates the confirm requirement but adds no new parameter syntax or format detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Trash a template') and immediately distinguishes the operation from a hard delete by noting it is recoverable via Trash. The note that it 'clears its conditions first so it stops rendering' further separates it from sibling templates tools like wp_set_template_status and wp_update_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear execution context: pass confirm=true, writes must be enabled, connector version requirement. It stops short of naming when to prefer an alternative (e.g. wp_set_template_status for disabling without deletion), so it is clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_disable_writesAInspect

Set a connected WordPress site READ-ONLY. After this every write tool refuses with error='writes_disabled' until wp_enable_writes is called again. Reads are unaffected. Use when the user asks to lock a site or pause edits.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses the exact failure mode of other tools (every write refuses with error='writes_disabled'), the persistence condition (until wp_enable_writes is called), and the blast radius (reads are unaffected). This is precisely the behavioral context an agent needs to reason about side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the core effect, then the state machine, then the usage trigger. No filler; each sentence conveys distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter state-toggle tool with no output schema, it covers what the tool changes, what breaks afterward, how to revert, and when to invoke it. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) with 100% schema description coverage, so the schema already documents it fully. The description adds no syntax or format guidance beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and effect ('Set a connected WordPress site READ-ONLY'), naming the resource and the resulting state. It is cleanly distinguishable from siblings, and even names the counterpart tool wp_enable_writes, so an agent knows exactly what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use: 'Use when the user asks to lock a site or pause edits.' It also names the alternative path to reverse the state (wp_enable_writes), so both the trigger and the exit route are stated rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_enable_writesAInspect

Turn ON write access for a connected WordPress site. Writes are OFF by default for newly connected sites: ask the user, then call this before the first write, or when a write tool returns error='writes_disabled'. New pages are created as drafts; edits to existing pages change them directly and are snapshotted.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it is a non-read-only, open-world, non-destructive operation. The description adds genuinely useful behavior: writes are off by default, user consent is required, and it discloses the downstream semantics of the writes it unlocks (new pages become drafts, edits are applied directly and snapshotted). It does not say whether the flag is persistent across sessions or per-site scoped, which is the main remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the action and default state, followed by the trigger condition and side-effect notes. Every clause earns its place; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter toggle with no output schema and annotations covering the safety profile, the description supplies everything needed: purpose, prerequisite consent, invocation trigger, and what happens to subsequent writes. No material gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single site_id parameter, so the schema already carries the semantics; baseline 3 applies. The description only adds that the site must be 'connected', a marginal clarification rather than new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (enable write access) for a specific object (a connected WordPress site), and is trivially distinguishable from its inverse sibling wp_disable_writes. An agent knows exactly what state change this produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggering conditions: call before the first write on a newly connected site, or reactively when a write tool returns error='writes_disabled', and requires user consent first. The when-not case (writes already enabled, or use wp_disable_writes to reverse) is implied clearly enough by the 'OFF by default' framing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_acfA
Read-only
Inspect

Read the Advanced Custom Fields (ACF) values on a page/post → {post_id, fields:{name:value}}. Use before wp_set_acf to see current field names/values. Requires the plugin transport, ACF active on the site, and Xyle Connector v0.2.3+.

NameRequiredDescriptionDefault
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
post_idYesThe page/post ID
site_idYesThe WordPress site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description goes beyond them by disclosing setup prerequisites: plugin transport, ACF active on the site, and Xyle Connector v0.2.3+. It does not discuss failure modes when ACF is inactive or how the detail flag changes results, but this is a meaningful addition over structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: the first front-loads purpose plus return shape, the second carries usage and prerequisites. No filler, and the arrow notation compresses the output contract efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned object shape, and it covers usage and prerequisites. What remains thin is behavior when ACF is absent or the post lacks fields, and the effect of detail on the returned field set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with 3 parameters, so site_id, post_id and the detail verbosity flag are already documented in the schema. The description adds only the output shape, not parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Read the Advanced Custom Fields (ACF) values on a page/post") and even sketches the return shape ({post_id, fields:{name:value}}). It is immediately distinguishable from wp_set_acf and other wp_get_* siblings by naming the exact resource domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use it "before wp_set_acf to see current field names/values," tying the read to a concrete workflow and naming the companion tool. No when-not-to-use or alternative read path is offered, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_brand_kitA
Read-only
Inspect

Get the site's Global Brand Kit (colors, fonts, type scale) AND the token ids you can reference from wp_create_page/wp_update_page styles — e.g. style.color:'@primary' or style.typographyToken:'h1'. Call this BEFORE styling pages so you reference brand tokens instead of hardcoding hex/fonts (cheaper, and edits to the kit propagate everywhere).

NameRequiredDescriptionDefault
site_idYesWordPress site id (from list_wordpress_sites)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/destructive=false/openWorld, so the safety profile is covered. The description adds real behavioral context beyond that: the kit is cheap to read, and edits to the kit propagate everywhere, which explains the downstream consequence of using tokens. It also describes the payload (colors, fonts, type scale, token ids) despite there being no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads what is returned, then the imperative guidance and inline examples. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a single trivial parameter, the description carries the return-value burden well by naming the kit contents and the token reference format. An agent has everything needed to call it correctly and use the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) and schema coverage is 100%, so the schema fully documents it, including its provenance ('from list_wordpress_sites'). The description adds no further parameter detail, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) plus the exact resource (the site's Global Brand Kit) and enumerates what it contains: colors, fonts, type scale, and referenceable token ids. The agent can immediately distinguish this from sibling getters like get_brand_profile or wp_style_keys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit timing directive — 'Call this BEFORE styling pages' — and names the downstream consumers (wp_create_page/wp_update_page styles) with concrete syntax examples. It lacks an explicit when-not or a routing comparison against the closest sibling (wp_style_keys), 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.

wp_get_pageA
Read-only
Inspect

Get one WordPress page's content as an editable node list. For Elementor pages, returns normalized nodes (headings, text, buttons, images, links) with their element ids — use these to plan edits. Read-only.

A whole page can be ~18k tokens. WORK IN TWO STEPS:

  1. outline=true → the section/widget skeleton (ids, types, short labels; no field values). Cheap. Find your target here.

  2. node_id= → only that element's subtree. Also: widget_type=icon-box (only those widgets), search=Doctor (only matching nodes), include_styles=true (each widget's current style settings, so you never have to guess Elementor keys). post_content is omitted unless include_content=true.

NameRequiredDescriptionDefault
limitNoMax nodes per response (default 120)
cursorNoNode-pagination offset from a previous response's next_cursor (responses are always complete JSON — never truncated mid-node)
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
searchNoOnly nodes whose value contains this text
node_idNoReturn only this element's subtree (id from outline or a previous read)
outlineNoReturn the element skeleton only — no field values, plus css_id / hidden_on / custom_width / link where set (enough for a navigation or UX audit without subtree reads). Start here on a big page.
post_idYesThe WordPress post/page ID (integer)
site_idYesThe WordPress site ID
self_onlyNoWith node_id: return that element ONLY, no descendants — e.g. a container's own styles (include_styles=true) without its whole subtree
breakpointNodesktop | tablet | mobile. With include_styles: each element's EFFECTIVE settings at that width (desktop merged with _tablet/_mobile overrides, visible:true/false, _overridden_keys). With outline: adds visible per row and hidden_at_breakpoint in responsive_summary. Elementor defaults: tablet ≤1024, mobile ≤767.
path_prefixNoOnly nodes under this outline path (e.g. '2' = third top-level section, '2,1') — fetch one section at a time on big pages
widget_typeNoOnly nodes of this widget type, e.g. 'icon-box'
include_stylesNoInclude each widget's current style settings
include_contentNoInclude the full rendered post_content (large; off by default)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so safety is covered. The description adds real value beyond that: the ~18k-token size warning, the two-step strategy to avoid large reads, and the note that post_content is omitted unless requested.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and then uses a clean numbered two-step block plus a compact 'Also:' list. Efficient given 14 parameters, with only minor duplication of the schema's own filter explanations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of explaining return shape (node list, skeleton vs. subtree) and steering token-conscious usage. Covers the essentials for a 14-param tool, though pagination (cursor/limit) is left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions are themselves rich (outline, node_id, breakpoint, self_only, path_prefix are all documented there). The description reinforces the outline/node_id workflow but largely restates what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one WordPress page's content as an editable node list') and clarifies the Elementor-page case. An agent can distinguish this reader from siblings like wp_list_pages or elementor_get without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit two-step workflow (outline first, then node_id) plus targeted filters (widget_type, search, include_styles), which is strong when-to-use guidance. It stops short of naming which sibling to pick for a page listing vs. a page read, so no explicit alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_get_seo_metaA
Read-only
Inspect

Read a page's CURRENT SEO title, meta description, effective robots directive and canonical URL as the active SEO plugin (Yoast/RankMath/AIOSEO, or the Connector itself) stores them — no view-source needed. Use it to carry SEO fields from a source page to its copy, and to confirm a noindex actually landed before publishing. robots_explicit=false means the provider default applies. Omit post_id for the homepage. Requires Connector >= 0.9.17.

NameRequiredDescriptionDefault
post_idNoPage/post ID. Omit for the homepage (static front page).
site_idYesThe WordPress site ID

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the bar is lower. The description still adds real value: it explains that values are read as the active provider stores them, defines robots_explicit=false as 'provider default applies', and states a Connector version prerequisite — none of which the annotations or schema convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the read operation and returned fields, then use cases, then a semantics note and a prerequisite. Dense but each sentence earns its place; the homepage-omission clause mildly duplicates the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining returns and does so by enumerating the four fields plus the meaning of robots_explicit. Combined with annotations covering safety and the site_id/post_id contract, an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description restates the homepage/post_id omission rule already in the schema and adds no new parameter detail (its robots_explicit note refers to a returned field, not an input). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb (read) plus the exact resources returned — SEO title, meta description, robots directive and canonical URL — and names the plugin contexts (Yoast/RankMath/AIOSEO) it reads from. An agent can distinguish this from the sibling wp_set_seo_meta without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives two concrete use cases: carrying SEO fields from a source page to its copy, and confirming a noindex landed before publishing. This sets clear context and implies the read-before-write pairing with wp_set_seo_meta, though it never names that sibling as the alternative explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_list_custom_codeA
Read-only
Inspect

List the site-wide code snippets this site injects — name, location, priority, status and code size. Call this BEFORE wp_set_custom_code to find the exact existing name (re-using it updates in place instead of adding a second one), and AFTER a write that came back rendered=false. Also reports diagnostics about the Elementor install (version, Pro, registered post types).

NameRequiredDescriptionDefault
site_idYesWordPress site id

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the duplicate-avoidance consequence of name re-use, the rendered=false failure-recovery workflow, and the side diagnostic payload about the Elementor install (version, Pro, post types) that an agent would not expect from the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with what is returned, then when to call it, then the secondary diagnostic output. No filler; every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe returns, and it does so concretely plus discloses an unexpected Elementor diagnostics block. The before/after workflow guidance closes the remaining gap for an agent deciding whether to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) with 100% schema description coverage, so the schema already carries the meaning. The description adds nothing about the identifier format or scoping, which is the baseline 3 for a fully documented single-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the site-wide code snippets this site injects') and enumerates the returned fields (name, location, priority, status, code size), which no sibling list tool provides. It is immediately distinguishable from wp_list_pages, wp_list_templates, and wp_list_media.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two explicit trigger conditions: call BEFORE wp_set_custom_code to discover the exact existing name (re-use updates in place rather than duplicating), and AFTER a write that returned rendered=false. Names the sibling tool and the reason for sequencing, 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.

wp_list_mediaA
Read-only
Inspect

List recent images in the site's WordPress media library so you can REUSE an existing image (returns id, url, title, alt, dimensions) instead of re-uploading. Plugin-connected sites need Xyle Connector v0.2.2+.

NameRequiredDescriptionDefault
limitNoMax images to return (1-100, default 30)
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
site_idYesThe WordPress site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the return field set and a version prerequisite for plugin-connected sites (Xyle Connector v0.2.2+). It does not describe pagination or failure behavior, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the reuse rationale and return shape front-loaded, followed by the compatibility prerequisite. No filler and nothing misplaced.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields and notes the verbosity option, which is enough for an agent to call it confidently. Minor gaps remain around ordering/count semantics of the 'recent' list, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (site_id, limit, detail) are fully documented in the schema. The description adds no parameter syntax or format meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List), resource (recent images in the site's WordPress media library), and the underlying goal (reuse an existing image instead of re-uploading). It even enumerates return fields (id, url, title, alt, dimensions), so an agent can distinguish it from wp_upload_image without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear intent-based guidance: use this to REUSE an existing image instead of re-uploading, which implicitly routes the agent away from wp_upload_image. It names no explicit alternative tool or exclusion, so it falls short of the top tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_list_menu_locationsA
Read-only
Inspect

List the active theme's registered menu locations (e.g. primary, footer) and which menu is assigned to each. Read-only. Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, and the description's 'Read-only' merely repeats them. The added value is the scope of returned data, but it does not disclose permissions, response structure, or other behavioral details beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with the core operation front-loaded. The version note and read-only marker are brief and do not bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only, single-parameter list tool with no output schema, the description says enough about what is returned. Annotations already cover safety and openness, so no critical context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single site_id parameter is already documented. The description adds no additional parameter meaning, which is appropriate for a one-parameter tool whose schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: list the active theme's registered menu locations and the menu assigned to each. It is clearly distinguishable from sibling tools like wp_list_menus because it focuses on theme locations and assignments rather than the menus themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool versus alternatives such as wp_list_menus or wp_assign_menu_location. It gives no prerequisites, exclusions, or alternative-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_list_menusA
Read-only
Inspect

List WordPress nav menus (with their items) plus the theme's registered menu locations. Read-only. Plugin transport, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so 'Read-only' in the description is largely redundant. The description does add genuinely new context beyond the annotations: it requires plugin transport and Xyle Connector v0.6.0+, which tells the agent a compatibility precondition exists, but it omits what happens when that requirement is unmet (error vs empty result).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the purpose front-loaded, followed by the safety posture and the runtime prerequisite. Nothing is padded and each sentence carries a distinct role, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only listing tool with no output schema, the description is nearly sufficient: it names what is returned (menus with their items plus theme menu locations) so the agent can anticipate the payload. It stops short of covering failure/availability behavior when the plugin or required version is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) and schema description coverage is 100%, so the schema already carries the semantics; the baseline is 3. The description adds no constraints, format, or scoping detail about site_id beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List WordPress nav menus') and even enumerates the contents returned (menus with items plus the theme's registered menu locations). However, it never names or distinguishes itself from close siblings such as wp_list_menu_locations or wp_list_pages, so an agent must infer the boundary from the schema alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the agent can infer this is the tool for enumerating nav menus, and 'Read-only' signals a safe inspection call. There is no explicit when-to-use, no exclusion, and no pointer to the sibling with which it overlaps (wp_list_menu_locations), leaving the agent to guess which listing tool to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_list_pagesA
Read-only
Inspect

List pages, posts, or Elementor templates on a connected WordPress site. Returns id, title, slug, type, status, modified for each. When you already know which page you want — and you usually do, because the user gave you its URL — pass search instead of listing everything and scanning: it accepts a full URL, a slug or part of a title, and returns only matches. Listing a 150-page site to find one post_id is several very large responses to learn one integer.

NameRequiredDescriptionDefault
limitNoMax results (1-500, default 100)
detailNoOutput verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result.
searchNoOnly pages whose URL, slug or title contains this. Paste the page URL directly — it is reduced to its slug. Response reports total_before_filter so an empty result is distinguishable from an ignored filter.
site_idYesThe WordPress site ID
post_typeNopage | post | elementor_library | elementor_component (Editor V4 Components — the documents e-component widgets point at; connector ≥ 0.9.18) (default: page)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, non-destructive, and open-world behavior, so the bar is lower. The description still adds useful operational context: `search` accepts a full URL/slug/partial title, and the `detail` verbosity affects response size, which explains the payload-volume risk of unfiltered listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then the routing heuristic, then the rationale. The final sentence ('several very large responses to learn one integer') is persuasive rather than strictly informational, but it is short and reinforces the guidance, so it mostly earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the returned fields (id, title, slug, type, status, modified), covers the search/verbosity parameters, and gives selection guidance. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented, including `search`'s URL-to-slug reduction. The description reinforces the `search` semantics but adds no format or syntax detail beyond the schema, so the baseline 3 for high coverage applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and the exact resources (pages, posts, Elementor templates) on a connected WordPress site, and names the return fields. It also distinguishes itself from the get-by-id path by steering agents to `search` when the target is known, so an agent can tell it apart from wp_get_page without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing guidance: use `search` when the target page is already known (typical, since the user supplied a URL), and use the full listing only otherwise. It even names the alternative cost model ('several very large responses to learn one integer'), 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.

wp_list_snapshotsA
Read-only
Inspect

List a page's pre-write SNAPSHOTS — the undo history. XeoRank captures the page's before-state automatically ahead of every write (wp_update_page, wp_patch_page, wp_bulk_replace, wp_replace_section, …), newest first, up to 20 per page. Each row has a revision_id, the tool whose write it preceded, its kind (elementor = _elementor_data, post_content = block/classic markup) and whether it is restorable. Use before wp_restore_snapshot, or to answer 'what did you change?'.

NameRequiredDescriptionDefault
post_idYesPage/post ID
site_idYesThe WordPress site ID

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/destructive annotations, the description discloses the capture mechanism (automatic before-state ahead of every listed write tool), ordering (newest first), retention cap (up to 20 per page), and row payload (revision_id, preceding tool, kind mapping, restorable flag). This is substantive behavior an agent cannot infer from annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded: identity/update-history first, then capture semantics, then usage. Every clause (tool list, kind mapping, retention limit) conveys information the agent needs; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by enumerating the return row fields and their meaning (kind = _elementor_data vs post_content markup, restorable flag). Combined with the write-tool trigger list, an agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both required params (site_id, post_id), so the schema already carries the parameter documentation. The description only implies page scoping via 'a page's' and adds no format or ID-sourcing detail. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) plus resource (a page's pre-write SNAPSHOTS) and immediately glosses the concept as 'the undo history'. This clearly separates it from siblings like list_snapshots and get_snapshot_diff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes usage: 'Use before wp_restore_snapshot, or to answer "what did you change?"'. It names the downstream tool that consumes this output and gives a concrete intent, so the agent knows both when and why to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_list_templatesA
Read-only
Inspect

List Elementor library / Theme Builder templates on a connected WordPress site → id, title, template_type (header/footer/single/archive/…), display conditions, status. Read-only. Needs plugin transport + Xyle Connector v0.3.0+.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds meaningful behavioral context by naming the required connector version and plugin transport, though it repeats 'Read-only' and does not cover pagination or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences with zero waste. The primary action and returned fields come first, followed by safety and prerequisite notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with rich annotations and a fully covered single-parameter schema, the description is complete. It enumerates returned fields (valuable because no output schema exists) and states the connector prerequisite, leaving no critical gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single site_id parameter is fully documented in the schema. The description adds no parameter-specific detail beyond the implicit 'connected WordPress site' context, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('Elementor library / Theme Builder templates on a connected WordPress site'), and enumerates the returned fields (id, title, template_type, display conditions, status). This distinguishes it from sibling list tools such as wp_list_pages, wp_list_themes, and wp_list_media.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to choose this tool over alternatives like wp_list_pages or elementor_search. It only supplies a prerequisite ('Needs plugin transport + Xyle Connector v0.3.0+'), which is useful but does not route the agent between sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_list_themesA
Read-only
Inspect

List installed WordPress themes (name, status, version) via Xyle's SSH.

NameRequiredDescriptionDefault
site_idYesThe WordPress site ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, so safety is covered. The description adds a genuine behavioral detail beyond them: the data is fetched via Xyle's SSH transport, plus the shape of what is returned. It stops short of auth requirements, rate limits, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the verb and resource lead and the returned fields are tacked on efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only list tool with no output schema, naming the returned fields (name, status, version) covers most of what an agent needs to know about the response. Only the empty-state or error behavior is unaddressed, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) and schema description coverage is 100%, so the schema fully documents it. The description adds no syntax or format detail beyond that, which matches the baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'List installed WordPress themes', with the returned fields (name, status, version) called out. It is easily separable from mutation siblings like wp_set_theme or wp_list_pages, though it never explicitly names a sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb: an agent can infer this is the read-only inventory call for themes. There is no explicit when-to-use guidance and no pointer to wp_set_theme as the alternative for changing a theme.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_patch_pageAInspect

Surgically edit an Elementor page by element id — send ONLY the elements you're changing. Far cheaper than wp_update_page, which rewrites the WHOLE page. Preserves layout/ids; round-trip validated; write-gated. dry_run=true previews a real before/after diff without writing.

Two kinds of op: CONTENT: {node_id, field, new_value} — field comes from wp_get_page nodes. new_value may be a string OR an object, e.g. {"unit":"px","size":18}. STYLE: {node_id, style:{color, bg, radius, padding, margin, border, shadow, align}} — Xyle translates these into the widget's real Elementor keys, so you never guess. Call wp_style_keys(widget_type) first to see what a widget supports. Works on SECTION/CONTAINER nodes too (node_id of a container from wp_get_page outline): style:{bg, padding, radius, shadow} colors/pads the band with native container keys.

EFFECT CHECK: after applying, the response re-reads the stored page and marks each change effective:true/false (with effective_count / ineffective_count). Read those, not just applied:true — effective:false means the write persisted but the widget ignored that key; the stored value shows what actually landed. Fix by calling wp_widget_controls for the element's real key, then re-patch. (Verifies stored data, not final render — confirm visuals with render_screenshot.)

GUTENBERG / BLOCK pages (wp_get_page builder != elementor, ids like b0, b1.2): ops are {node_id, field:'attrs.<dotted.key>', new_value} to set one block attribute (e.g. attrs.data.headline on an ACF block, attrs.level on a heading; null deletes it) or {node_id, field:'html', new_value} to replace a block's inner markup. style ops are Elementor-only and are refused there. A parent's attrs and a child's html can change in one call; an html op on a parent plus any edit to its child is refused as a conflict.

Use wp_update_page only for full redesigns / adding new sections.

NameRequiredDescriptionDefault
opsYesJSON array: [{node_id, field, new_value}] and/or [{node_id, style:{...}}]. Editor V4 atomic elements: use the prop name (title, paragraph, text, tag, link, image) with a bare value — XeoRank envelopes it ({$$type, value}); text/content aliases resolve. TABS: {node_id: <e-tabs id>, tabs: {labels: [...], active: 0, order: [...]}} relabels, adds, removes and reorders tabs keeping each panel's content. Every patch also types V4 text the Elementor editor showed blank; ops=[] does only that.
dry_runNoPreview the diff without writing (propose). Default false.
post_idYesThe page/post ID
site_idYesThe WordPress site ID

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: write-gated execution, dry_run before/after diff, and a detailed EFFECT CHECK contract explaining that applied:true is insufficient and effective:false means the widget ignored the key with the stored value showing what landed. It also discloses the verification boundary ('verifies stored data, not final render') and points to render_screenshot. This is exactly the behavioral context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long, but structurally disciplined — lead pitch first, then per-op-type sections, then the effect-check caveat, then the sibling fallback. Dense compound sentences pack multiple facts; a few parentheticals are tightly compressed, but for a multi-builder patch tool almost every line carries operational weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe return behavior — and it does, explaining the effective:true/false flags, effective_count/ineffective_count, and the stored value, plus the note that ops=[] performs a V4 text type-repair pass. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, but the description adds substantial meaning: it enumerates the two op shapes (CONTENT {node_id, field, new_value}, STYLE {node_id, style:{...}}), the valid field vocabulary, object new_value forms like {"unit":"px","size":18}, the Gutenberg 'attrs.<dotted.key>' convention with null-delete semantics, and the tabs relabel/order form. Far above the baseline 3 for full-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'surgically edit an Elementor page by element id' — and explicitly contrasts itself with wp_update_page ('which rewrites the WHOLE page'). An agent can distinguish this from the many wp_* 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use: send only the elements you're changing, use dry_run to preview, call wp_style_keys first for widget support. It also names the alternative and its condition ('Use wp_update_page only for full redesigns / adding new sections') and lists refusal conditions (style ops on Gutenberg, html op on a parent plus child edit).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_patch_templateAInspect

Edit a template (header/footer/…) IN PLACE by element id — change one value (spacing, a color, hide-on-mobile) WITHOUT rebuilding it. Same op grammar as wp_patch_page: ops = JSON array of {node_id, field, new_value} or {node_id, style:{…}} (classic elements; style Editor V4 elements with wp_v4_style). Get the template id from wp_list_templates, then read its node ids with wp_get_page(post_id=template_id). dry_run previews the diff. Writes-gated, plugin transport, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
opsYesJSON array of {node_id, field, new_value} or {node_id, style:{…}}. Editor V4 atomic: prop names (title, paragraph, text, tag, link, image) with bare values are enveloped automatically; {node_id: <e-tabs id>, tabs: {labels, active, order}} rewrites a tabs element keeping panel content. Every patch also types V4 text the Elementor editor showed blank; ops=[] does only that.
dry_runNoPreview the diff without writing
site_idYesThe WordPress site ID
template_idYesThe template post ID (from wp_list_templates)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare mutation and non-idempotence, and the description layers on real operational context: dry_run previews a diff, writes are gated (must be enabled), and a plugin transport plus minimum Xyle Connector version is required. It also discloses that Type V4 text shown blank gets typed as a side effect and that ops=[] performs only that fix.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core in-place edit claim, then layers grammar, workflow, preview, and gating in a tight sequence; no sentence is filler. The trailing transport/version clause is slightly incidental but legitimately useful for callers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent mutation with no output schema, the definition covers what to feed it, how to obtain the ids, how to preview safely, and the write gating. Return-shape detail is absent, but with dry_run described and no output schema declared, the remaining gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is already 3, and the description adds cross-references not in the schema (wp_v4_style for Editor V4 styling, wp_patch_page for the op grammar) plus dry_run semantics. It still leaves the exact op envelope syntax to the schema rather than restating it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Edit a template ... IN PLACE by element id') and pins the scope to surgical single-value changes rather than a rebuild. The reference to 'Same op grammar as wp_patch_page' cleanly separates it from wp_update_template (full rewrite) and from its own sibling page patcher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear selection rule ('change one value ... WITHOUT rebuilding it') and a concrete two-step prerequisite workflow (get id from wp_list_templates, read node ids via wp_get_page). It does not explicitly name wp_update_template as the alternative for full rewrites, so the contrast 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.

wp_regenerate_cssAInspect

Clear Elementor's CSS cache and bump the versioned per-post CSS files. Every write path already does this automatically, so reach for it only when a change you can confirm landed in the data is still not visible — a stale post-.css being served from a CDN or host page cache. It does NOT purge caches outside WordPress; if it does not help, the cache is at the CDN.

NameRequiredDescriptionDefault
site_idYesWordPress site id

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly/non-idempotent/non-destructive, so the safety bar is lower. The description still adds non-obvious behavior: every write path performs this automatically, so the call is normally redundant, and it explicitly bounds its scope to WordPress-internal caches. That prevents both unnecessary calls and false expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler: the action is front-loaded, then the trigger and the scope limitation follow. Every clause earns its place and nothing is repeated from the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A single-parameter, no-output-schema cache-buster needs exactly the trigger, the failure signature, and the scope boundary — all present. Nothing an agent needs in order to decide whether to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (site_id) and schema description coverage is 100%, so the schema fully documents it. The description adds no syntax or format meaning beyond that, which is the expected baseline when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Clear Elementor's CSS cache and bump the versioned per-post CSS files') and is unmistakably distinct from the many wp_* write/structure siblings. An agent can tell exactly what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('only when a change you can confirm landed in the data is still not visible'), names the concrete failure mode to look for (stale post-<id>.css from CDN/host cache), and states the negative case ('does NOT purge caches outside WordPress; if it does not help, the cache is at the CDN'). This is a textbook when/when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_replace_sectionAInspect

Replace, insert, or delete ONE top-level section without rewriting the whole page — SAFER than wp_update_page for large pages (every other section is preserved exactly, so you can't accidentally drop content). Target the section by index (0-based, from wp_get_page outline) or top-level node_id. sections is the same native spec wp_update_page takes. op: replace (default) | insert_before | insert_after | delete | append. dry_run=true previews the section counts. Round-trip validated, write-gated.

NameRequiredDescriptionDefault
opNoreplace (default) | insert_before | insert_after | delete | append
indexNo0-based top-level section index (or use node_id)
atomicNoEditor V4 ATOMIC spec (JSON array) for sites where Editor V4 is active: [{type: heading|paragraph|image|button|div|flex|grid|tabs, …}]; tabs = {type:"tabs", tabs:[{label, children:[…]}], active:0}. XeoRank emits valid V4 JSON (e-tabs/e-tabs-menu/e-tab/e-tabs-content-area/e-tab-content, typed envelopes, ids). wp_widget_schema("e-tabs") and wp_section_recipes("v4-tabs") show the shape. Raw elements also accepted via elementor_data/elements.
dry_runNoPreview section counts without writing. Default false.
node_idNoA top-level element id from wp_get_page outline (or use index)
post_idYesThe page/post ID
site_idYesThe WordPress site ID
elementsNoRAW top-level element JSON, spliced in VERBATIM — use this for Editor V4 Atomic (e-flexbox, e-div-block, e-heading, ...). The `sections` spec below always emits the classic CONTAINER model and cannot express atomic at all, so appending atomic through it silently downgrades it. Verbatim also means you can assemble a large page one section at a time instead of resending the whole thing.
sectionsNoJSON array of native section objects (required unless op=delete)
allow_widget_lossNoop=replace on a `sections` spec: required (true) if the existing section has a widget type the spec builder cannot recreate (409 would_destroy_unsupported_widgets names them first, without this). Not needed for `elements` (verbatim) -- that path never runs this guard, since you are supplying the full replacement yourself.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give the coarse safety flags (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true); the description adds substantial behavior beyond them — other sections are preserved exactly, verbatim splicing semantics for elements, the 409 would_destroy_unsupported_widgets guard and the allow_widget_loss bypass, 'round-trip validated, write-gated', and what dry_run actually previews. This is well past the lower bar set 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the safety rationale before any parameter talk, and every sentence carries new information (op list, targeting, preview, guards). It is dense and dash-heavy for a 10-parameter tool, so it is at the upper end of reasonable rather than spare.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, write-gated mutation tool with no output schema, the description covers targeting, op semantics, the destructive-widget guard, escaping hatches, and preview behavior. It never describes what a successful (non-dry-run) call returns, which is the one remaining gap given there is no output schema to lean on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3; the description still adds meaning the schema does not, notably that index is 0-based and sourced from the wp_get_page outline, that sections is the same native spec wp_update_page takes, and the semantic distinction between verbatim elements and the container-model sections spec. It does not explain the append op's interaction with index/node_id, which keeps it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb set (replace/insert/delete) on a precise resource (ONE top-level section) and immediately scopes it against the whole-page alternative wp_update_page. An agent can tell this apart from wp_update_page, wp_patch_page, and wp_bulk_replace without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit selection rule ('SAFER than wp_update_page for large pages'), names the context in which it applies (target by index from wp_get_page outline or node_id), and includes a when-not caveat ('sections ... cannot express atomic at all') with the correct alternative path (elements). dry_run is framed as the preview step. This is routing-level guidance, not just context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_replicate_nodeA
Destructive
Inspect

Duplicate an element and its whole subtree N times as siblings. THE way to build a row of cards, a pricing grid, a team list, a logo strip. Build ONE to spec, screenshot it, then replicate and swap only the content. Hand-authoring six cards produces six slightly different cards — each is another chance to typo a hex or miss a radius, and nothing holds them together afterwards. A verified source copied six times cannot drift. Every id is re-issued (elements AND repeater item _ids), because Elementor keys per-element CSS off them: duplicated ids leak styling between copies and make editing one silently change another. Response returns id_maps (original id -> new id per copy) so you can patch a specific copy's insides without re-reading the page.

NameRequiredDescriptionDefault
countYesHow many copies to add after the source, 1-50. A 3-up row from one built card = count 2.
dry_runNoPreview without writing.
node_idYesElement id to duplicate (from wp_get_page outline). Usually the card CONTAINER, not a widget inside it.
post_idYesPage/post numeric id
site_idYesWordPress site id
overridesNoPer-copy content, keyed by the ORIGINAL descendant id: [{"kick1":{"title":"Reliable"}},{"kick1":{"title":"Secure"}}]. Vary content only — styling should stay identical by construction.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructive/non-idempotent already declared), it discloses a real behavioral trait: every id is re-issued, including repeater item _ids, because Elementor keys CSS per-element id, so duplicated ids would leak styling. It also describes the return payload (id_maps) and notes the dry_run preview, giving the agent operational context the annotations do not.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb+resource, then the workflow, then the id rationale, then the return value — a sensible ordering. It is verbose in the middle ('each is another chance to typo a hex or miss a radius') and the marketing cadence costs a little, but each sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter destructive tool with no output schema, this covers everything an agent needs: what it does, when to use it, the id-collision behavior, and the return shape (id_maps). Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds meaning on top by explaining that node_id is usually the card CONTAINER rather than a widget inside it, and by showing how id_maps let you patch a specific copy's insides via overrides without re-reading the page.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with scope: 'Duplicate an element and its whole subtree N times as siblings.' It distinguishes itself from the many page-level siblings (wp_copy_page, wp_clone_page, wp_replace_section) by making clear it operates on a single element/subtree, not a whole page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames when to use it ('THE way to build a row of cards, a pricing grid...') and the recommended workflow (build one, screenshot, replicate, swap only content). It also articulates the alternative it replaces (hand-authoring six cards) and why that fails, which is the strongest form of usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_restore_snapshotA
Destructive
Inspect

ROLLBACK a page to a captured pre-write snapshot (from wp_list_snapshots). Writes back whichever store the snapshot holds — Elementor data, or post_content for block/classic pages (plugin transport only). The page's current state is snapshotted first, so a restore can itself be undone. ALWAYS run dry_run=true first: it reports the kind, size and capture time without touching the site; then dry_run=false to write. Refuses with 'not_restorable' when the snapshot was skipped (page too large / nothing before) and returns no_op when the page already matches.

NameRequiredDescriptionDefault
dry_runNoPreview what would be written without writing (default false; run true first)
post_idYesPage/post ID
site_idYesThe WordPress site ID
revision_idYesSnapshot revision_id from wp_list_snapshots

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, but the description adds substantial context beyond them: the current state is snapshotted first, making the restore itself reversible; the tool writes back to whichever store the snapshot holds (Elementor data vs post_content); and it returns specific refusal/no-op outcomes. This is the kind of undo/implication detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action verb and resource, then layered with the write target, safety behavior, required workflow, and failure modes in dense, non-redundant sentences. Every clause carries distinct operational information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is no output schema, the description explicitly covers return semantics ('not_restorable', 'no_op') and what the dry run reports (kind, size, capture time). Combined with the mandatory dry-run-first guidance, an agent has everything needed to invoke this correctly and safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters and the baseline would be 3. The description still adds meaning beyond the schema by mandating the dry_run ordering discipline and confirming revision_id's origin in wp_list_snapshots, which is genuine workflow value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource (ROLLBACK a page to a captured pre-write snapshot) and names the sibling that produces the input (wp_list_snapshots). An agent can immediately distinguish this restore/write operation from read-only siblings like wp_list_snapshots, get_snapshot_diff, and wp_get_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit operating procedure ('ALWAYS run dry_run=true first... then dry_run=false to write') and names the prerequisite source (wp_list_snapshots). It also states when the call fails ('not_restorable' for skipped snapshots) and when it's a no-op, so an agent knows both the happy path and the guard conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_section_recipesA
Read-only
Inspect

Design suggestions: intent → a paste-ready section spec for wp_create_page / wp_replace_section (hero with background image + overlay, curved/wave shape divider between sections, split hero, stats band, CTA band, feature cards, FAQ…). Editor V4 atomic recipes too: 'v4-tabs' (industry tabs with nested blocks), 'v4-hero' — they return an atomic spec. Call with no intent to list all patterns. Read-only, no site needed.

NameRequiredDescriptionDefault
intentNoWhat you're building, e.g. 'hero with curved bottom' or 'stats band'. Omit to list all.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the description's 'Read-only, no site needed' is confirmatory rather than new. It does add non-annotation behavior: an omitted intent returns the full pattern list, and v4 recipes return an `atomic` spec rather than a plain section spec.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and downstream consumer are front-loaded in the first clause, and the recipe list is dense but scannable. The trailing parenthetical with an ellipsis and the abbreviation-heavy 'Editor V4 atomic recipes too' fragment add slight clutter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so adequately by stating it yields a paste-ready section spec and, for v4 recipes, an `atomic` spec. Read-only and no-site-required are stated; only the exact return shape and whether recipes are paginated remain unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one optional parameter, so the schema already documents `intent` fully. The description adds example values ('hero with curved bottom', 'stats band') and the omit-to-list-all fallback, which is useful but marginal over the schema's own description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource ('Design suggestions: intent → a paste-ready section spec') and enumerates the actual recipe vocabulary (hero with overlay, wave divider, stats band, v4-tabs, v4-hero). An agent can distinguish this from the wp_* mutation siblings it feeds, since it explicitly names wp_create_page / wp_replace_section as downstream consumers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage rule: 'Call with no intent to list all patterns', and states 'Read-only, no site needed', which tells the agent it can invoke this before a site context exists. It does not, however, differentiate itself from nearby design-oriented siblings such as design_recommend, design_search, or assist_design_lint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_acfAInspect

Set Advanced Custom Fields (ACF) values on a page/post — populate ACF-driven templates. Pass fields as a JSON object of {field_name: value}, e.g. {"hero_title":"Welcome","price":"99"}. Field names must be the ACF field NAME (lowercase_with_underscores). Requires writes enabled, the plugin transport, ACF active, and Xyle Connector v0.2.3+.

NameRequiredDescriptionDefault
fieldsYesJSON object of {field_name: value}, e.g. {"hero_title":"Welcome"}
post_idYesThe page/post ID
site_idYesThe WordPress site ID

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile, but the description adds important operational prerequisites and the required ACF field naming convention. It does not explain overwrite/merge behavior, but it meaningfully extends the structured metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then fields format, then naming constraints, then prerequisites. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with rich annotations and full schema coverage, the description supplies prerequisites and field-format guidance. It omits whether unspecified ACF fields are left untouched or how existing values are handled, but it is otherwise complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds useful meaning by requiring ACF field NAME format (lowercase_with_underscores) and giving a concrete JSON example, which clarifies how the fields parameter must be formed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: set ACF values on a page/post. It also explains the intended outcome, populating ACF-driven templates, making it clearly distinguishable from getter siblings like wp_get_acf.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context and prerequisites: writes enabled, plugin transport, ACF active, and Xyle Connector v0.2.3+. It does not explicitly name when to use this over alternatives like wp_update_page or wp_patch_page, so it falls short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_brand_kitA
Destructive
Inspect

Author/replace the Global Brand Kit and apply the FULL Elementor Theme Style (the active kit) — not just colors: it also writes h1–h6 + body + link + button + form-field + image + layout controls, so the WHOLE site renders on-brand (~130+ kit controls from a compact token set). CHANGES EVERY PAGE — pass confirm=true to apply, or dry_run=true to preview the computed Elementor settings without writing. Plugin transport + Xyle Connector v0.4.0+ required. brand_kit shape: {colors:{primary,secondary,accent,text,bg,border, ...extra named colors}, typography:{heading:{family,weight}, body:{family,weight}, scale:{h1:{size,sizeTablet,sizeMobile,weight,lineHeight,letterSpacing,wordSpacing,unit}, ... , body, small}, links:{color,hover}}, UNITS: size in px; lineHeight unitless-em (1.1); letterSpacing |v|<0.25 reads as em, larger as px (force with letterSpacingUnit:'px'|'em'); wordSpacing always px. buttons:{radius, padding:{y,x}, bg, text, hover, typography:{size,weight,letterSpacing}}, forms:{labelColor,fieldText,fieldBg,border,focus,radius}, images:{radius,opacity}, layout:{containerWidth,contentWidth,widgetSpacing}}. Most fields are OPTIONAL — headings/body/links/buttons/forms are DERIVED from the core palette when omitted, so even a colors+scale kit themes the whole site. COLORS: primary/secondary/accent/text map to Elementor's 4 SYSTEM colors; bg/border AND ANY OTHER named color you add (e.g. primary_hover, primary_active, success, warning, error, info, surface_sunken) each become an Elementor CUSTOM global color shown in Site Settings → Global Colors. Pass the user's FULL palette — extra brand tokens ARE applied, not dropped. On an ESTABLISHED site that already has a customized kit, the API returns error='existing_kit_conflict' with the current colors/fonts — that's the double-ask: show the user, and only then re-call with override_existing_kit=true. New/empty sites apply on confirm alone.

NameRequiredDescriptionDefault
scopeNo'full' (default: Global Colors/Fonts + derived Theme Style controls for h1–h6, body, links, buttons, forms) or 'tokens' (ONLY Global Colors/Fonts/type scale — the narrow blast radius for a palette fix on a live site)
confirmNoMust be true to apply — guards a site-wide change
dry_runNoReturn the computed Elementor kit settings without writing
site_idYesWordPress site id
brand_kitYesBrand kit token object. colors: the 6 named slots PLUS any extra named colors (they become custom global colors). typography + buttons.
override_existing_kitNoSecond confirmation to overwrite an EXISTING customized kit (established sites only). Only set after showing the user the current kit from the existing_kit_conflict response.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far exceeds the annotations (destructiveHint/openWorldHint). It discloses that the change affects EVERY PAGE, that the plugin transport and Xyle Connector v0.4.0+ are required, the 'existing_kit_conflict' error and the double-ask recovery with override_existing_kit, and that derived controls are computed when core fields are omitted. This is exactly the extra context annotations can't carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the critical 'CHANGES EVERY PAGE' warning and confirm/dry_run flow, and most sentences earn their place for such a complex tool. However it collapses into one dense paragraph wall, making the unit rules and error handling harder to scan than a lightly structured version would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-param, nested, destructive, open-world tool with no output schema, the description is complete: it covers the write guard, preview mode, prerequisites, error/recovery path, token shape, and unit conventions. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Coverage is nominally 100%, but the brand_kit nested object exposes no properties in the schema, so the description carries the full burden — enumerating colors/typography/scale/links/buttons/forms/images/layout, naming units (px, unitless-em lineHeight, the |v|<0.25 letterSpacing heuristic, always-px wordSpacing), and clarifying that extra named colors become custom global colors. This adds substantial meaning beyond structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Author/replace the Global Brand Kit and apply the FULL Elementor Theme Style') and immediately scopes what makes it distinct — not just colors, but the whole Theme Style control set. An agent understands the site-wide blast radius without opening the schema. Although it doesn't name the sibling store_brand_kit, the tool's purpose and reach are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational routing: pass confirm=true to apply or dry_run=true to preview, and only set override_existing_kit=true after a double-ask. The scope param documents when to choose 'tokens' (narrow palette fix on a live site) vs 'full'. It stops short of explicitly contrasting with the sibling wp_apply_style / store_brand_kit, so no hard exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_custom_codeA
Destructive
Inspect

Inject site-wide CSS and/or JavaScript on every page. ONE snippet carries both: put CSS in a block and JS in a block in the same code body. Use this for anything the brand kit's design tokens cannot express — backdrop-filter, clip-path, layered shadows, @keyframes animation, scroll/sticky behaviour, analytics and third-party embeds. name is the IDEMPOTENCY KEY: re-pushing the same name UPDATES that snippet, so a re-run cannot stack duplicates that all inject at once. CHANGES EVERY PAGE — pass confirm=true. READ rendered IN THE RESPONSE, NOT THE STATUS CODE: the connector fetches the front page and reports whether the code actually reached the HTML, so a snippet that saved but never rendered comes back rendered=false with a hint instead of looking like success. The XeoRank Connector injects these itself on wp_head / wp_body_open / wp_footer, so it needs NO Elementor Pro and works on any theme — but it also means the snippets live in XeoRank, not in Elementor's Custom Code UI. Requires Connector v0.9.2+. CHOOSING THE RIGHT HOME: this renders on the frontend, but CSS that must show inside the Elementor editor CANVAS belongs in wp_set_brand_kit(custom_css); CSS scoped to one element belongs in wp_patch_page(style.custom_css). Prefer brand-kit TOKENS over CSS whenever a token can express it — tokens stay editable in the UI, CSS does not.

NameRequiredDescriptionDefault
codeYesRaw markup to inject. May contain <style> and/or <script> blocks. Not escaped — send it exactly as it should appear in the page.
nameYesSnippet name, e.g. 'XeoRank — global CSS'. Also the idempotency key: re-using it updates that snippet in place.
statusNo'publish' (default, live) or 'draft' (saved, not injected)
verifyNoCheck the code really rendered on the front page. Default true — leave it on.
confirmNoMust be true to apply — without a narrower `conditions`, this injects on every page
site_idYesWordPress site id (from list_wordpress_sites)
locationNoWhere to inject: 'head' (default; critical CSS, meta, tracking), 'body_start', or 'body_end' (non-critical JS, avoids render-blocking).
priorityNo1-10, default 10 (rejected with an error outside that range, never silently clamped). LOWER runs earlier when several snippets share a location.
conditionsNoElementor display conditions. Defaults to ['include/general'] (entire site) — an empty set would inject nowhere. When this site falls back to XeoRank's own injector (injected_by:'xeorank-connector' in the response) only these shapes are actually enforced: 'include/general', 'include/singular/front_page', 'include/singular/page', 'include/singular/page/<id>', 'include/singular/post', 'include/singular/post/<id>'. Any other shape (archive/taxonomy/exclude conditions) matches nothing on the fallback path — use one of the shapes above to scope a snippet to one page/post there.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far exceeds the annotations: it discloses that confirm=true is mandatory because the change hits every page, that the write is idempotent-by-name (re-pushing the same name updates in place), that success must be read from `rendered` rather than the status code, that verification fetches the front page, that the connector injects on wp_head/wp_body_open/wp_footer with no Elementor Pro dependency, and that snippets live in XeoRank rather than Elementor's Custom Code UI, with a v0.9.2+ requirement. This is exactly the operational context annotations cannot carry. Minor tension: the description calls `name` an 'IDEMPOTENCY KEY' while idempotentHint=false, but the described behavior is update-in-place on repeated calls, so this reads as a conservative annotation rather than a true contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the one-snippet convention, then interleaved with routing and verification guidance. Dense and mostly earned, though the CHOOSING THE RIGHT HOME block and the connector/version sentences make it longer than a strictly minimal definition — justified by tool complexity, but not maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, 9-parameter, no-output-schema mutation, the description covers the gaps that matter: the mandatory confirm flag, how to interpret the response (`rendered` vs status code), the fallback-path limits on `conditions`, and environment prerequisites. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: `name` as the update-in-place key, `confirm=true` as the per-page blast-radius gate, and the note that without narrower `conditions` the snippet injects everywhere. It does not restate the injection-location or priority semantics beyond the schema, keeping it just above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource (inject site-wide CSS/JS) and immediately fixes the scope (every page) and the single-snippet convention (CSS in <style>, JS in <script> in the same `code` body). It actively distinguishes itself from siblings by name: wp_set_brand_kit(custom_css) for editor canvas, wp_patch_page(style.custom_css) for element-scoped CSS.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('anything the brand kit's design tokens cannot express', with a concrete list of examples, plus analytics/third-party embeds) and explicit when-not (prefer brand-kit tokens; use brand kit or page patching elsewhere). The CHOOSING THE RIGHT HOME sentence routes the agent among three sibling tools with the discriminating condition for each.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_homepageAInspect

Set a published page as the site's front page (homepage). Pass post_id to use that page; omit it to revert to the latest-posts blog view. Changes the LIVE homepage (reversible). Requires writes enabled.

NameRequiredDescriptionDefault
post_idNoPublished page ID to set as homepage (omit to revert to blog)
site_idYesThe WordPress site ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: the change affects the LIVE homepage, it is reversible, and it requires writes to be enabled. Annotations already declare readOnlyHint=false and destructiveHint=false, so this complements rather than repeats the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with the primary action front-loaded and no filler; each clause conveys a distinct, actionable fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter toggle with full schema coverage and no output schema, the description covers action, both branches, reversibility, and a prerequisite, leaving nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented; the description merely restates the post_id omit-to-revert behavior. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set a published page as the site's front page') and clarifies the exact action on both branches (set vs. revert to blog view). An agent can immediately distinguish this from siblings like wp_set_page_status or wp_set_page_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the two usage modes: pass post_id to use that page, omit it to revert, and adds the 'Requires writes enabled' prerequisite. No alternative sibling tool is named, which keeps it just 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.

wp_set_menu_itemsAInspect

Set a menu's items. items = JSON array of objects: {title, url?, type?:custom|page|post, object_id?, parent_index?}. Build DROPDOWNS with parent_index (0-based index into this list of the parent item). type='page' with object_id links to a page. replace (default true) clears existing items first. Writes-gated, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
itemsYesJSON array of {title, url?, type?, object_id?, parent_index?}
menu_idYesThe menu id (from wp_create_menu / wp_list_menus)
replaceNoClear existing items first (default true)
site_idYesThe WordPress site ID

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context the annotations don't carry: the tool is writes-gated (requires writes to be enabled) and requires Xyle Connector v0.6.0+. It also discloses that replace defaults to true and clears existing items first, which is important behavioral information for a write tool. It does not describe the response or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then the JSON shape, then the dropdown mechanics and the replace default. Dense but each fragment carries information; the only cost is slight shorthand ("DROPDOWNS", "Writes-gated") that assumes product familiarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the mutation semantics, the nested items format, the write gate, and the minimum connector version. With no output schema, it stops short of describing what a successful/partial set returns, which is a minor gap for a bulk-write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description goes beyond the terse schema text by explaining parent_index (0-based index into this list) for building dropdowns, the custom|page|post type values, and that type='page' pairs with object_id. That is meaningful extra semantics over the schema's one-line summaries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Set a menu's items") and immediately scopes it as the items within an existing menu, distinguishing it from wp_create_menu and wp_assign_menu_location. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it tells you how to build dropdowns and what replace does, but never states when this tool should be chosen over siblings or what prerequisites apply (beyond the write gate). The workflow hint (menu_id comes from wp_create_menu / wp_list_menus) lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_page_slugA
Idempotent
Inspect

Change a page's permalink slug (the URL segment). This is the ONLY way to change a permalink: the slug lives on the post row (post_name), NOT in the Elementor builder data, so wp_patch_page and wp_update_page cannot touch it and no metadata edit makes WordPress regenerate it. Requires writes enabled, and Xyle Connector v0.5.0+ on plugin-connected sites. Note WordPress appends -2 on a collision — the response reports the slug it actually applied.

NameRequiredDescriptionDefault
slugYesLowercase letters, digits and hyphens, e.g. 'urologist-digital-marketing'
post_idYesThe page/post ID
site_idYesThe WordPress site ID

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations covering safety (readOnlyHint false, idempotent, non-destructive), the description still adds substantive context: write-mode prerequisite, minimum connector version, and the collision behavior where WordPress appends '-2' and the response reports the slug actually applied. That last point is real behavioral disclosure an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and scope, then the sibling-exclusion rationale, then prerequisites and the collision caveat. No filler sentences; each clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Prerequisites, alternative-tool exclusions, and the collision/response behavior are all covered, which is sufficient for a 3-param, no-output-schema mutation. The description even compensates for the absent output schema by stating what the response reports.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the three parameters are already documented, including the slug format example. The description adds genuine semantic value by locating the slug on the post row (post_name) rather than Elementor data, which explains why post_id is the correct target — but it adds no format or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change a page's permalink slug') and immediately defines the resource for agents unfamiliar with WordPress ('the URL segment'). It also distinguishes itself from wp_patch_page and wp_update_page by explaining the slug lives on post_name, not in builder data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly claims exclusivity ('the ONLY way to change a permalink') and names the sibling tools that cannot do it, plus states prerequisites: writes enabled and Xyle Connector v0.5.0+ on plugin-connected sites. An agent has everything needed to choose this over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_page_statusAInspect

Change a WordPress page's status: publish (take a draft live), draft, private, or pending. Reversible. Requires writes enabled.

NameRequiredDescriptionDefault
statusYespublish | draft | private | pending
post_idYesThe page/post ID
site_idYesThe WordPress site ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description adds two pieces of behavioral context: the operation is 'Reversible' and it 'Requires writes enabled'. It also clarifies that 'publish' means taking a draft live. It does not discuss what happens to a published page that is moved back to draft.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero filler: the action and its valid values come first, the prerequisite last. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter mutation with full schema coverage and annotations covering the safety profile, the description supplies the key missing pieces: reversibility and the writes-enabled precondition. Return behavior is unspecified but no output schema exists, so only minor gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all three parameters are documented in the schema, so the baseline is 3. The description restates the status values (publish/draft/private/pending) already present in the schema and adds only the gloss 'take a draft live', which is marginal added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change a WordPress page's status') and enumerates the four target states, so the agent knows exactly what the tool mutates. Differentiation from the sibling wp_set_template_status is only implicit (page vs template), keeping it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The prerequisite 'Requires writes enabled' is a real usage constraint, but the description never says when to prefer this over siblings such as wp_update_page or wp_patch_page, which can also touch page state. Usage is implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_page_templateAInspect

Set a page's WordPress template. Use 'canvas' for a full-bleed design with NO theme header/title/footer (clones, landing pages) — otherwise the design renders wrapped inside the theme's page layout. 'full_width' keeps theme header/footer; 'default' is the theme template. Requires writes enabled.

NameRequiredDescriptionDefault
post_idYesThe page ID
site_idYesThe WordPress site ID
templateYescanvas | full_width | default

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, non-idempotent), so the bar is lower. The description still adds real context: the write-enable precondition and the rendering consequence of choosing the wrong value ('the design renders wrapped inside the theme's page layout'), which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action, then value semantics, then the precondition. No filler, no restating of the tool name, and each clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter, no-output-schema mutation tool, the description supplies the precondition and the value semantics an agent needs to call it correctly. It omits what the call returns and whether existing content is preserved, but those gaps are minor given the annotations cover the safety profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description goes beyond the bare enum 'canvas | full_width | default' by explaining the layout behavior each value produces — genuinely useful semantics for the one parameter that carries risk of a wrong choice. site_id and post_id get no extra detail, which is fine given they are self-documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set a page's WordPress template') and immediately defines what the operation controls (theme layout wrapping). It is clearly distinct from sibling tools such as wp_set_page_status, wp_set_homepage, and wp_update_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the selection criteria for each template value — 'canvas' for clones/landing pages with no header/title/footer, 'full_width' to keep theme chrome, 'default' for the theme template. It also states the precondition 'Requires writes enabled.' It stops short of naming a sibling alternative, but the value-level routing is explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_seo_metaAInspect

Set a page's SEO META DESCRIPTION, SEO title, ROBOTS directive and/or CANONICAL URL — the go-to tool for 'fix my missing meta description' and for keeping a draft/duplicate out of the index (robots='noindex,nofollow'). Omit post_id to target the homepage. Writes the active SEO plugin's fields (Yoast/RankMath/AIOSEO); if the site has NO SEO plugin the XeoRank Connector renders the tags itself, so this works on any WordPress site. The response echoes applied_values READ BACK from the provider — trust that, not the input. Requires Connector >= 0.7.5; robots/canonical_url need >= 0.9.17 (on error='connector_update_required', tell the user to update the plugin). Keep descriptions 70–165 characters.

NameRequiredDescriptionDefault
robotsNoRobots directive: 'noindex,nofollow', 'noindex', 'index,follow', … Unknown tokens are refused, never ignored.
post_idNoPage/post ID. Omit for the homepage (static front page).
site_idYesThe WordPress site ID
seo_titleNoOptional SEO title override
canonical_urlNoAbsolute http(s) canonical URL for the page (e.g. point a duplicate at its original)
meta_descriptionNoThe meta description text (70–165 chars recommended)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses the write target (active SEO plugin's fields), a fallback path when no plugin exists, the required Connector versions per field, the specific error code and remediation ('connector_update_required'), and critically that the response's applied_values are read back from the provider and should be trusted over the input. This is exactly the mutation 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and packs version requirements, fallback behavior, and response-trust guidance into one dense paragraph with no filler. Slightly long, but nearly every clause carries operational value; only the character-count reminder is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by explaining the return contract (applied_values read back from the provider). It also covers mutation scope, plugin-fallback behavior, version gating, and error handling, leaving nothing an agent needs to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both robots token behavior and the homepage default are already documented in the schema. The description's '70–165 characters' and post_id-omission notes largely restate that, adding little new syntax or format meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Set') plus the exact resources touched (meta description, SEO title, robots directive, canonical URL), and immediately contrasts with the read-side sibling wp_get_seo_meta. An agent can route correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger scenarios ('fix my missing meta description', keeping a draft/duplicate out of the index) and the homepage targeting rule (omit post_id). It stops short of naming when NOT to use it versus siblings like generate_schema_markup or wp_patch_page, so it is clear context rather than explicit exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_template_conditionsAInspect

Set DISPLAY CONDITIONS on an Elementor Theme Builder template and optionally publish it. Conditions use Elementor's include/exclude grammar: include/general (entire site), include/singular/front_page, include/singular/page (all pages), include/singular/page/123 (specific), include/singular/post, include/archive, include/archive/category, exclude/singular/page/12, … This changes what renders SITE-WIDE — review the template first. Requires writes enabled + Xyle Connector v0.3.0+.

NameRequiredDescriptionDefault
publishNoPublish the template after saving conditions
site_idYesThe WordPress site ID
conditionsYesJSON array of condition strings, e.g. ["include/general", "exclude/singular/page/12"]
template_idYesThe template's post ID (from wp_create_template / wp_list_templates)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, destructive=false, non-idempotent, openWorld), so the bar is lower. The description still adds important context beyond them: the change affects rendering SITE-WIDE, and it requires writes to be enabled plus a minimum connector version.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and impact, then supplies the grammar examples, then the prerequisites. The example list is long but each entry demonstrates a distinct pattern, so it earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation tool with no output schema, the description covers impact, format, and prerequisites adequately. It omits failure behavior and whether existing conditions are replaced or merged, which would have made it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema's single example by explaining Elementor's include/exclude grammar with a range of concrete condition forms (include/general, include/singular/page/123, exclude/singular/page/12), which genuinely clarifies how to build the conditions parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (set) and resource (DISPLAY CONDITIONS on an Elementor Theme Builder template) plus the optional publish behavior. It is clearly distinguishable from siblings like wp_set_template_status or wp_patch_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete prerequisites (writes enabled, Xyle Connector v0.3.0+) and a caution to review the template first, which is real when-to-use context. It does not name an alternative sibling (e.g. wp_set_template_status for pure publish toggling) or state exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_template_statusAInspect

Publish, unpublish (draft), or trash a template. Writes-gated, plugin transport, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
statusYespublish | draft | pending | private | trash
site_idYesThe WordPress site ID
template_idYesThe template post ID

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=true), and the description adds genuine non-schema context: writes must be enabled, the operation goes through plugin transport, and it requires Xyle Connector v0.6.0+. It stops short of saying whether a status change is reversible or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and the statuses before the operational caveats. 'Plugin transport' is slightly jargon-y but the whole description is free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers prerequisites and version requirements but omits the effect of each transition (e.g., whether trash is recoverable) and any return behavior. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters are documented, so the schema carries the load. The description's parenthetical '(draft)' mildly clarifies that unpublish maps to the draft status, but adds no syntax or constraints beyond the schema's own status list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: changing a template's publish status, with the three main transitions named (publish, draft, trash). It is clearly distinguishable from wp_set_page_status (page vs template) and wp_delete_template, though it does not name those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Writes-gated' implies the wp_enable_writes prerequisite, which is useful usage context. However, it never says when to use this versus wp_update_template, wp_delete_template, or trashing-via-deletion, so the routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_set_themeAInspect

Activate a WordPress theme (e.g. hello-elementor) via Xyle's server-side SSH — no local SSH needed. Set install=true to install it from wordpress.org first if it's not present. Changes the live site theme (reversible by activating the previous one). Requires writes enabled.

NameRequiredDescriptionDefault
themeYesTheme slug, e.g. hello-elementor
installNoInstall from wordpress.org first if missing (default false)
site_idYesThe WordPress site ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, openWorld=true, non-idempotent, non-destructive. The description adds genuinely new behavioral context: the change affects the live site, it is reversible by activating the previous theme, and writes must be enabled first. It could say more about side effects of a theme switch (menus/widgets), but this is well above the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, then the install conditional and the safety note. No filler and nothing repeated from structured fields verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema, the description covers the action, the prerequisite permission gate, the installation fallback, and reversibility. The main omission is what happens to theme-dependent content after switching, which an agent might want to warn about.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents theme, install, and site_id. The description restates the install=true behavior and gives a slug example, adding only marginal meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Activate a WordPress theme'), gives a concrete example slug, and clarifies the execution path (server-side SSH, no local SSH). An agent can immediately distinguish it from wp_list_themes and wp_set_page_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the conditional for the install flag ('Set install=true to install it from wordpress.org first if it's not present') and the prerequisite ('Requires writes enabled'). It lacks an explicit pointer to sibling alternatives like wp_list_themes, but the context is clear enough to select correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_style_keysA
Read-only
Inspect

Which style fields a widget type supports and the raw Elementor setting keys they map to (e.g. icon-box colour is 'title_color'). Call this BEFORE styling a widget — then pass a style spec to wp_patch_page as {node_id, style:{...}} and Xyle writes the correct keys for you. Read-only, no site needed.

NameRequiredDescriptionDefault
widget_typeYesElementor widget type, e.g. 'icon-box', 'heading', 'button'; 'container' for SECTION-level fields (bg image+overlay, shape dividers, gap, min_height); or 'all' for the FULL manifest in one call

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds genuinely new operational context ('no site needed'), telling the agent no WordPress connection is required for this lookup. 'Read-only' merely restates the annotation, and the non-idempotent annotation is left unexplained, keeping it out of 5 territory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, then the mandatory call order, then the read-only/no-site caveat. No filler, and the most decision-relevant information (what it returns, when to call it) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully sketches the return content (supported style fields plus their raw setting keys) and an example. Given the large sibling set, it could do slightly more to disambiguate itself from wp_widget_controls/wp_widget_schema, but nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the widget_type description already documents 'icon-box', 'heading', 'button', 'container' and 'all'. The description adds no elaboration on parameter values or filtering beyond what the schema says, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: it returns which style fields a widget type supports and the raw Elementor setting keys they map to, with a concrete example (icon-box colour -> 'title_color'). This is distinguishable from lookalike siblings such as wp_widget_controls, wp_widget_schema and assist_widget_keys, which deal with controls/schema rather than style-key mapping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit sequencing — 'Call this BEFORE styling a widget' — and names the downstream tool and payload shape (wp_patch_page as {node_id, style:{...}}). It does not state when NOT to use it or how it differs from wp_widget_controls/wp_widget_schema, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_update_pageAInspect

Replace a PAGE/POST's content (refine/redesign in place). PREFER sections — the native Elementor CONTAINER (flexbox) spec so the page stays editable. Shape: [{direction:row|column, width:boxed|full, children:[{widthPercent, widgets:[{type,...}]}]}] (or widgets directly for one container). SECTION STYLING: a section/container accepts its OWN {bg:'#0E2F54' | {from,to,angle} gradient | {image:url} photo, overlay:{color,opacity} (over a bg image), shape:{type:'curve'|'waves'…,color,height} shape dividers, gap, min_height:'80vh', hidden:['mobile'], text_color, padding, radius, shadow, style:{…}} — bg colors the whole band and text_color propagates to child widgets. Full section vocabulary: wp_style_keys('container'); ready-made patterns: wp_section_recipes. Widget types: heading,text,button,image,icon-box,image-box,icon-list,counter,divider,spacer,testimonial,accordion,tabs,star-rating,gallery,image-carousel; Pro: form,price-table,call-to-action,testimonial-carousel (auto-downgraded to free composites if the site lacks Elementor Pro). Use elementor_search/elementor_get for exact widget fields. STYLING: every widget accepts a style object translated to NATIVE Elementor controls — {color, bg, align, fontSize, fontWeight, lineHeight, padding, margin, border:{width,color,radius,style}, shadow:{color,x,y,blur}, radius, tablet:{…}, mobile:{…}} — plus a raw settings passthrough. ANIMATION (just name a preset — no code): PREFER style.anim:'reveal' = scroll animation via the bundled GSAP runtime (presets: reveal, fade-up, stagger, parallax, zoom, pin, slide-left/right; optional {preset,delay,stagger}); put anim:{stagger:true} on a CONTAINER to cascade its children. It lazy-loads GSAP only where used, honors reduced-motion, and renders reliably (visible even if JS is slow). style.animate:'fade-up' = native Elementor entrance — needs no plugin but leaves the element elementor-invisible until Elementor's JS runs, so it can look blank in a render_screenshot; use it only for sites without the latest connector. BRAND TOKENS: if a Global Brand Kit is set, reference it instead of hardcoding — style.color:'@primary' (@secondary/@accent/@text/@bg/@border), style.bg:'@bg', and style.typographyToken:'h1' (h1–h6/body/small) or style.font:'@heading'/'@body'. These map to Elementor GLOBALS so one kit edit restyles the whole site — and it saves tokens vs re-sending hex/fonts. Call wp_get_brand_kit first for the available ids. NEVER generate custom CSS (custom_css is stripped) — native controls keep pages editable in Elementor's UI. html = single-piece escape hatch ONLY, never the whole page. EDITS A PAGE/POST ONLY — never a Theme Builder header/footer template or the site kit (those change every page). Round-trip validated, write-gated; review via render_screenshot before publishing.

NameRequiredDescriptionDefault
htmlNoLast resort: a self-contained HTML block for the whole page (not editable in Elementor)
titleNoOptional new page title
atomicNoEditor V4 ATOMIC spec (JSON array) for sites where Editor V4 is active: [{type: heading|paragraph|image|button|div|flex|grid|tabs, …}]; tabs = {type:"tabs", tabs:[{label, children:[…]}], active:0}. XeoRank emits valid V4 JSON (e-tabs/e-tabs-menu/e-tab/e-tabs-content-area/e-tab-content, typed envelopes, ids). wp_widget_schema("e-tabs") and wp_section_recipes("v4-tabs") show the shape. Raw elements also accepted via elementor_data/elements.
blocksNoGutenberg block markup (<!-- wp:… -->) — replaces post_content on a BLOCK or classic page. Read the current markup with wp_get_page(include_content=true), edit, send it back. Plugin transport. Refused with 409 on an Elementor-built page unless force_builder=true.
dry_runNoBuild + round-trip validate + return a preview (warnings, size) WITHOUT writing (no quota used)
post_idYesThe page/post ID to update (NOT a header/footer template or kit)
site_idYesThe WordPress site ID
sectionsNoPREFERRED: native Elementor CONTAINER spec — [{direction,width,children:[{widthPercent,widgets:[{type,...}]}]}]
force_builderNoWith `blocks`: allow converting an Elementor-built page to block content (deletes its Elementor data). Default false.
elementor_dataNoRaw _elementor_data JSON (advanced)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: write-gating, round-trip validation, custom_css being stripped, Pro widgets auto-downgraded to free composites, GSAP lazy-loading with reduced-motion honored, the `elementor-invisible` pitfall of native entrance animations, and force_builder's deletion of Elementor data. Minor tension: "Replace ... content" is a full-overwrite operation while destructiveHint=false implies additive-only, but the mitigations (dry_run, preview-before-publish, validated writes) keep it defensible rather than a hard contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly (purpose, then PREFERRED param), and the ALL-CAPS labels (SECTION STYLING, STYLING, ANIMATION, BRAND TOKENS) make it scannable, but the description is very long and re-states material already present in the parameter descriptions (html, sections, atomic, blocks, force_builder), so the density costs more than it should.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, no-output-schema write tool, an agent has everything needed: which parameter to choose, the accepted specs, styling/animation vocabulary, brand-kit workflow, the 409 refusal path, and the preview/verification loop. No output schema exists, so omitting return-value detail is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3; the description earns the bump by adding concrete shape and vocabulary the schema omits — container/section JSON layout, bg/gradient/overlay/shape divider keys, the style object and responsive breakpoints, anim presets, and brand-token syntax (@primary, typographyToken). It meaningfully disambiguates the four content paths (sections/blocks/atomic/html).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: "Replace a PAGE/POST's content (refine/design in place)", and explicitly fences the scope with "EDITS A PAGE/POST ONLY — never a Theme Builder header/footer template or the site kit". That exclusion alone separates it from template/kit siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use and when-not: PREFER `sections`, `html` is a last-resort escape hatch and never the whole page, call wp_get_brand_kit first, use elementor_search/elementor_get for widget fields, use native `animate` only on sites lacking the latest connector, and review via render_screenshot before publishing. Alternatives (sections vs blocks vs atomic vs html) are all routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_update_templateAInspect

Replace a template's whole Elementor content from a native sections spec (same shape as wp_create_page) or raw elementor_data. For small tweaks prefer wp_patch_template. Writes-gated, plugin transport, Xyle Connector v0.6.0+.

NameRequiredDescriptionDefault
titleNoOptional new title
atomicNoEditor V4 ATOMIC spec (JSON array): [{type: heading|paragraph|image|button|div|flex|grid|tabs, …}] → valid V4 JSON with typed envelopes. wp_widget_schema("e-tabs") / wp_section_recipes("v4-tabs") show the shape.
dry_runNotrue = validate and build the content, report layout_model / node_count / warnings, write NOTHING (no quota, no snapshot). Use it first on a template: template edits change every page that renders it.
site_idYesThe WordPress site ID
elementsNoRAW top-level element JSON written VERBATIM — Editor V4 atomic (e-tabs, e-div-block, …) survives; the sections spec cannot express atomic.
sectionsNoJSON array — native CONTAINER spec (preferred)
template_idYesThe template post ID
page_settingsNoJSON object of page settings (e.g. popup triggers). Can be sent alone to change only a popup's triggers.
elementor_dataNoRaw _elementor_data JSON (advanced)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety hints (non-read-only, open-world, non-idempotent), and the description adds value beyond them: writes must be enabled ('Writes-gated'), the transport is plugin-based, and the Xyle Connector v0.6.0+ version requirement is a concrete prerequisite an agent cannot get from annotations. It could go further on whether the previous content is recoverable/snapshotted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and its accepted input formats, then the alternative tool, then the operational constraints. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with no output schema, the description plus schema covers what is needed: what gets overwritten, the two content formats, the lighter-weight alternative, write-gating, and the connector version. Nothing material an agent needs in order to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all nine parameters (including the shape of `sections`/`atomic` and the purpose of `dry_run`). The description only adds the cross-reference that the `sections` spec matches `wp_create_page`; that is useful but marginal, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource + scope: it replaces the template's *whole* Elementor content, and it states the two accepted input shapes (native `sections` spec or raw `elementor_data`). It explicitly distinguishes itself from the sibling `wp_patch_template`, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative and the condition that selects it: 'For small tweaks prefer wp_patch_template.' It also signals write-gating and connector version prerequisites. It stops short of spelling out when a full replacement is the right call versus wp_replace_section or wp_set_template_conditions, so it is clear context rather than exhaustive guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_upgrade_accordionsAInspect

Fix legacy FAQ/accordion widgets on a page: convert Elementor's CLASSIC accordion (which always force-opens the first item, with no setting to stop it) to the NESTED Accordion — all items COLLAPSED by default, plus native FAQ schema. Preserves every question/answer. Use this on existing pages where the first FAQ opens automatically (new pages already build correctly). dry_run=true previews how many would convert. Write-gated.

NameRequiredDescriptionDefault
dry_runNoPreview the count without writing. Default false.
post_idYesThe page/post ID
site_idYesThe WordPress site ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and idempotentHint=false. The description adds genuine value on top: it promises content preservation ('Preserves every question/answer') and notes the call is write-gated, consistent with the non-destructive hint. It does not clarify re-run behavior on an already-converted page, which matters given idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the defect, and heavy use of caps highlights the key contrasts (CLASSIC vs NESTED, COLLAPSED). It is slightly dense and the parenthetical about the classic accordion's behavior could be trimmed, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only three parameters, no nested objects, and no output schema, the definition covers what an agent needs: the transformation, the precondition, the preview mode, and content preservation. The only gaps are what a non-dry-run response reports and how repeat invocation behaves.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented and the baseline is 3. The description's note that dry_run 'previews how many would convert' adds only marginal color over the schema's 'Preview the count without writing', and site_id/post_id are not elaborated at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb+resource transformation: convert Elementor's CLASSIC accordion to the NESTED Accordion with FAQ schema, on a specific page. It names the exact defect being fixed (first item force-opens) and the resulting state (all items collapsed), so an agent can distinguish it from generic page-update siblings like wp_update_page or wp_patch_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly scopes usage to existing pages where the first FAQ opens automatically and excludes new pages ('new pages already build correctly'), which is a real when-not statement. It also flags the dry_run preview path and that the operation is write-gated, giving the agent the conditions needed to decide between previewing and committing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_upload_imageAInspect

Upload an image into the site's WordPress media library and get back the HOSTED url — drop it into a sections image widget ({type:'image', url}) when building a page/post, or swap an existing image via wp_patch_page (field image.url). Hosts the image on the site instead of hotlinking. Pass EXACTLY ONE of: image_url (any public http(s) URL — jpg/png/gif/webp/avif, up to 12MB, extension optional) or image_data (base64 bytes you already have locally — no public URL needed, e.g. a file you just read, up to 5MB; pass filename as a base-name hint, the real extension is always verified server-side). image_data is PLUGIN-TRANSPORT ONLY — SSH-connected sites must host the image publicly and use image_url instead. Requires writes enabled; plugin-connected sites need Xyle Connector v0.2.1+ for image_url, v0.9.8+ for image_data (older plugins return a clear update message).

NameRequiredDescriptionDefault
altNoOptional alt text (SEO / accessibility)
titleNoOptional media title
site_idYesThe WordPress site ID
filenameNoBase-name hint for image_data (e.g. 'logo'). The actual file extension is always derived server-side from the verified image type, never from this value.
image_urlNoPublic http(s) URL of the image to sideload into the media library
image_dataNoBase64-encoded image bytes to upload directly (plugin-transport sites only). Mutually exclusive with image_url.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give the generic write/non-idempotent/non-destructive profile. The description adds substantial behavior beyond them: writes must be enabled, plugin version floors (v0.2.1 for image_url, v0.9.8 for image_data), transport restrictions, size caps (12MB / 5MB), and server-side extension verification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and return value, then constraints. Dense parenthetical packing costs a little readability, but nearly every clause carries actionable information, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description states what comes back (the hosted URL). Combined with usage rules, transport constraints, and version gating, an agent has everything needed to invoke this six-parameter tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: exactly-one-of mutual exclusivity, that extension is optional, that filename is only a base-name hint, and the accepted formats. It stops short of detailing alt/title/site_id behavior, which the schema already covers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (upload an image into the site's WordPress media library) and names the return value (hosted URL). It also distinguishes itself from sibling tools by naming where the URL is consumed (sections image widget, wp_patch_page field image.url) and contrasts with hotlinking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use image_url for public URLs, image_data only for plugin-transport sites, and SSH-connected sites must use image_url. It also names downstream tools (wp_patch_page) for the swap case. No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_v4_styleAInspect

Style Editor V4 (atomic) elements natively on a page, post, component or library template: plain CSS per element, with &:hover/&:focus/&:active and @media(--tablet)/@media(--mobile) blocks, written to the element's own style class through Elementor 4.3's manage-elements; also global classes and interactions. dry_run previews before/after CSS; writes are snapshotted.

NameRequiredDescriptionDefault
dry_runNoPreview the resulting CSS without saving
post_idYesPage, post, component or template id
publishNoDefault true. false keeps the change as an Elementor editor draft
site_idYesThe WordPress site ID
operationsYesJSON array (1-50) of {element_id, css?, mode?: "patch"|"replace", classes?: [global class labels], interactions?: [native shape]}. Example: [{"element_id":"16f4acad","css":"background-color:#0b5fff; padding:24px; &:hover{background-color:#003cbd} @media(--mobile){padding:12px}"}]
include_pending_draftNoPublish even though the post has an unsaved editor draft (it is published too)

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare non-read-only, non-idempotent, non-destructive, open-world, but the description adds genuinely useful behavioral context beyond them: writes are snapshotted (recoverable), and dry_run previews the before/after CSS. It does not disclose what mode:'replace' destroys or how the publish/draft flag interacts with existing editor drafts, so it is good but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core capability, then two short sentences covering preview and snapshot behavior. Dense but every clause earns its place; the only friction is the very long first sentence that packs scoping, syntax, and mechanism together.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers scope, preview, and recoverability, which the annotations do not. It still omits the publish=false draft interaction with existing unsaved drafts (only hinted at by the include_pending_draft parameter) and any note on CSS regeneration or error handling, leaving meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented in the schema, including the operations JSON example and the dry_run/publish semantics. The description restates the CSS syntax (&:hover/&:focus/&:active, @media(--tablet)/(--mobile)) but adds no format detail the schema example does not already carry, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource+mechanism: writes plain CSS per Elementor V4 atomic element through the element's own style class, plus global classes and interactions. The 'V4 (atomic)' scoping and the mention of manage-elements differentiates it from generic style siblings like wp_apply_style, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the agent can infer this is the tool for per-element CSS on a page/post/template, and that dry_run is available for previewing. There is no explicit when-to-use vs wp_apply_style, wp_style_keys, or wp_regenerate_css, and no prerequisites (e.g. writes-enabled state) are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_widget_controlsA
Read-onlyDestructive
Inspect

The REAL Elementor setting keys for a widget, read from Elementor's own registry ON THAT SITE — so it is correct for that Elementor version, that Pro licence, and any third-party addons installed. Call with NO widget_type to list every widget the site actually has. USE THIS for anything wp_widget_schema doesn't cover: the dynamic/Theme-Builder widgets (posts, archive-posts, loop-grid, theme-post-title, theme-post-featured-image, nav-menu, search-form…), Woo widgets, and addon widgets. wp_widget_schema is our curated shorthand for ~20 common static widgets; this is the ground truth for everything else. tab=content|style|advanced narrows a large widget. Requires connector 0.7.9+. CONTEXT: the default mode is a compact INDEX (names, types, section grouping) with responsive twins collapsed — a control marked responsive also accepts the same name with _tablet / _mobile appended. Ask for full definitions only for the keys you actually need, via names=. Responses carry total/count/truncated, so a short list is never a complete one by accident. If you just want the right key for one change, assist_widget_keys answers that directly and never puts the registry in your context at all. For Editor V4 atomic elements (e-tabs, e-heading, …) it returns the V4 props model instead, since atomic elements have no controls registry.

NameRequiredDescriptionDefault
tabNocontent | style | advanced — narrows a large widget
modeNoindex (default: names/types/grouping, smallest) | full (every control, paged). Ignored when names= is set.
limitNoPage size for mode=full (default 300, max 1000).
namesNoComma-separated control names to expand fully (defaults, options, condition, selectors). The cheap way to get detail.
offsetNoPaging offset for mode=full; follow next_step when truncated is true.
node_idNoWith post_id: an element id from wp_get_page. Returns only THAT widget's controls.
post_idNoWith node_id: the page the element is on. The element's widget type is resolved server-side (response.resolved_from), so you never dump the whole registry to learn one widget's keys.
site_idYesWordPress site id
widget_typeNoe.g. 'posts', 'loop-grid', 'theme-post-title'. Omit to list all widgets on the site — or pass post_id + node_id instead and the type is resolved from the element.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile, but the description adds substantial non-schema behavior: default index mode with responsive twins collapsed and _tablet/_mobile naming, paged full mode, total/count/truncated signals, server-side widget-type resolution via resolved_from, and a connector version prerequisite (0.7.9+). This is exactly the extra context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core purpose and the sibling differentiation come first, then the mode/response details. Every sentence carries information, though the run-on CONTEXT paragraph packs many concerns together and could be split for scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the response burden well: it describes the index vs full shapes, paging fields, truncation flag, resolved_from, and the V4 atomic-element fallback (props model instead of controls registry). Nothing an agent needs to call correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each parameter verbatim, establishing a baseline of 3. The description goes further by explaining how parameters interact (omit widget_type to list widgets; pass post_id+node_id instead and the type is resolved server-side; names= is the cheap path to detail), which adds real selection guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource: it reads the REAL Elementor setting keys for a widget from the site's own registry. It explicitly positions itself against wp_widget_schema ('our curated shorthand') and assist_widget_keys, so an agent can disambiguate without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (anything wp_widget_schema doesn't cover: Theme-Builder, Woo, addon widgets), when-to-omit-params (no widget_type lists all widgets), and two named alternatives with their selection conditions (wp_widget_schema for ~20 static widgets; assist_widget_keys for a single key lookup).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_widget_schemaA
Read-onlyDestructive
Inspect

The exact CONTENT fields a native Elementor widget spec accepts, so you never guess: counter's number is end (not value), accordion's answer is content (not text), etc. Returns fields, which are required, whether it needs Elementor Pro, and gotchas. Call before building with wp_create_page/wp_update_page. EDITOR V4 ATOMIC: pass e-tabs, e-div-block, e-flexbox, e-grid, e-heading, e-paragraph, e-image or e-button to get the V4 model — props, typed envelopes, child rules (tabs pair by index), the atomic spec shape and an example — all writable. (For STYLE keys use wp_style_keys instead.)

NameRequiredDescriptionDefault
widget_typeYese.g. counter, icon-box, accordion, form, heading, button — or 'all' for every widget's schema + the container vocabulary in ONE call (do this once per build instead of per-widget round trips)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true), so the description is not the sole carrier. It still adds substantive behavioral context beyond structured fields: it discloses what the response contains (fields, required flags, Pro requirement, gotchas) and that V4 atomic models include props, typed envelopes, child rules and an example — a claim that 'all of these are writable'. It does not, however, address the odd destructiveHint=true/openWorldHint=true annotation set or pagination/caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core promise (exact field names, no guessing) followed by usage and the V4 special case. Dense but nearly every clause earns its place; the ALL-CAPS emphasis (CONTENT, EDITOR V4 ATOMIC) is mildly noisy but aids scanning in a long description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so adequately: it names fields, required flags, Pro dependency, gotchas, and the V4 model's shape. Coverage is strong for a single-param lookup tool; the only gap is any mention of response size or how 'all' behaves in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents widget_type with examples and the 'all' bypass, so the baseline is 3. The description adds meaning the schema lacks: the V4 ATOMIC block enumerates the exact accepted tokens (e-tabs, e-div-block, e-flexbox, e-grid, e-heading, e-paragraph, e-image, e-button) and states what passing them yields, extending well beyond the schema's generic examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: returns the exact CONTENT fields a native Elementor widget spec accepts, with concrete examples (`end` vs `value`, `content` vs `text`) that make the value proposition unambiguous. It explicitly differentiates from siblings: wp_style_keys for style keys and wp_widget_controls by implication, and names wp_create_page/wp_update_page as the consumers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('Call before building with wp_create_page/wp_update_page'), an explicit alternative for a related need ('For STYLE keys use wp_style_keys instead'), and a batching rule ('do this once per build instead of per-widget round trips'). No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updates
    • Addedcontinue_crawl
    • Addedfind_site
    • Changedgenerate_report6 fields changed
      • addedInput schema / properties / brand_terms
        Added value: +{
        +  "description": "Brand query terms (JSON array or comma-separated) for the branded vs non-branded split",
        +  "type": "string"
        +}
      • addedInput schema / properties / comparison_mode
        Added value: +{
        +  "description": "\"previous_period\" (default), \"year_over_year\" or \"none\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / period_end
        Added value: +{
        +  "description": "Period end, YYYY-MM-DD, not in the future. Default: last day of last month",
        +  "type": "string"
        +}
      • addedInput schema / properties / period_start
        Added value: +{
        +  "description": "Period start, YYYY-MM-DD. Default: first day of last month",
        +  "type": "string"
        +}
      • addedInput schema / properties / period_type
        Added value: +{
        +  "description": "\"monthly\" (default; period must be one full calendar month), \"weekly\" (exactly 7 days) or \"custom\"",
        +  "type": "string"
        +}
      • removedInput schema / properties / report_type
        Removed value: -{
        -  "description": "Type of report: 'full', 'executive', 'technical'. Default: 'full'",
        -  "type": "string"
        -}
    • Changedget_backlink_profile5 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Rows to return (default 50, max 500)",
        +  "type": "number"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Rows to skip (default 0). The result carries rows_total and next_offset",
        +  "type": "number"
        +}
      • addedInput schema / properties / risk
        Added value: +{
        +  "description": "Keep only links/domains at this risk level: low | medium | high",
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Row order: \"risk_desc\" (default; most toxic first), \"risk_asc\" (genuine links first), \"first_seen_desc\" (newest first), \"page_rank_desc\" (strongest source pages first)",
        +  "type": "string"
        +}
      • addedInput schema / properties / view
        Added value: +{
        +  "description": "\"links\" (default): the per-link detail list; \"domains\": one row per referring domain (links, anchors, first seen, risk, reasons); \"summary\": totals and anchors only, no rows",
        +  "type": "string"
        +}
    • Changedget_crawl_results8 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Issues only: filter by category (e.g. on_page, technical, schema)",
        +  "type": "string"
        +}
      • addedInput schema / properties / include
        Added value: +{
        +  "description": "Which lists to return: \"both\" (default), \"pages\" or \"issues\"",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Rows per list (default 25 pages / 50 issues; max 500 pages / 1000 issues)",
        +  "type": "number"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Rows to skip in each list (default 0). Use with limit to page",
        +  "type": "number"
        +}
      • addedInput schema / properties / page_filter
        Added value: +{
        +  "description": "Pages only: broken | redirect | thin",
        +  "type": "string"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Issues only: substring match on the page URL or message",
        +  "type": "string"
        +}
      • addedInput schema / properties / rule_id
        Added value: +{
        +  "description": "Issues only: one rule id (e.g. OP-H-003) — returns every affected URL for that finding",
        +  "type": "string"
        +}
      • addedInput schema / properties / severity
        Added value: +{
        +  "description": "Issues only: critical | high | medium | low | info",
        +  "type": "string"
        +}
    • Changedget_site1 field changed
      • addedInput schema / properties / include_analysis
        Added value: +{
        +  "description": "Embed the full latest page analysis (~50 KB). Default false",
        +  "type": "boolean"
        +}
    • Changedkeyword_competitor_ranks3 fields changed
      • addedInput schema / properties / by_keyword
        Added value: +{
        +  "description": "Also return by_keyword: each tracked keyword's best-ranked domains. Use it for 'who is #1 for X'; the competitor list is ordered by coverage and hides single-keyword leaders.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Competitors to return after filtering platforms (default 15)"New value: +"Competitors to return after filtering platforms (default 15, max 1000)"
      • addedInput schema / properties / top
        Added value: +{
        +  "description": "With by_keyword: domains per keyword (default 10, max 100)",
        +  "type": "number"
        +}
    • Addedredirect_check
    • Addedrobots_check
    • Addedsitemap_check
    • Changedstart_crawl2 fields changed
      • changedInput schema / properties / max_depth / description
        Previous value: -"Max crawl depth from the seed URL (1-3, default 3)"New value: +"Max link depth from the seed URL (1-20, default 8)"
      • changedInput schema / properties / max_pages / description
        Previous value: -"Max pages to crawl (1-50, default 50)"New value: +"Max pages to crawl. Default: the plan limit (free 50, Pro 500, Agency 1000); higher values are clamped to it"
  2. 235 tool updates
    • First observedaccept_source
    • First observedadd_tracked_keywords
    • First observedadopt_site_redirect
    • First observedapi_access
    • First observedassist_balance
    • First observedassist_classify_keywords
    • First observedassist_design_lint
    • First observedassist_draft
    • First observedassist_edit_section
    • First observedassist_page_digest
    • First observedassist_redeem_coupon
    • First observedassist_savings
    • First observedassist_security_audit
    • First observedassist_transform_page
    • First observedassist_widget_keys
    • First observedassist_writing_fix
    • First observedaudit_chat
    • First observedbatch_inspect
    • First observedcheck_tracked_keyword_rankings
    • First observedclassify_tracked_keywords
    • First observedcode_build_logs
    • First observedcode_deploy_status
    • First observedcode_local_setup
    • First observedcode_set_domain
    • First observedcode_set_public
    • First observedcode_status
    • First observedcode_write_files
    • First observedcompute_content_gaps
    • First observedconnect_framer
    • First observedconnect_ga
    • First observedconnect_github
    • First observedconnect_google_ads
    • First observedconnect_vercel
    • First observedconnect_wordpress
    • First observedcontent_for_goal
    • First observedcontent_for_page
    • First observedcontent_opportunities
    • First observedcontent_outcomes
    • First observedcreate_api_key
    • First observedcreate_audit
    • First observedcreate_content_brief
    • First observedcreate_goal
    • First observedcreate_keyword_session
    • First observedcreate_site
    • First observedcreate_voice_profile
    • First observeddeclare_voice
    • First observeddelete_goal
    • First observeddelete_keyword_session
    • First observeddelete_site
    • First observeddelete_wordpress_site
    • First observeddesign_recommend
    • First observeddesign_search
    • First observeddiscover_competitors
    • First observeddomain_keyword_profile
    • First observeddownload_disavow_file
    • First observeddownload_report
    • First observedelementor_categories
    • First observedelementor_get
    • First observedelementor_search
    • First observedexport_audit_report
    • First observedframer_canvas
    • First observedframer_cms
    • First observedframer_design
    • First observedframer_publish
    • First observedgbp_audit
    • First observedgenerate_report
    • First observedgenerate_schema_markup
    • First observedget_analysis
    • First observedget_audit
    • First observedget_audit_framework
    • First observedget_audit_report
    • First observedget_backlink_profile
    • First observedget_brand_profile
    • First observedget_competitive_landscape
    • First observedget_competitor_keyword_overlap
    • First observedget_content_brief
    • First observedget_content_outcome
    • First observedget_crawl_results
    • First observedget_crawl_status
    • First observedget_cwv_results
    • First observedget_disclosure
    • First observedget_ga_metrics
    • First observedget_ga_status
    • First observedget_google_ads_status
    • First observedget_gsc_keyword_candidates
    • First observedget_gsc_metrics
    • First observedget_gsc_pages
    • First observedget_gsc_queries
    • First observedget_gsc_sitemaps
    • First observedget_index_status
    • First observedget_keyword_clusters
    • First observedget_keyword_funnel
    • First observedget_keyword_session
    • First observedget_live_keyword_ideas
    • First observedget_plan
    • First observedget_prospect_audit
    • First observedget_report
    • First observedget_score_trends
    • First observedget_shopify_analytics
    • First observedget_shopify_products
    • First observedget_shopify_status
    • First observedget_site
    • First observedget_site_health
    • First observedget_site_insights
    • First observedget_site_journeys
    • First observedget_site_requirements
    • First observedget_site_stats
    • First observedget_snapshot_diff
    • First observedget_traffic_sources
    • First observedget_url_inspections
    • First observedget_usage
    • First observedget_visibility_results
    • First observedget_visibility_sources
    • First observedget_voice_profile
    • First observedget_wordpress_site
    • First observedgithub_create
    • First observedgithub_link
    • First observedgithub_list_repos
    • First observedgoal_metrics
    • First observedinspect_url
    • First observedkeyword_chat
    • First observedkeyword_competitor_ranks
    • First observedlink_goal_issues
    • First observedlist_analyses
    • First observedlist_api_keys
    • First observedlist_audits
    • First observedlist_code_sites
    • First observedlist_competitors
    • First observedlist_content_briefs
    • First observedlist_crawls
    • First observedlist_goals
    • First observedlist_invoices
    • First observedlist_keyword_sessions
    • First observedlist_prospect_audits
    • First observedlist_reports
    • First observedlist_sites
    • First observedlist_snapshots
    • First observedlist_tracked_keywords
    • First observedlist_visibility_scans
    • First observedlist_wordpress_sites
    • First observedlist_workspaces
    • First observedmeasure_cwv
    • First observedplan_search_audit
    • First observedpromote_research_keywords
    • First observedpublish_content_brief
    • First observedrefresh_goals
    • First observedrefresh_site
    • First observedremove_tracked_keywords
    • First observedrender_screenshot
    • First observedreview_writing
    • First observedrevoke_api_key
    • First observedrewrite_content
    • First observedrun_analysis
    • First observedrun_visibility_scan
    • First observedscore_content_draft
    • First observedseed_keywords_from_gsc
    • First observedseo_insights
    • First observedset_ranking_location
    • First observedset_wordpress_connection
    • First observedsite_overview
    • First observedsnippet_check
    • First observedstart_crawl
    • First observedstart_prospect_audit
    • First observedstore_brand_kit
    • First observedsubmit_agent_feedback
    • First observedsubmit_sitemap
    • First observedsuggest_sources
    • First observedsync_search_console
    • First observedsync_shopify
    • First observedtechnical_health
    • First observedtracked_keyword_performance
    • First observedupdate_brand_profile
    • First observedupdate_content_brief
    • First observedupdate_goal
    • First observedvercel_link
    • First observedverify_wordpress
    • First observedvoice_probe
    • First observedvoice_probe_answer
    • First observedwp_activate_template
    • First observedwp_apply_style
    • First observedwp_assign_menu_location
    • First observedwp_bulk_replace
    • First observedwp_capabilities
    • First observedwp_clone_and_customize
    • First observedwp_clone_page
    • First observedwp_compare_pages
    • First observedwp_copy_page
    • First observedwp_create_menu
    • First observedwp_create_page
    • First observedwp_create_template
    • First observedwp_delete_custom_code
    • First observedwp_delete_page
    • First observedwp_delete_template
    • First observedwp_disable_writes
    • First observedwp_enable_writes
    • First observedwp_get_acf
    • First observedwp_get_brand_kit
    • First observedwp_get_page
    • First observedwp_get_seo_meta
    • First observedwp_list_custom_code
    • First observedwp_list_media
    • First observedwp_list_menu_locations
    • First observedwp_list_menus
    • First observedwp_list_pages
    • First observedwp_list_snapshots
    • First observedwp_list_templates
    • First observedwp_list_themes
    • First observedwp_patch_page
    • First observedwp_patch_template
    • First observedwp_preview_link
    • First observedwp_regenerate_css
    • First observedwp_replace_section
    • First observedwp_replicate_node
    • First observedwp_restore_snapshot
    • First observedwp_section_recipes
    • First observedwp_set_acf
    • First observedwp_set_brand_kit
    • First observedwp_set_custom_code
    • First observedwp_set_homepage
    • First observedwp_set_menu_items
    • First observedwp_set_page_slug
    • First observedwp_set_page_status
    • First observedwp_set_page_template
    • First observedwp_set_seo_meta
    • First observedwp_set_template_conditions
    • First observedwp_set_template_status
    • First observedwp_set_theme
    • First observedwp_style_keys
    • First observedwp_update_page
    • First observedwp_update_template
    • First observedwp_upgrade_accordions
    • First observedwp_upload_image
    • First observedwp_v4_style
    • First observedwp_widget_controls
    • First observedwp_widget_schema

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables users to scan any website for AI search visibility, producing AEO, GEO, agent readiness, and mention-readiness scores along with AI identity and business profile insights. Paid tools extend this to competitive comparisons, detailed audits, and generated fixes.
    4
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Unifies traditional SEO and Generative Engine Optimization (GEO) for Google, Bing, Yandex, and major LLMs, providing tools for search performance analysis, citation tracking, on-page audits, and internal link graph analysis.
    36
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources