XeoRank
Server Details
SEO, AEO and GEO audits, rank tracking, AI-citation scans and WordPress editing for any site.
- Status
- Healthy
- Uptime
- 99.5% over 21 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 240 tools
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.
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.
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.
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 toolsaccept_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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The source URL the user chose | |
| title | No | Link text (the source's name) | |
| brief_id | Yes | The brief ID | |
| claim_id | Yes | The claim id from suggest_sources |
TDQS
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.
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.
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.
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.
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.
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_keywordsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The brand/site ID | |
| keywords | Yes | JSON array of keyword strings and/or rich objects {keyword, intent?, funnel_stage?, cluster_name?, notes?, source?} |
TDQS
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.
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.
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.
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.
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.
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_redirectAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID whose domain redirects elsewhere |
TDQS
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.
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.
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.
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.
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.
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_accessARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_balanceARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_keywordsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| store | No | Persist onto tracked keywords (default true) | |
| site_id | Yes | Site UUID (from list_sites) | |
| industry | No | Optional industry/context hint to sharpen classification | |
| keywords | No | Optional JSON array of keyword strings; omit to classify all unclassified tracked keywords |
TDQS
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.
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.
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.
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.
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.
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_lintARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | WordPress page/post numeric ID | |
| site_id | Yes | Site UUID (from list_sites) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Save as the brief's draft (default true); false returns the markdown only | |
| brief_id | Yes | The brief ID (with human_inputs or author_draft on it) | |
| max_passes | No | Review→revise passes, 1–4 (default 3) |
TDQS
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.
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.
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.
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.
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.
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_sectionADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview the rewrite without writing (default false) | |
| node_id | Yes | Element id to edit (from assist_page_digest sections/elements, or wp_get_page) | |
| post_id | Yes | WordPress page/post numeric ID | |
| site_id | Yes | Site UUID (from list_sites) | |
| instruction | Yes | Natural-language edit, e.g. 'lead the hero with audit speed' or 'make the CTA more urgent' |
TDQS
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.
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.
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.
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.
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.
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_digestARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | WordPress page/post numeric ID (from wp_list_pages) | |
| site_id | Yes | Site UUID (from list_sites) |
TDQS
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.
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.
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.
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.
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.
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_couponADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The coupon code (case-insensitive) |
TDQS
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.
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.
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.
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.
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.
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_savingsARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_auditARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Connected WordPress site UUID (from list_wordpress_sites) |
TDQS
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.
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.
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.
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.
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.
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_pageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview sample rewrites + estimated credit cost for FREE, without writing or charging (default false) | |
| post_id | Yes | WordPress page/post numeric ID | |
| site_id | Yes | Site UUID (from list_sites) | |
| instruction | Yes | High-level transform, e.g. 'respecialize from urology to pulmonology — swap conditions, procedures and patient language' |
TDQS
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.
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.
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.
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.
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.
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_keysARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | Narrow the registry first: content | style | advanced. Optional. | |
| intent | Yes | What 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_id | Yes | Site UUID (from list_sites) | |
| widget_type | Yes | Elementor widget type, e.g. "icon-box", "heading", "nav-menu". For a container/section pass "container". |
TDQS
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.
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.
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.
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.
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.
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_fixARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The draft (markdown/plain, ≤ 60k chars) | |
| site_id | No | Optional brand/site id for cost attribution | |
| findings | No | JSON array of findings from review_writing (default: run the detector) | |
| voice_notes | No | The user's voice/terminology notes to preserve | |
| max_findings | No | Up to 12 findings per call (default 12) | |
| target_keyword | No | Optional target keyword |
TDQS
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.
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.
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.
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.
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.
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_chatBDestructiveInspect
Chat with the AI about an audit's findings. Ask questions about specific issues, get implementation guidance, or discuss priorities.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Your question or message about the audit | |
| audit_id | Yes | The audit ID |
TDQS
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.
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.
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.
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.
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.
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_inspectARead-onlyInspect
Inspect multiple URLs at once for indexing status and issues. More efficient than inspecting one at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | JSON array or comma-separated list of URLs (max 50) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_rankingsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_keywordsADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The brand/site ID | |
| updates | Yes | JSON 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
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.
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.
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.
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.
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.
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_logsARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Tail size, default 25, max 100 | |
| errors_only | No | Only error/warning lines (cheap — try this first) | |
| deployment_id | Yes | Vercel deployment uid |
TDQS
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.
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.
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.
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.
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.
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_statusARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Code site id |
TDQS
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.
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.
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.
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.
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.
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_setupARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Code site id |
TDQS
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.
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.
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.
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.
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.
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_domainADestructiveInspect
Attach a domain to a code site's Vercel project. Returns verification records if DNS setup is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to attach (e.g. mysite.com) | |
| site_id | Yes | Code site id |
TDQS
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.
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.
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.
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.
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.
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_publicADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| public | No | true = public, no login (default); false = require Vercel auth | |
| site_id | Yes | Code site id |
TDQS
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.
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.
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.
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.
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.
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_statusARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_filesADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | JSON array: [{"path":"src/index.ts","content":"..."}] | |
| message | No | Commit message | |
| site_id | Yes | Code site id |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum page+keyword pairs to analyse (default 10, max 50). Each one consumes a unit. | |
| dry_run | No | List what would be analysed and the unit cost without spending any | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional friendly label | |
| domain | No | Alternative to site_id — the brand domain to bind to | |
| api_key | No | Framer project API key (Site Settings → General → API Keys) | |
| project | No | Framer project URL (https://framer.com/projects/<id>) or bare project id | |
| site_id | No | XeoRank 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
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.
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.
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.
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.
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.
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_gaBDestructiveIdempotentInspect
Initiate the Google Analytics connection flow for a site.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID to connect GA for | |
| property_id | Yes | The GA4 property ID to connect |
TDQS
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.
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.
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.
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.
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.
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_githubADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Optional: a GitHub Personal Access Token to connect directly instead of OAuth |
TDQS
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.
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.
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.
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.
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.
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_adsADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The brand/site ID to connect Google Ads for |
TDQS
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.
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.
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.
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.
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.
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_vercelADestructiveInspect
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Optional: a Vercel access token to connect directly instead of OAuth | |
| team_id | No | Optional Vercel team id (only used with the token fallback) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Optional friendly name for the site | |
| domain | Yes | The site domain, e.g. example.com | |
| transport | No | Connection method: 'ssh' (default) or 'plugin' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | What the user said about angle or audience | |
| goal_id | Yes | The goal ID (list_goals) | |
| site_id | Yes | The site ID | |
| target_keyword | No | The keyword the piece targets, if the goal title does not say |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The live page URL on this site | |
| notes | No | What the user wants from the edit | |
| goal_id | No | The roadmap goal this serves, if any | |
| site_id | Yes | The site ID | |
| target_keyword | No | Override the derived target | |
| author_wrote_it | No | true 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
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.
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.
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.
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.
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.
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_opportunitiesARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many to return (default 25, max 100) | |
| detail | No | summary (default) | full | |
| trends | No | Fetch live Search Console windows for rising/new demand (default true; needs the user's GSC connection) | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_outcomesARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No | Re-read Search Console for due pages first (default false) | |
| site_id | Yes | The site ID | |
| checkpoint | No | 14 | 30 (default) | 60 |
TDQS
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.
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.
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.
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.
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.
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_crawlADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The partial crawl job ID | |
| additional_pages | No | Pages to add to the limit (default 500; the plan cap still applies) |
TDQS
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.
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.
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.
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.
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.
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_keyADestructiveInspect
Create a new API key for your Xyle account. The full key is only shown once upon creation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A descriptive name for the API key (e.g. 'Claude Desktop', 'CI/CD') |
TDQS
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.
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.
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.
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.
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.
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_auditBDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain to audit, e.g. example.com | |
| client_name | Yes | Name of the client/business being audited |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | create | optimize (inferred when omitted) | |
| notes | No | Anything the user said about angle, audience or constraints | |
| title | No | Working title, if the user already has one | |
| intent | No | informational | commercial | transactional | navigational | |
| goal_id | No | The goal this piece serves (from list_goals). Prefer content_for_goal when the user starts from a goal. | |
| site_id | Yes | The site ID | |
| live_serp | No | Fetch live Google results when rivals are thin (default true); false = stored evidence only | |
| opportunity | No | JSON: the opportunity object from content_opportunities (kept verbatim) | |
| target_keyword | Yes | The keyword / prompt the piece targets |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | JSON array of freeform labels, e.g. ["q3","client-ask"] | |
| stage | No | discover | fix | build | grow | defend | |
| title | Yes | What the brand is trying to achieve, in plain language | |
| due_at | No | ISO 8601 date/time this goal is due, e.g. 2026-12-15 | |
| site_id | Yes | The brand/site ID | |
| category | No | seo | aeo | geo | technical | content | authority — same vocabulary as the fix queue, so goals and issues line up | |
| priority | No | low | medium | high | |
| parent_id | No | Make this a sub-goal of an existing top-level goal | |
| starts_at | No | ISO 8601 date/time this goal starts, e.g. 2026-10-01 | |
| metric_key | No | A key from goal_metrics. Omit for a manual or issue-backed goal. | |
| description | No | Why it matters, or how it will be done | |
| owner_email | No | Who owns it; defaults to the calling user | |
| manual_total | No | For a goal no metric covers: how many things need doing | |
| target_value | No | The number to reach. For a 'down' metric this is lower than today, e.g. orphan_pages target 0. |
TDQS
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.
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.
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.
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.
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.
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_sessionBDestructiveInspect
Start a new keyword research session. Provide a seed topic or URL to discover related keywords, search volumes, and clustering.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The seed topic, keyword, or URL to research | |
| country | No | Target country code (e.g. 'us', 'uk', 'de'). Default: 'us' | |
| site_id | No | Optional site ID to associate the session with | |
| language | No | Target language code (e.g. 'en', 'de', 'fr'). Default: 'en' |
TDQS
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.
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.
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.
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.
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.
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_siteBDestructiveInspect
Add a new website to your Xyle account for SEO tracking and analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain of the website to add (e.g. example.com) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Pasted unedited writing by the author (adds to urls) | |
| urls | No | JSON array or comma-separated list of the author's own page URLs (max 25) | |
| label | No | Whose voice this is, e.g. 'Vikas — founder posts' | |
| site_id | Yes | The site ID | |
| register | No | blog (default) | docs | email | landing — keep one profile per kind of writing |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| answers | Yes | JSON object, e.g. {"contractions":"yes","person":"we","reader":"yes","dashes":"commas","formality":"plain","sentences":"mixed"} | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_goalADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goal_id | Yes | Goal id from list_goals | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_sessionCDestructiveIdempotentInspect
Delete a keyword research session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | The keyword session ID to delete |
TDQS
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.
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.
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.
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.
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.
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_siteADestructiveIdempotentInspect
Remove a website from your Xyle account. This does not delete any external data.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The unique ID of the site to remove |
TDQS
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.
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.
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.
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.
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.
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_siteADestructiveInspect
Disconnect a WordPress site from Xyle and delete its stored key reference.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_recommendARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| industry | No | e.g. skincare, dev tools, real estate | |
| keywords | No | style/brand cues, e.g. 'minimal, trust, dark, bold' — include what you saw in a snapshot | |
| page_type | No | landing | ecommerce_pdp | dashboard | blog | portfolio | pricing | about | contact | |
| project_type | No | e.g. SaaS, e-commerce, agency, portfolio, fintech, healthcare |
TDQS
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.
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.
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.
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.
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.
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.
design_searchARead-onlyInspect
Search the design knowledge base in one domain: color | style | typography | page_pattern | ux. Returns ranked matches.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | keywords to match | |
| domain | Yes | color | style | typography | page_pattern | ux |
TDQS
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 'Returns ranked matches', a useful output hint, but says nothing about why idempotentHint=false (result variability) or how ranking works.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the scope constraint front-loaded and the return behavior appended; every clause carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema search tool, the description covers what it searches, the constrained domain set, and that results are ranked. The only real gap is matching behavior for the optional query parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query and domain. The description restates the domain enum but adds no matching semantics, query syntax, or default behavior beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (design knowledge base) and enumerates the domain scope, which distinguishes it from neighbors like design_recommend and assist_design_lint. It stops short of naming those siblings explicitly, so it doesn't reach a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in one domain' implies the single-domain constraint and that a domain must be chosen, but there is no explicit when-to-use guidance and no mention of when design_recommend or assist_design_lint would be preferred instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_competitorsARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Candidates to return after filtering (default 10) | |
| domain | Yes | Domain to find competitors for, e.g. cogniswitch.ai | |
| location_code | No | Country code for the index: 2840 US (default), 2356 India, 2826 UK, 2036 Australia, 2124 Canada. Pass the brand's market. |
TDQS
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.
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.
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.
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.
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.
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_profileARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max keywords (default 100). Raise to 200-500 for large competitors — still one request. | |
| domain | Yes | Domain to profile, e.g. neo4j.com | |
| location_code | No | Country code: 2840 US (default), 2356 India, 2826 UK, 2036 Australia, 2124 Canada. |
TDQS
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.
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.
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.
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.
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.
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_fileARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_reportBRead-onlyInspect
Get the downloadable PDF content of a report.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID | |
| report_id | Yes | The report ID |
TDQS
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.
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.
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.
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.
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.
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_categoriesARead-onlyInspect
List the Elementor knowledge categories with their topic titles — the map/router for browsing what's available before searching.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | "concise" (default) trims each category to 5 topics; "detailed" lists all topics. |
TDQS
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.
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.
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.
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.
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.
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_getARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | entry id, e.g. 'widgets-widget-base-structure' or 'controls-repeater' |
TDQS
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.
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.
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.
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.
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.
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.
elementor_searchARead-onlyInspect
Search the Elementor + WordPress development knowledge base — Elementor widgets, controls, group controls, dynamic tags, forms, theme builder, editor internals, scripts & styles, hooks, and Elementor + WordPress best practices (plugin structure, hooks, enqueue, nonces, sanitize/escape, $wpdb, CPTs, REST, i18n, caching, cron). Distilled from developers.elementor.com and developer.wordpress.org. Returns ranked, trimmed matches (id, title, summary, docs_url); call elementor_get(id) for the full guide + code. Use this whenever building an Elementor widget/control/dynamic tag/form/theme location OR a WordPress plugin feature.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | max results (default 6; detail="detailed" widens to 12) | |
| query | No | keywords, e.g. 'custom widget render', 'repeater control', 'register rest route', 'wpdb prepare sql', 'nonce capability check', 'register post type' | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| category | No | optional filter: addons | widgets | controls | group-controls | dynamic-tags | forms | theme-builder | internals | scripts-styles | hooks | best-practices | wordpress |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint), so the bar is lower. The description adds useful non-annotation behavior: results are ranked and trimmed, include id/title/summary/docs_url, and the 'detail' setting controls verbosity and bounds — that return-shape disclosure is valuable given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded verb+resource followed by scope and the retrieval follow-up. The long enumeration of covered areas is verbose but earns its place by helping keyword matching; there is little true filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the returned fields and the two-step search→elementor_get flow, plus the concise/detailed behavior. Adequate for an optional-parameter search tool, though pagination/ranking specifics are not detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, category, detail, and limit (including the detailed=12 widening). The description body 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and a clearly bounded resource (the Elementor + WordPress development knowledge base), then enumerates the covered domains (widgets, controls, dynamic tags, hooks, best practices, etc.). This distinguishes it from sibling tool elementor_get (full guide) and elementor_categories (browsing categories).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('whenever building an Elementor widget/control/dynamic tag/form/theme location OR a WordPress plugin feature') and names the follow-up alternative, elementor_get(id), for full detail. It does not, however, say when not to use it or compare against other search-like siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_audit_reportADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The audited URL/domain, shown on the report cover | |
| site_id | No | Optional — the prospect audit's site_id, to file this export against it | |
| report_data | Yes | JSON 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
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.
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.
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.
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.
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.
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_siteARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The brand's domain or URL, e.g. navyaai.com or https://www.navyaai.com/ |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | HTML snippet (set_custom_code) | |
| text | No | New text (set_text) | |
| limit | No | Max text nodes (default 300) | |
| action | Yes | pages | children | node_info | node_dump | text_styles | text_nodes | set_text | set_attributes | set_custom_code | |
| search | No | Filter text_nodes by substring | |
| node_id | No | Target node id (set_text / set_attributes) | |
| location | No | headStart | headEnd | bodyStart | bodyEnd (set_custom_code, default headEnd) | |
| framer_site_id | Yes | From connect_framer | |
| attributes_json | No | JSON object of node attributes (set_attributes) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New collection name (create_collection) | |
| limit | No | Max items to return (default 100) | |
| action | Yes | collections | create_collection | items | upsert_items | |
| collection | No | Collection id or name (for items / upsert_items) | |
| items_json | No | JSON array for upsert_items | |
| fields_json | No | JSON array of {name,type} (create_collection). type: string|formattedText|number|boolean|image|link|date | |
| framer_site_id | Yes | From connect_framer |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dsl | No | DSL 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. | |
| url | No | Image URL to upload (action=add_image) | |
| code | No | React/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. | |
| name | No | Component file name (action=create_code_file), e.g. 'AuroraGrain.tsx' | |
| brief | No | action=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. | |
| query | No | Image subject (action=find_images) | |
| action | Yes | suggest | guide | validate | apply | find_images | add_image | code_files | create_code_file | add_component | |
| page_path | No | Optional page path to scope the change (action=apply) | |
| insert_url | No | action=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_id | No | From connect_framer (not needed for action=guide) | |
| skip_validation | No | action=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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| deploy | No | Also deploy to production (default false) | |
| framer_site_id | Yes | From connect_framer |
TDQS
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.
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.
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.
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.
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.
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_auditARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Business name + city, or full address (e.g. 'Malnad Realty, Shivamogga') | |
| place_id | No | Google place_id (skips the lookup) |
TDQS
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.
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.
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.
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.
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.
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_reportADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID to generate a report for | |
| period_end | No | Period end, YYYY-MM-DD, not in the future. Default: last day of last month | |
| brand_terms | No | Brand query terms (JSON array or comma-separated) for the branded vs non-branded split | |
| period_type | No | "monthly" (default; period must be one full calendar month), "weekly" (exactly 7 days) or "custom" | |
| period_start | No | Period start, YYYY-MM-DD. Default: first day of last month | |
| comparison_mode | No | "previous_period" (default), "year_over_year" or "none" |
TDQS
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.
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.
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.
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.
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.
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_markupARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full page URL to generate schema for | |
| context | No | Optional grounded facts, e.g. {"faqs":[{"q":"...","a":"..."}], "business_name":"...", "address":{...}, "telephone":"...", "logo":"...", "author":"..."} | |
| schema_type | No | faq | organization | article | howto | breadcrumb | localbusiness | auto (default auto — picks from page shape) |
TDQS
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.
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.
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.
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.
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.
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_analysisBRead-onlyInspect
Get the results of a previously run SEO analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| analysis_id | Yes | The analysis ID |
TDQS
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.
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.
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.
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.
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.
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_auditBRead-onlyInspect
Get the results of an SEO audit including scores, issues, and action items.
| Name | Required | Description | Default |
|---|---|---|---|
| audit_id | Yes | The audit ID |
TDQS
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.
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.
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.
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.
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.
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_frameworkARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | For section=modules: core | deep | autonomous | |
| profile | No | For section=modules: P1 | P2 | P3 | P4 | |
| section | No | overview (default) | profile_matrix | modules | module | deliverable | report_template | tool_standards | |
| module_id | No | Required for section=module — e.g. F1, G2, T6 |
TDQS
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.
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.
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.
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.
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.
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_reportARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| audit_id | Yes | The audit ID |
TDQS
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.
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.
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.
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.
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.
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_backlink_profileARead-onlyInspect
Get a site's backlink profile — summary (referring domains, dofollow ratio, risk breakdown), top anchors, and the per-link detail list paged 50 at a time with a toxicity score each. Filter by risk, sort, page with offset, or roll up by referring domain. Cached for 24h; pass force_refresh=true to trigger a live (paid) fetch.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | Keep only links/domains at this risk level: low | medium | high | |
| sort | No | 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) | |
| view | No | "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 | |
| limit | No | Rows to return (default 50, max 500) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| offset | No | Rows to skip (default 0). The result carries rows_total and next_offset | |
| site_id | Yes | The site ID | |
| force_refresh | No | Trigger a live fetch instead of using the cached snapshot (~$0.05/call). Default: false |
TDQS
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 real value beyond that: 24h caching, and that force_refresh=true triggers a live paid fetch (~$0.05/call), which also explains the idempotentHint=false. It stops short of describing rate limits or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler: the return payload comes first, the shaping options second, and the cache/cost caveat last. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by naming the three payload shapes (summary, anchors, per-link rows with toxicity scores). Combined with annotations covering safety and the description covering caching and cost, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including enum-like values for risk, sort, view and detail, plus the force_refresh cost. The description restates the filter/sort/page/rollup behaviors and the default page size but adds no format or syntax detail the schema lacks. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Get') plus resource ('a site's backlink profile'), and it enumerates the concrete payload (referring domains, dofollow ratio, risk breakdown, top anchors, per-link detail with toxicity scores). An agent can tell this apart from sibling profile tools like get_brand_profile or domain_keyword_profile without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to shape the call ('Filter by risk, sort, page with offset, or roll up by referring domain') and when a paid live fetch is triggered, which is genuinely useful. However it never states when to prefer this tool over alternatives such as download_disavow_file or get_competitive_landscape, nor any exclusions, so usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_brand_profileARead-onlyDestructiveInspect
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_landscapeARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_overlapARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID | |
| location_code | No | Country location code, e.g. 2840 United States, 2826 United Kingdom, 2356 India, 2036 Australia, 2124 Canada (default 2840) | |
| limit_per_domain | No | Keyword ideas per competitor domain (default 200) |
TDQS
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.
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.
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.
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.
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.
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_briefBRead-onlyDestructiveInspect
One brief in full: evidence bundle, outline, draft markdown, last score with checks and fixes, publish state, and the next_step.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | summary (default) | full | |
| brief_id | Yes | The brief ID |
TDQS
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.
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.
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.
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.
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.
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_outcomeARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | Yes | The brief ID |
TDQS
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.
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.
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.
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.
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.
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_resultsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows per list (default 25 pages / 50 issues; max 500 pages / 1000 issues) | |
| query | No | Issues only: substring match on the page URL or message | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| job_id | Yes | The crawl job ID | |
| offset | No | Rows to skip in each list (default 0). Use with limit to page | |
| include | No | Which lists to return: "both" (default), "pages" or "issues" | |
| rule_id | No | Issues only: one rule id (e.g. OP-H-003) — returns every affected URL for that finding | |
| category | No | Issues only: filter by category (e.g. on_page, technical, schema) | |
| severity | No | Issues only: critical | high | medium | low | info | |
| page_filter | No | Pages only: broken | redirect | thin |
TDQS
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.
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.
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.
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.
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.
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_statusBRead-onlyInspect
Check the status of a running or completed crawl job. Stuck or unwanted crawl? Pass cancel=true to stop it instead of polling forever.
| Name | Required | Description | Default |
|---|---|---|---|
| cancel | No | Cancel the job (stops a stuck/unwanted crawl) and return its final status | |
| job_id | Yes | The crawl job ID |
TDQS
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.
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.
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.
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.
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.
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_resultsCRead-onlyInspect
Get Core Web Vitals measurement history for a site.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| device | No | Filter by device: 'mobile' or 'desktop'. Omit for both. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_disclosureCRead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| author | No | The author's name to use in the line | |
| brief_id | Yes | The brief ID |
TDQS
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.
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.
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.
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.
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.
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_metricsCRead-onlyInspect
Get Google Analytics metrics for a site: sessions, users, pageviews, bounce rate, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID | |
| end_date | No | End date (YYYY-MM-DD). Default: today | |
| start_date | No | Start date (YYYY-MM-DD). Default: 28 days ago |
TDQS
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.
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.
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.
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.
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.
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_statusBRead-onlyInspect
Check the Google Analytics connection status for a site.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_statusARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_candidatesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max candidates to return (default 50) | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_metricsBRead-onlyInspect
Get Google Search Console dashboard for a site: clicks, impressions, CTR, average position, top queries, top pages, coverage, sitemaps, and issues.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_pagesARead-onlyInspect
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return, highest clicks first. Omit for all of them. | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_queriesARead-onlyInspect
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return, highest clicks first. Omit for all of them. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_sitemapsBRead-onlyInspect
Submitted sitemaps from Google Search Console with status, errors, and warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_statusBRead-onlyInspect
Check if a site has GSC (Google Search Console) connected and the scope of access.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_clustersBRead-onlyInspect
Get keyword clusters from a session. Keywords are grouped by semantic similarity and search intent.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | The keyword session ID |
TDQS
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.
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.
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.
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.
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.
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_funnelARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_sessionCRead-onlyInspect
Get details and keywords from a keyword research session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | The keyword session ID |
TDQS
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.
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.
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.
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.
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.
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_ideasARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max ideas to return, 1-300 (default 100) | |
| seeds | Yes | JSON array of 1-20 seed keywords/phrases, e.g. ["machine vision integrator","edge ai manufacturing"] | |
| site_id | Yes | The brand/site ID — must have its own connected Google Ads account | |
| location_code | No | Country location code, e.g. 2840 for United States, 2356 India (default 2840) |
TDQS
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.
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.
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.
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.
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.
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_planARead-onlyInspect
Get your current Xyle subscription plan details including feature limits and caps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_auditARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| audit_id | Yes | The id returned by start_prospect_audit |
TDQS
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.
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.
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.
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.
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.
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_reportCRead-onlyInspect
Get a previously generated business report.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID | |
| report_id | Yes | The report ID |
TDQS
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.
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.
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.
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.
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.
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_score_trendsARead-onlyDestructiveInspect
Score trends over a window (default 90 days) — the direction SEO/AEO/GEO are moving for a brand. Cheaper than list_snapshots when you only need the trajectory. Free read.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window in days (1-365, default 90) | |
| site_id | Yes | The brand/site ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a read. The description adds a genuinely extra behavioral fact not in the annotations: 'Free read' (no cost). It does not reconcile the odd idempotentHint=false / destructiveHint=true annotations, but it does not contradict the read-only nature either. Adding cost context to an annotation-covered read is worth a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the core purpose, then the alternative, then cost. Every clause carries information with no filler. Slightly clipped rather than maximally clean, but tight and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema, the description conveys what trajectory data means and when to prefer it. No output schema means return shape is unspecified, but the description conceptually covers the returned 'direction' of movement. Adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (days, site_id) are fully documented in the schema. The description only restates the default window ('default 90 days'), adding no syntax or format detail beyond the schema. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Score trends over a window') and clarifies what the score means (SEO/AEO/GEO direction for a brand), so an agent knows exactly what data is returned. It references list_snapshots as an alternative, which aids differentiation, though the framing is cost-oriented rather than a clean purpose distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names an alternative and the condition that selects this tool: 'Cheaper than list_snapshots when you only need the trajectory.' That is a clear when-to-use signal. It does not state when-NOT-to-use beyond the cost/trajectory tradeoff, 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_shopify_analyticsBRead-onlyInspect
Get Shopify store analytics including traffic, sales, and product performance data.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID | |
| end_date | No | End date (YYYY-MM-DD) | |
| start_date | No | Start date (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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_productsBRead-onlyInspect
Get Shopify products with SEO metadata (titles, descriptions, handles, images).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1) | |
| limit | No | Number of products to return (default: 25) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_statusCRead-onlyInspect
Check the Shopify integration status for a site.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_siteARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The unique ID of the site | |
| include_analysis | No | Embed the full latest page analysis (~50 KB). Default false |
TDQS
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.
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.
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.
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.
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.
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_healthARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_insightsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_journeysARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_requirementsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID | |
| site_type | No | Override the detected type (saas, ecommerce, local_business, content_publisher, b2b_services, healthcare, portfolio_brand, general). Persisted as user-set. |
TDQS
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.
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.
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.
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.
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.
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_statsBRead-onlyInspect
Get summary statistics for a site including page count, crawl history, and overall SEO health.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The unique ID of the site |
TDQS
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.
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.
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.
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.
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.
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_diffARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | Yes | Later snapshot ID | |
| before | Yes | Earlier snapshot ID |
TDQS
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.
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.
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.
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.
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.
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_sourcesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window length in days (7-90, default 28) | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_inspectionsBRead-onlyInspect
URL inspection results from Google Search Console — indexing status, crawl info, and issues per URL.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_usageBRead-onlyInspect
Get your current usage across all Xyle features: analyses run, crawls performed, keywords researched, etc.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_resultsCRead-onlyInspect
Get the results of an AI visibility scan.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| scan_id | Yes | The visibility scan ID |
TDQS
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.
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.
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.
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.
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.
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_sourcesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Look back this many days (default: 30) | |
| limit | No | Maximum domains to return (default: 25) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_profileCRead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_siteBRead-onlyInspect
Get details (including the SSH public key) for one connected WordPress site.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_createADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New repo name | |
| private | No | Private (default true) or public — ask the user | |
| template | No | Optional template repo as owner/name to scaffold from |
TDQS
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.
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.
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.
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.
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.
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_linkADestructiveInspect
Link an EXISTING GitHub repo as a code site (no scaffold). Use when the user already has code/a repo. Provide repo as owner/name. Returns a site_id used by later steps.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Existing repo as owner/name (e.g. acme/marketing-site) |
TDQS
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 usefully adds that a site_id is returned for later steps, but it does not reconcile the seemingly benign 'link' wording with the destructive annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and scope, then the usage condition, then the return value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with annotations covering safety and no output schema, the description covers purpose, usage condition, input format, and return value. The mention of 'later steps' is slightly vague about which follow-up tools consume the site_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'repo' parameter with its owner/name example is already fully documented. The description's 'Provide repo as owner/name' merely restates the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination ('Link an EXISTING GitHub repo as a code site') with a scoping qualifier ('no scaffold'). The emphasis on EXISTING implicitly distinguishes it from the creation sibling github_create, but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selecting condition: 'Use when the user already has code/a repo,' reinforced by 'no scaffold.' This effectively excludes the scaffold/create path, but it does not name the alternative tool or spell out 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.
github_list_reposARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size, default 10, max 30 | |
| query | No | Filter repos by name substring (preferred over paging) |
TDQS
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.
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.
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.
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.
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.
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_metricsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. |
TDQS
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.
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.
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.
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.
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.
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_urlARead-onlyInspect
Inspect a single URL for indexing status, crawl info, and Google Search Console data. Checks if the URL is indexed and identifies issues.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to inspect | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_chatADestructiveInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Your message or question about the keywords | |
| session_id | Yes | The keyword session ID |
TDQS
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.
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.
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.
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.
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.
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_ranksARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | With by_keyword: domains per keyword (default 10, max 100) | |
| limit | No | Competitors to return after filtering platforms (default 15, max 1000) | |
| site_id | Yes | Brand/site ID (from list_sites). Uses that brand's tracked keywords — add keywords first if it has none. | |
| by_keyword | No | 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. |
TDQS
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.
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.
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.
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.
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.
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.
link_goal_issuesAInspect
Roll fix-queue issues up to a goal, so the queue answers 'why am I doing this?'. Select by explicit issue_ids, by rule_keys, or by category (e.g. every 'aeo' issue). An issue already linked to a DIFFERENT goal is skipped and reported rather than stolen — pass reassign=true only when you mean to move it. For a goal with no metric_key and no manual_total, these linked issues become its progress: resolved / total.
| Name | Required | Description | Default |
|---|---|---|---|
| unlink | No | Detach the selected issues from THIS goal instead of linking — the undo for an over-broad rule_keys link. Default false. | |
| dry_run | No | Count what would be linked/unlinked without writing. Use before a rule_keys or category link — 3 keys once expanded to 197 rows. Default false. | |
| goal_id | Yes | Goal id from list_goals | |
| site_id | Yes | The brand/site ID | |
| category | No | Link every open issue in this category instead | |
| reassign | No | Move issues that already belong to another goal. Default false. | |
| issue_ids | No | JSON array of site_issue ids | |
| rule_keys | No | JSON array of rule keys, e.g. ["thin_content","duplicate_title"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover write-ness (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true); the description adds the crucial behavioral fact that an issue already linked to a DIFFERENT goal is skipped and reported rather than silently reassigned. It also explains the downstream effect: linked issues become the goal's resolved/total progress when no metric_key or manual_total exists — context no annotation supplies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the core action before the selection modes and edge-case behavior. Slightly dense, but every clause earns its place and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with no output schema, the description covers selection, skip-not-steal behavior, the reassign condition, and progress semantics well. Minor gaps remain around what the call returns (counts of linked/skipped) and unlink confirmation, though dry_run is covered in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it clarifies the three selection strategies and gives a concrete category example ('aeo'), and ties reassign to the deliberate move-intent. It stops short of documenting unlink/dry_run semantics, which live only in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — rolling fix-queue issues up to a goal — with the added framing that it makes the queue answer 'why am I doing this?'. An agent can distinguish it from sibling goal tools (create_goal, update_goal, goal_metrics, content_for_goal) at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear selection modes (explicit issue_ids, rule_keys, or category) and an explicit conditional instruction: 'pass reassign=true only when you mean to move it.' It does not name a competing sibling tool or state when-not-to-use, so it falls short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analysesCRead-onlyInspect
List all SEO analyses for a site.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| site_id | Yes | The site ID to list analyses for |
TDQS
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.
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.
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.
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.
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.
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_keysARead-onlyInspect
List all API keys for your Xyle account. Shows key names, prefixes, and creation dates (not the full key).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) |
TDQS
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.
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.
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.
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.
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.
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_auditsARead-onlyInspect
List SEO audits, most recent first. Pass site_id to see only that brand's audits.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| site_id | No | Only audits for this site. Omit for every audit on the account. |
TDQS
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.
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.
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.
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.
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.
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_sitesBRead-onlyDestructiveInspect
List the user's code sites (repo, visibility, Vercel project, prod url, status).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_competitorsBRead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_briefsARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_crawlsBRead-onlyInspect
List all crawl jobs for a site, ordered by most recent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| site_id | Yes | The site ID to list crawls for |
TDQS
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.
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.
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.
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.
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.
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_goalsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The brand/site ID from list_sites |
TDQS
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.
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.
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.
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.
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.
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_invoicesCRead-onlyInspect
List your billing invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) |
TDQS
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.
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.
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.
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.
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.
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_sessionsARead-onlyInspect
List keyword research sessions. Pass site_id to see only that brand's sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| site_id | No | Only sessions for this site. Omit for every session on the account. |
TDQS
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.
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.
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.
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.
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.
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_auditsBRead-onlyInspect
List your recent prospect audits, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results, default 20 |
TDQS
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.
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.
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.
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.
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.
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_reportsCRead-onlyInspect
List all generated business reports for a site.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_sitesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| org_id | No | Workspace to list, from list_workspaces. Omit for your own workspace. |
TDQS
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.
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.
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.
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.
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.
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_snapshotsARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max snapshots, default 20, max 100 | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_keywordsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_scansCRead-onlyInspect
List all AI visibility scans.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 25) | |
| site_id | No | Only scans for this site. Omit for every scan on the account. |
TDQS
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.
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.
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.
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.
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.
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_sitesBRead-onlyInspect
List the WordPress sites this user has connected to Xyle and their status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_workspacesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_cwvBDestructiveInspect
Measure Core Web Vitals (LCP, FID, CLS, INP, TTFB) for a URL using real PageSpeed Insights data.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to measure | |
| site_id | Yes | The site ID | |
| strategy | No | Device strategy: 'mobile' or 'desktop'. Default: 'mobile' |
TDQS
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.
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.
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.
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.
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.
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_auditARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | core (default) | deep | autonomous | |
| domain | Yes | The target client's domain, e.g. acme.com | |
| profile | No | Override the inferred profile: P1 (local) | P2 (SMB) | P3 (mid-market) | P4 (enterprise) | |
| site_id | No | If this domain is already a Xyle site, pass its id (list_sites) to infer the profile from a real crawl instead of guessing |
TDQS
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.
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.
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.
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.
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.
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_keywordsADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | No | Target brand/site ID (defaults to the session's linked site) | |
| session_id | Yes | The keyword research session ID | |
| cluster_ids | No | JSON array of cluster ids to promote (defaults to all clusters in the session) |
TDQS
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.
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.
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.
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.
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.
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=...).
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview without creating anything | |
| brief_id | Yes | The brief ID | |
| post_type | No | post (default) | page | |
| wp_site_id | No | A specific WordPress connection ID (defaults to the brand's verified one) |
TDQS
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.
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.
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.
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.
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.
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_checkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | An inner path to test slash and case variants on, e.g. /services/ai-consulting | |
| domain | Yes | Domain or URL, e.g. navyaai.com |
TDQS
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.
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.
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.
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.
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.
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_goalsAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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_siteAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Specific URL to refresh (must be on this site's domain). Defaults to the homepage. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_keywordsADestructiveIdempotentInspect
Remove tracked keywords by id (get ids from list_tracked_keywords). Pass keyword_ids as a JSON array of ids.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The brand/site ID | |
| keyword_ids | Yes | JSON array of tracked-keyword ids to remove, e.g. ["<uuid>","<uuid>"] |
TDQS
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.
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.
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.
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.
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.
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_screenshotARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page URL to screenshot (http/https) | |
| clip | No | Pixel region 'x,y,width,height'. Cannot be combined with element_id/selector. | |
| width | No | Viewport width px (1280 desktop, 390 mobile; default 1280) | |
| format | No | jpeg (default) | webp | png. png is lossless and much larger. | |
| quality | No | 1-100 for jpeg/webp (default 80). Ignored for png. | |
| selector | No | CSS selector to capture, e.g. '.hero'. Ignored if element_id is set. | |
| full_page | No | Capture the full scrollable page (default FALSE — viewport only) | |
| element_id | No | Elementor element id from wp_get_page (e.g. 'db438b6') — captures just that widget |
TDQS
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.
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.
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.
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.
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.
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_writingARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Or a public page URL to fetch and review (main text only) | |
| text | No | Markdown or plain text to review (≥ 40 chars, ≤ 200k) | |
| shape | No | true 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_id | No | Apply 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. | |
| original | No | The 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_type | No | Override 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_domain | No | Optional site domain (e.g. qapilot.io) so listed internal_links are checked to be same-site | |
| target_keyword | No | Optional target keyword (checks the H1 carries it) | |
| expect_front_matter | No | true for a publishable draft: a missing YAML SEO head becomes a finding (default false) |
TDQS
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.
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.
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.
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.
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.
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_keyADestructiveIdempotentInspect
Revoke (delete) an API key. This action is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| key_id | Yes | The ID of the API key to revoke |
TDQS
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.
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.
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.
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.
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.
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_contentARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full page URL | |
| type | No | title | meta | heading | section (default title) | |
| query | No | Target search query to optimize for (optional) | |
| context | No | Optional extra context for the rewrite |
TDQS
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.
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.
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.
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.
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.
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_checkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| bots | No | Restrict to these user agents (JSON array or comma-separated). Default: the full search + AI list | |
| urls | No | Paths or URLs to test per bot (JSON array or comma-separated, max 25). The homepage is always included | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| domain | Yes | Domain or URL, e.g. navyaai.com |
TDQS
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.
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.
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.
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.
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.
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_analysisBDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page URL being analyzed | |
| query | No | Optional target keyword/query to evaluate the page against | |
| content | Yes | The page HTML or text to analyze — fetch the URL first, then pass its content here |
TDQS
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.
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.
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.
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.
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.
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_scanBDestructiveInspect
Run an AI visibility scan to check how your brand or site appears in AI-generated answers (ChatGPT, Gemini, Perplexity, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional specific query to check visibility for | |
| site_id | Yes | The site ID to scan visibility for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | Yes | The brief ID |
TDQS
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.
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.
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.
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.
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.
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_gscAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max keywords to add (default 50) | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_insightsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_locationADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | "desktop" or "mobile", default "desktop" | |
| site_id | Yes | The brand/site ID | |
| location | No | Country, state or city name to look up, e.g. "India" or "Hyderabad" | |
| language_code | No | Default "en" | |
| location_code | No | Exact location code instead of location, e.g. 2356 India, 2840 United States | |
| location_name | No | Human label, e.g. "United States" — inferred from location_code if omitted | |
| location_type | No | e.g. "Country" — inferred from location_code if omitted |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ssh_ip | No | SSH method: IP shown in hPanel after enabling SSH | |
| site_id | Yes | The WordPress site ID from connect_wordpress | |
| wp_root | No | SSH method: override WordPress root (default ~/public_html) | |
| wp_user | No | WordPress user (optional) | |
| site_url | No | Plugin method: site URL, e.g. https://example.com | |
| username | No | SSH method: username shown in hPanel | |
| wp_username | No | Plugin method: WordPress username for the Application Password | |
| app_password | No | Plugin method: the WordPress Application Password |
TDQS
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.
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.
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.
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.
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.
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_checkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| domain | Yes | Domain or URL, e.g. navyaai.com | |
| max_urls | No | Cap on URLs returned (default 2000, max 5000) | |
| status_sample | No | How many sitemap URLs to spot-check for 200/redirect (default 10, max 25, 0 to skip) |
TDQS
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.
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.
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.
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.
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.
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_overviewARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_checkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | JSON array or comma-separated list of URLs (max 20). Bare domains are treated as https:// |
TDQS
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.
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.
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.
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.
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.
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_crawlADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Seed URL to start crawling from, e.g. https://example.com | |
| max_depth | No | Max link depth from the seed URL (1-20, default 8) | |
| max_pages | No | Max pages to crawl. Default: the plan limit (free 50, Pro 500, Agency 1000); higher values are clamped to it |
TDQS
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.
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.
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.
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.
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.
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_auditADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The prospect's domain, e.g. acme.com | |
| max_pages | No | Crawl 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_name | No | The business/client name, for your own write-up later | |
| agency_notes | No | Freeform context for yourself — what the agency wants emphasized. Never interpreted, just handed back by get_prospect_audit. | |
| style_reference | No | Paste 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_domains | No | JSON array of up to 5 competitor domains to profile, e.g. ["rival1.com","rival2.com"]. Omit to auto-discover. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Brand/site id (from list_sites) | |
| brand_kit | Yes | Brand kit token object: colors (6 named slots + any extra named colors), typography, buttons, forms, images, layout. |
TDQS
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.
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.
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.
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.
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.
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_feedbackARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | Optional name of the tool this feedback concerns | |
| message | Yes | What was missing or wrong; be specific and actionable. | |
| site_id | No | Optional site id this feedback concerns | |
| category | Yes | Kind of issue | |
| severity | No | low | medium | high |
TDQS
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.
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.
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.
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.
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.
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_sitemapADestructiveIdempotentInspect
DEPRECATED — use sync_search_console. This never submitted a sitemap; it syncs Search Console data.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | Yes | The brief ID | |
| max_claims | No | Claims to research (default 6, max 10) | |
| web_search | No | Search Google per claim (default true) |
TDQS
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.
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.
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.
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.
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.
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_consoleADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_shopifyCDestructiveIdempotentInspect
Trigger a sync of Shopify product and page data to Xyle.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_healthARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The site ID |
TDQS
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.
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.
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.
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.
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.
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_performanceARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The brand/site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| icp | No | Who signs off, plus the moment that triggers the search | |
| usp | No | The claim a competitor could not copy onto their homepage — name the mechanism, skip adjectives | |
| site_id | Yes | Brand/site id from list_sites | |
| summary | No | 2-3 sentences a stranger could repeat back correctly; this is what AI answer engines quote | |
| industry | No | Narrow sub-category people actually search, not 'software' | |
| target_audience | No | In the buyer's words. Note separate motions (product vs services) — each becomes its own keyword set |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | create | optimize | |
| notes | No | Notes | |
| title | No | Title | |
| intent | No | Search intent | |
| status | No | idea | brief | draft | review | published | archived | |
| outline | No | JSON array: [{heading, level, notes}] | |
| brief_id | Yes | The brief ID | |
| draft_md | No | The full draft in markdown | |
| author_draft | No | HUMAN-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_inputs | No | JSON 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_serp | No | With refresh_evidence: fetch the live Google results again | |
| published_url | No | The live URL when the piece was published outside WordPress (starts outcome tracking) | |
| refresh_evidence | No | Re-collect the evidence bundle from stored data |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | JSON array of labels — replaces the existing set | |
| stage | No | discover | fix | build | grow | defend | |
| title | No | New title | |
| due_at | No | ISO 8601 date/time this goal is due | |
| status | No | not_started | active | at_risk | achieved | abandoned | |
| goal_id | Yes | Goal id from list_goals | |
| site_id | Yes | The brand/site ID | |
| category | No | seo | aeo | geo | technical | content | authority | |
| priority | No | low | medium | high | |
| starts_at | No | ISO 8601 date/time this goal starts | |
| metric_key | No | A key from goal_metrics. Changing this re-baselines the goal from the new metric, right now. | |
| description | No | New description | |
| manual_done | No | How many of manual_total are done | |
| manual_total | No | Revised total for a manual goal | |
| target_value | No | Revised target |
TDQS
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.
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.
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.
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.
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.
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.
vercel_linkADestructiveInspect
Create the Vercel project for a code site so it can be deployed. XeoRank ships the repo to Vercel directly (no git link), so Vercel needs no access to the GitHub repo — just needs connect_vercel done. After this, code_write_files pushes + deploys.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | Code site id |
TDQS
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 useful mechanism context (no git link, Vercel needs no GitHub repo access) but never explains what is destructive or what happens if the project already exists — the very thing the non-idempotent hint warns about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences that establish purpose, prerequisite, and follow-up with little waste. The clause "just needs connect_vercel done" is slightly loose, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with annotations and no output schema, the description supplies the workflow context an agent needs: prerequisite connection, no-git-link mechanism, and the downstream deploy step. A note on existing-project behavior or the returned link status would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter site_id is documented in the schema as "Code site id", so the description adds nothing beyond it. Baseline 3 applies for a one-parameter tool where the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create the Vercel project for a code site") plus the intent (so it can be deployed). It implicitly separates itself from the connect_vercel prerequisite and from github_link by noting XeoRank ships the repo directly with no git link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite ("just needs connect_vercel done") and an explicit follow-on ("After this, code_write_files pushes + deploys"), which tells the agent where this fits in the sequence. It stops short of naming a hard alternative or a when-not-to-use condition, 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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_probeARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Pairs to return, 1–4 (default 2) | |
| site_id | Yes | The site ID | |
| brief_id | No | The brief being written (topic and facts come from it) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | The side the author picked (the pair's a.side or b.side) | |
| trait | Yes | The pair's trait key | |
| site_id | Yes | The site ID | |
| brief_id | No | The brief, for the record |
TDQS
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID | |
| condition | No | Display condition (default include/general) | |
| template_id | Yes | The template post ID to make live | |
| demote_others | No | Demote prior active same-type templates (default true) |
TDQS
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.
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.
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.
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.
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.
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_styleADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| style | Yes | JSON style object applied to every id, e.g. {"bg":"#FFFFFF","radius":16,"padding":28}. Keys from wp_style_keys. | |
| dry_run | No | Preview the diff without writing. | |
| post_id | Yes | Page/post numeric id | |
| site_id | Yes | WordPress site id | |
| node_ids | Yes | JSON array of element ids, e.g. ["a1b2c3","d4e5f6"] (from wp_get_page outline). |
TDQS
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.
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.
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.
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.
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.
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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview counts + sample diffs without writing (default false) | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID | |
| whole_word | No | Match on word boundaries only (default false) | |
| replacements | Yes | JSON array of {find, replace} term swaps, e.g. [{"find":"urologist","replace":"pulmonologist"},{"find":"urology","replace":"pulmonology"}] | |
| case_insensitive | No | Case-insensitive matching (default false) |
TDQS
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.
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.
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.
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.
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.
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_capabilitiesARead-onlyDestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID (list_wordpress_sites) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | The SOURCE page/post ID to clone from | |
| site_id | Yes | The WordPress site ID | |
| variants | Yes | JSON 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Permalink slug for the new page (needs Connector v0.5.0+) | |
| title | Yes | Title for the new page | |
| status | No | draft (default) | publish | private | pending | |
| post_id | Yes | The SOURCE page/post ID to copy | |
| site_id | Yes | The WordPress site ID | |
| post_type | No | page (default) or post |
TDQS
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.
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.
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.
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.
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.
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_pagesARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| clone_post_id | Yes | Clone page/post ID | |
| clone_site_id | Yes | Clone (copy) site ID | |
| source_post_id | Yes | Source page/post ID | |
| source_site_id | Yes | Source (original) site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Permalink slug for the new page | |
| title | Yes | Title for the new page on the destination | |
| status | No | draft (default) | publish | private | pending | |
| post_id | Yes | The SOURCE page/post ID to copy | |
| post_type | No | page (default) or post | |
| dest_site_id | Yes | The DESTINATION WordPress site ID (where the copy is created) | |
| rehost_images | No | Copy the source's images into the destination media library and rewrite URLs (default TRUE). False = leave source-hosted URLs. | |
| source_site_id | Yes | The SOURCE WordPress site ID (where the original lives) |
TDQS
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.
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.
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.
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.
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.
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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Comma-separated tag names or IDs. Connector v0.8.0+. | |
| title | Yes | Page/post title | |
| atomic | No | Editor 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. | |
| blocks | No | Gutenberg block markup (<!-- wp:heading -->…) — creates a BLOCK page instead of Elementor; plugin transport + Connector v0.3.0+ | |
| dry_run | No | Build + round-trip validate + return a preview (warnings, size) WITHOUT creating the page (no quota used) | |
| heading | No | Optional H1 heading text (used only if no sections) | |
| site_id | Yes | The WordPress site ID | |
| subtext | No | Optional intro paragraph (used only if no sections) | |
| sections | No | PREFERRED for designs: native Elementor CONTAINER spec — [{direction,width,children:[{widthPercent,widgets:[{type,...}]}]}] | |
| post_type | No | page (default) | post — use 'post' to create a blog post | |
| categories | No | Comma-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_image | No | Featured 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
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Template title | |
| publish | No | Publish immediately after setting conditions (default false — draft-first) | |
| site_id | Yes | The WordPress site ID | |
| sections | No | JSON array — native Elementor CONTAINER spec (same shape as wp_create_page, incl. per-widget `style`) | |
| conditions | No | JSON array of condition strings, e.g. ["include/general"] | |
| page_settings | No | JSON 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_type | Yes | header | footer | single-post | single-page | single | archive | search-results | error-404 | loop-item | product | product-archive | popup | page | section | |
| elementor_data | No | Raw _elementor_data JSON (advanced alternative to sections) |
TDQS
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.
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.
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.
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.
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.
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_codeADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact snippet name from wp_list_custom_code | |
| site_id | Yes | WordPress site id |
TDQS
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.
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.
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.
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.
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.
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_pageADestructiveInspect
Trash a page or post (recoverable — goes to Trash). Refused for the homepage. Pass confirm=true. Writes-gated, Xyle Connector v0.6.0+.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to trash | |
| post_id | Yes | The page/post ID to trash | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_templateADestructiveInspect
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to trash | |
| site_id | Yes | The WordPress site ID | |
| template_id | Yes | The template post ID to trash |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_acfARead-onlyInspect
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_kitARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | WordPress site id (from list_wordpress_sites) |
TDQS
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.
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.
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.
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.
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.
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_pageARead-onlyInspect
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:
outline=true → the section/widget skeleton (ids, types, short labels; no field values). Cheap. Find your target here.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max nodes per response (default 120) | |
| cursor | No | Node-pagination offset from a previous response's next_cursor (responses are always complete JSON — never truncated mid-node) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| search | No | Only nodes whose value contains this text | |
| node_id | No | Return only this element's subtree (id from outline or a previous read) | |
| outline | No | Return 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_id | Yes | The WordPress post/page ID (integer) | |
| site_id | Yes | The WordPress site ID | |
| self_only | No | With node_id: return that element ONLY, no descendants — e.g. a container's own styles (include_styles=true) without its whole subtree | |
| breakpoint | No | desktop | 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_prefix | No | Only nodes under this outline path (e.g. '2' = third top-level section, '2,1') — fetch one section at a time on big pages | |
| widget_type | No | Only nodes of this widget type, e.g. 'icon-box' | |
| include_styles | No | Include each widget's current style settings | |
| include_content | No | Include the full rendered post_content (large; off by default) |
TDQS
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.
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.
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.
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.
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.
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_metaARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | No | Page/post ID. Omit for the homepage (static front page). | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_codeARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | WordPress site id |
TDQS
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.
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.
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.
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.
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.
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_mediaARead-onlyInspect
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max images to return (1-100, default 30) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_pagesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (1-500, default 100) | |
| detail | No | Output verbosity: "concise" (default) trims long lists to top-25 and caps size; "detailed" returns the full result. | |
| search | No | Only 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_id | Yes | The WordPress site ID | |
| post_type | No | page | post | elementor_library | elementor_component (Editor V4 Components — the documents e-component widgets point at; connector ≥ 0.9.18) (default: page) |
TDQS
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.
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.
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.
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.
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.
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_snapshotsARead-onlyInspect
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?'.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | Page/post ID | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_templatesARead-onlyInspect
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_themesARead-onlyInspect
List installed WordPress themes (name, status, version) via Xyle's SSH.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | JSON 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_run | No | Preview the diff without writing (propose). Default false. | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | JSON 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_run | No | Preview the diff without writing | |
| site_id | Yes | The WordPress site ID | |
| template_id | Yes | The template post ID (from wp_list_templates) |
TDQS
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.
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.
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.
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.
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.
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_preview_linkARead-onlyInspect
Get a short-lived tokenized PREVIEW URL for a page — WORKS FOR DRAFTS. Use it to see or screenshot unpublished work before publishing: mint the link, then pass preview_url to render_screenshot. Renders through a real WordPress head/footer, so theme CSS, the Elementor kit, per-post Elementor CSS, and custom-code snippets all load — same as the published page, just noindexed (needs Connector >= 0.9.9 for that; an older connector still renders the page but with NO CSS at all — if a preview screenshot looks totally unstyled, that's why, ask the user to update the plugin). Link expires (default 10 min). Requires Connector >= 0.7.6 minimum (on 'connector_update_required', ask the user to update the plugin).
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Link lifetime in seconds (60-3600, default 600; with share=true 60-604800, default 259200 = 3 days) | |
| share | No | true = ALSO return share_url, a client-safe link on the site's own domain (<site>/preview/<token>/ — no wp-json, no vendor name, no query string) that lives up to 7 days. Use this whenever a human other than the user will open the link. Connector >= 0.9.17. | |
| post_id | Yes | Page/post ID to preview (drafts allowed) | |
| site_id | Yes | The WordPress site ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read-only/idempotency profile; the description adds substantial behavior: expiry defaults, noindex emission, real head/footer rendering, CSS/Elementor kit loading, and graded connector-version requirements with failure symptoms and remediation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and the render_screenshot handoff, then layers caveats. Dense with parenthetical version details, but each clause (expiry, noindex, CSS failure mode) carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what it gets back (preview_url, and share_url when share=true), how long it lasts, and what the rendered result will look like — nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both ttl and share are already documented in the schema. The description's 'default 10 min' and share-for-humans framing mostly restate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a short-lived tokenized PREVIEW URL for a page') and immediately adds the scope differentiator 'WORKS FOR DRAFTS', which distinguishes it from published-page reads like 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('to see or screenshot unpublished work before publishing') and routes to the sibling: 'mint the link, then pass preview_url to render_screenshot'. It even gives a when-not/mitigation path for old connectors.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_id | Yes | WordPress site id |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | replace (default) | insert_before | insert_after | delete | append | |
| index | No | 0-based top-level section index (or use node_id) | |
| atomic | No | Editor 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_run | No | Preview section counts without writing. Default false. | |
| node_id | No | A top-level element id from wp_get_page outline (or use index) | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID | |
| elements | No | RAW 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. | |
| sections | No | JSON array of native section objects (required unless op=delete) | |
| allow_widget_loss | No | op=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
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.
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.
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.
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.
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.
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_nodeADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | How many copies to add after the source, 1-50. A 3-up row from one built card = count 2. | |
| dry_run | No | Preview without writing. | |
| node_id | Yes | Element id to duplicate (from wp_get_page outline). Usually the card CONTAINER, not a widget inside it. | |
| post_id | Yes | Page/post numeric id | |
| site_id | Yes | WordPress site id | |
| overrides | No | Per-copy content, keyed by the ORIGINAL descendant id: [{"kick1":{"title":"Reliable"}},{"kick1":{"title":"Secure"}}]. Vary content only — styling should stay identical by construction. |
TDQS
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.
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.
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.
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.
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.
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_snapshotADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview what would be written without writing (default false; run true first) | |
| post_id | Yes | Page/post ID | |
| site_id | Yes | The WordPress site ID | |
| revision_id | Yes | Snapshot revision_id from wp_list_snapshots |
TDQS
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.
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.
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.
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.
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.
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_recipesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | What you're building, e.g. 'hero with curved bottom' or 'stats band'. Omit to list all. |
TDQS
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | JSON object of {field_name: value}, e.g. {"hero_title":"Welcome"} | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_kitADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | '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) | |
| confirm | No | Must be true to apply — guards a site-wide change | |
| dry_run | No | Return the computed Elementor kit settings without writing | |
| site_id | Yes | WordPress site id | |
| brand_kit | Yes | Brand kit token object. colors: the 6 named slots PLUS any extra named colors (they become custom global colors). typography + buttons. | |
| override_existing_kit | No | Second 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
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.
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.
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.
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.
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.
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_codeADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Raw markup to inject. May contain <style> and/or <script> blocks. Not escaped — send it exactly as it should appear in the page. | |
| name | Yes | Snippet name, e.g. 'XeoRank — global CSS'. Also the idempotency key: re-using it updates that snippet in place. | |
| status | No | 'publish' (default, live) or 'draft' (saved, not injected) | |
| verify | No | Check the code really rendered on the front page. Default true — leave it on. | |
| confirm | No | Must be true to apply — without a narrower `conditions`, this injects on every page | |
| site_id | Yes | WordPress site id (from list_wordpress_sites) | |
| location | No | Where to inject: 'head' (default; critical CSS, meta, tracking), 'body_start', or 'body_end' (non-critical JS, avoids render-blocking). | |
| priority | No | 1-10, default 10 (rejected with an error outside that range, never silently clamped). LOWER runs earlier when several snippets share a location. | |
| conditions | No | Elementor 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | No | Published page ID to set as homepage (omit to revert to blog) | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_page_slugAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Lowercase letters, digits and hyphens, e.g. 'urologist-digital-marketing' | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | publish | draft | private | pending | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | The page ID | |
| site_id | Yes | The WordPress site ID | |
| template | Yes | canvas | full_width | default |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| robots | No | Robots directive: 'noindex,nofollow', 'noindex', 'index,follow', … Unknown tokens are refused, never ignored. | |
| post_id | No | Page/post ID. Omit for the homepage (static front page). | |
| site_id | Yes | The WordPress site ID | |
| seo_title | No | Optional SEO title override | |
| canonical_url | No | Absolute http(s) canonical URL for the page (e.g. point a duplicate at its original) | |
| meta_description | No | The meta description text (70–165 chars recommended) |
TDQS
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| publish | No | Publish the template after saving conditions | |
| site_id | Yes | The WordPress site ID | |
| conditions | Yes | JSON array of condition strings, e.g. ["include/general", "exclude/singular/page/12"] | |
| template_id | Yes | The template's post ID (from wp_create_template / wp_list_templates) |
TDQS
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | publish | draft | pending | private | trash | |
| site_id | Yes | The WordPress site ID | |
| template_id | Yes | The template post ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | Yes | Theme slug, e.g. hello-elementor | |
| install | No | Install from wordpress.org first if missing (default false) | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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_keysARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| widget_type | Yes | Elementor 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Last resort: a self-contained HTML block for the whole page (not editable in Elementor) | |
| title | No | Optional new page title | |
| atomic | No | Editor 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. | |
| blocks | No | Gutenberg 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_run | No | Build + round-trip validate + return a preview (warnings, size) WITHOUT writing (no quota used) | |
| post_id | Yes | The page/post ID to update (NOT a header/footer template or kit) | |
| site_id | Yes | The WordPress site ID | |
| sections | No | PREFERRED: native Elementor CONTAINER spec — [{direction,width,children:[{widthPercent,widgets:[{type,...}]}]}] | |
| force_builder | No | With `blocks`: allow converting an Elementor-built page to block content (deletes its Elementor data). Default false. | |
| elementor_data | No | Raw _elementor_data JSON (advanced) |
TDQS
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional new title | |
| atomic | No | Editor 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_run | No | true = 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_id | Yes | The WordPress site ID | |
| elements | No | RAW top-level element JSON written VERBATIM — Editor V4 atomic (e-tabs, e-div-block, …) survives; the sections spec cannot express atomic. | |
| sections | No | JSON array — native CONTAINER spec (preferred) | |
| template_id | Yes | The template post ID | |
| page_settings | No | JSON object of page settings (e.g. popup triggers). Can be sent alone to change only a popup's triggers. | |
| elementor_data | No | Raw _elementor_data JSON (advanced) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview the count without writing. Default false. | |
| post_id | Yes | The page/post ID | |
| site_id | Yes | The WordPress site ID |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | Optional alt text (SEO / accessibility) | |
| title | No | Optional media title | |
| site_id | Yes | The WordPress site ID | |
| filename | No | Base-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_url | No | Public http(s) URL of the image to sideload into the media library | |
| image_data | No | Base64-encoded image bytes to upload directly (plugin-transport sites only). Mutually exclusive with image_url. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Preview the resulting CSS without saving | |
| post_id | Yes | Page, post, component or template id | |
| publish | No | Default true. false keeps the change as an Elementor editor draft | |
| site_id | Yes | The WordPress site ID | |
| operations | Yes | JSON 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_draft | No | Publish even though the post has an unsaved editor draft (it is published too) |
TDQS
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.
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.
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.
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.
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.
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_controlsARead-onlyDestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | content | style | advanced — narrows a large widget | |
| mode | No | index (default: names/types/grouping, smallest) | full (every control, paged). Ignored when names= is set. | |
| limit | No | Page size for mode=full (default 300, max 1000). | |
| names | No | Comma-separated control names to expand fully (defaults, options, condition, selectors). The cheap way to get detail. | |
| offset | No | Paging offset for mode=full; follow next_step when truncated is true. | |
| node_id | No | With post_id: an element id from wp_get_page. Returns only THAT widget's controls. | |
| post_id | No | With 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_id | Yes | WordPress site id | |
| widget_type | No | e.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
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.
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.
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.
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.
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.
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_schemaARead-onlyDestructiveInspect
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| widget_type | Yes | e.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
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.
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.
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.
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.
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.
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.
11 tool updates
- Added
continue_crawl - Added
find_site - Changed
generate_report6 fields changed- added
Input schema / properties / brand_termsAdded value: +{ + "description": "Brand query terms (JSON array or comma-separated) for the branded vs non-branded split", + "type": "string" +} - added
Input schema / properties / comparison_modeAdded value: +{ + "description": "\"previous_period\" (default), \"year_over_year\" or \"none\"", + "type": "string" +} - added
Input schema / properties / period_endAdded value: +{ + "description": "Period end, YYYY-MM-DD, not in the future. Default: last day of last month", + "type": "string" +} - added
Input schema / properties / period_startAdded value: +{ + "description": "Period start, YYYY-MM-DD. Default: first day of last month", + "type": "string" +} - added
Input schema / properties / period_typeAdded value: +{ + "description": "\"monthly\" (default; period must be one full calendar month), \"weekly\" (exactly 7 days) or \"custom\"", + "type": "string" +} - removed
Input schema / properties / report_typeRemoved value: -{ - "description": "Type of report: 'full', 'executive', 'technical'. Default: 'full'", - "type": "string" -}
- Changed
get_backlink_profile5 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Rows to return (default 50, max 500)", + "type": "number" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Rows to skip (default 0). The result carries rows_total and next_offset", + "type": "number" +} - added
Input schema / properties / riskAdded value: +{ + "description": "Keep only links/domains at this risk level: low | medium | high", + "type": "string" +} - added
Input schema / properties / sortAdded 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" +} - added
Input schema / properties / viewAdded 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" +}
- Changed
get_crawl_results8 fields changed- added
Input schema / properties / categoryAdded value: +{ + "description": "Issues only: filter by category (e.g. on_page, technical, schema)", + "type": "string" +} - added
Input schema / properties / includeAdded value: +{ + "description": "Which lists to return: \"both\" (default), \"pages\" or \"issues\"", + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "description": "Rows per list (default 25 pages / 50 issues; max 500 pages / 1000 issues)", + "type": "number" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Rows to skip in each list (default 0). Use with limit to page", + "type": "number" +} - added
Input schema / properties / page_filterAdded value: +{ + "description": "Pages only: broken | redirect | thin", + "type": "string" +} - added
Input schema / properties / queryAdded value: +{ + "description": "Issues only: substring match on the page URL or message", + "type": "string" +} - added
Input schema / properties / rule_idAdded value: +{ + "description": "Issues only: one rule id (e.g. OP-H-003) — returns every affected URL for that finding", + "type": "string" +} - added
Input schema / properties / severityAdded value: +{ + "description": "Issues only: critical | high | medium | low | info", + "type": "string" +}
- Changed
get_site1 field changed- added
Input schema / properties / include_analysisAdded value: +{ + "description": "Embed the full latest page analysis (~50 KB). Default false", + "type": "boolean" +}
- Changed
keyword_competitor_ranks3 fields changed- added
Input schema / properties / by_keywordAdded 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" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Competitors to return after filtering platforms (default 15)"New value: +"Competitors to return after filtering platforms (default 15, max 1000)" - added
Input schema / properties / topAdded value: +{ + "description": "With by_keyword: domains per keyword (default 10, max 100)", + "type": "number" +}
- Added
redirect_check - Added
robots_check - Added
sitemap_check - Changed
start_crawl2 fields changed- changed
Input schema / properties / max_depth / descriptionPrevious 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)" - changed
Input schema / properties / max_pages / descriptionPrevious 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"
235 tool updates
- First observed
accept_source - First observed
add_tracked_keywords - First observed
adopt_site_redirect - First observed
api_access - First observed
assist_balance - First observed
assist_classify_keywords - First observed
assist_design_lint - First observed
assist_draft - First observed
assist_edit_section - First observed
assist_page_digest - First observed
assist_redeem_coupon - First observed
assist_savings - First observed
assist_security_audit - First observed
assist_transform_page - First observed
assist_widget_keys - First observed
assist_writing_fix - First observed
audit_chat - First observed
batch_inspect - First observed
check_tracked_keyword_rankings - First observed
classify_tracked_keywords - First observed
code_build_logs - First observed
code_deploy_status - First observed
code_local_setup - First observed
code_set_domain - First observed
code_set_public - First observed
code_status - First observed
code_write_files - First observed
compute_content_gaps - First observed
connect_framer - First observed
connect_ga - First observed
connect_github - First observed
connect_google_ads - First observed
connect_vercel - First observed
connect_wordpress - First observed
content_for_goal - First observed
content_for_page - First observed
content_opportunities - First observed
content_outcomes - First observed
create_api_key - First observed
create_audit - First observed
create_content_brief - First observed
create_goal - First observed
create_keyword_session - First observed
create_site - First observed
create_voice_profile - First observed
declare_voice - First observed
delete_goal - First observed
delete_keyword_session - First observed
delete_site - First observed
delete_wordpress_site - First observed
design_recommend - First observed
design_search - First observed
discover_competitors - First observed
domain_keyword_profile - First observed
download_disavow_file - First observed
download_report - First observed
elementor_categories - First observed
elementor_get - First observed
elementor_search - First observed
export_audit_report - First observed
framer_canvas - First observed
framer_cms - First observed
framer_design - First observed
framer_publish - First observed
gbp_audit - First observed
generate_report - First observed
generate_schema_markup - First observed
get_analysis - First observed
get_audit - First observed
get_audit_framework - First observed
get_audit_report - First observed
get_backlink_profile - First observed
get_brand_profile - First observed
get_competitive_landscape - First observed
get_competitor_keyword_overlap - First observed
get_content_brief - First observed
get_content_outcome - First observed
get_crawl_results - First observed
get_crawl_status - First observed
get_cwv_results - First observed
get_disclosure - First observed
get_ga_metrics - First observed
get_ga_status - First observed
get_google_ads_status - First observed
get_gsc_keyword_candidates - First observed
get_gsc_metrics - First observed
get_gsc_pages - First observed
get_gsc_queries - First observed
get_gsc_sitemaps - First observed
get_index_status - First observed
get_keyword_clusters - First observed
get_keyword_funnel - First observed
get_keyword_session - First observed
get_live_keyword_ideas - First observed
get_plan - First observed
get_prospect_audit - First observed
get_report - First observed
get_score_trends - First observed
get_shopify_analytics - First observed
get_shopify_products - First observed
get_shopify_status - First observed
get_site - First observed
get_site_health - First observed
get_site_insights - First observed
get_site_journeys - First observed
get_site_requirements - First observed
get_site_stats - First observed
get_snapshot_diff - First observed
get_traffic_sources - First observed
get_url_inspections - First observed
get_usage - First observed
get_visibility_results - First observed
get_visibility_sources - First observed
get_voice_profile - First observed
get_wordpress_site - First observed
github_create - First observed
github_link - First observed
github_list_repos - First observed
goal_metrics - First observed
inspect_url - First observed
keyword_chat - First observed
keyword_competitor_ranks - First observed
link_goal_issues - First observed
list_analyses - First observed
list_api_keys - First observed
list_audits - First observed
list_code_sites - First observed
list_competitors - First observed
list_content_briefs - First observed
list_crawls - First observed
list_goals - First observed
list_invoices - First observed
list_keyword_sessions - First observed
list_prospect_audits - First observed
list_reports - First observed
list_sites - First observed
list_snapshots - First observed
list_tracked_keywords - First observed
list_visibility_scans - First observed
list_wordpress_sites - First observed
list_workspaces - First observed
measure_cwv - First observed
plan_search_audit - First observed
promote_research_keywords - First observed
publish_content_brief - First observed
refresh_goals - First observed
refresh_site - First observed
remove_tracked_keywords - First observed
render_screenshot - First observed
review_writing - First observed
revoke_api_key - First observed
rewrite_content - First observed
run_analysis - First observed
run_visibility_scan - First observed
score_content_draft - First observed
seed_keywords_from_gsc - First observed
seo_insights - First observed
set_ranking_location - First observed
set_wordpress_connection - First observed
site_overview - First observed
snippet_check - First observed
start_crawl - First observed
start_prospect_audit - First observed
store_brand_kit - First observed
submit_agent_feedback - First observed
submit_sitemap - First observed
suggest_sources - First observed
sync_search_console - First observed
sync_shopify - First observed
technical_health - First observed
tracked_keyword_performance - First observed
update_brand_profile - First observed
update_content_brief - First observed
update_goal - First observed
vercel_link - First observed
verify_wordpress - First observed
voice_probe - First observed
voice_probe_answer - First observed
wp_activate_template - First observed
wp_apply_style - First observed
wp_assign_menu_location - First observed
wp_bulk_replace - First observed
wp_capabilities - First observed
wp_clone_and_customize - First observed
wp_clone_page - First observed
wp_compare_pages - First observed
wp_copy_page - First observed
wp_create_menu - First observed
wp_create_page - First observed
wp_create_template - First observed
wp_delete_custom_code - First observed
wp_delete_page - First observed
wp_delete_template - First observed
wp_disable_writes - First observed
wp_enable_writes - First observed
wp_get_acf - First observed
wp_get_brand_kit - First observed
wp_get_page - First observed
wp_get_seo_meta - First observed
wp_list_custom_code - First observed
wp_list_media - First observed
wp_list_menu_locations - First observed
wp_list_menus - First observed
wp_list_pages - First observed
wp_list_snapshots - First observed
wp_list_templates - First observed
wp_list_themes - First observed
wp_patch_page - First observed
wp_patch_template - First observed
wp_preview_link - First observed
wp_regenerate_css - First observed
wp_replace_section - First observed
wp_replicate_node - First observed
wp_restore_snapshot - First observed
wp_section_recipes - First observed
wp_set_acf - First observed
wp_set_brand_kit - First observed
wp_set_custom_code - First observed
wp_set_homepage - First observed
wp_set_menu_items - First observed
wp_set_page_slug - First observed
wp_set_page_status - First observed
wp_set_page_template - First observed
wp_set_seo_meta - First observed
wp_set_template_conditions - First observed
wp_set_template_status - First observed
wp_set_theme - First observed
wp_style_keys - First observed
wp_update_page - First observed
wp_update_template - First observed
wp_upgrade_accordions - First observed
wp_upload_image - First observed
wp_v4_style - First observed
wp_widget_controls - First observed
wp_widget_schema
Related MCP Connectors
Autonomous SEO + GEO growth: keyword research, audits, content, AI answer-engine visibility.
- SEOAsistOAuthcom.seoasist
SEO audits, AI fix PRs, rank tracking, blog content and AI-search visibility for your sites.
- CrawlieOAuthapp.crawlie
Technical SEO + GEO (AI-search) site audits: hosted crawls, prioritized fixes, report diffs.
Free SEO, GEO, and AEO audits: analyze any page or domain, AI-crawler access, agent readiness.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceAutomated SEO, AEO, ADA auditing for your website or project.33 npmMIT- AlicenseAqualityDmaintenanceEnables 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.41MIT
- AlicenseAqualityCmaintenanceEnables auditing, comparing, and optimizing websites for AI readiness, performance, SEO, AEO, GEO, and AI crawler accessibility.4MIT
- AlicenseAqualityCmaintenanceUnifies 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.363MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.