Skip to main content
Glama

Server Details

Research keywords, plan, write, update and publish SEO blog posts on your site from any agent.

Ownership verified
Status
Healthy
Uptime
74.5% over 21 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
adamgusky/blawgy-mcp
GitHub Stars
0

TDQS

B3.2/5.0

Scored across 166 tools

Disambiguation3/5

The descriptions are unusually detailed and usually explain boundaries, but the set has many overlapping clusters: keyword exclusion vs. keyword-list removal vs. topic dismissal, plan-entry removal vs. article deletion, and multiple research/update/autopilot tools. An agent can often tell them apart only by reading long descriptions, so misselection remains plausible.

Naming Consistency4/5

Names overwhelmingly follow snake_case verb_noun conventions (get_, list_, create_, update_, delete_, remove_, restore_, run_, generate_, publish_). A few outliers like whoami and some noun-heavy names prevent a perfect score, but the pattern is readable and mostly predictable.

Tool Count1/5

166 tools is far beyond a well-scoped surface and clearly exceeds the calibration threshold for extreme mismatch. The server spans many subdomains, but the count makes navigation and tool selection unwieldy.

Completeness5/5

The tool surface covers the apparent domain very thoroughly: site onboarding, keywords/research, planning, article writing/publishing, updates, products, photos, locations, webhooks, team, billing, platform connections, and reporting. There are few obvious lifecycle gaps for the stated content-marketing purpose.

Available Tools

166 tools
accept_plan_suggestionAccept a suggested topicAInspect

Turn one of the plan's suggestions (see get_plan suggestions) into a real scheduled entry. Lands on the suggestion's date if free, else scheduledDate, else the next open slot. Runs the duplicate-intent guard (blocked response; force: true overrides). Counts against posts per week like any entry. Refresh suggestions (source "refresh": a page the site already owns covers the keyword) never become a new entry and never use a posts-per-week slot: when the owner is one of the site's published plan articles this starts a smart-update draft of that article instead (returns refresh with the updateId; the draft shows up in list_update_opportunities as "ready" in a few minutes, then approve_update; Pro+). Where page refreshes are on for the site, that draft always waits for review even with Updates autopilot on, and accepting a refresh of a page Blawgy did not write writes its update brief (returns refresh with briefReady; read it with get_refresh_brief, then mark_refresh_done once the page is updated). Otherwise a page the plan does not manage returns blocked "not-managed". An article that has not published yet returns blocked "refresh-not-ready", and nothing is added in either blocked case.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
forceNo
suggestionIdYes
scheduledDateNo

TDQS

A4.5/5.0
Behavior5/5

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

Discloses behavior far beyond the annotations: the duplicate-intent guard and its `blocked` response, the `force: true` override, posts-per-week slot consumption, refresh-suggestion handling that instead starts a smart-update draft, the review-always rule under Updates autopilot, and the specific `not-managed`/`refresh-not-ready` blocked cases where nothing is added.

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

Conciseness3/5

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

The first sentence is well front-loaded, but the second is a dense multi-clause run-on covering numerous branching cases with no bullets or structure. The content is largely substantive, yet the formatting makes it hard to parse quickly.

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

Completeness5/5

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

For a tool with no output schema, the description documents return shapes across the important branches (`refresh` with updateId or briefReady, and the blocked reasons). An agent has enough to call it and interpret the result.

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

Parameters4/5

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

Schema coverage is only 25% (only `site` is documented), so the description must compensate. It does: `scheduledDate` is explained as the fallback date, `force` is defined as overriding the duplicate-intent guard, and `suggestionId` is tied to the plan's suggestions list.

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

Purpose5/5

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

States a specific verb and resource: 'Turn one of the plan's suggestions ... into a real scheduled entry,' and points at get_plan `suggestions` as the source. This distinguishes it cleanly from siblings like add_to_plan, dismiss_plan_suggestion, and update_plan_entry.

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

Usage Guidelines4/5

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

Gives rich conditional routing (fresh vs refresh suggestions, managed vs not-managed pages) and names downstream tools (approve_update, get_refresh_brief, mark_refresh_done). However, it never explicitly contrasts when to choose this over add_to_plan or dismiss_plan_suggestion.

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

add_business_locationAdd a business locationBInspect

Saves a new business location. The first one becomes primary. Give at least a city or an address. Keys accepted in profile: businessName, address, city, state, postalCode, phone, email, serviceArea, serviceRadiusMiles, mapEmbed, label.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
profileYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, covering the safety profile. The description adds one behavioral detail — 'The first one becomes primary' — but omits permissions, duplicate handling, and what the call returns. With annotations doing the heavy lifting, this is adequate but thin.

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

Conciseness4/5

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

Front-loaded and efficient: purpose, primary-location side effect, then the minimum requirement, then the accepted keys. The key list is long but directly useful for callers; no filler sentences.

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

Completeness3/5

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

The tool takes a nested profile object and has no output schema, so the description should carry more of the contract. It covers purpose, the primary side effect, and the city/address rule, but omits the required `site` argument, duplicate behavior, and any return-value expectations.

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

Parameters3/5

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

Schema coverage is 50%, and the description lists all accepted profile keys, largely duplicating the schema's property names while also adding a real cross-field rule: 'Give at least a city or an address.' It never mentions the required top-level `site` parameter or explains most nested fields, so it only partly compensates for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Saves a new business location') and adds that the first location becomes primary. It implies creation rather than update, which distinguishes it from update_business_location, but it never names an alternative or explicitly separates itself from a sibling like set_primary_location.

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

Usage Guidelines2/5

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

No when-to-use guidance, no alternatives, and no prerequisites are given. The only instruction is a data requirement ('Give at least a city or an address'), which is validation rather than routing. An agent gets no help choosing this over update_business_location or set_primary_location.

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

add_my_keywordsAdd my keywordsAInspect

Adds keywords to the customer's own list (Settings > Keywords). Duplicates are ignored. Saving queues a background lookup of volume, difficulty and coverage, so new entries read "researching" in list_my_keywords for a few minutes. Free; the planner starts using them on its next refill (or call generate_plan).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
keywordsYesKeywords to add.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by disclosing non-obvious behaviors: duplicates are silently ignored, saving queues an async lookup of volume/difficulty/coverage, and new entries show 'researching' in list_my_keywords for minutes. This is exactly the async-state context an agent needs and cannot get from the schema.

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

Conciseness5/5

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

Four tight sentences that are front-loaded with the core purpose, then layered with duplicate handling, async status, and activation timing. Every sentence contributes information an agent would otherwise have to discover empirically.

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

Completeness5/5

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

For a mutation tool with annotations carrying the safety profile and no output schema, the description covers the essential unknowns: what is mutated, dedup behavior, the asynchronous side effect, where to observe it (list_my_keywords), and how to trigger downstream use (generate_plan). Nothing needed to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (site and keywords, including the 100-item cap and 200-char limit). The description adds no syntax or format guidance for either parameter, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Adds keywords to the customer's own list') and even anchors it to the UI location (Settings > Keywords), which disambiguates it from the many other keyword tools in the sibling list. An agent can immediately tell this adds to a personal keyword list rather than saving a research set or excluding keywords.

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

Usage Guidelines4/5

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

Gives clear operational context: it's free, the planner picks entries up on its next refill, and the agent can call generate_plan to force the update sooner. It does not explicitly contrast with save_keywords or state when not to use it, so it falls short of the 5-level '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.

add_productAdd a product by handAInspect

Adds a manual product (name and description required) so articles can mention and link to it. Not for Shopify or Dutchie catalogues, which sync automatically.

NameRequiredDescriptionDefault
urlNo
nameYes
siteYesThe site to act on. One of: fencestainingdenver.com.
tagsNo
imageNoPublic https URL of the product image.
priceNo
currencyNo
descriptionYes
productTypeNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=false, so the safety profile is covered. The description usefully adds the downstream consequence (the product becomes mentionable/linkable in articles) and the manual-only scope, but it says nothing about what happens if the product already exists, despite idempotentHint=false implying duplicate risk.

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

Conciseness5/5

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

Two sentences, zero waste: capability and required inputs come first, then the exclusion. Nothing is padded or repeated from structured fields beyond the required-fields reminder.

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

Completeness4/5

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

For a non-idempotent mutation with no output schema, the description covers purpose, required inputs and the key alternative path. The remaining gap is the undocumented optional parameters and the duplicate-creation behavior, but the core call decision is supportable.

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

Parameters2/5

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

Only 2 of 9 parameters (site, image) have schema descriptions (22% coverage), so the description must compensate — instead it only restates that name and description are required, which the schema already marks as required. url, tags, price, currency and productType are undocumented in both places, so an agent gets no guidance on the optional fields.

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

Purpose5/5

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

States a specific verb and resource ("Adds a manual product") plus the effect that matters downstream ("so articles can mention and link to it"). It also carves itself away from the automatic catalogue path, so an agent can distinguish it from sync_products/get_product without opening a schema.

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

Usage Guidelines4/5

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

Explicitly says when NOT to use it (Shopify or Dutchie catalogues, which sync automatically), which is the main ambiguity for product creation. It doesn't name the sibling to use in that case (e.g. sync_products / get_product_sync_status) or clarify add_ vs update_product, so it stops just 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.

add_to_planAdd to planAInspect

Add an article to the plan. Give EITHER keyword (one article on that keyword, or a plain-language request like "a guide to winter tire storage") OR cluster (a research topic label from get_keywords: schedules the topic's distinct intents, several articles). Lands on the next open cadence slot unless scheduledDate is set. If the site already covers the intent the response is blocked: "intent-owned" with the owning page (and coveredBy, the page or post that covers it, when existing-content checks are on); pass force: true to add anyway. Topics that the customer excluded return blocked: "excluded". A slow cluster add returns status "queued" with kind "plan_topic_add": poll with get_job. Every entry added writes on its date and counts against the site's posts per week.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
forceNoAdd even when the site already owns the intent
titleNoWorking title (keyword adds only; auto-generated when omitted)
intentNo
clusterNoResearch topic (cluster) label to add as several articles
keywordNoKeyword or request to write one article on
difficultyNo
searchVolumeNo
scheduledDateNoISO date; omit for the next open slot

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare it is a non-read-only, non-idempotent, non-destructive, closed-world write. The description goes well beyond that: placement on the next open cadence slot, the exact `blocked: "intent-owned"` / `blocked: "excluded"` response semantics, `coveredBy` reporting, queued status with kind `plan_topic_add`, and the side effect that entries count against the site's posts-per-week quota.

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

Conciseness4/5

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

Front-loaded with the core keyword/cluster decision, then the blocking and async behaviors. Dense and largely waste-free, though the later sentences are long and pack several distinct behaviors (blocked codes, queued polling, quota effect) into single run-on statements.

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

Completeness5/5

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

There is no output schema, and the description compensates by documenting the relevant response shapes: blocked outcomes with owning page/coveredBy, and the queued/plan_topic_add status with the recommended poll. For a 9-parameter mutation tool, this is complete enough to call correctly.

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

Parameters4/5

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

Schema coverage is 67%; the description adds real meaning for `keyword` vs `cluster` (mutually exclusive, one-article vs multi-article), `scheduledDate` (default is next open slot), `force` (override intent ownership) and `title` (keyword adds only). It does not address `intent`, `difficulty` or `searchVolume`, which have no schema descriptions either, so it does not fully close the coverage gap.

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

Purpose5/5

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

Opens with a specific verb+resource ('Add an article to the plan') and immediately distinguishes the two add paths (one article by `keyword`, several by `cluster`), which separates it from siblings such as add_my_keywords, update_plan_entry or generate_plan. An agent can identify what this tool produces without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit routing: use EITHER `keyword` OR `cluster`, with a note that cluster labels come from get_keywords, and names get_job as the polling tool for queued adds. It also states the when-blocked conditions and the `force: true` escape hatch, so the agent knows both when to call it and what to do on failure.

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

analyze_new_siteAnalyze a new websiteAInspect

Step 1 of adding a site to Blawgy. Crawls a domain that is not yet set up and returns what onboarding would suggest: a business description, audience and tone options, competitor domains, the detected business type and search market, and any physical locations found. Nothing is saved. Spends a few LLM calls and takes 15-40 seconds; set includeKeywordPreview=true for a sample of keyword topics too (adds about a minute and DataForSEO spend). Fails if the domain is already registered to an account or is a social/platform site. Review or edit the suggestions, then call create_site.

NameRequiredDescriptionDefault
domainYesThe website to analyze, e.g. example.com.
descriptionNoUse this business description instead of the crawled one (for sites that cannot be crawled).
includeKeywordPreviewNoAlso run a quick keyword research preview (slow, spends credits).

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare the generic safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds the traits that actually matter: no data is saved, it consumes a few LLM calls, it takes 15-40 seconds, the preview option adds ~1 minute and DataForSEO spend, and it fails on already-registered or social/platform domains. The readOnlyHint=false flag is consistent with the disclosed side effects (spend, LLM calls) rather than a data mutation.

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

Conciseness5/5

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

Front-loads the tool's role ('Step 1 of adding a site'), then returns, then cost/latency, then failure conditions, then the follow-up call. Every sentence carries new information with no padding.

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

Completeness5/5

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

There is no output schema, but the description enumerates the returned artifacts (business description, audience and tone options, competitor domains, business type, search market, locations), covers cost, latency, and failure modes, and names the successor tool. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description nonetheless adds quantified meaning to includeKeywordPreview (about a minute of extra time plus DataForSEO spend) beyond the schema's vague 'slow, spends credits', though it says nothing extra about the domain or the description override parameter.

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

Purpose5/5

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

States a specific verb and resource ('Crawls a domain that is not yet set up'), positions itself as 'Step 1 of adding a site to Blawgy', and enumerates exactly what it returns. It is clearly distinguishable from the sibling create_site, which it names.

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

Usage Guidelines5/5

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

Gives explicit workflow guidance ('Review or edit the suggestions, then call create_site'), explicit failure conditions (domain already registered, or a social/platform site), and a conditional for the optional preview parameter. When-to-use, when-not-to-use, and the next step are all present.

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

apply_post_imageApply a candidate as the post's imageA
Destructive
Inspect

Makes one generated or uploaded candidate the post's image and, for a post already on the CMS, pushes the new featured image there (image only, the text is untouched). The previous image is kept so revert_post_image can undo it. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
postIdYes
candidateIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotence, but the description adds genuinely new behavioral context: the previous image is retained for undo, the CMS push affects only the featured image, and the first call is non-mutating and returns a summary plus confirmToken. It stops short of covering token expiry, permission requirements, 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.

Conciseness4/5

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

Three tight sentences, front-loaded with the action and followed by consequence, undo path, and the confirmation flow. Every sentence carries information, though the confirmation mechanics could be compressed into the schema-referenced field.

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

Completeness4/5

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

For a destructive 4-parameter mutation with no output schema, the description covers the key agent needs: what changes, what is preserved, how to reverse it, and that a two-step confirm gate exists. It omits error/edge behavior and the content of the summary, which keeps it from being fully complete.

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

Parameters3/5

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

Schema coverage is only 50% (site and confirmToken are documented; postId and candidateId are bare strings). The description partially compensates by implying candidateId is a generated/uploaded candidate and postId is a post already on the CMS, but it adds no format, ID-source, or selection detail beyond that inference.

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

Purpose5/5

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

The first sentence names a concrete verb (makes one candidate the post's image) plus the resource and the CMS side effect, which cleanly separates it from siblings like upload_post_image, get_post_image, and get_photo_candidates. It also states the scope restriction (image only, text untouched).

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

Usage Guidelines4/5

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

It routes the agent: use revert_post_image to undo, and it explains the required two-call confirmation sequence with confirmToken. It does not explicitly state prerequisites (e.g. that a candidate must first exist from get_photo_candidates) or when not to use it, so it falls short of a 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.

approve_updateApprove and publish an updateA
Destructive
Inspect

Publish a ready update draft to the live page on the website. The previous version is stored so revert_update can restore it, and the page is not changed again for 60 days. Each changed part is then judged on its own: the search part (title, H1, meta description) on Search Console clicks 60 days after publish, compared with the site's other pages; the content part (body) on reader behaviour (active time, scroll depth, CTA clicks) once the page has enough pixel traffic. A part judged worse is reverted automatically and the other part stays. Public and immediate. Read the draft first (list_update_opportunities with includeHtml, or draft_update's result). Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
updateIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: the previous version is retained for revert_update, a 60-day quiet period follows, evaluation is split between search and content parts with automatic per-part revert, and the call is public and immediate. It also discloses the confirmToken summary-then-confirm protocol, which is the operational behavior an agent most needs.

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

Conciseness4/5

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

Front-loads the core action and consequence, then the confirmation protocol. The middle passage on per-part judgment metrics is dense but earns its place by explaining what happens after publishing; minor tightening possible but no filler.

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

Completeness5/5

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

With no output schema, the description supplies what the first call returns (a summary and token), the eventual outcome (auto-revert of worse-performing parts), and the irreversibility/visibility profile. That is sufficient for a destructive, non-idempotent 3-parameter tool.

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

Parameters4/5

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

Schema coverage is 67%; site and confirmToken are documented in the schema, and the description reinforces the confirmToken semantics ('first call returns a summary and a confirmToken; call again with confirmToken to proceed'). updateId remains undocumented in both places, but the description meaningfully adds to the confirmation parameter.

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

Purpose5/5

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

States a specific verb and resource ('Publish a ready update draft to the live page'), plus the scope constraint that it applies to update drafts rather than articles or location pages. An agent can distinguish this from publish_draft or publish_article_from_builder by the resource named.

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

Usage Guidelines4/5

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

Gives an explicit prerequisite ('Read the draft first' via list_update_opportunities with includeHtml or draft_update's result) and describes the two-step confirm flow. It does not explicitly exclude adjacent publishing siblings, but the read-first requirement and draft precondition are clear context for use.

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

check_for_updatesFind new update opportunitiesAInspect

Re-run update detection now against the latest Search Console data (the weekly run does this on its own, and on autopilot also writes and publishes what it finds). This call only proposes; nothing is written or published. Slow (up to a minute). Returns the detection summary and the refreshed list. Pro+ (or grandfathered) sites only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.3/5.0
Behavior4/5

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

Discloses latency ('slow, up to a minute'), side-effect scope ('only proposes; nothing is written or published'), return contents, and plan gating — well beyond the annotations. There is mild tension with readOnlyHint=false, but the write happens to detection state rather than published content, so it reads as clarification rather than contradiction.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action, then side effects, then cost and eligibility. No filler and every clause carries decision-relevant information.

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

Completeness5/5

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

No output schema exists, but the description states what is returned ('the detection summary and the refreshed list'), plus timing, side effects, and access requirements. Nothing an agent needs to call this safely is missing.

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

Parameters3/5

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

Schema coverage is 100% and the single 'site' parameter is fully documented, including the allowed value. The description adds nothing about the parameter, so the baseline of 3 for a well-covered schema applies.

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

Purpose5/5

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

States a concrete verb and resource ('Re-run update detection') plus the data source (latest Search Console data), and contrasts it with the automatic weekly run and autopilot path. An agent can distinguish it from list_update_opportunities or get_updates_overview without opening the schema.

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

Usage Guidelines4/5

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

Clearly says when to use it (you want detection refreshed right now) and implicitly when not (the weekly run already does this; autopilot also writes and publishes). It adds the Pro+/grandfathered eligibility constraint, though it does not name a specific sibling to call instead for merely reading opportunities.

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

complete_site_setupFinish site setupAInspect

Step 3 of adding a site (also fine to re-run): optionally set draft mode (articles land in the CMS as drafts for review instead of publishing) and posts per week, then generate the first content plan. Plan generation blocks 30-90 seconds. If the site has no keyword research yet it starts it in the background and the plan fills itself within minutes (poll get_job kind=research, then get_plan). The site must already exist (create_site).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
draftModeNotrue = save articles as CMS drafts; false = publish automatically.
horizonWeeksNoHow far ahead to plan (default 6).
postsPerWeekNoPublishing cadence (default 3).

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that plan generation blocks 30-90 seconds, that missing keyword research is kicked off in the background, that the plan self-fills within minutes, and the exact polling sequence (get_job kind=research, then get_plan). This timing and async behavior is exactly the 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.

Conciseness5/5

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

Front-loads the sequence position and optional settings, then layers the timing caveat and the background-research workflow. Every sentence carries actionable information with no filler.

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

Completeness5/5

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

With no output schema, the description still explains what completion produces (a first content plan), how long it takes, and how to observe the result via polling. That is sufficient for an agent to call it correctly and follow up.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds real meaning for draftMode (articles land as CMS drafts for review instead of publishing) and mentions posts-per-week cadence. horizonWeeks is left to the schema, so it is not fully additive.

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

Purpose5/5

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

States a specific operation (finish site setup: set draft mode and posts-per-week, then generate the first content plan) with clear framing as step 3 in a sequence. An agent can distinguish it from siblings like create_site and generate_plan without opening any schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it (step 3 of adding a site), that re-running is acceptable, and names the prerequisite tool (create_site). It also routes the agent to get_job and get_plan for the async follow-up, so little 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.

connect_bingConnect Bing Webmaster Tools with an API keyAInspect

Connects Bing with the owner's Bing Webmaster API key (Bing Webmaster Tools > Settings > API Access > Generate API Key; the site must already be added and verified in Bing). The key never expires. Blawgy then submits the sitemap and every new article to Bing. If the key sees no verified property on this domain, or several, the result lists them: retry with bingSite set to one of them.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
apiKeyYesBing Webmaster API key.
bingSiteNoExact Bing property URL from a previous attempt's sites list.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations flag this as a non-read-only, non-destructive, non-idempotent write, and the description adds real behavior beyond that: the key never expires, Blawgy subsequently submits the sitemap and every new article, and the failure shape (a list of verified properties) tells the agent how to recover via bingSite.

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

Conciseness4/5

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

Three front-loaded sentences with no filler; the parenthetical key-location instructions are dense but earn their place by removing a lookup step. Slightly run-on toward the end.

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

Completeness4/5

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

With no output schema, the description carries the burden and largely does so: it covers prerequisites, side effects (sitemap/article submission), and the error/retry contract. Missing only auth scope or rate-limit notes.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds genuine meaning by explaining the bingSite parameter's role as a retry handle derived from a prior attempt's sites list, connecting it to the failure mode rather than just restating 'exact Bing property URL'.

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

Purpose5/5

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

States a specific verb and resource ('Connects Bing with the owner's Bing Webmaster API key') and is clearly separable from siblings like connect_gsc, connect_dutchie, and connect_platform by the Bing-specific credential.

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

Usage Guidelines4/5

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

Gives the prerequisite ('the site must already be added and verified in Bing') and the recovery path when the key sees zero or multiple verified properties. It does not explicitly contrast with connect_gsc or state when not to use it, so it stops short of 5.

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

connect_dutchieConnect a Dutchie locationAInspect

Verifies a Dutchie API key, attaches its store location to the site and pulls the live menu straight away. The key is stored write-only and never returned. Slow (first menu pull).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
labelNoA name for the location, for example "Downtown".
apiKeyYesThe Dutchie API key for one location.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover write status, non-destructiveness, and non-idempotency. The description adds meaningful behavioral context beyond that: the API key is stored write-only and never returned, and the first menu pull is slow. It does not mention failure modes or permission requirements, but the added security and performance details make it genuinely helpful.

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

Conciseness5/5

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

Three compact sentences are front-loaded with the core action, then security behavior, then a latency caveat. Every sentence carries distinct, useful information without repetition or filler.

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

Completeness4/5

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

For a write-connect tool with no output schema, the description covers purpose, key handling, and performance well, while annotations already declare the safety profile. It leaves out failure behavior and whether an existing connection is replaced, 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.

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema. The description does not add syntax or meaning beyond what the schema provides for site, label, or apiKey, which is acceptable at this coverage level but not enriching.

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

Purpose4/5

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

The description names the specific action (verifies a Dutchie API key, attaches its store location, pulls the live menu) and the resource (Dutchie location). It distinguishes this tool from related siblings like sync_dutchie and get_dutchie_status through the initial-connect wording, but it does not explicitly name or compare those alternatives.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative sibling tools are named. The latency note '(first menu pull)' is a useful caveat but not a usage guideline. An agent must infer from the name that this is for initial setup rather than ongoing syncing.

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

connect_platformConnect or re-test the CMSA
Destructive
Inspect

Tests credentials for WordPress (username + application password), Webflow (API token + collection id), Shopify (store name + access token or client id/secret, optional blog id), Wix (site id + API key), Framer (project URL + API key) or Duda (site name, optional partner API user/password) and saves them on success, exactly like the Settings page. Replaces the saved connection, so future articles publish to the new CMS. Credentials are never returned. Then call get_platform_options to pick a blog, collection or member where needed. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
apiKeyNoWix API key.
siteIdNoWix site id.
apiTokenNoWebflow API token.
platformYes
siteNameNoShopify store name (the part before .myshopify.com).
usernameNoWordPress username.
authTokenNoShopify Admin API access token (legacy).
categoryIdNoShopify blog id.
appPasswordNoWordPress application password.
dudaApiUserNo
collectionIdNoWebflow collection id.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.
dudaSiteNameNo
framerApiKeyNo
dudaApiPasswordNo
shopifyClientIdNo
framerProjectUrlNo
shopifyClientSecretNo

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the saved connection is replaced (so future articles publish to the new CMS), that credentials are never returned, and that the operation is a two-step confirm flow where the first call returns a summary plus confirmToken. The destructiveHint annotation only flags risk generically; the description explains the exact effect and the confirmation protocol.

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

Conciseness4/5

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

A single dense paragraph, but it is front-loaded with purpose and every sentence carries operational weight (platform credential matrix, replace semantics, credential handling, confirm flow, follow-up call). Only the 'exactly like the Settings page' clause is mild filler.

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

Completeness4/5

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

For a 19-parameter mutation tool with no output schema, the description covers the essentials: platform-specific inputs, destructive replacement behavior, the two-step confirmation, and the next tool to call. It does not describe what the first-call summary contains or how to recover from a failed credential test, which are the only remaining gaps.

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

Parameters4/5

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

With 19 params at 58% schema coverage, the description does real work by mapping credential sets to platforms (WordPress username+app password, Webflow token+collection id, Shopify store name+token or client id/secret+optional blog id, Wix site id+API key, Framer project URL+API key, Duda site name+optional user/password). This lets an agent select the right subset, though the mapping is prose rather than named parameters, so the agent must still infer exact field names.

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

Purpose5/5

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

States a specific verb and resource (tests/saves CMS credentials) and enumerates the six supported platforms, which cleanly separates it from the other connect_* siblings (connect_bing, connect_dutchie). An agent immediately knows this is the CMS-connection tool rather than a search or status tool.

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

Usage Guidelines4/5

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

Gives clear usage context: call it to connect or re-test a CMS, and explicitly name get_platform_options as the required follow-up when a blog/collection/member must be chosen. It does not, however, state when NOT to use it (e.g. vs. the platform-specific connect_bing/connect_dutchie tools), leaving that to inference.

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

create_guardrailCreate a guardrailAInspect

Adds a named set of writing rules to the library. Attach it to sites with update_site_guardrails.

NameRequiredDescriptionDefault
nameYes
siteYesThe site to act on. One of: fencestainingdenver.com.
rulesYes
enabledNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare a non-read-only, non-destructive, non-idempotent create, so the safety profile is covered. The description adds the genuinely useful two-step fact that guardrails live in a library and must be attached separately, but says nothing about name collisions, duplicate creation, or whether `enabled` defaults on.

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

Conciseness5/5

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

Two tight sentences with the core action front-loaded and the workflow hint second. No filler, no restatement of the title.

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

Completeness3/5

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

For a 4-parameter mutation tool with 25% schema coverage and no output schema, the description covers the concept but omits defaults (`enabled`), uniqueness behavior for `name`, and what is returned. Adequate but with clear holes an agent would have to guess around.

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

Parameters3/5

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

With schema coverage at only 25%, the description must compensate, and it partially does by mapping 'named' and 'writing rules' to the name and rules parameters. It never addresses `enabled` or why `site` is required on a library-scoped resource, leaving gaps the schema cannot fill.

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

Purpose5/5

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

States a specific verb and resource ('Adds a named set of writing rules to the library') and clarifies what a guardrail actually is, which the bare name does not convey. An agent can distinguish this from list_guardrails, update_guardrail, and delete_guardrail without opening schemas.

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

Usage Guidelines4/5

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

Names update_site_guardrails as the follow-up step, which is real workflow routing, so the agent knows creating alone does not apply the guardrail anywhere. It stops short of explicit when-not guidance (e.g. use update_guardrail to modify an existing one).

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

create_siteCreate a siteA
Destructive
Inspect

Step 2 of adding a site: registers the domain under the caller's account with the business description, audience, tone, competitors and business type (usually the values from analyze_new_site, edited as needed). Returns the site key and what billing needs: partner-billed and comped accounts are ready at once; a direct customer must finish checkout in the browser (the response includes the link; pass plan + billingPeriod to get a direct Stripe checkout URL). White-label partners on a partner-scoped credential can pass clientId (from create_client or list_clients) to create the site for that client instead: it belongs to the client, is billed to the partner, and plan/billingPeriod are refused. Then call complete_site_setup to pick publish mode and build the first content plan. Fails with 409 if the domain belongs to another account. Keys accepted in market: countryCode, locationName, languageCode. Keys accepted in businessProfile: businessName, address, city, state, postalCode. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
planNoFor direct customers: create a Stripe checkout for this plan and return its URL.
toneYesWriting tone, e.g. "Friendly and approachable".
domainYesThe website, e.g. example.com.
marketNoSearch market, e.g. {countryCode:"US", locationName:"United States", languageCode:"en"}. From analyze_new_site.
clientIdNoWhite-label partners only: create the site for this client (client id or email from create_client / list_clients). Needs a partner-scoped credential.
faviconUrlNoFavicon from analyze_new_site.
competitorsNoCompetitor domains to mine for keywords.
businessTypeNoKeyword research mode (default general).
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.
billingPeriodNoWith plan (default annual).
targetAudienceYesCustomer segments the content is for.
businessProfileNoPrimary physical location for local businesses (from analyze_new_site locations).
productDescriptionYesWhat the business does and sells.

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations by describing what actually happens: the first call returns only a summary and confirmToken (consistent with destructiveHint=true), the second commits; billing outcomes differ by account type; the response carries a Stripe checkout URL and the site key; cross-account domains fail with 409.

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

Conciseness4/5

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

Front-loaded with the workflow role and the core action, and nearly every clause carries unique operational detail. It is nonetheless a single dense block covering workflow, billing, scoping, error codes and confirmation semantics — splitting it into short labeled sections would cost bandwidth but improve scannability.

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

Completeness5/5

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

For a 13-parameter mutation with nested objects and no output schema, the description covers the return value (site key plus billing state/applicable link), the confirmation protocol, credential scoping, and the expected error — nothing an agent needs before invoking it is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds governing rules the schema cannot express — that plan and billingPeriod must be passed together, that clientId comes from create_client/list_clients and requires partner scope, and that plan/billingPeriod are rejected in client mode. The enumerated `market` and `businessProfile` keys largely restate the schema.

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

Purpose5/5

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

The opening clause names a specific verb and resource — "registers the domain under the caller's account" — and immediately distinguishes it from siblings by labeling it "Step 2 of adding a site," with analyze_new_site supplying inputs and complete_site_setup as the follow-up.

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

Usage Guidelines5/5

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

Explicit sequencing (values "usually from analyze_new_site, edited as needed"; "Then call complete_site_setup"), plus scoped alternatives: clientId only for white-label partners on partner-scoped credentials, plan/billingPeriod only for direct customers and refused otherwise. The 409 condition tells the agent when this call is the wrong one.

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

create_webhookCreate a webhookA
Destructive
Inspect

Registers a public https URL to receive article events (blog.created, blog.updated, blog.published, blog.failed, blog.cancelled). The response includes the signing auth token ONCE; store it, it is not shown again. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
nameNo
siteYesThe site to act on. One of: fencestainingdenver.com.
eventsNo
validityNo
maxRetriesNo
webhookUrlYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing that the signing auth token is returned only ONCE and must be stored, and by detailing the two-step destructive confirmation flow with confirmToken. This is critical operational context an agent cannot infer from destructiveHint alone.

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

Conciseness5/5

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

Three tight sentences, front-loaded with what the tool does, followed by the one-time token warning and the confirmation flow. No filler and nothing important buried.

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

Completeness4/5

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

For a mutation tool with no output schema, the description covers the essential behaviors (event delivery, one-time token, destructive confirm flow). The main gap is undocumented parameters, which is captured under parameter semantics rather than here.

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

Parameters3/5

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

Schema coverage is only 29%, so the description must compensate. It adds a meaningful constraint for webhookUrl ('public https URL') and reiterates the events enum, but leaves site, name, validity, and maxRetries completely undocumented in both schema and description.

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

Purpose5/5

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

States a specific verb (Registers) and resource (a public https URL to receive article events) and enumerates the exact event types it will deliver. This clearly distinguishes it from sibling webhook tools like list_webhooks, update_webhook, delete_webhook, test_webhook, and regenerate_webhook_token.

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

Usage Guidelines3/5

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

The description explains the two-step confirmation invocation flow (first call returns summary + confirmToken, second call with confirmToken proceeds), which is genuine usage guidance. However, it never says when to prefer this over alternatives or prerequisites (e.g., use test_webhook to validate, or list_webhooks first), leaving sibling routing implicit.

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

delete_articleDelete an articleA
Destructive
Inspect

Remove an article from Blawgy (soft delete: it disappears from the plan and lists and any queued write is cancelled). Does NOT remove an already-published post from the website; delete that in the CMS. Cannot be undone from here. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYes
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false, but the description adds substantial context beyond them: the delete is soft (plan/list removal, cancellation of a queued write), it cannot be undone from here, and the destructive flow requires a two-call confirmToken sequence. This is exactly the behavioral detail 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.

Conciseness5/5

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

The core action is front-loaded in the first clause, and each subsequent sentence adds a distinct, decision-relevant fact (soft-delete semantics, CMS boundary, irreversibility, confirm flow). No filler or restatement of the title.

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

Completeness5/5

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

With no output schema, the description steps in to explain what the first call returns (a summary and a confirmToken). Combined with the soft-delete scope, irreversibility, and CMS exclusion, an agent has everything needed to invoke this safely.

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

Parameters3/5

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

Schema description coverage is 67%; site carries its enum inline and confirmToken is documented in the schema, and the description reinforces the confirmToken flow. However, the id parameter has no description in either the schema or the description, so the description does not fully compensate for the coverage gap. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (remove/delete) and resource (article) and immediately scopes it: soft delete, disappears from the plan and lists, queued write cancelled. It also draws a sharp boundary against the sibling delete_builder_draft/CMS workflow by clarifying it does NOT remove an already-published post. An agent can identify the action without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use (removing an article from Blawgy) and when-not-to-use (published post on the website, which must be deleted in the CMS), naming the alternative venue. It also tells the agent the exact two-step invocation path via confirmToken, so the agent knows how to proceed.

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

delete_builder_draftDelete a builder draftA
Destructive
Inspect

Permanently delete an Article Builder draft. Articles already saved to the plan from it are not affected. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
draftIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

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

Adds meaningful behavior beyond the annotations: permanence/irreversibility, the side-effect boundary (saved articles are not affected), and the confirm-token safety flow. The annotation merely flags destructiveHint=true; the description explains how destruction is gated and what survives.

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

Conciseness5/5

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

Three tight sentences, front-loaded with purpose and irreversible scope before the procedural detail. No filler.

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

Completeness5/5

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

No output schema exists, and the description already discloses what the first call returns (summary and confirmToken). For a destructive, two-step tool this covers everything an agent needs to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 67%; the description explains the confirmToken parameter's role (first call obtains it, second call proceeds) beyond the schema's terse wording, compensating for the undocumented draftId. site and draftId are largely left to the schema.

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

Purpose5/5

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

States a specific verb (permanently delete) and specific resource (Article Builder draft), and the note that saved articles are unaffected disambiguates it from the sibling delete_article. An agent can select it correctly without opening the schema.

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

Usage Guidelines4/5

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

Clearly instructs on the two-step invocation: first call returns summary+confirmToken, second call passes confirmToken. This is solid usage context, but it does not explicitly name when to prefer this over alternatives like delete_article or publish_draft.

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

delete_business_locationDelete a business locationA
Destructive
Inspect

Removes a saved location. Pages already generated are not touched. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
locationIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely new context: the blast-radius constraint ("Pages already generated are not touched") and the two-phase confirm-token protocol that explains why repeated calls behave differently. It stops short of stating reversibility or required permissions/role.

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

Conciseness5/5

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

Three terse sentences, each earning its place: purpose first, then side-effect scope, then the destructive confirmation protocol. No filler and no repetition of the title.

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

Completeness4/5

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

For a destructive, no-output-schema tool, the description covers the essentials an agent needs: what it destroys, what it leaves intact, and the confirm flow. Missing auth/permission requirements and whether the deletion is reversible, but the core call path is complete.

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

Parameters3/5

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

Schema coverage is 67%; site and confirmToken are documented in the schema, while locationId has no description anywhere. The description adds no parameter-level meaning beyond restating the confirm flow already present in the confirmToken schema description, which is the baseline for partial coverage.

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

Purpose4/5

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

States a specific verb and resource ("Removes a saved location") that an agent can act on immediately. It is clear in isolation, but it doesn't name the boundary against near-neighbors like remove_dutchie_location, delete_site, or update_business_location, so disambiguation still requires opening the schema.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: you call it to delete a business location. The description does give the two-step invocation flow, which is procedural guidance, but it offers no explicit when-to-use/when-not-to-use conditions or routing to alternatives such as update_business_location when deletion is not what the user meant.

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

delete_guardrailDelete a guardrailA
Destructive
Inspect

Removes a guardrail from the library and detaches it from every site. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
guardrailIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds the critical two-step confirmation flow and the cascading effect (detaches from every site), which an agent would otherwise miss. It partially overlaps the confirmToken schema description, but the blast-radius detail is unique and valuable.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and scope, then the destructive/confirmation caveat. No filler, and the most surprising information (the token handshake) is not buried.

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

Completeness5/5

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

No output schema, but the description explains the confirm flow's return (a summary plus token), the mutation's cascade, and the required args are in-schema. An agent has everything needed to invoke it correctly across two calls.

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

Parameters3/5

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

Schema coverage is 67%: 'site' and 'confirmToken' are documented in-schema, while 'guardrailId' has no description anywhere. The description adds no format or constraint detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

Specific verb + resource: 'Removes a guardrail from the library and detaches it from every site.' This distinguishes it from adjacent operations like update_guardrail, list_guardrails, and get_site_guardrails, and even clarifies the scope of removal (library-wide plus per-site detachment).

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

Usage Guidelines3/5

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

The confirmation workflow ('call again with confirmToken') is procedural guidance, but the description never says when to prefer this over update_guardrail or when deletion is inappropriate. Usage is only implied by the tool's name and purpose.

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

delete_photoDelete a photo from the bankA
Destructive
Inspect

Removes a product photo (and its in-use photo and angles) from the bank. Cannot be undone. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
photoIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, and the description adds real context beyond them: irreversibility ('Cannot be undone'), the cascading deletion of the in-use photo and angles, and the first-call-returns-token workflow. That is exactly the behavioral detail an agent needs before invoking a 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.

Conciseness5/5

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

Three compact sentences, front-loaded with the action and scope, then the irreversibility warning, then the confirmation mechanic. No filler and no repetition.

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

Completeness4/5

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

For a destructive, no-output-schema tool, the description covers destruction scope, irreversibility, and the token workflow, which is most of what is needed. It could note that the confirmation summary precedes actual deletion of all listed assets, but the gap is minor.

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

Parameters3/5

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

Schema coverage is 67%, so confirmToken and site are already documented in the schema; the description's confirmToken mention largely repeats the schema text. photoId carries no description in either place, and the description adds no format or constraint detail, so a baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource ('Removes a product photo ... from the bank') and clarifies the cascading scope (in-use photo and angles), which distinguishes it from generic delete_* siblings. It stops short of naming an alternative such as duplicate_photo or restore_photo_original, so sibling differentiation is only partial.

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

Usage Guidelines3/5

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

The description explains the two-step confirmation flow ('call again with confirmToken to proceed'), which is genuine usage guidance, but it never states when to prefer this over relatives like delete_product or update_photo, nor when not to use it. Usage is implied rather than explicitly routed.

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

delete_productDelete (archive) a productA
Destructive
Inspect

Archives the product so it disappears from the catalogue and from articles. There is no un-archive in the dashboard; prefer hide_product when unsure. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
productIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds genuinely non-derivable behavior: irreversibility (no un-archive in the dashboard) and the two-step confirmation protocol where the first call returns a summary plus confirmToken and the second call proceeds. That is exactly the extra context an agent needs before invoking 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.

Conciseness5/5

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

Three sentences, each earning its place: effect first, then the safer alternative, then the destructive confirmation mechanics. Front-loaded and waste-free.

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

Completeness5/5

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

With no output schema, the description still explains what the first call returns (a summary and confirmToken), covers reversibility, and names the alternative tool. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 67% and confirmToken is already documented in the schema, but the description adds the flow semantics the schema lacks: the token comes from a prior call with the same arguments and is omitted on the first call. productId remains undocumented in both places, which keeps this below a 5.

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

Purpose5/5

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

States a specific verb (archives), the resource (the product), and the observable effect (disappears from the catalogue and from articles). It also names the sibling hide_product as the softer alternative, so an agent can distinguish the two without opening either schema.

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

Usage Guidelines4/5

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

Gives an explicit routing rule: prefer hide_product when unsure, which covers the main ambiguity against the sibling tool. It stops short of stating hard when-not conditions (e.g. products referenced by published articles), so it is strong context rather than a complete decision rule.

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

delete_siteDelete a siteA
Destructive
Inspect

Removes a site from the account: the site is soft-deleted (it disappears from the dashboard and from list_sites; articles stop publishing) and its subscription is cancelled at the end of the current billing period (comped sites are deactivated at once). Only the site owner can do this; invited teammates cannot. A white-label partner can delete a client's site (it runs as the client; the confirm summary names the client). Cannot be undone from the API; contact support to restore a site. The same action as Settings > Account > "Delete site". Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the destructiveHint annotation: soft delete semantics, immediate disappearance from the dashboard and list_sites, article publishing stops, subscription cancels at end of billing period with comped sites deactivated at once. It also discloses irreversibility from the API and the two-phase confirmToken handshake.

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

Conciseness4/5

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

A single dense paragraph that leads with what is destroyed and follows with permissions, partner behavior, and the confirmation flow. Every clause carries information, though the subscription/comped-site detail could be tightened slightly.

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

Completeness5/5

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

With no output schema, the description still explains what the first call returns (a summary and confirmToken) and what state results after confirmation. For a destructive, non-idempotent operation, nothing an agent needs to call it safely is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real workflow meaning: the first call with no confirmToken returns a summary and token, and the second call proceeds. That is more than a restatement of the schema's confirmToken text and clarifies the required call sequence.

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

Purpose5/5

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

States a specific verb and resource ("Removes a site from the account") and immediately scopes the meaning of removal as a soft delete that removes it from list_sites. This separates it cleanly from delete_article, delete_product, and the other delete_* siblings.

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

Usage Guidelines4/5

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

Gives clear preconditions (only the site owner; invited teammates cannot; white-label partners may delete a client's site) and the escape hatch for reversal (contact support). It does not name an alternative tool for the non-owner case, so it stops just short of explicit when-not-and-use-instead routing.

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

delete_webhookDelete a webhookA
Destructive
Inspect

Removes the webhook and stops all deliveries to it. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
webhookIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: deliveries stop, and the operation is gated by a confirmation token, which tells the agent the first call is non-terminal and safe to inspect.

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

Conciseness5/5

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

Two sentences, zero waste, and the destructive nature plus the confirmation flow are front-loaded. Nothing is padded or restated unnecessarily.

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

Completeness4/5

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

With no output schema, the description correctly explains what the first call returns (a summary and a confirmToken). It stops short of describing the final response or whether deletion is reversible, which would fully close the loop for a destructive operation.

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

Parameters3/5

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

Schema description coverage is 67% (site and confirmToken documented, webhookId undocumented). The description restates the confirmToken flow but adds no syntax or format detail beyond the schema; webhookId remains undocumented in both places, so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource ('Removes the webhook') plus the concrete effect ('stops all deliveries to it'), which is more than the name alone conveys. An agent can distinguish this from the many other delete_* siblings (delete_article, delete_site, delete_product) purely from the description.

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

Usage Guidelines4/5

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

Gives explicit procedural guidance for the two-phase flow: first call without confirmToken to get a summary and token, second call with confirmToken to proceed. It does not name an alternative tool or state when to prefer update_webhook over deletion, but the invocation sequence is unambiguous.

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

detect_business_locationDetect the business location from the websiteAInspect

Reads the site's homepage and returns the business name, address, phone and city it finds. Nothing is saved: pass the result to add_business_location. Slow (one page scrape).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.3/5.0
Behavior4/5

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

Adds real behavioral context beyond the annotations: scope is limited to the homepage, results are not persisted, and the call is slow due to a page scrape — a useful latency warning no annotation conveys. The only tension is that readOnlyHint=false is conservative relative to 'Nothing is saved', but the description's disclosure is transparent and the mutation is correctly delegated to add_business_location.

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

Conciseness5/5

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

Three short sentences, front-loaded with the operation, then side-effect/routing, then the latency caveat. No sentence is redundant and none restates the tool name.

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

Completeness5/5

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

With no output schema present, the description must carry the return contract and does so by listing the extracted fields, and it adds persistence, routing, and latency details an agent needs to sequence the call correctly. Nothing material is missing for this single-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'site' parameter, so the schema already documents it. The description adds the framing that the site is scraped via its homepage but no new parameter syntax or validation detail, which is the expected baseline when the schema carries the load.

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

Purpose5/5

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

Specific verb+resource ('Reads the site's homepage') plus an explicit enumeration of what is returned (business name, address, phone, city). It is clearly distinguishable from siblings list_business_locations and add_business_location, which are named or implied by the routing instruction.

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

Usage Guidelines4/5

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

Names the follow-up tool explicitly ('pass the result to add_business_location') and establishes the precondition that nothing is persisted, so the agent knows this is the detection step before a write. It stops short of stating when-not to use it (e.g., when a location already exists), so no exclusions are given.

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

disconnect_bingDisconnect Bing Webmaster ToolsA
Destructive
Inspect

Removes the Bing connection. Bing URL submission stops until it is reconnected with connect_bing. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds real behavior on top: what breaks (URL submission halts until reconnect) and the non-obvious two-call confirmation protocol via confirmToken. This is exactly the extra context a mutation tool needs.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action and its consequence, then the confirmation mechanics. Every sentence carries information and nothing is padded.

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

Completeness5/5

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

There is no output schema, but the description covers the return behavior (first call returns a summary and token), the prerequisite for the second call, and the user-visible side effect. Nothing needed to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents both `site` and `confirmToken`, including the omit-on-first-call rule. The description restates the token flow rather than adding new syntax or constraint detail, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("Removes the Bing connection") and names the counterpart tool (connect_bing), so an agent can place it against connect_bing and disconnect_gsc without opening a schema. The scope is exact and unambiguous.

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

Usage Guidelines4/5

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

Explains the operational consequence ("Bing URL submission stops") and the recovery path via connect_bing, plus the required two-step confirm flow. It does not explicitly say when one should avoid disconnecting, but the context an agent needs to decide is present.

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

disconnect_gscDisconnect Google Search ConsoleA
Destructive
Inspect

Removes the Google Search Console connection. Traffic and ranking reports stop until it is reconnected with get_connect_link. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint=true annotation, the description discloses the concrete impact (traffic/ranking reports stop) and, crucially, the two-step confirm flow: first call returns a summary and confirmToken, second call proceeds. This is behavioral detail the annotations do not capture and is exactly what an agent needs to avoid an accidental destructive call.

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

Conciseness5/5

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

Three tight sentences with no waste, purpose front-loaded, then consequence, then the confirmation protocol. Every sentence earns its place.

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

Completeness5/5

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

With no output schema, the description usefully explains what the first call returns (summary plus confirmToken). Combined with the annotations and full schema coverage, nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning about how confirmToken is meant to be used across calls ('first call... call again with confirmToken to proceed'), reinforcing the token lifecycle beyond the schema's field description.

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

Purpose5/5

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

States a specific verb and resource ('Removes the Google Search Console connection') and is immediately distinguishable from the sibling disconnect_bing. It also names the concrete consequence (traffic and ranking reports stop), so the agent knows exactly what the operation affects.

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

Usage Guidelines4/5

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

Gives clear context for when the tool is relevant and names the recovery path via get_connect_link, which is effectively the alternative the agent would use instead. It does not explicitly state when-not to use it, but the destructive framing plus the revert pointer covers most selection needs.

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

dismiss_plan_suggestionDismiss a suggested topicBInspect

Drop one of the plan's suggestions so it stops being offered. Nothing scheduled is affected.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
suggestionIdYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so safety is largely covered. The description adds one genuinely useful side-effect clarification ('Nothing scheduled is affected'), but says nothing about reversibility (can it be re-added?) or whether repeating the call is harmless 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.

Conciseness4/5

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

Two short sentences, effect stated first and the side-effect caveat second. No padding or repetition; 'Drop' is slightly informal relative to the tool name but no information is wasted.

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

Completeness3/5

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

For a simple two-parameter mutation, the description covers the what and one side effect, and annotations carry the safety profile. However, with no output schema and a 50%-documented schema, the origin of suggestionId and reversibility remain unexplained.

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

Parameters2/5

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

Schema coverage is only 50%: 'site' is documented in the schema while 'suggestionId' is bare (minLength only). The description does not compensate by saying where suggestion IDs come from (e.g., get_plan) or what an invalid ID does, so the undocumented parameter stays opaque.

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

Purpose4/5

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

States a specific verb ('Drop') and resource ('one of the plan's suggestions') with a stated outcome ('stops being offered'). An agent can infer this is the inverse of accept_plan_suggestion, though the sibling is not named explicitly.

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

Usage Guidelines3/5

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

The outcome clause implies the use case (removing an unwanted suggestion), but there is no explicit when-to-use guidance and no differentiation from near-name siblings like dismiss_topic, dismiss_update, or remove_plan_entry. The agent must infer the boundary from names alone.

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

dismiss_topicHide a research topicAInspect

Hide a research topic card from the plan's topic views (presentation only: the planner may still use it). undo: true shows it again. To stop the planner from ever scheduling it, use exclude_topic instead.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
undoNo
labelYesTopic (cluster) label

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is already carried by structured data. The description adds genuinely new behavioral context beyond that: the hide is presentation-only and the planner may still use the topic, plus the undo semantics. It does not mention permissions or persistence across sessions, so it stops short of a 5.

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

Conciseness5/5

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

Three tight sentences: effect and scope first, reversal second, disambiguation from the sibling last. No restatement of the title, no filler, and the most decision-relevant constraint is front-loaded.

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

Completeness4/5

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

With no output schema and only three parameters, the description covers what an agent needs: what is hidden, that the effect is presentation-only, how to reverse it, and which sibling to pick instead. Minor gaps remain around authorization requirements and whether the dismissal persists, but nothing blocking for correct invocation.

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

Parameters4/5

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

Schema coverage is 67%: 'site' and 'label' are documented in the schema, but 'undo' has no schema description. The description compensates for exactly that gap by defining undo ('shows it again'), which is the one parameter the schema leaves bare. Remaining param details add nothing further, so 4 rather than 5.

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

Purpose5/5

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

States a specific verb ('Hide') and resource ('a research topic card from the plan's topic views') and immediately bounds the effect with '(presentation only: the planner may still use it)'. It also names the sibling it is not — exclude_topic — so an agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

Explicitly gives the alternative and the condition that selects it: 'To stop the planner from ever scheduling it, use exclude_topic instead.' It also documents the reversal path ('undo: true shows it again'), covering both directions of use.

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

dismiss_updateDismiss an updateBInspect

Close a proposal or draft without publishing it. The page is untouched.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
updateIdYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the mutation/safety profile is partly covered. The description adds the useful disclosure that 'the page is untouched', clarifying the write is confined to the proposal state, but it omits what happens to the update record itself and that repeat calls are not idempotent.

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

Conciseness5/5

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

Two short, front-loaded sentences with zero filler. The action and its key consequence are stated immediately.

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

Completeness3/5

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

For a mutation tool with no output schema, the description covers the page-safety consequence but not the update's resulting state, permissions, or failure/repeat-call behavior, and it leaves one of two parameters entirely undocumented. Adequate but with clear gaps.

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

Parameters2/5

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

Schema coverage is only 50%: 'site' is documented (though with a single hard-coded value) while 'updateId' has no description anywhere. The description provides no parameter meaning at all, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (close/dismiss) and resource (proposal or draft), and distinguishes the outcome from publishing, which separates it from approve_update and publish_draft. It does not explicitly name those siblings, so it falls short of full differentiation.

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

Usage Guidelines3/5

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

The phrase 'without publishing it' implies the contrast with approve_update/publish_draft, but there is no explicit when-to-use guidance or statement of what condition selects dismissal over approval. Usage 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.

draft_updateWrite an update draftAInspect

Write the improved version of a proposed page update (status "proposed"). "retarget" rows get a new title, H1, meta description and intro built around the target search; "sections" and "full" rows get a body refresh. Slow: several LLM calls, usually 1-3 minutes, returns when done with the draft (new title, meta description, full HTML, before/after). Nothing is published. Next: edit_update_draft to tweak it, approve_update to publish, or dismiss_update. If the writer's safety checks fail the update goes back to "proposed" with a reason. Refused when a draft the owner edited by hand already exists (it would be overwritten).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
updateIdYes

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial context beyond the annotations: it is slow (several LLM calls, 1-3 minutes), synchronous, returns a concrete payload (new title, meta description, full HTML, before/after), and publishes nothing. It also discloses failure and refusal behavior — safety-check failure reverts the row to "proposed" with a reason, and a hand-edited draft causes refusal because it would be overwritten — none of which appears in the structured fields.

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

Conciseness4/5

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

Front-loaded with purpose and scoping, then cost, then return value, then routing — a sensible order with no filler. It is a dense single paragraph with many parenthetical clauses, which costs a little readability but every sentence carries information.

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

Completeness5/5

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

No output schema exists, and the description compensates by enumerating the return payload. Combined with the latency warning, the non-publishing guarantee, and the failure/refusal paths, an agent has everything needed to call this correctly and set expectations.

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

Parameters3/5

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

Schema coverage is 50%; the description never mentions updateId directly, though it does implicitly characterize it by explaining that "retarget", "sections" and "full" rows behave differently, which helps an agent understand what kind of update it is targeting. The site enum is only documented in the schema, so the description adds partial but not decisive semantic value.

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

Purpose5/5

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

Opens with a specific verb+resource ('Write the improved version of a proposed page update') and immediately scopes it to rows in status "proposed". It distinguishes itself from the neighboring draft tools by explaining that it produces the content, while edit_update_draft, approve_update and dismiss_update act on it afterward.

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

Usage Guidelines4/5

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

Explicitly names the downstream alternatives ('Next: edit_update_draft to tweak it, approve_update to publish, or dismiss_update') and states a blocking precondition (refused when a hand-edited draft exists). It doesn't spell out the inverse case — when to prefer edit_update_draft over re-running this — so it stops short of a full when/when-not matrix.

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

duplicate_photoAdd another look of a productAInspect

Copies a bank entry so a second colour, size or stage of the same product can be set up, grouped with the original. Edit the copy with update_photo afterwards.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
photoIdYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-destructive, non-idempotent, closed-world write, so the safety burden is partly lifted. The description adds that the new entry is grouped with the original, which is useful behavioral context beyond the annotations. It says nothing about permissions, limits, what fields the copy inherits, or how the caller obtains the new entry's identifier.

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

Conciseness5/5

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

Two sentences of roughly equal weight, both earning their place: the first defines the operation and its purpose, the second routes the agent to the correct follow-up tool. Nothing is padded and the key fact is front-loaded.

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

Completeness3/5

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

For a simple two-parameter write, the description covers purpose, outcome and follow-up. However there is no output schema, and the description never says what the call returns — notably the new photo's identifier, which the caller needs before the recommended update_photo step. That gap is the one thing a fully complete definition would close.

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

Parameters2/5

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

Schema description coverage is only 50%: 'site' is documented in the schema but 'photoId' has no description anywhere. The description text mentions no parameters at all, so it does not compensate for the gap — an agent gets no help identifying which photo is being duplicated or what constraints apply.

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

Purpose4/5

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

The description gives a specific verb and resource ('Copies a bank entry') plus the business rationale ('a second colour, size or stage of the same product'), and explicitly names update_photo as the tool that handles subsequent edits, which separates it from the sibling it is most easily confused with. The only friction is that it calls the resource a 'bank entry' while the tool name and siblings talk about 'photo', forcing a small inference.

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

Usage Guidelines4/5

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

The 'when' is stated concretely: use it when a second colour, size or stage of the same product is needed, so the copy stays grouped with the original. It also names the follow-up step ('Edit the copy with update_photo afterwards'), which is genuine sequencing guidance. There is no explicit 'do not use this for...' exclusion, 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.

edit_update_draftEdit an update draftAInspect

Change a ready draft before approving it: new title, metaDescription or the full contentHtml (keep at least a few paragraphs). Only drafts in status "ready" can be edited. Fields you omit are kept.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
titleNo
updateIdYes
contentHtmlNo
metaDescriptionNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations mark this as non-read-only, non-destructive, non-idempotent. The description adds real behavioral content beyond that: the status='ready' gate, partial-update semantics ('Fields you omit are kept'), and a content validity constraint ('keep at least a few paragraphs'). It does not say what happens to a draft that is not ready or whether edits can be reverted.

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

Conciseness5/5

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

Three short sentences, zero filler, with the action and target front-loaded and the precondition and partial-update rule following. Every clause earns its place.

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

Completeness4/5

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

For a no-output-schema mutation tool with 5 params, the description covers the operation, the precondition, the editable field set, and the omit-keeps-existing rule. Missing only updateId guidance and an explicit alternative for the non-'ready' case, which is minor.

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

Parameters4/5

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

Schema description coverage is only 20% (only 'site' is documented), so the description must carry the load and largely does: it explains that title, metaDescription and contentHtml are the editable fields and imposes a length expectation on contentHtml. updateId and the 200/300 char limits are left to the schema, but the semantics of the mutation surface are well covered.

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

Purpose4/5

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

States a specific verb (edit/change) and resource (update draft) and enumerates the mutable fields: title, metaDescription, contentHtml. The phrase 'before approving it' implicitly separates it from approve_update, though it never names that sibling outright.

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

Usage Guidelines4/5

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

Gives a concrete precondition ('Only drafts in status "ready" can be edited') and a temporal context ('before approving it'). It stops short of explicitly naming approve_update, publish_draft, or revert_update as alternatives, so 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.

exclude_keywordExclude a keyword or topicAInspect

Hard-excludes one keyword or one topic label from all future planning: the planner will never schedule it again and add_to_plan refuses it. Already scheduled or published articles are untouched. Give exactly one of keyword or topic (topic = a cluster label from get_keywords). Undo with restore_keyword. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
topicNoA topic (cluster label) to exclude.
keywordNoA keyword to exclude.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly=false, destructive=false, idempotent=false). The description adds real behavioral context beyond them: the exclusion is persistent into all future planning, add_to_plan will refuse the item, already scheduled or published articles are unaffected, and the call is free. That is exactly the downstream-effect disclosure a mutation tool needs.

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

Conciseness5/5

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

One dense paragraph, front-loaded with the effect, then the input rule, the undo path, and the cost. No filler sentences and no restatement of the title.

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

Completeness5/5

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

Three simple parameters, no output schema needed, and the description covers effect, scope of impact, input constraint, reversal, and cost. Nothing 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.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds a constraint the schema cannot express: the mutual exclusivity of keyword and topic, plus the definition of topic as a cluster label from get_keywords. This meaningfully reduces misuse.

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

Purpose4/5

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

States a specific verb and resource ('Hard-excludes one keyword or one topic label from all future planning') and clarifies the dual-mode input. It does not differentiate itself from the sibling exclude_topic, which appears to cover the topic half of this tool's surface, so an agent still has to guess which of the two to call for a topic label.

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

Usage Guidelines4/5

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

Gives a concrete usage constraint ('Give exactly one of keyword or topic') and names the reversal path ('Undo with restore_keyword'). It stops short of explicit when-to-use guidance relative to the sibling exclude_topic/dismiss_topic tools.

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

exclude_topicExclude a topic or keywordAInspect

Tell the planner never to schedule a research topic (topic) or a single keyword again. Only affects future generation; already-scheduled entries stay (remove them with remove_plan_entry). undo: true restores it. Exactly one of topic or keyword per call.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
undoNo
topicNoTopic (cluster) label
keywordNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations mark this as a non-read-only, non-destructive write, and the description adds genuinely useful context beyond them: the change is forward-looking only, pre-existing scheduled entries are untouched, and undo:true reverses it. The reversibility detail matters because idempotentHint=false could otherwise read as irreversible. It does not contradict any annotation.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, then the scope constraint, the escape hatch, and the parameter rule. No filler and nothing repeated from the schema.

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

Completeness4/5

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

With no output schema and half the parameters undocumented structurally, the description carries the important behavioral load well — effect scope, reversal, and the exclusive-or parameter rule. Minor gap: it does not say what happens if neither or both of topic/keyword are supplied beyond the stated constraint.

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

Parameters4/5

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

Schema coverage is only 50% (site and topic documented, keyword and undo bare), so the description must compensate — and it does: it clarifies that keyword is the single-keyword alternative to topic, that undo:true restores the exclusion, and that exactly one of topic/keyword may be supplied. Site semantics are left to the schema.

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

Purpose5/5

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

Specific verb ('exclude'/'tell the planner never to schedule') plus the two resource types it accepts (topic, keyword), with the exclusivity rule stated. It is clearly distinguishable from siblings like exclude_keyword, dismiss_topic, and remove_plan_entry.

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

Usage Guidelines4/5

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

It states the effect scope ('only affects future generation') and names the alternative for already-scheduled entries: remove_plan_entry. It also gives the undo path. What it does not do is explain when to prefer this over its sibling exclude_keyword, leaving the topic-vs-keyword sibling routing 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.

extract_brand_colorsRead brand colours off the websiteAInspect

Fetches the site's homepage, derives five swatches (primary, secondary, accent, background, text) as {role, hex} and SAVES them as the site's image-style brand colours (the same as the Images tab's "Read from my site" button), replacing any colours set before. Slow (page fetch plus a vision call) and capped per site per day (429 BRAND_COLORS_CAP). Adjust individual swatches afterwards with update_settings imageStyle.colors.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.2/5.0
Behavior4/5

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

With annotations present, the description still adds real operational context the annotations don't carry: latency ('page fetch plus a vision call'), a per-site daily cap with the 429 BRAND_COLORS_CAP code, and the fact that it overwrites prior colours. The overwrite behaviour sits in mild tension with destructiveHint=false, but the description is explicit enough that the agent is not misled.

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

Conciseness4/5

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

Front-loaded with the action and output, then constraints, then the alternative. It is information-dense and runs long as a single stream, but every clause (output roles, side effect, cap, follow-up tool) earns its place.

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

Completeness5/5

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

There is no output schema, and the description compensates by specifying the return shape ({role, hex} for five roles). It also covers the failure mode (429 cap), the side effect (replacing prior colours), and the follow-up path, leaving nothing an agent needs to call it correctly.

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

Parameters3/5

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

Only one parameter (site), and schema description coverage is 100%, so the schema already fully documents it. The description adds nothing about the site argument itself, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource chain: 'Fetches the site's homepage, derives five swatches... and SAVES them as the site's image-style brand colours.' It names the exact output (primary, secondary, accent, background, text), so an agent knows precisely what this produces and can distinguish it from generate_* or update_settings siblings.

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

Usage Guidelines4/5

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

Anchors usage to a concrete UI equivalent ('the same as the Images tab's "Read from my site" button') and routes follow-up edits to update_settings imageStyle.colors. It implies when not to rely on it repeatedly (slow, daily cap), but never states explicit when-to-use-vs-alternative conditions.

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

file_support_requestFile a support requestAInspect

Files a support request with the Blawgy team about this site: a subject, the full message, and an optional category (bug, question, billing, feature_request, other). A snapshot of the account (plan, platform, cadence, recent failures) is attached automatically, so the message only needs to say what happened and what the customer wants. The team replies by email to the account address. Use when something is broken, when the help docs (search_help) cannot answer, or when the customer asks to talk to a person. Works on a frozen site too. At most a few per hour.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
messageYesEverything the team needs: what was expected, what happened, which article or setting, and what the customer wants done.
subjectYesOne line: what this is about.
categoryNoDefaults to other.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the generic safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false). The description goes well beyond them: it discloses that an account snapshot (plan, platform, cadence, recent failures) is attached automatically, that replies arrive by email at the account address, that it works on a frozen site, and that throughput is capped at a few per hour.

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

Conciseness4/5

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

Roughly five short sentences, front-loaded with the action and payload before moving to prerequisites and rate limits. Every clause carries information, though the enumerated field list in the opening sentence partially duplicates the schema.

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

Completeness5/5

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

With no output schema, the description closes the loop by explaining how the outcome is delivered (email reply to the account address) and what context the team receives automatically. For a 4-parameter submission tool this covers everything an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (site, subject, message, category) are already documented with length bounds and enum values. The description restates the parameter set and adds light guidance on what the message should contain, but contributes little syntax or format detail the schema 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.

Purpose5/5

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

States a specific verb and resource ('Files a support request with the Blawgy team about this site') and enumerates the payload (subject, message, optional category). The scope is narrow enough to distinguish it from the many other sibling tools, and the mention of the account snapshot clarifies what the tool actually transmits.

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

Usage Guidelines5/5

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

Gives explicit triggers ('when something is broken, when the help docs (search_help) cannot answer, or when the customer asks to talk to a person') and names the alternative sibling (search_help) with the condition that selects it. It also notes the frozen-site case, which is a meaningful branch condition.

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

find_competitorsSuggest competitorsAInspect

Researches the web for competitor domains for this business (using the saved description unless one is given) and returns suggestions, skipping competitors already saved. Slow (LLM plus web). Nothing is saved: pass the ones to keep to update_settings competitors.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
productDescriptionNo

TDQS

A4.4/5.0
Behavior4/5

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

Adds real behavioral context the annotations cannot convey: a latency warning ('Slow (LLM plus web)'), deduplication against already-saved competitors, and the crucial point that 'Nothing is saved' plus where to persist results. This is the non-obvious operational information an agent needs; only the return shape is left unstated.

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

Conciseness5/5

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

Front-loaded with the core action, then input source, dedup behavior, and cost warning in two tight fragments; every clause carries distinct information and the routing hint is last. No filler.

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

Completeness4/5

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

For a suggestion-generating tool with no output schema and a mutation-ambiguous annotation set, the description covers inputs, side effects (none), and follow-up. The one gap is that it never hints at the shape of the returned suggestions, which an agent must guess.

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

Parameters4/5

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

Schema coverage is 50%: 'site' is documented but 'productDescription' has no schema description. The description compensates by explaining that a supplied description overrides the saved one, giving the parameter meaning beyond its name, though it never states the format/length expectations.

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

Purpose5/5

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

States a specific verb (researches/suggests), a specific resource (competitor domains for this business) and a scope qualifier (skipping competitors already saved). This clearly separates it from siblings like get_keyword_recommendations or add_my_keywords without needing to open any schema.

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

Usage Guidelines4/5

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

Gives the input-selection rule ('using the saved description unless one is given') and, importantly, tells the agent what to do next: 'pass the ones to keep to update_settings competitors.' It lacks an explicit when-not-to-use statement or a warning not to expect this tool to persist, but the save-path routing effectively covers that.

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

generate_descriptionDraft a business description from the websiteAInspect

Reads the site and writes a business description to start from. Slow. Nothing is saved: pass the result to update_settings businessDescription.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.3/5.0
Behavior4/5

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

Adds real context beyond annotations: 'Slow' discloses latency, and 'Nothing is saved' reconciles the readOnlyHint=false annotation with the fact that no state is persisted, which prevents an agent from assuming it mutates settings. It does not mention auth or error behavior, but the key behavioral facts for a generator are covered.

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

Conciseness5/5

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

Three short sentences, each earning its place: what it does, how slow it is, and what to do with the output. The critical no-persistence warning is front-loaded before the follow-up instruction.

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

Completeness5/5

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

There is no output schema, and the description explicitly handles the return value by telling the agent to feed it to update_settings. For a single-parameter generative tool, the combination of purpose, latency, persistence semantics, and follow-up action is complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single 'site' parameter fully. The description's 'Reads the site' only implicitly ties back to that parameter and adds no syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

Specific verb + resource: 'Reads the site and writes a business description.' It distinguishes itself from lookalike siblings (generate_titles, generate_outline, analyze_new_site) by naming the output artifact, a business description, and the fact that it is only a starting draft.

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

Usage Guidelines4/5

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

Gives clear forward guidance: use the result by passing it to update_settings businessDescription. It explains the context of use (a starting point) but does not state when-not to use it or which sibling to pick for adjacent text-generation tasks, so it stops short of explicit alternatives.

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

generate_location_page_draftsGenerate location pages as WordPress draftsAInspect

Clones the template page once per target, rewrites each for its town/product/event and saves them as DRAFTS on WordPress for the owner to review. Slow (minutes for a big batch); waits and returns per-target results. To publish live instead use publish_location_pages.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
targetsYes
locationIdNoWhich saved business location the pages speak for (default: the primary one).
baseKeywordNoThe service or product the pages are about, for example "plumber".
slugPatternNo
titleSuffixNo
stripPhrasesNoPhrases to remove from the cloned copy.
titlePatternNo
templatePageIdYesThe WordPress page to clone, from list_page_templates.
templatePurposeNoWhat each page is: a town or area (default), a product or brand, or an event.
generateFeaturedImageNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=false) but not cost or lifecycle. The description adds real context: output is saved as DRAFTS for owner review, execution is slow (minutes for a big batch), and it waits and returns per-target results. It does not spell out duplicate-creation risk on re-run despite idempotentHint=false, which is the one notable gap.

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

Conciseness5/5

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

Three sentences with no waste: the core action first, then the behavioral cost/lifecycle note, then the alternative routing. Front-loaded and every sentence earns its place.

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

Completeness4/5

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

With no output schema, the description usefully notes it returns per-target results, which is the key return-shape information. For an 11-param batch mutation tool it could still say more about partial failures or permissions, but the draft lifecycle, latency and alternative are all covered.

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

Parameters3/5

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

Schema description coverage is 55% with 11 parameters, so the schema carries much of the load. The description adds meaning for targets (the town/product/event each page is rewritten for) and implies templatePageId is the cloned source, but leaves slugPattern, titlePattern, stripPhrases, generateFeaturedImage and baseKeyword unexplained. Marginal value beyond the schema, so baseline 3.

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

Purpose5/5

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

States a precise verb and resource chain: clones the template page once per target, rewrites each for its town/product/event, and saves them as drafts. It explicitly distinguishes itself from publish_location_pages, so an agent can tell the two apart without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit routing rule: use this for drafts, use publish_location_pages to publish live instead. The condition that selects the alternative is stated rather than left to inference. The only minor omission is that sibling preview_location_pages is not named, but the primary decision branch is fully covered.

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

generate_outlineBuilder step 2: outlineAInspect

Article Builder, step 2. Turn a chosen title plus the original prompt into a section outline ({ sections: [{ id, title, ... }] }). Uses the site's business profile, audience and guardrails. One LLM call. Next: write_from_outline with the title and this outline, or regenerate_outline with feedback.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
urlsNoSource articles to draw on (required for remix, max 1 there)
titleYes
promptYesThe article brief used in generate_titles
locationIdNoBusiness location id to focus on (multi-location sites)
articleTypeNosmart-composer (default) writes fresh; remix rewrites the article at `urls`
useExternalLinksNoCite outside sources (default true)
useInternalLinksNoLink to the site's own pages (default true)
useYouTubeVideosNoEmbed relevant YouTube videos (default false)
youtubeChannelUrlNoPrefer videos from this channel (youtube.com/@handle or youtube.com/channel/UC...)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only declare it is not read-only, not idempotent and not destructive; the description adds real context beyond that — it is a single LLM call, it draws on the site's business profile, audience and guardrails, and it emits a section outline. It stops short of stating cost, latency or failure/retry behavior for the LLM call.

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

Conciseness5/5

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

Three short sentences, front-loaded with the pipeline position, then inputs/output, then the next-step routing. No filler and no repetition of schema fields.

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

Completeness5/5

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

No output schema exists, and the description compensates by sketching the return structure and confirming the pipeline hand-off values. With 90% schema coverage on the 10 parameters and annotations covering the safety profile, an agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema coverage is 90%, so the baseline is 3, but the description adds workflow meaning the schema cannot: `title` is the one chosen from generate_titles and `prompt` is the original brief from that step, which tells the agent where these values must come from. It says nothing extra about the remaining options (urls, articleType, link/video flags), leaving that to the schema.

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

Purpose5/5

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

Specific verb (turn ... into) and resource (section outline), with the exact input pair (chosen title + original prompt) named. The output shape `{ sections: [{ id, title, ... }] }` further pins down what is produced, and the step-2 framing separates it from generate_titles and write_from_outline.

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

Usage Guidelines4/5

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

Explicitly positions the tool as step 2 of the Builder and names both follow-on routes (write_from_outline with title+outline, or regenerate_outline with feedback). It gives clear context but does not state exclusions, e.g. when to prefer remix_from_urls or write_article_now instead of entering this pipeline.

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

generate_planGenerate or refill the planAInspect

Generate the content plan, or refill the open slots in the planning horizon from the site's keyword research. Safe to call again: existing entries are kept. Scheduled entries then write themselves on their publish dates at the site's posts-per-week cadence. If deep keyword research is still running the plan is held and this returns status "queued" with kind "research": poll with get_job, then call generate_plan again. Use add_to_plan to add one specific keyword instead.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
horizonWeeksNoHow far ahead to fill (4, 6 or 8 weeks)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations give the safety profile (readOnly=false, destructive=false, idempotent=false), and the description adds substantial context beyond them: re-call safety with existing entries preserved, autonomous self-writing at the site's cadence, and the 'held' behavior returning status 'queued' with kind 'research'. This is exactly the behavioral detail an agent needs and cannot get 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.

Conciseness4/5

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

Front-loaded with the primary action, then the idempotency note, then the async/held branch, then the alternative tool. Sentences are dense but each earns its place. Slightly long, but no wasted filler.

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

Completeness5/5

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

No output schema exists, and the description compensates by specifying the return shape ('status "queued"' with 'kind "research"') and the side effects (scheduled entries write themselves). It also names the sibling it is not. Nothing critical for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100% (both site and horizonWeeks are documented with enum values), so the schema carries the parameter burden. The description mentions the 'planning horizon' which loosely maps to horizonWeeks but adds no syntax or constraint detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb+resource ('Generate the content plan, or refill the open slots in the planning horizon from the site's keyword research'), clearly distinguishing this from siblings like get_plan, add_to_plan, and update_plan_entry. An agent can identify the operation without inspecting the schema.

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

Usage Guidelines5/5

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

It explicitly routes the agent to an alternative ('Use add_to_plan to add one specific keyword instead') and describes the exact recovery flow when research is still running (poll with get_job, then call generate_plan again). When-to-use and what-to-do-instead are both covered.

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

generate_titlesBuilder step 1: titlesAInspect

Article Builder, step 1. Give a prompt (what the article is about, who it is for, the angle) and get title options back. One LLM call against the user's builder budget. Next: pick a title and call generate_outline with the same prompt and options. For a rewrite of an existing page use articleType "remix" with its url (or remix_from_urls to run every step at once).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
urlsNoSource articles to draw on (required for remix, max 1 there)
promptYes
locationIdNoBusiness location id to focus on (multi-location sites)
articleTypeNosmart-composer (default) writes fresh; remix rewrites the article at `urls`
temperatureNo
useExternalLinksNoCite outside sources (default true)
useInternalLinksNoLink to the site's own pages (default true)
useYouTubeVideosNoEmbed relevant YouTube videos (default false)
youtubeChannelUrlNoPrefer videos from this channel (youtube.com/@handle or youtube.com/channel/UC...)

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare this is a non-read-only, non-destructive, non-idempotent call; the description adds the important cost context that it consumes 'One LLM call against the user's builder budget,' which a caller cannot infer from the annotations. It does not discuss latency, retries, or what happens on repeated calls, so it stops short of a 5.

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

Conciseness5/5

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

Four tight sentences, front-loaded with the step identity and the core input/output, then sequencing, then the alternate path. No filler and nothing repeated from the schema.

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

Completeness4/5

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

For a 10-parameter, no-output-schema tool it covers the flow, cost, and routing well; return value is only gestured at ('title options back'), and parameters like temperature, useExternalLinks, and useYouTubeVideos rely entirely on the schema. Adequate, though the output shape could be a phrase richer.

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

Parameters4/5

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

With 80% schema coverage the baseline is 3, but the description adds real meaning: it defines what `prompt` should contain (topic, audience, angle) and demonstrates the `articleType` 'remix' case paired with `urls`. This goes beyond the schema strings for the two most decision-relevant parameters.

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

Purpose5/5

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

States a specific verb+resource ('get title options back') within a named flow ('Article Builder, step 1'), and distinguishes the tool from siblings by naming generate_outline as the next step and remix_from_urls as the batch alternative. An agent can place it precisely in the builder pipeline without opening the schema.

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

Usage Guidelines5/5

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

Explicit about when to call it (start of the builder, given a prompt), what to do next (pick a title and call generate_outline with the same prompt/options), and the alternates for a different case (articleType 'remix' with url, or remix_from_urls for all steps). Both the sequencing and the branching condition are stated, not implied.

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

get_ai_mentionsAI mentions (Pro+)A
Read-onlyIdempotent
Inspect

Where ChatGPT, Claude, Gemini, Perplexity and Google AI Overviews cite this site: totals, citation rate, mentions by model, citing sources, competitor landscape and individual mentions (query, answer snippet, source URL). Pro+ only. Free to read: it only returns the stored snapshot (snapshot is null and stale=true until one exists or when it is older than a day); nothing is scanned by this tool. includeHistory=true adds the trend over past scans. Run a fresh scan (spends credits) with run_ai_mentions_scan, then poll get_job kind=ai_scan.

NameRequiredDescriptionDefault
llmNoFilter to one model (default all).
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 25, max 50).
includeHistoryNoAlso return the trend series of earlier scans.

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing Pro+ gating, the cost model (free read vs credit-spending scan), and the freshness contract: snapshot is null and stale=true until one exists or is older than a day. This is exactly the behavioral context an agent needs to interpret the response.

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

Conciseness4/5

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

Front-loaded with what is returned, then constraints and routing. Dense and information-rich with no filler sentences, though the parenthetical definition of `stale` and the semicolon-chained clauses make it slightly cramped rather than crisp.

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

Completeness5/5

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

With no output schema, the description carries the return-shape burden and does so by enumerating the result fields (query, answer snippet, source URL, competitor landscape). Combined with the Pro+ gate, snapshot freshness rules, and the scan/poll alternative, 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.

Parameters3/5

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

Schema coverage is 100%, so all four parameters are already documented in the schema itself. The description reinforces includeHistory (trend over past scans) and the model filter, but adds no syntax or format detail beyond what the schema provides. 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.

Purpose5/5

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

States a specific verb and resource (returns AI citation/mention data for a site) with the full granularity of what's covered: totals, citation rate, by-model breakdown, citing sources, competitor landscape, individual mentions. It also implicitly distinguishes itself from run_ai_mentions_scan by naming that sibling for fresh scans.

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

Usage Guidelines5/5

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

Explicitly says when to use it (read the stored snapshot, free, Pro+ only), when not to expect fresh data ('nothing is scanned by this tool'), and routes to the alternative workflow ('Run a fresh scan with run_ai_mentions_scan, then poll get_job kind=ai_scan'). 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.

get_articleGet an articleA
Read-onlyIdempotent
Inspect

Read one article in full: title, slug, meta description, keywords, status, dates, hero and inline images, the live CMS URL when published, a preview URL, the HTML body and a plain-text excerpt. Pass includeText: true for the whole body as plain text as well. Scheduled entries that have not been written yet have no body.

NameRequiredDescriptionDefault
idYesArticle id from list_articles or get_plan
siteYesThe site to act on. One of: fencestainingdenver.com.
includeHtmlNoReturn the HTML body (default true)
includeTextNoAlso return the full body as plain text

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description adds genuinely new behavioral context: includeText returns the full plain-text body, and unwritten scheduled entries return no body. It omits any note on size, pagination or error behavior, but the added disclosure is real.

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

Conciseness4/5

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

Front-loaded with the core action, then a compact inventory of returned fields and two short caveat sentences. The field list is long but each item earns its place given there is no output schema; no filler sentences.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so thoroughly, plus notes the empty-body case for scheduled articles. Minor gap: no guidance on choosing between sibling read tools or on includeHtml's default, both of which the schema partly covers.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates includeText semantics that the schema already documents and does not add format or constraint detail for site/id beyond what the schema provides.

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

Purpose5/5

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

Starts with a specific verb+resource ("Read one article in full") and then enumerates exactly what is returned (title, slug, meta description, URLs, HTML body, excerpt). This clearly distinguishes it from list_articles (many) and get_article_preview_url (URL only) without needing the schema.

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

Usage Guidelines3/5

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

Usage is implied by "Read one article in full" and it does tell the agent to pass includeText for plain text and that scheduled entries have no body. However, it never explicitly routes the agent between this tool, list_articles, get_article_preview_url and update_article, so no when-not guidance exists.

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

get_article_preview_urlGet a preview linkA
Read-onlyIdempotent
Inspect

A link a human can open to read the article as Blawgy renders it, including unpublished, draft and held articles. Verifies the article exists first.

NameRequiredDescriptionDefault
idYes
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description still adds real behavior: it works on unpublished/draft/held articles and it validates that the article exists first, hinting at a failure mode. It omits whether the link expires or requires authentication to open.

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

Conciseness5/5

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

Two short sentences with no filler, front-loading what the tool returns before adding the scope and validation caveat. Every clause earns its place.

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

Completeness4/5

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

For a simple read-only tool with no output schema, the description explains the return value well (a link a human can open) and notes the existence check. Minor gaps remain around permissions and link lifetime, but nothing critical is missing for correct invocation.

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

Parameters2/5

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

Schema description coverage is only 50%: 'site' is documented in the schema, but 'id' carries no description anywhere. The description only refers obliquely to 'the article', so it does not compensate for the undocumented identifier parameter (format, accepted values, or lookup behavior).

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

Purpose4/5

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

The description states a specific verb+resource (get a preview link for an article) and clarifies the return value is a human-openable URL rendered as Blawgy would render it, which separates it from get_article-style content retrieval. It does not name a sibling tool explicitly, so differentiation is implied rather than stated.

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

Usage Guidelines4/5

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

It gives clear context for when this is the right tool: when you need a link a person can open, including for unpublished, draft and held articles that other endpoints would not expose. It stops short of naming alternatives (e.g. get_article) 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.

get_behaviorReader behavior (pixel, Pro+)A
Read-onlyIdempotent
Inspect

Reader engagement from the Blawgy pixel over the last 28 days. Without a path: the top pages by views with median active seconds, scroll depth and the section where readers most often leave. With a path (e.g. /blog/my-post): that page's full profile including the per-section funnel, click and referrer breakdowns. Pro+ (pixel must be on in Settings). Free.

NameRequiredDescriptionDefault
pathNoOne page path for its full profile. Omit for the top-pages summary.
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 25, max 200).

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's added value is the 28-day data window, the pixel dependency, and the Pro+ entitlement requirement -- real access/auth context. With no output schema, it also carries the return-shape burden and discharges it well, enumerating median active seconds, scroll depth, exit section, and per-section funnel. It does not mention rate limits, empty-state behavior, or what happens when the pixel is off.

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

Conciseness5/5

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

Front-loaded with the resource and time window, then the no-path case, then the with-path case, then the entitlement caveat -- a logical build with no filler sentences. Each clause carries distinct information an agent needs before invoking.

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

Completeness4/5

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

For a read-only reporting tool with no output schema, the description covers the data window, entitlement gate, and both result shapes, which is nearly everything needed. Two small gaps: the trailing 'Free.' fragment is ambiguous about plan eligibility, and nothing addresses the limit parameter's effect on the top-pages result size.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented, including the path/omit semantics that the description largely restates. The description contextualizes what the path parameter unlocks (funnel, click and referrer breakdowns), which is marginally useful, but it never mentions the limit parameter or its default/max, so the baseline 3 applies.

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

Purpose4/5

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

States a specific resource and data source: 'Reader engagement from the Blawgy pixel over the last 28 days,' and unambiguously splits the two modes (top-pages summary vs. single-page profile) with their distinct payloads. An agent can tell what this returns without opening the schema, though it never names or contrasts a sibling such as get_traffic or get_overview, which would fully settle the choice.

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

Usage Guidelines4/5

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

Gives a clear precondition for use -- 'Pro+ (pixel must be on in Settings)' -- and tells the agent which invocation shape to pick based on whether it has a path. It stops short of stating when NOT to reach for this tool or which alternative to prefer for general traffic metrics, so routing vs. siblings remains implicit.

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

get_billingCurrent plan and billing statusA
Read-onlyIdempotent
Inspect

The site's subscription (plan, status, trial, renewal date, cancel-at-period-end, frozen for failed payment) and the plans available to move to. Read only. Hidden for white-label customers, whose partner bills them. Use get_upgrade_link to change plans in the browser.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered; the description's 'Read only' is largely redundant. However, it adds genuinely new behavioral context beyond annotations: the white-label visibility rule and the fact that plan changes must be routed to get_upgrade_link rather than performed here. It stops short of mentioning auth/permission needs or what happens when no subscription exists.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the substantive content (what data is returned) before the caveats and the alternative tool. No filler or restatement of the title.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so by enumerating the fields delivered. Combined with the visibility caveat and the pointer to the mutation tool, an agent has everything needed to call this correctly and interpret its scope.

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

Parameters3/5

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

There is a single required parameter ('site') and schema description coverage is 100%, with the schema already listing the valid site value. The description mentions 'The site's subscription' but adds no format or selection guidance beyond the schema. Baseline 3 is appropriate when the schema carries the parameter burden.

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

Purpose5/5

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

The description names the exact resource (the site's subscription) and enumerates the concrete fields returned — plan, status, trial, renewal date, cancel-at-period-end, failed-payment freeze — plus the available upgrade plans. It also separates itself from the sibling get_upgrade_link by naming it as the tool for changing plans. An agent can tell what this returns without opening the schema.

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

Usage Guidelines5/5

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

It gives an explicit alternative and its trigger ('Use get_upgrade_link to change plans in the browser'), which tells the agent what this tool does NOT do. It also states a when-not condition: the tool is hidden for white-label customers whose partner bills them, so an agent knows results may be absent for those accounts.

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

get_branded_splitBranded vs non-branded searchesA
Read-onlyIdempotent
Inspect

Splits Google Search Console queries into branded (searches that name the business) and non-branded for a date range, with clicks, impressions and the top queries on each side. Non-branded growth is the clearest sign Blawgy content is working. Defaults to the trailing 28 days. Needs Search Console connected. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 10, max 50).
endDateNoRange end (YYYY-MM-DD).
startDateNoRange start (YYYY-MM-DD).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive). The description adds real behavioral value beyond them: the defaults ('trailing 28 days'), the auth precondition ('Needs Search Console connected'), the cost ('Free'), and what is returned (clicks, impressions, top queries).

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

Conciseness4/5

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

Purpose is front-loaded, followed by interpretive context, defaults, and preconditions in a compact block. Every sentence carries information, though the trailing 'Free' fragment is slightly abrupt in structure.

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

Completeness4/5

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

With no output schema, the description steps in to describe the return contents (clicks, impressions, top queries per side) and the default range. Combined with the schema-covered parameters and annotations, an agent has nearly everything needed, with only alternative-tool routing left implicit.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters are already documented. The description reinforces the date-range semantics and default window but adds no syntax or format detail the schema lacks, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Splits Google Search Console queries into branded... and non-branded'), defines branded parenthetically, and names the metric content on each side. An agent can distinguish it from get_traffic, get_seo_snapshot or get_rankings without opening the schema.

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

Usage Guidelines3/5

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

It implies when the tool matters ('Non-branded growth is the clearest sign Blawgy content is working') and gives preconditions (GSC connected, free). However it never names an alternative sibling (e.g., get_traffic, get_overview) or an explicit when-not to use it, so routing still requires inference.

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

get_builder_draftGet a builder draftA
Read-onlyIdempotent
Inspect

Read one Article Builder draft in full: brief, titles, selected title, outline, written article (sections with HTML), keywords and featured image. Use the pieces as arguments to the step tools or pass the draftId to publish_article_from_builder.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
draftIdYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered and the bar is lower. The description adds real value by disclosing the payload shape (HTML article body, selected title, featured image), which substitutes for the absent output schema. It stops short of covering auth, site scoping, or not-found behavior.

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

Conciseness5/5

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

Two sentences, no filler, and the payload enumeration is front-loaded right after the verb. The second sentence immediately converts the payload into actionable next steps.

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

Completeness4/5

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

With no output schema, the enumerated field list is exactly what an agent needs to know what comes back, and annotations cover the read-only profile. Minor gaps remain: no guidance on failure when draftId is invalid, and no mention of the site-scoping requirement beyond the required schema parameter.

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

Parameters3/5

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

Schema coverage is 50%: only 'site' is documented in the schema, and draftId has no description. The description implicitly characterizes draftId as a builder-draft identifier by saying it can be handed to publish_article_from_builder, which is modest added meaning, but it says nothing about the site parameter or ID format.

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

Purpose5/5

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

States a specific verb and resource with scope: 'Read one Article Builder draft in full,' then enumerates exactly what 'full' contains (brief, titles, selected title, outline, written article with HTML, keywords, featured image). This clearly separates it from list_builder_drafts and delete_builder_draft in the sibling set.

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

Usage Guidelines4/5

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

Gives explicit downstream routing: use the returned pieces as arguments to the step tools, or pass the draftId to publish_article_from_builder. That is clear context for why an agent would call this. It does not, however, state how to obtain a draftId (e.g., list_builder_drafts) or what to do if the draft does not exist.

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

get_dutchie_statusDutchie POS connection statusA
Read-onlyIdempotent
Inspect

For dispensaries: whether a Dutchie menu is connected, the connected locations (API keys are never returned, only hasKey), last and next sync and recent sync errors. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description still adds genuine value by disclosing the security-relevant behavior that API keys are never returned, only hasKey, plus the return contents. "Read only" merely restates readOnlyHint, which is why this isn't a 5.

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

Conciseness4/5

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

A single dense, front-loaded sentence with no filler; the trailing "Read only" is the only mildly redundant phrase given the readOnlyHint annotation.

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

Completeness5/5

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

With no output schema, the description carries the burden of describing return content, and it does so completely: connection state, locations, hasKey instead of keys, sync timestamps, and recent errors. An agent knows what it will get and that it is a safe read.

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

Parameters3/5

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

Only one parameter (site) with 100% schema coverage and an enumerated value, so the schema already carries full meaning. The description adds nothing about the site parameter, making the baseline 3 appropriate.

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

Purpose4/5

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

The description names the resource (Dutchie connection status) and enumerates exactly what is returned: connection state, connected locations, last/next sync, and recent sync errors. That content scope implicitly separates it from siblings like connect_dutchie, sync_dutchie, and remove_dutchie_location, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

"For dispensaries" scopes the audience, and a status tool's usage is reasonably inferable (checking connection health before syncing), but there is no explicit when-to-use guidance or routing against connect_dutchie/sync_dutchie.

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

get_image_preview_usageImage preview allowance and sample titlesA
Read-onlyIdempotent
Inspect

How many style previews are left today for this site, plus the next few scheduled article titles a preview can be rendered on. Call before preview_image_style. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so "Read only" is a restatement of structured data rather than added value. The one genuine behavioral detail is the daily scoping implied by "left today" (a quota that resets), but nothing is said about what happens at zero remaining or any rate limits.

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

Conciseness4/5

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

Two short sentences, front-loaded with the return content, then the routing hint. The first sentence is slightly convoluted ("the next few scheduled article titles a preview can be rendered on") and "Read only" is redundant with the annotations, costing a point.

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

Completeness4/5

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

With no output schema, the description correctly carries the burden of explaining the return value, and it does so (count plus sample titles). Only the zero-quota / failure behavior is left unstated for a read-only check the agent is told to call unconditionally before another tool.

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

Parameters3/5

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

Schema description coverage is 100% and the single `site` parameter is fully documented in the schema, including its allowed value. The description's "for this site" merely echoes that, adding no format or constraint detail. Baseline 3 applies when the schema carries the load.

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

Purpose5/5

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

The description states precisely what the tool returns: the remaining daily preview allowance plus the next few scheduled article titles eligible for a preview. That is far more specific than the tool name alone and separates this from the broader get_* listing tools (list_articles, get_overview) an agent might otherwise reach for.

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

Usage Guidelines4/5

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

"Call before preview_image_style" gives an explicit sequencing rule that answers the main when-to-use question. There is no when-not guidance or error-case exclusion (e.g. what to do if the allowance is zero), 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_indexing_statusIndexing statusA
Read-onlyIdempotent
Inspect

Whether search engines can find the site's articles: the sitemap Blawgy found and whether it lists the published posts, Google Search Console sitemap errors, Bing URL submissions, and a list of problems with plain-language fixes. Checked weekly; recheck now with recheck_indexing. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely new context beyond that: the weekly refresh cadence (staleness) and the 'Free' cost signal. However it doesn't describe output shape or size, so it stays at solid-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.

Conciseness4/5

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

One dense, front-loaded sentence listing coverage areas, followed by a short sentence pairing the refresh cadence with the alternative and cost. No filler, though the first sentence runs long as a list.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned categories so an agent knows what to expect. It is largely complete for a simple read tool, leaving only the exact response structure unspecified.

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

Parameters3/5

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

Single parameter with 100% schema description coverage, including the explicit allowed value, so the schema carries the semantics. The description adds nothing about the parameter, which matches the baseline of 3 when the schema is fully documented.

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

Purpose4/5

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

The description enumerates exactly what the tool returns — sitemap found, whether it lists published posts, GSC errors, Bing submissions, and a fix list — which is specific and distinguishable from the sibling recheck_indexing. It reads as a noun phrase without an explicit verb, but the resource and scope are unambiguous.

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

Usage Guidelines4/5

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

It states the data is refreshed weekly and explicitly routes to recheck_indexing for an immediate refresh, giving a clear when-to-use-this vs. that distinction. It does not cover exclusions or prerequisites, but the alternative is named with its triggering condition.

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

get_jobCheck an async jobA
Read-onlyIdempotent
Inspect

Status of background work started by another tool, normalized to queued | running | complete | failed | unknown with a kind-specific detail block. kind: research (keyword research; no id), article (id = article id from write_article_now), ai_scan (no id), rank_scan (no id), update_draft (id = update id), product_sync (no id), post_image (id = post id), plan_topic_add (id = topic label from add_to_plan), location_pages (no job). Poll every 15-30 seconds; most jobs finish within a few minutes. Free.

NameRequiredDescriptionDefault
idNoThe job key for kinds that need one (article id, update id, post id, topic label).
kindYesWhat kind of job to check.
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely non-structured context: the normalized return states, the existence of a kind-specific detail block, polling cadence, and cost ('Free'). It could say more about behavior on a wrong/missing id, which is why it isn't a 5.

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

Conciseness4/5

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

Front-loaded with the core purpose and return normalization before the denser kind-to-id mapping, and the operational notes (cadence, cost) are compact. It is information-dense and readable, though the long parenthetical kind list makes the middle section heavy; still, every clause carries information.

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

Completeness5/5

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

With no output schema, the description correctly carries the return-value burden by naming the normalized statuses and the kind-specific detail block, plus cadence and cost. For a 3-parameter polling tool this covers everything an agent needs to call it correctly and interpret the result.

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

Parameters4/5

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

Schema description coverage is 100% and the enum is already documented, so the baseline would be 3. The description exceeds that by disambiguating the generic 'id' parameter per kind – telling the agent exactly which kinds need no id and what the id means for article, update_draft, post_image, and plan_topic_add. That is real semantic value beyond the schema's generic 'job key' text.

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

Purpose5/5

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

States a precise verb+resource ('Status of background work started by another tool') and goes further by naming the exact normalized state vocabulary (queued | running | complete | failed | unknown). This is unambiguous and distinguishable from sibling read tools like get_research_status or get_product_sync_status, since it positions itself as the generic poller for all async kinds.

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

Usage Guidelines4/5

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

Gives clear operational guidance: poll every 15-30 seconds, most jobs finish within a few minutes, and it maps each kind back to the tool that started it (write_article_now, add_to_plan), which tells the agent when this tool is the right follow-up. It stops short of explicitly naming when NOT to use it versus overlapping siblings, so it doesn't reach a 5.

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

get_keyword_recommendationsSearch Console recommendationsA
Read-onlyIdempotent
Inspect

Open recommendations Blawgy derived from the site's Google Search Console data: queries close to page one, pages losing clicks, cannibalization and similar, each with a suggested action and supporting evidence. Empty unless Search Console is connected. Free. Act on one with add_to_plan (new article) or the updates tools (existing page).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 20, max 50).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it is empty until Search Console is connected, it is free, and each item ships with a suggested action and supporting evidence.

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

Conciseness5/5

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

Front-loaded with what it returns, then prerequisite, cost, and next action. No filler; even the one-word 'Free.' earns its place as decision-relevant information.

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

Completeness4/5

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

No output schema exists, so the description must convey return shape, and it does: recommendation types with a suggested action and supporting evidence. Combined with the connection prerequisite and routing guidance, an agent has nearly everything needed, though ordering and pagination behavior of the list are undocumented.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (site, limit) are already fully documented in the schema with defaults and bounds. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (get/derive recommendations) and resource (Google Search Console recommendations) and enumerates the concrete content types returned: queries close to page one, pages losing clicks, cannibalization. This distinguishes it from raw-data siblings like get_keywords or get_rankings, which return metrics rather than actionable recommendations.

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

Usage Guidelines4/5

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

Explicitly states the prerequisite ('Empty unless Search Console is connected') and routes the agent to next steps: add_to_plan for a new article or the updates tools for an existing page. It stops short of naming the retrieval alternatives (e.g. get_keywords) it should be preferred over, so it is clear context without full 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_keywordsKeyword research resultsA
Read-onlyIdempotent
Inspect

The keyword clusters (topics) Blawgy researched for this site: each topic with its pillar keyword, member keywords (volume, difficulty 0-100, intent), an addableCount of articles that could still be written, and covered/excluded flags (a covered keyword carries coveredBy, the page or post that already covers it, when existing-content checks are on). Keywords carry productFit (0-100) when judged; autopilot and topic adds only use productFit >= 60 (lowFit: true marks a topic with none). catchAll: true marks the "More Opportunities" pool of keywords that fit no topic. Filter by intent, maxKd, or a search string; sort by score (default), volume or kd; page with limit/offset over topics. Free. If hasResults is false and processing is true, research is running (get_research_status); if neither, call run_keyword_research. To schedule a topic or keyword into the content plan use add_to_plan.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
sortNoOrder keywords and topics (default score).
limitNoMax items to return (default 25, max 100).
maxKdNoOnly keywords with difficulty at or below this.
intentNoOnly keywords with this search intent.
offsetNoSkip this many items (for paging).
searchNoSubstring match on topic label or keyword.
keywordLimitNoKeywords returned per topic (default 10, max 25).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavior beyond that: the productFit >= 60 selection rule for autopilot/topic adds, the lowFit and catchAll pool semantics, covered/excluded flag meaning, and that the call is free. This is substantive context not derivable from structured fields.

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

Conciseness3/5

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

It is front-loaded with the core purpose, but the body is a single dense paragraph of nested parentheticals spanning ~180 words, which is hard to scan. Most clauses carry information, but the lack of any structure or line breaks hurts readability.

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

Completeness5/5

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

With no output schema, the description takes on the full burden of describing return values and does so thoroughly: topic structure, pillar/member keywords, volume/difficulty/intent, addableCount, coveredBy, productFit, and the catchAll pool. Nothing an agent needs to interpret the response is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema omits: limit/offset are said to page 'over topics' (the schema only says 'for paging'), and it summarizes the filter/sort surface (intent, maxKd, search; score/volume/kd). keywordLimit is left to the schema, keeping it from a 5.

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

Purpose5/5

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

The description opens with a specific verb+resource+scope: 'The keyword clusters (topics) Blawgy researched for this site.' It immediately distinguishes itself from siblings like get_keyword_recommendations and list_my_keywords by describing the returned structure (pillar keyword, member keywords, addableCount, covered/excluded flags).

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

Usage Guidelines5/5

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

It gives explicit conditional routing: 'If hasResults is false and processing is true, research is running (get_research_status); if neither, call run_keyword_research,' and names add_to_plan for the scheduling use case. This is exactly the when/when-not/alternatives guidance the dimension asks for.

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

get_nearby_townsFind nearby towns to targetA
Read-onlyIdempotent
Inspect

Towns around a city (or coordinates) within a radius, from OpenStreetMap place data (no search-volume lookup), as candidate targets for location pages. Towns that already have a page on the site are excluded unless excludeExisting is false. Read only; makes no changes.

NameRequiredDescriptionDefault
latNo
lngNo
cityNo
siteYesThe site to act on. One of: fencestainingdenver.com.
stateNo
baseKeywordNo
radiusMilesNo
excludeExistingNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description still adds genuine behavior beyond them by disclosing the data source (OpenStreetMap, no search-volume lookup) and the default exclusion of towns that already have a page unless excludeExisting is false. It stops short of describing result limits, pagination or output shape.

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

Conciseness4/5

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

Three compact sentences, front-loaded with what the tool returns and immediately followed by the sourcing caveat and the exclusion rule. Every sentence contributes; it could be slightly tighter but there is no filler.

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

Completeness3/5

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

With eight parameters, 13% schema coverage and no output schema, the description should do more heavy lifting than it does. It covers the geographic inputs and the exclusion rule adequately, but leaves the required site identifier and the meaning of baseKeyword unexplained, which an agent needs in order to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is only 13%, so the description carries most of the param burden and partially delivers: it explains the city/coordinates alternative, the radius concept, and excludeExisting's default behavior. It is silent on the required 'site' parameter, 'state', and especially 'baseKeyword', so three of eight parameters remain opaque.

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

Purpose4/5

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

Names a specific verb and resource: towns near a city or coordinates within a radius, sourced from OpenStreetMap place data. It also distinguishes itself from keyword-research siblings by explicitly stating 'no search-volume lookup' and frames the output as 'candidate targets for location pages,' so the intent is clear even without naming an alternative tool directly.

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

Usage Guidelines3/5

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

The phrase 'candidate targets for location pages' implies the workflow it feeds, and the explainer about existing pages being excluded sets a real precondition. However, it never states when to prefer this over competitors like detect_business_location or generate_location_page_drafts, so usage is inferred rather than guided.

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

get_notification_prefsGet email notification preferencesA
Read-onlyIdempotent
Inspect

Which Blawgy emails the signed-in account receives: postPublished, draftReady, publishingProblems, researchReady, monthlyReport, indexingProblems, tips. Account-wide, not per site. Read only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Read only' is partly redundant. The description does add value beyond annotations by enumerating the seven returned preference keys (in lieu of an output schema) and by stating the account-wide rather than per-site scope.

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

Conciseness4/5

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

Compact and front-loaded, with the scope and read-only constraint stated before the key list. It is telegraphic rather than a full sentence, but every element earns its place.

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

Completeness4/5

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

With no output schema, the description usefully compensates by naming the seven preference fields. It stops short of saying the values are booleans or what the response envelope looks like, but for a zero-parameter getter this is close to complete.

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

Parameters4/5

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

Zero parameters, so the schema baseline is 4; there is nothing to disambiguate. The enumerated key list adds useful context about what the object contains, though it describes output rather than input.

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

Purpose4/5

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

States the resource (email notification preferences for the signed-in account) and enumerates the exact set of preference keys returned, which is concrete and specific. The nearest sibling, update_notification_prefs, is implicitly distinguished by 'Read only,' though it is never named.

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

Usage Guidelines3/5

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

'Read only' and 'Account-wide, not per site' imply this is the inspection counterpart to update_notification_prefs, but the description never states when to call this versus that mutation tool or what prerequisite exists (signed-in account assumed).

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

get_overviewSite overviewA
Read-onlyIdempotent
Inspect

The Blawgy Overview page for one site in a single call: publishing status (paused, posts per week, next post), headline metrics for the trailing 90 days versus the prior 90 (clicks, impressions, top-10 keywords, AI mentions, posts published), recent wins, what publishes next, and to-dos. Call this first when asked "how is the site doing". Served from an hourly cache (free). refresh=true rebuilds it (slow, up to a minute, and the rankings block can spend DataForSEO when Search Console is not connected); only write credentials may refresh, read credentials always get the cache. Set includeChart=true for the daily traffic, ranking and AI-mention series. For a custom date range use get_traffic.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
refreshNoRebuild instead of serving the hourly cache (slow; write credentials only, ignored otherwise).
includeChartNoInclude the chart series (daily traffic, weekly rankings, AI mentions).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds real operational context: hourly cache serving, refresh cost (slow, up to a minute), a potential third-party DataForSEO spend when Search Console is unconnected, and the write-vs-read credential gate on refresh. That is 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.

Conciseness4/5

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

Long but front-loaded: purpose first, then metrics inventory, then the 'call this first' guidance, then caching/refresh caveats, then the sibling redirect. Every clause carries information, though the metric enumeration is dense enough that a shorter summary would scan faster.

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

Completeness5/5

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

No output schema exists, so the description must describe returns, and it does so by listing the exact blocks the overview contains and what includeChart adds. Combined with caching, cost, and credential notes, an agent has everything needed to call and interpret this tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description nonetheless adds meaning the schema only hints at, namely that refresh is ignored unless the caller has write credentials and that includeChart returns daily traffic, ranking and AI-mention series specifically. These are consequence-level details beyond the one-line schema descriptions.

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

Purpose5/5

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

States a specific verb+resource ('The Blawgy Overview page for one site in a single call') and enumerates the payload (publishing status, headline metrics for trailing 90 days vs prior 90, recent wins, next publish, to-dos). This is unmistakably distinct from siblings like get_traffic or get_seo_snapshot.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('Call this first when asked "how is the site doing"') and an explicit alternative plus condition ('For a custom date range use get_traffic'). It also states the credential prerequisite for refresh, so the agent knows when the call will silently serve cache instead.

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

get_photo_candidatesProducts that can be added to the photo bankB
Read-onlyIdempotent
Inspect

The site's own catalogue products that have an image and are not yet in the bank, for add_photo_from_product. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
offsetNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description's "Read only" merely restates one of them. It does add genuine behavioral information about result scope (only products with an image and not yet banked), but says nothing about pagination or result volume, which matters for a list endpoint.

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

Conciseness5/5

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

A single front-loaded sentence that packs the resource, the filter predicate, the downstream consumer, and the safety profile with no filler. Nothing is wasted and nothing important is buried.

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

Completeness3/5

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

For a small read tool whose annotations cover safety and which needs no output schema explanation, the description conveys what the returned rows are. The gap is pagination semantics for limit/offset, which the description omits entirely and the schema only constrains numerically.

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

Parameters2/5

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

Schema coverage is only 33%: site is documented but limit and offset carry no descriptions. The description never mentions paging, so it fails to compensate for the coverage gap on a third of the parameters, and the agent gets no guidance on how to page through candidates.

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

Purpose4/5

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

States a specific verb and resource and defines the candidate set precisely: the site's own catalogue products that already have an image and are not yet in the bank. That filter definition distinguishes it from list_products and get_product. The only wobble is that it routes to add_photo_from_product, which does not appear in the sibling tool list.

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

Usage Guidelines3/5

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

"for add_photo_from_product" implies the workflow context, so the agent can infer it is a pre-step for adding a photo from a catalogue product. However, there is no explicit when-to-use, when-not-to-use, or comparison against list_products/list_photos/get_product, leaving the routing to inference.

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

get_pixel_snippetEngagement pixel status and install snippetA
Read-onlyIdempotent
Inspect

Whether the Blawgy engagement pixel is on, the script snippet to install, how it is installed for this platform and when it last received an event. Pro+ only. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=true, idempotent, non-destructive), so the bar is lower, and the description adds genuine context beyond them: a Pro+ entitlement gate and a summary of the returned payload (status, snippet, install method, last-event timestamp). 'Read only' is redundant with the annotations, but the entitlement and return-shape disclosure earn credit.

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

Conciseness4/5

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

The single enumerative sentence front-loads the purpose and is followed by two terse qualifiers ('Pro+ only. Read only.'). Nothing is padded, though the phrase 'how it is installed for this platform' is slightly opaque and could be tightened.

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

Completeness4/5

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

With no output schema, the description compensates by listing the four things returned, which is what an agent needs to decide relevance. The main gap is the absence of routing guidance relative to set_pixel_enabled, but for a single-parameter read getter this is close to sufficient.

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

Parameters3/5

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

Only one parameter ('site') exists and schema description coverage is 100%, including an allowed-value hint, so the schema does the heavy lifting. The description adds no meaning about the site argument beyond what the schema states, making the baseline 3 correct.

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

Purpose4/5

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

The description names a specific resource (the Blawgy engagement pixel) and enumerates exactly what is retrieved: on/off status, install snippet, platform install method, and last event time. That is far more precise than a generic 'get pixel' phrasing, though it never explicitly names the sibling it contrasts with (set_pixel_enabled).

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

Usage Guidelines3/5

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

It supplies a real prerequisite, 'Pro+ only', which tells the agent a gated entitlement is required before calling. However, it gives no explicit when-to-use guidance or direction to alternatives such as set_pixel_enabled for toggling the pixel; the read-only framing only implies the split.

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

get_planGet content planA
Read-onlyIdempotent
Inspect

Read the site's content plan: scheduled and written articles (entries), suggested topics, plan settings (posts per week, horizon, auto-refill, keyword mix, paused), topic runway and trial limits. Call this first before changing the plan. Filter entries with status and page with limit/offset. Entry ids are the article ids used by every other plan and article tool. When the site has existing pages (see list_existing_pages), shadowExistingContent reports which plan ideas from the last plan run look like they overlap one of those pages. When existing-content checks are on for the site (existingContent.enabled), the plan never schedules an idea one of the site's pages or posts already covers; skippedCovered lists the ideas the last run skipped, each with coveredBy (the page or post, its URL, title and Google position) and whether a refresh of that page was suggested.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
offsetNo
statusNoOnly entries with this blogStatus
overdueOnlyNoOnly unwritten entries dated before the current week

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare this a safe, idempotent, closed-world read, and the description goes well beyond that: entry ids are the article ids used by other plan/article tools, shadowExistingContent behavior depends on list_existing_pages, and when existingContent.enabled is set the plan never schedules covered ideas, with skippedCovered exposing coveredBy plus refresh suggestions. This is exactly the extra causal/semantic context annotations cannot provide.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, followed by filtering mechanics and then the more intricate existing-content behavior. It is dense and long, but nearly every sentence carries real semantic payload about the plan's return contents; the main cost is readability of the unbroken block.

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

Completeness4/5

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

With no output schema and a five-parameter, domain-heavy read, the description carries most of the burden and does well, explaining what the payload contains and how skippedCovered/coveredBy are shaped. It leaves minor gaps: overdueOnly's meaning and limit/offset defaults are not restated, and site is undocumented beyond its single-value enum.

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

Parameters3/5

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

Schema description coverage is 60%: status and overdueOnly are documented in the schema while limit/offset are not, and the description fills that gap ('page with limit/offset'). However the schema already defines status's enum values, and the description does not explain the site parameter or defaults/ranges, so it adds only partial value over the structured fields. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Read the site's content plan') and enumerates exactly what the plan contains: entries, suggested topics, settings, runway, trial limits. It also cross-references list_existing_pages, which helps an agent separate this tool from the many sibling read tools.

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

Usage Guidelines4/5

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

'Call this first before changing the plan' gives a clear ordering rule and implies this is the prerequisite read before mutating tools like update_plan_entry or add_to_plan. It does not, however, name which sibling to use instead for adjacent needs (e.g., list_articles for raw articles), so the guidance is clear but not exhaustive.

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

get_platform_optionsOptions the connected CMS offersA
Read-onlyIdempotent
Inspect

For the connected platform: Shopify blogs (to pick categoryId), Wix members (memberId), Framer collections (framerCollectionId) or Webflow fields (fields). Uses the saved credentials server side. Save the choice with update_settings. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
platformNoDefaults to the connected platform.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the description's 'Read only' adds nothing and the safety profile is fully covered elsewhere. It does add one useful behavioral fact not in the annotations: credentials are applied server-side, so the caller needn't supply auth. That single addition, plus the platform default, justifies a middling score rather than a low one.

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

Conciseness4/5

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

The content is front-loaded (platform list first) and the whole definition is three short sentences with no padding. The trailing 'Read only' is redundant with readOnlyHint and 'Uses the saved credentials server side' is slightly circuitous, but nothing is verbose or buried.

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

Completeness3/5

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

With only two parameters, full schema coverage and read-only annotations, most of what an agent needs is present, and no output schema exists so return-shape explanation is not strictly required. However, for a 'get options' tool the shape of the response (list of option objects? ID/label pairs?) is the single most important thing an agent must anticipate, and the description only indirectly gestures at it via field names. Adequate but with a visible gap.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description goes beyond the schema by mapping each platform enum value to the specific downstream ID field it yields (categoryId, memberId, framerCollectionId, fields) — information the schema does not contain. This materially helps the agent decide which options to request. It says nothing about the 'site' parameter, but that is fully documented in the schema.

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

Purpose4/5

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

The title plus description make clear this returns platform-specific selectable options (Shopify blogs, Wix members, Framer collections, Webflow fields) from the connected CMS. It names the concrete resource categories rather than restating the tool name, so an agent can distinguish it from generic getters like get_settings or list_page_templates. It never states the return verb explicitly ('returns a list of...'), which keeps it out of the 5 band.

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

Usage Guidelines4/5

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

It tells the agent the downstream purpose of each option set — 'to pick categoryId', 'memberId', 'framerCollectionId', 'fields' — and names the follow-up action 'Save the choice with update_settings'. That is genuine when-to-use context plus a routing hint. It lacks explicit exclusions or a statement of when not to call 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.

get_post_imageGet a post's image panelA
Read-onlyIdempotent
Inspect

Current featured image, in-article images, generated/uploaded candidates, how many image changes remain for this post (Pro and above) and whether a generation is still running. Poll this after generate_post_image until generating is false, then call apply_post_image with a candidate id. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
postIdYes

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful behavioral context beyond them: image-change limits are tied to Pro and above, and the response indicates whether a generation is still running, which drives polling behavior.

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

Conciseness5/5

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

The description is three dense sentences with no wasted language. It front-loads what the tool returns, then gives the polling workflow and follow-up action.

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

Completeness4/5

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

With no output schema, the description carries most of the burden and does well by enumerating the returned image information and generation state. It could more fully specify the response shape or candidate id format, but it provides enough to call the tool correctly.

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

Parameters3/5

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

Schema coverage is 50%: `site` is documented in the schema, while `postId` has no description there. The description does not add meaning to either parameter, though both are simple required identifiers and the tool's context makes `postId` reasonably clear.

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

Purpose5/5

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

The description uses a specific retrieval verb and names the exact resource: a post's image panel, including featured image, in-article images, candidates, remaining changes, and generation status. It is clearly distinguishable from write-side siblings such as apply_post_image, upload_post_image, and revert_post_image.

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

Usage Guidelines5/5

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

It gives explicit workflow guidance: poll after generate_post_image until `generating` is false, then call apply_post_image with a candidate id. This tells the agent both when to call this tool and what to do next, with named alternatives.

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

get_productGet one productB
Read-onlyIdempotent
Inspect

Full details of one product, including its complete description and every image. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
productIdYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the 'Read only' sentence is largely redundant. The description does add useful return-content context (full description, all images), which matters given there is no output schema.

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

Conciseness4/5

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

Two short, front-loaded sentences with no wasted filler. The only mild redundancy is 'Read only,' which restates the readOnlyHint annotation.

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

Completeness3/5

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

For a simple read tool whose annotations cover safety, this is adequate: it explains what is returned. However it omits how to obtain productId and gives no guidance versus the many sibling product tools, leaving an agent to infer the workflow.

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

Parameters2/5

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

Schema coverage is only 50%: site is documented in the schema but productId has no description anywhere. The phrase 'one product' implies a product identifier is needed but adds no format, sourcing, or constraint details to compensate for the gap.

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

Purpose4/5

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

States a specific verb (full details of) and resource (one product), and clarifies the returned content: complete description and every image. This implicitly distinguishes it from list_products, but it never names the sibling explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance and no alternatives named. It does not tell the agent how to obtain a valid productId or when to prefer get_product over list_products or get_product_sync_status.

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

get_product_sync_statusProduct sync settings and statusA
Read-onlyIdempotent
Inspect

Whether automatic Shopify product sync is on, how often it runs, when it last ran and the product count. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already grant readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered; the description's 'Read only' plus the enumeration of returned fields (enabled state, cadence, last-run, product count) adds return-value context the annotations do not provide, which is valuable given no output schema exists.

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

Conciseness5/5

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

One sentence, zero filler, front-loaded with the primary subject and closing with the read-only qualifier. Every clause earns its place.

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

Completeness4/5

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

For a simple read-only status tool with one documented param and no output schema, the description adequately conveys what will be returned. The absence of any routing guidance versus mutation siblings is the main residual gap.

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

Parameters3/5

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

Schema coverage is 100% and the single 'site' parameter is fully documented in the schema, so the description adds no parameter detail beyond it. Baseline 3 is appropriate when the schema does all the param work.

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

Purpose4/5

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

The description names a specific resource (Shopify product sync status) and enumerates exactly what is reported: on/off, run frequency, last run time, and product count. It is distinguishable from write siblings like sync_products and update_product_sync_settings, though it never names them explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no distinction drawn against sibling tools such as sync_products (which triggers a run) or update_product_sync_settings (which mutates). The agent must infer the read-only framing on its own, which is the only hint at appropriate usage.

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

get_rankingsKeyword rankingsA
Read-onlyIdempotent
Inspect

What the site currently ranks for, with position and movement. Source "gsc" (default) reads Search Console (free, exact, positions 1-50, movement vs the prior 4-week average; empty when Search Console is not connected); "dfs" reads a DataForSEO estimate (cached 7 days per site, spends a small amount when the cache is cold); "auto" prefers Search Console and falls back to DataForSEO. Filter branded=false to see only non-branded keywords. Available on any plan. To run a full SEO scan with difficulty scores and Lighthouse use run_rank_scan.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 25, max 100).
offsetNoSkip this many items (for paging).
sourceNoData source (default gsc; dfs and auto can spend DataForSEO).
brandedNotrue = only branded keywords, false = only non-branded, omit = all.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: gsc returns empty when Search Console is not connected, dfs is cached 7 days per site and spends money on a cold cache, auto falls back automatically, and the tool is available on any plan. Those are the operational traits an agent needs before spending credits.

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

Conciseness4/5

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

The key fact (what is ranked, with movement) is front-loaded, and the per-source semantics follow in a tight sequence. It is dense but every clause adds decision-relevant information; only the parenthetical nesting of source details makes it slightly harder to scan.

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

Completeness4/5

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

For a read tool with no output schema, the description covers sourcing, cost, availability, and filtering thoroughly enough to call it correctly. It only lightly characterizes the return shape ('position and movement') and never mentions paging behavior, which would be the remaining gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds behavioral meaning the schema lacks: the enum values' cost and freshness semantics, the fallback behavior of auto, and the branded=false filtering shortcut. It does not explain the limit/offset paging interaction, which the schema already covers.

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

Purpose5/5

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

States a specific verb+resource (what the site currently ranks for) and immediately scopes it with the returned fields (position and movement). It also names the sibling run_rank_scan as the different, heavier operation, so an agent can separate the two without reading either schema.

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

Usage Guidelines5/5

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

Explicitly describes when each source mode applies (gsc = free/exact, dfs = paid/cached estimate, auto = prefer GSC with fallback) and gives a concrete filtering rule (branded=false for non-branded only). It also routes the agent away when a full scan with difficulty scores and Lighthouse is wanted, naming run_rank_scan.

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

get_refresh_briefGet a page refresh briefA
Read-onlyIdempotent
Inspect

The update brief for a refresh of a page Blawgy did not write (refreshOwnerKind "page" in get_plan suggestions): a summary, the steps to change on the page, the searches to work in (keywordsToAdd) and what to keep. It is written only from the page itself and its Search Console searches, so apply it on the page in the site's own CMS. Works once the refresh is accepted (accept_plan_suggestion) or when it fills an open slot; returns not_accepted for a refresh that is only suggested, and blawgy_post for a page Blawgy wrote (that refresh is a smart update, see list_update_opportunities). Call mark_refresh_done after the page is updated.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
refreshIdYesThe refresh row id (suggestionId / refreshId in get_plan)

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false, idempotentHint=true), yet the description adds meaningful behavior beyond them: the brief is derived only from the page and its Search Console data, it must be applied in the site's own CMS, and it enumerates the sentinel error values not_accepted and blawgy_post. That is real context about state dependency and output shape, not restatement of annotations.

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

Conciseness4/5

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

Effectively three sentences, each carrying distinct load: what the brief contains, when it is available, and what to do afterwards. The first sentence is heavily nested with parentheticals and runs long, but the key precondition and postcondition are front-loaded rather than buried.

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

Completeness5/5

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

There is no output schema, so the description carries the full burden of describing the return value and it does: the brief's four components plus the two inline sentinel results. With preconditions, CMS application context, and the mark_refresh_done follow-up all covered, nothing material is missing for a two-parameter read tool.

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

Parameters4/5

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

Schema coverage is 100% and both parameters are documented, so the baseline is 3. The description goes further by tying refreshId back to its origin (suggestionId / refreshId in get_plan) and framing the page-type precondition, which helps the agent locate the correct id. It does not document the site parameter's format, so it stops short of a 5.

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

Purpose5/5

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

States a specific artifact (an update brief) for a specific resource (a page refresh Blawgy did not write) and enumerates its contents: summary, page steps, keywordsToAdd, and what to keep. It also scopes the case with refreshOwnerKind "page" and explicitly separates itself from the Blawgy-authored smart-update path, so an agent can distinguish it from get_research_brief and list_update_opportunities without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit preconditions (works once the refresh is accepted via accept_plan_suggestion, or when it fills an open slot) and explicit failure/alternative routing (returns not_accepted for a merely suggested refresh; blawgy_post for a Blawgy-authored page, pointing to list_update_opportunities). It also names the required follow-up tool, mark_refresh_done, which is exactly the when/what-next 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.

get_research_briefResearch briefA
Read-onlyIdempotent
Inspect

The research brief that steers keyword research and topic selection for the site: business summary, audience, geography, topics to explore (seedTopics), themes to chase more of (chaseThemes), the "Never write about" list (avoidThemes, a hard filter on everything Blawgy proposes), competitors mined, product core and buyer needs. Each list entry says who added it. Null when no brief exists yet (regenerate_research_brief creates one). Free. Edit with update_research_brief.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses that avoidThemes is a hard filter on everything Blawgy proposes, that each list entry records who added it, and that the result is null before a brief exists. With no output schema, this return-shape and null-state context is genuinely additive.

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

Conciseness4/5

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

The core resource description is front-loaded and dense with no filler, and the alternative-tool pointers close it out. The long enumerated middle sentence is information-rich but slightly heavy to scan.

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

Completeness5/5

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

For a single-parameter read tool with no output schema, the description fully covers what is returned, the null state, how to create or edit the brief, and that the call is free. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%, so the schema already documents 'site' fully. The description adds nothing about the parameter itself, so the baseline 3 applies.

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

Purpose5/5

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

States a specific resource (the research brief) and enumerates exactly what it contains (business summary, audience, seedTopics, chaseThemes, avoidThemes, competitors, product core), which lets an agent distinguish it from get_refresh_brief, get_research_run, and get_research_status without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent to alternatives: 'Null when no brief exists yet (regenerate_research_brief creates one)' and 'Edit with update_research_brief.' It also flags cost ('Free.'), so the when-to-use and when-to-use-something-else decisions are both covered.

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

get_research_runOne research runA
Read-onlyIdempotent
Inspect

The topics and keywords of one past keyword research run (from list_research_runs), in the same shape as get_keywords. Past runs are read-only records; the covered/excluded flags still describe the site today. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 25, max 100).
runIdYesRun id from list_research_runs.
offsetNoSkip this many items (for paging).
keywordLimitNoKeywords returned per topic (default 10).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the bar is lower; the description still adds real value by explaining that past runs are read-only records, that covered/excluded flags describe the site today rather than at run time, and that the call is free. It does not mention paging behavior when a run has more topics than one page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero padding, and the core statement of what is returned is front-loaded ahead of the supporting notes. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully delegates return shape to get_keywords and clarifies snapshot-vs-current semantics of the flags, which an agent would otherwise get wrong. It stops short of explaining how paging interacts with topics versus keywords, the one remaining gap for a 5-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so site, runId, limit, offset and keywordLimit are all documented in the schema itself. The description only restates the runId provenance that the schema already carries and says nothing about the paging or per-topic keyword parameters, so baseline 3 is right.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (retrieves the topics and keywords of one past research run) and distinguishes itself from both siblings it touches: list_research_runs as the source of runId and get_keywords as the shape it mirrors. An agent can tell exactly what this returns without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(from list_research_runs)' establishes the prerequisite flow, and 'in the same shape as get_keywords' routes agents that already understand that tool's output. No explicit when-not or exclusion is given, 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.

get_research_statusKeyword research statusA
Read-onlyIdempotent
Inspect

Whether keyword research is running, finished or missing for the site: processing flag, when the run started, the quick and deep pass states, and when the next run is allowed. Poll this after run_keyword_research; when processing is false and deep.status is "complete", call get_keywords. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds cost ('Free.') and a state machine the agent must interpret (quick vs. deep pass states) that no annotation conveys. It stops short of describing response shape or whether a 'missing' state is recoverable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the returned fields and followed by the operational sequence; the trailing 'Free.' is terse and useful. The first sentence is a comma-heavy list that reads as a run-on but carries no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must carry return semantics and it does: it names the flag, timestamps, sub-pass states, and the gate for the next run, plus the follow-up call. Nothing an agent needs to poll and branch correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'site' parameter is documented in the schema with its allowed value. The description only echoes 'for the site' without adding format or constraint detail, so the baseline 3 for schema-driven coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('keyword research status') and enumerates exactly what it reports: processing flag, start time, quick/deep pass states, and next-run eligibility. An agent can distinguish this from data-returning siblings like get_research_run or get_keywords without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit sequencing is given: 'Poll this after run_keyword_research' and a machine-checkable transition condition ('when processing is false and deep.status is "complete", call get_keywords'). That is strong when-to-use guidance, but it does not say when to prefer this over get_research_run or list_research_runs, which are the closest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seo_snapshotSEO scan results (Pro+)A
Read-onlyIdempotent
Inspect

The latest SEO Analysis scan for the site: domain metrics (keywords ranked, position buckets, estimated traffic), Lighthouse scores, ranked keywords with difficulty, keyword opportunities and monthly history. Pro+ only. Free to read. Returns null snapshot when the site has never been scanned; call run_rank_scan to produce one (24h cooldown per country). Pass market (country code) to read one country of a multi-country scan.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
marketNoCountry code (e.g. US, GB) when several were scanned.
keywordLimitNoMax items to return (default 25, max 100).
opportunityLimitNoMax items to return (default 25, max 50).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive semantics, but the description adds genuinely new behavior: the Pro+ tier gate, that reads are free, the null-snapshot case for never-scanned sites, and the multi-country market scoping. The cooldown note pertains to run_rank_scan rather than this tool, which is a minor blurring.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense but efficient paragraph that front-loads what the tool returns before the constraints and parameters. No filler sentences, though the run-on structure and the trailing cooldown detail for a sibling tool slightly dilute focus.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately enumerates returned data (domain metrics, Lighthouse scores, keywords, opportunities, history) and discloses the null-return case, so an agent knows what to expect. The missing link is explicit routing against get_rankings/get_traffic, which are present as siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, establishing a baseline of 3. The description only elaborates on market (reading one country of a multi-country scan), which largely restates the schema's 'when several were scanned', and says nothing about keywordLimit or opportunityLimit beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource (get the latest SEO Analysis scan) and enumerates its contents: domain metrics, Lighthouse scores, ranked keywords, opportunities, and monthly history. It does not, however, differentiate itself from lookalike siblings such as get_rankings or get_traffic, which could confuse selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides real usage context: Pro+ only, free to read, returns a null snapshot when never scanned, and directs the agent to run_rank_scan to produce one (with a 24h per-country cooldown). It does not state when to prefer this over adjacent reporting tools like get_rankings or get_traffic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_settingsGet all site settingsA
Read-onlyIdempotent
Inspect

Every Settings tab in one read: business profile, keyword counts, article options, image style, which CMS is connected (never its credentials), Google and Bing connection state, indexing and plan status. Read only. Change values with update_settings; connect a CMS with connect_platform.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds real behavioral value by disclosing a data-scoping guarantee: the CMS connection is returned but 'never its credentials.' It does not discuss pagination or freshness, but those are minor for a single-site settings read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded with the payload: the first packs the full content inventory into one scannable clause list, the second handles routing. No filler, no restatement of the tool name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned settings categories, and annotations cover the safety profile. An agent has enough to select and invoke it correctly without opening anything else.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single 'site' parameter, so the schema fully documents the input; the description adds nothing about parameter format or allowed values. Per the high-coverage baseline, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (site settings) and enumerates the exact content domains returned: business profile, keyword counts, article options, image style, CMS connection, Google/Bing state, indexing and plan status. This distinguishes it from narrow siblings like get_billing, get_indexing_status, and get_notification_prefs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to alternatives with conditions attached: 'Change values with update_settings; connect a CMS with connect_platform.' It also marks the read-only nature, so an agent knows not to attempt mutation here. Nothing about when to prefer this over its siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_site_guardrailsGuardrails applied to this siteA
Read-onlyIdempotent
Inspect

The content guardrails (writing rules) attached to this site, including any a white-label partner applies account-wide. Read only. Manage the library with list_guardrails / create_guardrail.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so 'Read only' is redundant. The description adds genuine behavioral context by noting that the result may include account-wide guardrails applied by a white-label partner, meaning the returned set isn't strictly site-owned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the resource definition is front-loaded and the routing hint follows. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool whose annotations already declare the safety profile, this is nearly complete. The only modest gap is that no output schema exists and the description doesn't describe the shape of the returned guardrail entries, though it does hint at their scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required 'site' parameter with 100% schema description coverage (including the allowed value), so the schema carries the full burden. The description adds no syntax or format 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (content guardrails/writing rules attached to this site) and scope, and clarifies that account-wide partner-applied rules are included. An agent can distinguish this from list_guardrails (the library) without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes library-management tasks to list_guardrails / create_guardrail, which is clear when-to-use guidance. It doesn't address the sibling update_site_guardrails or state exclusions for this read, so it falls just short of a full when/when-not treatment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trafficSearch traffic (Google Search Console)A
Read-onlyIdempotent
Inspect

Clicks, impressions, CTR and average position from Google Search Console for a date range, compared with the same-length prior period, plus the top pages and top queries. Defaults to the trailing 28 days. Requires the site to be connected to Search Console (if not, the error says so; the human connects it on the Reports page). Free. Set includeDaily=true for the day-by-day series. For branded vs non-branded use get_branded_split; for keyword positions use get_rankings.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 10, max 100).
endDateNoRange end (YYYY-MM-DD).
startDateNoRange start (YYYY-MM-DD).
includeDailyNoInclude one row per day for the current period.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description correctly focuses on extra context: the prerequisite that the site be connected to Search Console, that the failure mode surfaces in the error message and is resolved by a human on the Reports page, and that the tool is free. It stops short of describing how the limit parameter applies across the summary vs. the top-pages/top-queries lists, which is the remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence carries information and the metrics/scoping come first, followed by defaults, prerequisites, and sibling routing. The opening sentence is long and packs four metrics plus comparison plus two aggregate lists, which slightly blunts front-loading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the burden of explaining the return payload (metrics, prior-period comparison, top pages, top queries) and it does so. Combined with the connection prerequisite and the sibling routing, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning on top: the date defaults (trailing 28 days) and the effect of includeDaily=true (day-by-day rows). It does not add anything for site or limit beyond the schema, so it does not reach the top of the scale.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource (Google Search Console clicks, impressions, CTR, average position plus top pages and top queries) over an explicit date range with prior-period comparison. It distinguishes itself from siblings by naming get_branded_split and get_rankings as the alternatives for those specific needs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the default window (trailing 28 days), the opt-in flag for a daily series, and explicitly routes two adjacent use cases to their dedicated siblings. When-to-use and when-to-use-something-else are both covered without inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_updates_overviewUpdates overviewA
Read-onlyIdempotent
Inspect

The Updates overview for a site, the same summary the Overview tab shows. autopilot: on, source (explicit, default, draft_mode, kill_switch), lastCheckAt and nextCheckAt of the weekly run, usedThisWeek against weeklyCap (3 plus 1 per 50 indexed posts, at most 15), and a platformNote when the platform cannot take automatic updates. results: counts of improving, holding, watching, reverted and partly reverted updates, nextVerdictAt, searchesMovedUp (position before and now, up to 5) and clicks on updated pages compared with the site's other pages. pages: every published post from the last weekly check in exactly one bucket (needsChange, watching, tooNew, notIndexed, doingWell, notEnoughData, holding), and leftAlone (how many candidates the last check skipped and why: branded, wrongFit, otherPageOwns, top3, notIndexed, indexUnknown). upNext: the next 3 pages in the queue and why. Read only. A site without Pro+ (or grandfathered access) returns locked: true. For individual rows use list_update_opportunities.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only annotations, the description discloses rich behavior: autopilot state, weekly cap calculation, platformNote, locked access for non-Pro+ sites, and the exact bucketing of pages. This gives an agent substantial operational context that the annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, and the field breakdown is organized into labeled sections (autopilot, results, pages, upNext). It is dense and lengthy, but the detail is justified because there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully documented parameter, complete annotations, and no output schema, the description does the necessary work by explaining the returned sections, access behavior, and the locked condition. Nothing essential for correct invocation or interpretation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and schema description coverage is 100%, so the schema already fully documents the site parameter. The description does not add syntax or selection guidance beyond saying the tool is 'for a site'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource ('Updates overview for a site') and clarifies it matches the Overview tab summary. It also distinguishes this tool from the sibling list_update_opportunities for individual rows, so an agent can tell what it returns and when it is the right overview tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes agents to list_update_opportunities for individual rows and notes that sites without Pro+ return locked=true. It does not explicitly compare against get_overview, but the usage context is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_webhook_historyWebhook delivery historyA
Read-onlyIdempotent
Inspect

Recent deliveries for one webhook (event, status, attempts, response code, when). Failed rows can be retried with retry_webhook_delivery. Read only, paginated.

NameRequiredDescriptionDefault
pageNo
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
webhookIdYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so 'Read only' is largely redundant, but the description adds genuinely new behavior: results are 'recent' and paginated, which the annotations do not convey. It still doesn't state a default page size or how far back 'recent' reaches.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences with no filler; scope, follow-up action and pagination status are each stated once and immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the field enumeration (event, status, attempts, response code, when) usefully describes the payload shape. Pagination is noted, but the undocumented page/limit parameters leave a small gap for a 4-param tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% — page, limit and webhookId are undocumented in the schema, and the description lists return fields rather than explaining these inputs. With low coverage the description was expected to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Recent deliveries for one webhook' — and the parenthetical enumerates the returned columns (event, status, attempts, response code, when). This clearly separates it from list_webhooks (which enumerates webhooks) and from create/update/delete_webhook siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes failed deliveries to retry_webhook_delivery, giving the agent a concrete follow-up action. It lacks an explicit when-not statement (e.g. how it differs from list_webhooks for a bulk view), so it falls short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hide_productHide a product from articlesAInspect

Keeps the product in the catalogue but stops articles from mentioning, linking to or picturing it. Reversible with unhide_product.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
productIdYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give the generic flag set (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description carries real weight here. It usefully discloses what is and is not affected (catalogue retained, article mentions/links/images suppressed) and that the change is reversible via unhide_product. It does not address whether repeated calls are meaningful despite idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both earning their place. The behavioral effect is front-loaded and the reversibility pointer trails it, with no redundant restatement of the tool name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity two-parameter toggle with no output schema, the description covers the behavior and reversal path well. The remaining gap is the undocumented productId and the lack of any statement about prerequisites or permissions, which is meaningful for a mutation tool with no rich annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% — the site parameter is documented in the schema but productId carries no description anywhere. The description says nothing about parameters, so the agent gets no guidance on what identifier productId expects or how to obtain it, and the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific verb+resource (hide_product) and immediately disambiguates it from delete_product by stating the product 'stays in the catalogue'. The scope of the effect (articles mentioning, linking to or picturing it) is spelled out, so an agent can distinguish it from sibling mutations without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for selecting this tool: use it when the product should remain in the catalogue but disappear from articles, and it names unhide_product as the reversal path. It stops short of an explicit when-not rule (e.g., versus delete_product) and states no prerequisites, so it is clear but not fully exclusionary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_existing_pagesImport existing pagesAInspect

Tell Blawgy about pages and blog posts the customer published BEFORE Blawgy (or outside it), so the content plan never schedules a duplicate article for a search one of them already answers. Up to 500 pages per call; call again for more. Each page is { url, title?, publishedAt? }: url is the full URL on this site (other domains are rejected), title is optional, publishedAt is an optional ISO date. Importing the same URL again updates it. Blawgy then reads each page in the background to work out what it answers (a few minutes). Free. See them with list_existing_pages.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
pagesYesPages to import (1 to 500): url, optional title, optional publishedAt

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnly=false, destructive=false, idempotent=false, openWorld=false): it discloses the 500-item cap, per-item validation (non-site domains are rejected), re-import semantics ('importing the same URL again updates it'), asynchronous post-processing that takes minutes, and that the operation is free. The 'updates it' phrasing is an upsert statement about URL uniqueness rather than a conflict with idempotentHint=false, since each call still triggers fresh background analysis.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then covers limits, item shape, idempotency, async timing, cost, and the sibling pointer in a compact run of sentences. Slightly wordy in the opening clause ('pages and blog posts the customer published BEFORE Blawgy (or outside it)'), but every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema, 2-parameter batch import, the description supplies everything an agent needs: what to send, per-item fields, size limits, re-call behavior, validation constraints, async processing expectation, cost, and where results are visible (list_existing_pages). Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries url/title/publishedAt definitions and the 1-500 bounds, which sets the baseline at 3. The description adds a rule the schema omits — that URLs from other domains are rejected — plus the optionality of title/publishedAt, so it slightly exceeds the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (import existing pages) and, unusually, the business reason: teaching Blawgy about pages published before/outside it so the content plan never schedules a duplicate. An agent can distinguish it from list_existing_pages and sync_existing_pages 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear triggering context ('pages the customer published BEFORE Blawgy (or outside it)'), a batching rule ('up to 500 pages per call; call again for more'), and routes viewing to list_existing_pages. It does not, however, address when to prefer it over the sibling sync_existing_pages, which sounds adjacent, so it stops short of the explicit alternative/exclusion coverage a 5 needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

include_existing_pageCheck a skipped page anywayAInspect

A page Blawgy skipped (a product, listing, legal or sign-up page, see list_existing_pages kind "skipped") is treated as an article instead, so new plan ideas are checked against it. Blawgy reads the page in the background (a few minutes). Use when a skipped page really is content the plan should not duplicate.

NameRequiredDescriptionDefault
urlYesThe skipped page URL, as shown by list_existing_pages
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations present the bar is lower, and the description still adds real behavioral context the annotations cannot: the page is read in the background and takes a few minutes, so the agent should not expect an immediate result. It doesn't state permission requirements or how to observe completion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the effect of the call, then the mechanism, then the usage condition. No filler, though the parenthetical classification list is slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description covers the essential unknown for an async operation: it runs in the background and takes a few minutes. It stops short of saying how the agent should verify completion (e.g. via a job or update listing), which would make it fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description reinforces that the URL should be a page previously shown as 'skipped' by list_existing_pages, adding modest semantic value but no new format or constraint detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete effect: a page Blawgy skipped is reclassified as an article so new plan ideas are checked against it. The verb+resource are clear and the meaning of 'include' is unambiguous. It does not, however, explicitly contrast itself with nearby siblings such as restore_existing_page or remove_existing_page, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: 'Use when a skipped page really is content the plan should not duplicate,' and points to list_existing_pages kind "skipped" as the source of candidates. No exclusion or named alternative tool is given, which keeps 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.

invite_teammateInvite a teammateA
Destructive
Inspect

Emails an invitation to work on this site (the invitee gets the link by email; it is never returned here). Anyone on the site team can invite. Re-inviting the same address resends the same invitation. emailDomain restricts the link to addresses at one company. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
emailYes
emailDomainNoOnly people at this domain can accept, for example "acme.com".
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds substantial context the annotations cannot: the invitee receives the link by email and it is never returned, authorization scope, idempotent-looking re-invite behavior, and the two-step summary/confirmToken flow. This is exactly the destructive-operation detail an agent needs before calling twice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the non-returned-link caveat, then layered with permission, re-invite, domain, and confirmation facts. Dense but every clause carries information; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing what a call returns (a summary and confirmToken, not the invitation link) and how to complete the operation. For a destructive, two-phase tool this is complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and the description still adds value: it explains the emailDomain restriction semantics and, crucially, the confirmToken handshake (omit on first call, pass on second) beyond the schema wording. Minor gap: the 'email' parameter gets no additional explanation, though its format is self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Emails an invitation to work on this site') and disambiguates from nearby siblings like resend_invite and revoke_invite by noting re-inviting resends the same invitation. An agent can identify the action without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions ('Anyone on the site team can invite') and the re-invite behavior, which implicitly tells the agent not to reach for resend_invite. It stops short of explicitly naming alternatives 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.

list_archived_keywordsArchived keywordsA
Read-onlyIdempotent
Inspect

Keywords removed from the customer's own list (Settings > Keywords > Archived), newest first, each with when it was archived, why (removed = the customer took it off the list, rebuild = the list was rebuilt) and its volume and difficulty at the time when known. Put any of them back with restore_archived_keywords. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 50, max 200).
offsetNoSkip this many items (for paging).
searchNoOnly archived keywords containing this text (case-insensitive).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond that: newest-first ordering, the fields returned (archive time, reason, volume, difficulty at archive time), the meaning of the 'removed' vs 'rebuild' reasons, and that the call is free.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the resource scope and ordering front-loaded before the restore pointer. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with full annotation coverage and no output schema, the description supplies the return shape, ordering, reason semantics, and cost model. Complete enough to invoke correctly, with only minor gaps (no paging guidance) left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents site, limit, offset, and search. The description adds no syntax or format details beyond what those fields provide, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (archived keywords) and pins down the exact source (Settings > Keywords > Archived), distinguishing it from siblings like list_my_keywords and get_keywords. An agent can tell exactly what it retrieves without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to the complementary action ('Put any of them back with restore_archived_keywords'), giving clear context for the follow-up tool. It doesn't spell out when to prefer this over list_my_keywords, but the scope statement makes the distinction obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_articlesList articlesA
Read-onlyIdempotent
Inspect

List the site's articles (lean: no bodies). Filter with status: upcoming (scheduled, not written), processing (being written or published), written (ready, waiting for its publish date), draft (sent to the CMS as a draft, needs publish_draft), published, held (stopped by a guardrail, needs release_held_article) or failed. Optional search matches title or keyword. Newest publish date first. Use get_article for the body.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
offsetNo
searchNo
statusNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real value beyond that: payload is lean with no bodies, results are ordered newest-publish-date-first, and status values encode workflow state. It stops short of describing pagination or result caps, so a 4 rather than a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the resource and the key 'no bodies' distinction, then the filter semantics, then the fallback tool. Dense but every clause earns its place; the long status list is necessary enumeration, not padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param read tool with no output schema and thin schema descriptions, the definition supplies the essential filter semantics, return shape, and ordering. Only pagination behavior (limit/offset) is unaddressed, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 20% (just `site`), so the description must compensate – and it does: it explains every `status` enum value and clarifies that `search` matches title or keyword. `limit` and `offset` remain undocumented, keeping it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (articles) scoped to a site, and the parenthetical '(lean: no bodies)' immediately distinguishes it from get_article. An agent can tell what it returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to the alternative ('Use get_article for the body') and defines the exact selection criteria for each `status` value, including which downstream action each implies (draft needs publish_draft, held needs release_held_article). 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.

list_builder_draftsList builder draftsA
Read-onlyIdempotent
Inspect

List the acting user's Article Builder drafts for this site (in-progress and published), newest first. Filter with status ("draft" or "published").

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
offsetNo
statusNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description still adds real context beyond them: newest-first ordering, the acting user's scope, this-site scope, and that both in-progress and published drafts are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with scope and ordering front-loaded before the filter hint. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a read-only list tool whose annotations cover safety, and no output schema exists so return fields needn't be described. However, pagination semantics (limit cap of 100, offset behavior) are left unexplained for an operation that clearly paginates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (only `site` is documented). The description restates the `status` filter values that the enum already supplies and never explains `limit` or `offset` pagination, leaving half the parameters undocumented in both schema and prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (List) and resource (Article Builder drafts), plus scope (acting user's, this site, in-progress and published, newest first). It is clearly distinct from get_builder_draft and save_builder_draft by implication, but never names a sibling (e.g. list_articles) to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says the list can be narrowed with `status`, which is light operational guidance, but gives no when-to-use versus alternatives such as get_builder_draft for one draft or list_articles for published content. Usage 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.

list_business_locationsList business locationsA
Read-onlyIdempotent
Inspect

The site's saved business locations (name, address, phone, service area, which one is primary). The generator protects these real addresses when it rewrites a page for another town. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds genuinely new context by explaining how the generator uses these addresses when rewriting pages for other towns, and it enumerates the returned fields in the absence of an output schema. It omits ordering/pagination behavior, keeping it short of 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what is returned, then the domain rationale, then the access mode. No filler, though the trailing "Read only" restates the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only list tool whose annotations cover safety, the description is nearly complete: it names the returned fields (compensating for the missing output schema) and explains the data's significance. Only call-ordering versus sibling location tools is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (site) with 100% schema description coverage including its enum value, so the schema does all the work. The description adds no parameter-level detail beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource, and enumerates the fields each location carries. It doesn't explicitly differentiate itself from the many sibling location tools (detect/update/delete_business_location), so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Read only" implies this is the read counterpart to add/update/delete_business_location, but the description never states when to call it versus those siblings. Usage is inferable from the name and field list, not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_existing_pagesList existing pagesA
Read-onlyIdempotent
Inspect

The pages Blawgy knows the site already has outside the articles Blawgy wrote (found in the sitemap, feeds, Search Console, or imported), with what each page answers when known (ownedIntent, primaryKeyword) and its kind (article, help, product, category, landing, other, unknown; help = product docs and help-center pages, checked like articles but never suggested for a refresh). Includes counts by kind and source, how many were removed, and when the inventory last synced. Filter by kind (also skipped: pages new ideas are never checked against, such as products, listings, legal and sign-up pages; removed: pages removed with remove_existing_page), by origin (import = added by the customer) or a search string (URL, title or what the page answers); page with limit/offset. Free.

NameRequiredDescriptionDefault
kindNoOnly pages of this kind, or skipped / removed
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax pages to return (default 50, max 200)
offsetNoSkip this many pages (for paging)
originNoOnly pages from this source (import = added by the customer)
searchNoSubstring match on URL, title or what the page answers

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds genuinely new behavioral context: pages are sourced from sitemap/feeds/GSC/import, help pages are checked like articles but never suggested for refresh, counts by kind and source plus last-sync time are returned, and the call is free.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource definition before diving into filters, and nearly every clause carries information. It is a dense single block of parentheticals rather than scannable structure, which slightly hurts readability, but there is little outright waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so: it names the per-page fields (ownedIntent, primaryKeyword, kind), the aggregate counts by kind/source, the removed count, and sync timestamp, plus paging via limit/offset. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3, but the description earns extra by explaining enumeration values beyond the terse schema text: `skipped` pages are 'never checked against' by new ideas (products, listings, legal, sign-up), `removed` pages were deleted via remove_existing_page, and search matches URL, title, or owned intent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (existing pages Blawgy knows the site has), and sharply scopes it against the sibling list_articles by defining these as pages 'outside the articles Blawgy wrote'. It further enumerates sources (sitemap, feeds, Search Console, import) so the agent understands exactly what set is returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies filter semantics (what `skipped` and `removed` mean, `import` = added by the customer) and references remove_existing_page, which helps routing. However it never states explicitly when to call this tool versus alternatives like list_articles or sync_existing_pages, leaving the primary when-to-use decision implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_guardrailsList the guardrail libraryB
Read-onlyIdempotent
Inspect

The account's reusable guardrails (name, rules, enabled, the sites each is attached to). The library belongs to the site owner's account and is shared with the team. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so 'Read only' in the description is largely redundant. It does add genuine non-obvious context – that the library belongs to the site owner's account and is shared across the team, and that attachment sites are included in the payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the payload contents, with no filler. The account-ownership sentence earns its place by clarifying scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema, read-only list tool with full parameter coverage, the description supplies the return shape (name, rules, enabled, attached sites) and account scoping. Only the relationship to sibling guardrail tools is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'site' parameter, so the schema already documents its meaning and enum value. The description adds no syntax or format detail beyond implying sites are relevant, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (the account's reusable guardrails) and enumerates the returned fields (name, rules, enabled, attached sites), so the agent knows exactly what this call produces. It does not, however, distinguish itself from close siblings like get_site_guardrails or update_site_guardrails, leaving some routing ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use instruction and no alternative named, even though get_site_guardrails is a near-neighbor that an agent could easily confuse with this one. The reader must infer the use case from the field list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_image_postsList posts whose image can be changedA
Read-onlyIdempotent
Inspect

The site's 12 most recent written posts (id, title, current image, published). Use it to find the postId for get_post_image / generate_post_image. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so 'Read only' is largely redundant. The genuinely additive context is the hard cap of 12 results and the returned field list, which matter since there is no output schema, but permissions/pagination are unaddressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, result shape front-loaded ahead of the routing hint. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, naming the returned fields and the 12-item limit is the right compensation, and the downstream tool reference completes the workflow. Minor gap: no statement about whether the list is exhaustive or how to reach older posts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'site' parameter is fully documented in the schema (with an allowed value). The description adds no meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('12 most recent written posts') and enumerates the returned fields (id, title, current image, published). This distinguishes it from the broad list_articles sibling by scope and by the image-relevant framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Use it to find the postId for get_post_image / generate_post_image.' That names the downstream alternatives clearly, but gives no when-not guidance (e.g., versus list_articles when more than 12 posts or non-image needs).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_my_keywordsMy keywordsA
Read-onlyIdempotent
Inspect

The customer's own keyword list (Settings > Keywords), each with its status: published (an article targets it), scheduled, covered (an existing page or post already covers it, so the plan does not schedule it; coveredBy names it), available (ready to be planned) or researching (metrics not fetched yet), plus volume and difficulty when known. These keywords get a guaranteed share of the plan. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 50, max 200).
offsetNoSkip this many items (for paging).
statusNoOnly keywords in this status.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, so safety is covered. The description adds useful domain behavior: the enumerated status semantics and the fact that these keywords get a guaranteed share of the plan. It does not mention pagination despite limit/offset existing, which is a small gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource identity and scope in the opening clause, followed by the status taxonomy. It is a single dense sentence with many parentheses, which is information-efficient though slightly run-on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description correctly carries the burden of explaining returned item fields (status meanings, volume, difficulty). It gives a nearly complete picture of what comes back, with only pagination behavior unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description goes beyond the schema by defining what each status enum value means (published, scheduled, covered, available, researching) and explains the 'coveredBy' and volume/difficulty fields. That is genuine added meaning beyond the one-line schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource: 'The customer's own keyword list (Settings > Keywords)' with the per-item status model. Clear what it returns, but it never distinguishes itself from siblings like get_keywords, list_archived_keywords, or get_keyword_recommendations, so the agent must infer which 'keyword list' this is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied ('These keywords get a guaranteed share of the plan. Free.') but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. An agent cannot tell from this text when to prefer get_keywords or list_archived_keywords over this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_page_templatesList WordPress pages to use as templatesA
Read-onlyIdempotent
Inspect

The site's existing WordPress pages (id, title, slug, link, status) that generate_location_page_drafts can clone. Searchable and paginated (WordPress sites only). Read only.

NameRequiredDescriptionDefault
pageNo
siteYesThe site to act on. One of: fencestainingdenver.com.
searchNo
perPageNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so 'Read only' is redundant. Value beyond annotations comes from 'Searchable and paginated' and the enumerated return fields (id, title, slug, link, status), which matter since 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose and return fields first, then capability, then platform constraint and safety. Zero filler and well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, listing the returned fields and mentioning pagination covers most of what an agent needs. The only real omission is pagination defaults/page-size behavior for the four parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (just 'site'), so page, search and perPage are undocumented. 'Searchable and paginated' loosely maps to search and page/perPage, but no format, defaults, or max (perPage max 100) are given, so it only partly compensates for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource ('the site's existing WordPress pages') and its role ('that generate_location_page_drafts can clone'), which no other sibling list_* tool covers. An agent can distinguish it from list_articles/list_photos/list_sites immediately, and the returned fields are named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It ties the tool to a concrete workflow by naming the downstream consumer generate_location_page_drafts, and gives a platform constraint ('WordPress sites only'). It stops short of explicit when-not guidance or naming an alternative (e.g., fetch_sitemap_links) for non-WordPress sites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_photosList the product photo bankA
Read-onlyIdempotent
Inspect

Every product photo the site has uploaded for use in article images, with its cutout, in-use photo, extra angles and placement metadata, plus whether the bank is switched on. Read only. Turn the bank on or off with update_settings imageStyle.productPhotosEnabled.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
offsetNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds value beyond that by disclosing the shape of the returned data (cutout, in-use photo, extra angles, placement metadata) and the bank-enabled flag, which the annotations cannot express. It stops short of explaining pagination behavior despite limit/offset parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no filler: the contents are front-loaded, the read-only mode follows, and the routing hint is last. Every clause carries information an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the burden of describing return contents and does so concretely. The one gap is pagination – limit/offset exist but neither the schema nor the description explains how to page through a large photo bank.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% – only 'site' is documented, while 'limit' and 'offset' are undocumented in both schema and description. The phrase 'Every product photo' actively implies an exhaustive listing with no mention of windowing, which can mislead an agent about result size.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource – listing every product photo the site has uploaded – and enumerates the associated assets (cutout, in-use photo, angles, placement metadata). It does not explicitly distinguish itself from close siblings like get_photo_candidates, list_image_posts, or update_photo, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Read only' sets the mode, and the pointer to update_settings imageStyle.productPhotosEnabled routes the enable/disable case elsewhere, which is genuinely useful. However, there is no guidance on when to choose this over get_photo_candidates or list_image_posts, and no stated prerequisites beyond the site.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_productsList productsA
Read-onlyIdempotent
Inspect

The site's product catalogue (synced from Shopify or Dutchie, or added by hand) that articles can link to and picture. Filter by status: active (used in articles), hidden (kept but never used), archived (deleted), or all. Descriptions are truncated; use get_product for the full one. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
offsetNo
searchNoCase-insensitive match on name, type, vendor or tags.
statusNoDefault: active and hidden (everything not archived).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description usefully adds that descriptions are truncated in list output — a real output trait not in the annotations. It also discloses data provenance (Shopify/Dutchie/manual), but says nothing about pagination behavior despite limit/offset existing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with zero filler; the resource definition is front-loaded, the filter semantics follow, and the alternative plus read-only note are packed into the tail. Nothing is repeated from the annotations or schema verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the burden of the return shape, and it handles the most important case (truncated descriptions). It is complete enough to call correctly, though it omits pagination expectations and what happens at the limit boundary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60% (site, search, status documented; limit/offset not). The description compensates meaningfully by defining what active, hidden and archived actually mean in this product model ('used in articles', 'kept but never used', 'deleted'), which goes beyond the enum labels in the schema. It adds no semantics for limit/offset or search.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (the site's product catalogue) and its scope: which statuses it returns, where the data comes from, and what articles use it for. It also names the sibling tool it is not (get_product) and the condition that selects it, so the agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear use context: filter by status with the meaning of each value, and use get_product when a full description is needed. It does not state exclusions (e.g. use search/list_products vs. get_product_sync_status for sync issues), so it stops short of fully 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.

list_research_runsPast research runsA
Read-onlyIdempotent
Inspect

Lists keyword research runs for the site, newest first (up to 20): id, pass, status, when it ran, topic and keyword counts, and which one is current. Read one with get_research_run. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNoMax items to return (default 20, max 20).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds ordering (newest first), a hard result cap (up to 20), the returned field set, and a cost signal ('Free'), which are genuinely useful traits not present in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the scope, ordering and cap front-loaded, followed by the routing hint and cost note. Every sentence carries information an agent needs; nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields (id, pass, status, run time, topic/keyword counts, current marker) and the ordering. Combined with the safety annotations, an agent has everything needed 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are fully documented there, so baseline 3 applies. The description's 'up to 20' restates the limit's schema-declared default/max rather than adding syntax or formatting meaning, so it does not exceed the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Lists) plus a precise resource (keyword research runs for the site), and it names the sibling tool to use for a single run (get_research_run). An agent can distinguish it from get_research_run, get_research_status and run_keyword_research without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It routes the agent to get_research_run for a single record and signals cost with 'Free', giving clear context for when to call this versus the single-run reader. It stops short of explicit when-not conditions (e.g. what to do when there are no runs or when a fresh run is needed).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sitesList sitesA
Read-onlyIdempotent
Inspect

List every site this credential can use on Blawgy, with plan tier, platform (wordpress, webflow, shopify, wix, framer, duda, ghost or none), whether the CMS is connected, posts per week, your relation to it (owner, invited, or partner client, with the client's email and clientId) and whether it is read-only (frozen or ended billing). Filter relation="partner_client" for client sites only. Use the site value from here in every other tool.

NameRequiredDescriptionDefault
limitNoMax sites to return (default 25, max 100).
offsetNoSkip this many sites (for paging).
relationNoOnly sites with this relation: owner, invited or partner_client.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: what each returned field means (plan tier, CMS connection state, relation, read-only status meaning 'frozen or ended billing'). It does not mention paging defaults, but the schema does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource, then the payload enumeration, then two short actionable sentences. The middle sentence is dense but every clause carries field information an agent cannot get from a missing output schema. Slightly long-winded but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe returns — and it enumerates plan tier, platform options, connection state, posts per week, relation with client email/clientId, and read-only status. Combined with the annotations covering safety and the schema covering parameters, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns the bump by explaining what the relation enum values actually mean operationally ('owner, invited, or partner client, with the client's email and clientId'), which is semantic detail the enum alone does not convey. limit and offset are left to the schema, appropriately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List every site this credential can use on Blawgy') and immediately scopes it to the credential, which distinguishes it from create_site, get_overview and every other site-scoped sibling. It also flags itself as the entry point for the rest of the toolset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete routing advice: 'Filter relation="partner_client" for client sites only' tells the agent when to apply a filter, and 'Use the `site` value from here in every other tool' tells it why this tool comes first. That is when-to-use plus downstream dependency, which is unusually explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_teamList teammates and invitationsA
Read-onlyIdempotent
Inspect

Everyone with access to this site (owner and accepted members) plus every invitation and its state (pending, accepted, revoked, email sent or failed). Invite links are not listed; invite_teammate returns one. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the 'Read only' line is largely redundant with structured data. The description does add value by enumerating the returned invitation states (pending, accepted, revoked, email sent or failed) and clarifying the output scope, but it adds no permission, pagination, or freshness behavior beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no filler: output contents first, then the exclusion and the alternative. It is appropriately sized for a list tool, though the parenthetical state list and the two-sentence structure are dense enough to slightly temper the score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description capably compensates by describing what is returned (owner, accepted members, all invitations with states). For a single-parameter read-only list tool this is essentially complete; only minor edge details like ordering or pagination are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter with 100% schema coverage, so the schema already carries the semantics of 'site'. The description adds nothing about the parameter (for example, format or default), which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (teammates and invitations) and precisely delineates scope: everyone with access (owner + accepted members) plus every invitation and its state. It also excludes invite links and names invite_teammate as the tool that returns those, so an agent can distinguish it from siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies the boundary condition for invite links ('Invite links are not listed; invite_teammate returns one'), which points to the right alternative for that case. It gives clear context for what this tool covers but does not discuss related mutation siblings (resend_invite, revoke_invite), 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.

list_update_opportunitiesList page updatesA
Read-onlyIdempotent
Inspect

List page updates for existing pages: proposals ("proposed"), drafts ("ready"), and published, flagged, reverted or dismissed ones. Updates run on autopilot by default and pick a page for one of three reasons (triggers): "stagnant" (clicks flat or falling for about 2 months, the body is refreshed), "query_pull" (one search keeps bringing impressions but the page is not built around it) or "no_clicks" (live 90+ days with about zero clicks); for the last two the title, H1, meta description and intro are rewritten around subjectQuery (editDepth "retarget"). Only pages Google has indexed are changed (Search Console impressions in the last 8 weeks, or a URL Inspection verdict of indexed; up to 20 unproven pages per site are inspected each week). A page is changed at most once every 60 days, never while its best search is in the top 3 or while it is under 60 days old, and its URL never changes. Older rows may carry retired trigger names. Each row has why it was picked, parts (what changed in the search part, title/H1/meta, and the content part, the body) and impact with a verdict per part (a part judged worse is reverted on its own). Also returns autopilot and autopilotState { on, source: explicit | default | draft_mode | kill_switch }. A site without Pro+ (or grandfathered access) returns locked: true. For the summary view use get_updates_overview. Next: draft_update on a proposal, or approve_update on a ready draft. Use includeHtml to get draft bodies.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
limitNo
offsetNo
statusNo
includeHtmlNoInclude each ready draft's full HTML (large)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read operation, yet the description adds substantial context the agent could not otherwise know: autopilot-on-by-default, the three trigger reasons, the 60-day per-page cooldown, the top-3 and 60-day-age exclusions, URL immutability, indexing preconditions, per-part auto-revert of worse changes, and the locked flag. None of this is derivable from readOnlyHint/idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the identity and status set come first, then trigger mechanics, then return shape, then next actions. A few clauses (e.g. the 20-unproven-pages-per-week inspection detail) sit at the edge of what an agent needs to call the tool, but almost every sentence carries operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description does the work itself: it explains row fields (`parts`, `impact` verdicts, trigger rationale), the `autopilot`/`autopilotState` object with its source enum, and the `locked` case. Nothing needed to interpret the response or to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 40%, with `limit` and `offset` undocumented anywhere. The description partially compensates by naming the status values ('proposed', 'ready', published, flagged, reverted, dismissed) and by pointing at `includeHtml` for draft bodies, but it omits 'generating' from the enum list and says nothing about pagination semantics — so the gap is narrowed rather than closed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('List page updates for existing pages') and immediately enumerates the states it returns (proposals, drafts, published, flagged, reverted, dismissed). It also explicitly names the sibling it is not ('For the summary view use get_updates_overview'), so an agent can distinguish it from the overview tool without reading either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Routes the agent away from get_updates_overview for summary views, and forward to draft_update for proposals and approve_update for ready drafts, so the follow-up action is conditioned on row status. It also gives a prerequisite signal (non-Pro+ sites return locked:true), which tells the agent when results will be empty.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_webhooksList webhooksA
Read-onlyIdempotent
Inspect

The site's outgoing webhooks (URL, events, active, expiry, retries). Auth tokens are never listed; create_webhook and regenerate_webhook_token show a token once. Read only.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is largely pre-declared. The description still adds genuinely new behavioral context: auth tokens are deliberately excluded from output and only ever shown once by other tools. It omits any listing/return-shape detail beyond the field names, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: the resource and its fields come first, then the token caveat. The trailing 'Read only.' is a cheap reinforcement of existing annotations but costs almost nothing. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, describing the returned fields (URL, events, active, expiry, retries) is exactly the information an agent would otherwise lack. It also covers the token-exclusion behavior and read-only nature. The gap is operational: nothing about ordering, pagination, or result volume for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (site) at 100% schema description coverage, which includes the valid enum-like value, so the schema fully carries parameter meaning. The description adds no format or scoping detail for site 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the concrete resource (the site's outgoing webhooks) and enumerates the fields returned (URL, events, active, expiry, retries), so an agent knows exactly what it gets. It distinguishes itself from create_webhook and regenerate_webhook_token by explaining those surface tokens while this does not. It does not, however, contrast with the nearby get_webhook_history, which leaves one sibling ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives actionable routing: if a token is what you need, use create_webhook or regenerate_webhook_token, since tokens are never listed here. That is an explicit when-not for a closely related need. It stops short of stating when to prefer this list over get_webhook_history or test_webhook, so guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_publishedMark an article as publishedAInspect

Use when you (or the user) published an article on the website or CMS yourselves, for example a site with no connected platform where articles are copied across by hand. Records the live url so Blawgy tracks the post's rankings, indexing and smart updates. The url must be https and on the site's domain or a subdomain. Nothing is sent to the CMS and no emails go out. Works on written, draft, held, failed or published articles (call again with a new url to correct it; the same url is a no-op); refused while an article is still being written or published, or before it has a body. publishedAt (ISO) is the go-live date, default now.

NameRequiredDescriptionDefault
idYesArticle id from list_articles
urlYesThe live https URL of the published article
siteYesThe site to act on. One of: fencestainingdenver.com.
publishedAtNoISO date-time it went live (default now)

TDQS

A4.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses a lot beyond the annotations (nothing sent to the CMS, no emails, works on written/draft/held/failed/published states, refusals before a body exists). However, 'the same url is a no-op' asserts idempotent same-argument behavior while the annotation declares idempotentHint=false, which is a direct conflict on repeat-call semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the trigger ('Use when you...') and then packs constraints into one dense block; nearly every clause carries decision-relevant information, though the long run-on sentences and repeated parentheticals add mild friction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a mutation-style tool, the description still covers the trigger, valid article states, refusal conditions, correction behavior, side-effect profile, and URL validation rules — nothing an agent needs to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline is 3, but the description adds a real constraint the schema omits: the url 'must be https and on the site's domain or a subdomain,' plus a plain-language gloss of publishedAt as the go-live date defaulting to now.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (records the live url of an externally published article so Blawgy tracks it) and clearly scopes itself apart from the many publish siblings like publish_draft, publish_article_from_builder, and republish_article by targeting articles published by hand outside a connected platform.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('you or the user published an article... a site with no connected platform where articles are copied across by hand'), when-not ('refused while an article is still being written or publishing, or before it has a body'), and the correction path (call again with a new url; same url is a no-op).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mark_refresh_doneMark a page refresh as doneAInspect

Tell Blawgy the page in a refresh was updated (the dashboard's "I updated the page"). The refresh is marked done and Blawgy re-checks how the page ranks two weeks later. Only for an accepted refresh. Safe to call twice.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
refreshIdYesThe refresh row id (suggestionId / refreshId in get_plan)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, openWorld=false, so safety is partly covered; the description adds real behavioral context beyond that, namely the downstream consequence (Blawgy re-checks rankings two weeks later) and the accepted-refresh precondition. The 'safe to call twice' phrasing sits in mild tension with idempotentHint=false, but it asserts safety rather than identical effects, so it is not 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: the action, the downstream effect, and the precondition plus repeat-safety. The core action is front-loaded and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with full schema coverage and no output schema, the description supplies the gating rule and the consequence of calling it, which is what an agent needs. It omits error behavior for a non-accepted refresh, a minor gap given annotations already carry the safety profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'site' and 'refreshId' documented in the schema itself. The description's mention of 'the page in a refresh' adds no format or sourcing detail beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it marks a page refresh as done and notifies Blawgy that the page was updated. This clearly separates it from request_refresh or get_refresh_brief, though it does not explicitly name any sibling tool to sharpen the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Only for an accepted refresh' is a concrete gating condition that tells the agent when the tool is valid, and 'Safe to call twice' covers repeat invocation. It stops short of naming what to use instead when the refresh is not accepted, so it is clear context without explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pause_autopilotPause the planAInspect

Pause automatic writing and publishing for this site. Scheduled entries stay in the plan but nothing is written or published until resume_autopilot. Use when the customer wants to review before anything else ships.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (non-destructive, not read-only, not idempotent). The description adds real behavioral context beyond them: scheduled entries remain in the plan, and nothing is written or published while paused. It does not address what happens to in-flight jobs or whether repeated calls error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and its effect, then the usage condition. No filler or redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter state-mutation tool with no output schema and annotations covering the safety profile, the description conveys the essential state semantics and usage trigger. Minor gaps around idempotency and in-flight work are not fatal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter with 100% schema coverage; the schema already documents the site field including the allowed value. The description adds no parameter-level detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Pause') and resource ('automatic writing and publishing') scoped to 'this site'. It explicitly names the counterpart tool (resume_autopilot), so an agent can distinguish this from the resume sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear situational trigger: 'Use when the customer wants to review before anything else ships.' The reference to resume_autopilot implies the inverse condition, but there is no explicit when-not or prerequisite guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_avoid_matchesPlanned articles matching "Never write about"A
Read-onlyIdempotent
Inspect

Lists the scheduled, not yet written articles Blawgy proposed that fall under the site's "Never write about" list (the research brief's avoidThemes, edit with update_research_brief). Same check the planner uses; the customer's own keywords, written and published articles are never included. Changes nothing: to drop a match, call remove_plan_entry with its id. degraded: true means some articles could not be checked just now and were left out, so retry before telling the customer none match.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover readOnly/idempotent, and the description adds real non-annotation behavior: nothing is changed, it mirrors the planner's own check, customer keywords and published articles are never included, and the `degraded: true` partial-result condition with an explicit retry instruction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, then layers scope exclusions, mutation safety, and the degraded caveat in a logical order. Slightly dense with a nested parenthetical, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining the return signal (`degraded`), and it does so. It does not describe the shape of a returned match entry, but the safety, scope, and error semantics an agent needs to call and interpret it are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (`site`) and schema coverage is 100%, with the allowed value enumerated in the schema. The description adds no parameter-level detail, which is acceptable here but earns the baseline rather than extra credit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource with scope qualifiers: 'scheduled, not yet written articles Blawgy proposed' filtered by the site's 'Never write about' list. It explicitly excludes keywords and written/published articles, so an agent can distinguish this from list_articles or get_plan without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: same check the planner uses, retry when `degraded: true`, and the concrete next step of calling remove_plan_entry with the id to drop a match. It stops short of naming an explicit alternative to read planned entries in general, so not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_location_page_contentPreview the full retargeted content of one pageA
Read-onlyIdempotent
Inspect

Clones the template for ONE target and returns the retargeted copy (deterministic text substitution of place names, keyword and business details, not an LLM rewrite) without saving anything to WordPress. Read only. Use it to check the retargeting before generate_location_page_drafts on the whole batch. Keys accepted in target: name, keyword, slug, notes.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
targetYes
locationIdNoWhich saved business location the pages speak for (default: the primary one).
baseKeywordNoThe service or product the pages are about, for example "plumber".
slugPatternNo
titleSuffixNo
titlePatternNo
templatePageIdYesThe WordPress page to clone, from list_page_templates.
templatePurposeNoWhat each page is: a town or area (default), a product or brand, or an event.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuine mechanism context: deterministic text substitution rather than an LLM rewrite, and 'without saving anything to WordPress', which is valuable beyond the booleans.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action, then mechanism, safety, and usage in a tight sequence. The parenthetical is dense but every clause carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter read-only tool with no output schema, the description covers purpose, mechanism, state behavior, the target keys, and sequencing against the batch generator. Remaining params (e.g. slugPattern, titlePattern, locationId) are undocumented but not critical to correct selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is modest (56%) and the nested `target` object's properties carry no descriptions. The description compensates by naming the accepted keys (name, keyword, slug, notes), adding real meaning the schema alone lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (clones/returns) and resource (template for ONE target, retargeted copy), and the 'ONE target' scoping directly distinguishes it from preview_location_pages (plural) and generate_location_page_drafts (batch). An agent can route to it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to 'check the retargeting before generate_location_page_drafts on the whole batch', naming the alternative and the condition that favors this tool. No explicit 'when-not' guidance, but the pre-flight framing is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_location_pagesPreview titles and slugs for a batch of pagesA
Read-onlyIdempotent
Inspect

Cheap and instant: shows the title, slug and keyword each target would get, so the pattern can be adjusted before generating. No WordPress writes.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
targetsYes
baseKeywordNoThe service or product the pages are about, for example "plumber".
slugPatternNo
titleSuffixNo
titlePatternNo
templatePageIdNoThe WordPress page to clone, from list_page_templates.
templatePurposeNoWhat each page is: a town or area (default), a product or brand, or an event.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so the safety profile is covered. The description adds value beyond that with 'Cheap and instant' (cost/latency) and 'No WordPress writes' (domain-specific confirmation it does not touch the CMS), plus it enumerates the return content, which matters because 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the value proposition ('Cheap and instant') front-loaded, followed by what it returns and the safety caveat. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-param preview tool with no output schema, the description covers the essentials: what is returned, that it is a non-writing dry run, and that it precedes generation. Remaining gaps are the un-described pattern/template parameters, which the schema only partially covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 8 parameters and only 50% schema description coverage, roughly half the inputs (slugPattern, titlePattern, titleSuffix, templatePageId, templatePurpose) are undocumented in both schema and description. The description references 'target', 'pattern' and 'keyword' generally, adding marginal meaning but not compensating for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('shows the title, slug and keyword each target would get') for a batch of location pages, which is clearly distinct from generation tools. It implies the sibling relationship via 'before generating' but never names the counterpart (e.g., generate_location_page_drafts), so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use: adjust the pattern first, then generate. It does not explicitly name the alternative tool or state when NOT to use this preview, but the 'before generating' framing establishes the intended workflow position unambiguously.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_article_from_builderSave and publish a builder articleA
Destructive
Inspect

Save a finished Article Builder article to the site's plan as a written article. It goes to the website on the next publishing run (within about 10 minutes of publishDate, default now): live, or as a CMS draft when the site's post-as-draft setting is on. Give either draftId (uses the draft's article, title, keywords and image) or title + sections (HTML per section) directly; explicit fields override the draft. Marks the draft published. Does not count against posts per week. Returns the new article id for get_article and reschedule_article. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
titleNo
draftIdNo
keywordsNo
sectionsNo
productIdsNo
publishDateNoISO date-time; default now
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.
featuredImageNoHero image URL: one of the site's own photo URLs, or null
metaDescriptionNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: the ~10-minute publishing window relative to publishDate, live-vs-CMS-draft depending on the post-as-draft setting, that it marks the draft published, that it does not count against posts per week, and the exact two-phase confirmToken flow. This explains the destructiveHint concretely rather than merely restating it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then layers invocation modes, publishing behavior, return value, and the confirm-token warning in a logical order. It is dense but every sentence carries actionable content; the parenthetical asides add minor length without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter destructive mutation with no output schema, the description covers the confirmation flow, publishing timing, draft-vs-live outcome, and return value ('new article id for get_article and reschedule_article'). Nothing essential to correct invocation appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 40%, the description meaningfully compensates for the key parameters: draftId semantics (uses the draft's article, title, keywords and image), title+sections (HTML per section), and the override rule. It leaves several parameters (site, keywords, productIds, featuredImage, metaDescription) untouched, so it is not fully exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+outcome: 'Save a finished Article Builder article to the site's plan as a written article.' The word 'finished' and the two input modes (draftId vs title+sections) implicitly separate it from save_builder_draft, while the mention of get_article/reschedule_article anchors it in the tool graph. An agent can distinguish this from publish_draft and write_article_now without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the two invocation modes ('Give either draftId ... or title + sections') and the precedence rule ('explicit fields override the draft'), plus the timing and post-as-draft behavior. It does not directly compare against sibling alternatives like write_article_now or publish_draft, so it falls short of a 5 on when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_draftPublish a CMS draftA
Destructive
Inspect

Take an article that was delivered to the CMS as a draft (status "draft" in list_articles) live on the website, pushing the latest Blawgy content. Public and immediate. Only for cms_draft articles. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYes
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that publishing is public and immediate, and describes a non-obvious two-phase protocol where the first call is non-committal (returns a summary plus confirmToken) and only the second call with the token proceeds. These are behavioral traits an agent could not infer from destructiveHint=true alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and the 'destructive'/'confirmToken' warning placed last where it matters most. 'Pushing the latest Blawgy content' is brand noise that could be cut, but nothing else is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with no output schema, the description covers scope, immediacy, and the confirmation flow, which is most of what an agent needs. It omits reversibility (can a published article be unpublished?), required permissions, and failure modes, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the undocumented 'id' parameter is compensated for by pointing at list_articles as the source of valid draft identifiers; the description also explains the confirmToken round-trip beyond what the schema says. It does not state the id format or error behavior, so it is useful but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: publishes a CMS draft article live on the site, with an explicit scope restriction ('Only for cms_draft articles') that implicitly separates it from builder-draft siblings like publish_article_from_builder. The phrase 'pushing the latest Blawgy content' is jargon that adds little, and no sibling is named outright, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the qualifying condition (items showing status 'draft' in list_articles, cms_draft only) and the effect (public and immediate), which gives a clear context for use. It never names an alternative tool or an explicit when-not rule (e.g., vs republish_article or mark_published), so it stops short of explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_location_pagesGenerate and PUBLISH location pagesA
Destructive
Inspect

Same as generate_location_page_drafts but the pages go live on WordPress immediately. Slow; waits and returns per-target results. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
targetsYes
locationIdNoWhich saved business location the pages speak for (default: the primary one).
baseKeywordNoThe service or product the pages are about, for example "plumber".
slugPatternNo
titleSuffixNo
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.
stripPhrasesNoPhrases to remove from the cloned copy.
titlePatternNo
templatePageIdYesThe WordPress page to clone, from list_page_templates.
templatePurposeNoWhat each page is: a town or area (default), a product or brand, or an event.
generateFeaturedImageNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-idempotent, so the safety profile is covered; the description adds real value by disclosing the latency ('slow; waits'), the per-target result shape, and the confirmToken gating mechanism that explains how the destructive action is controlled. It doesn't say what happens to an existing page at a colliding slug or what authorization is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each earning its place: the sibling comparison, the latency/return behavior, and the destructive two-phase flow. The most consequential information (live publication + confirmation) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter destructive tool with no output schema, the description covers purpose, alternative, latency, return granularity, and the confirmation protocol well. Remaining gaps — slug-collision behavior, per-target failure handling, and rate limits — are secondary but non-trivial for a publish action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 58%, so the schema documents roughly half the parameters (site, targets, baseKeyword, etc.). The description adds usage meaning for confirmToken (omit on first call to get a summary and token), which is useful, but says nothing about targets, templatePageId, templatePurpose, or the other 9 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource (publish location pages) and anchors it against the sibling generate_location_page_drafts, making the key distinction — pages go live on WordPress immediately — explicit. An agent can separate this from the draft-generating sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The comparison to generate_location_page_drafts implicitly routes the agent: use that tool for drafts, this one for live pages. It also spells out the two-phase confirmation workflow. It stops short of an explicit 'when not to use' (e.g. don't call without reviewing the first-call summary).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recheck_indexingRecheck indexing nowAInspect

Re-runs the indexing check immediately (sitemap fetch, Google Search Console sitemap status, Bing submission) instead of waiting for the weekly run. Use after fixing a sitemap or reconnecting Search Console. Free, but limited to once per hour per site (429 with retryAfterMinutes). Blocks for a few seconds.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing cost ('Free'), a hard rate limit (once per hour per site, with 429 + retryAfterMinutes), and latency behavior ('Blocks for a few seconds'). These are exactly the operational facts the annotations (readOnlyHint=false, idempotentHint=false) cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct payload: what it does, when to use it, and its cost/limit/latency profile. The action and trigger are 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a fire-and-forget job trigger with no output schema, the description covers cost, limits, and blocking behavior well. It does not say where the resulting status can be observed (presumably get_indexing_status) or what happens to an in-flight weekly run, which is a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema fully documents 'site'. The description adds nothing about the parameter's format or the enumeration of valid sites, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (re-runs) and resource (the indexing check) and enumerates the concrete actions performed (sitemap fetch, GSC sitemap status, Bing submission). It is clearly a trigger/action tool rather than the read-only status counterpart, though it never names a sibling such as get_indexing_status to make the contrast explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete trigger condition: 'Use after fixing a sitemap or reconnecting Search Console,' which tells the agent when this is the right call. The hourly limit implies when not to call it, but no alternative tool is named for cases where the budget is exhausted or the agent merely wants to read status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regenerate_outlineBuilder: redo the outlineAInspect

Article Builder, step 2 again with feedback (what to change: sections to add, drop, reorder, tone). Pass the original prompt too so the brief is kept. One LLM call. Returns a fresh outline for write_from_outline.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
urlsNoSource articles to draw on (required for remix, max 1 there)
titleYes
promptYesThe original article brief
feedbackYesWhat to change about the outline
locationIdNoBusiness location id to focus on (multi-location sites)
articleTypeNosmart-composer (default) writes fresh; remix rewrites the article at `urls`
useExternalLinksNoCite outside sources (default true)
useInternalLinksNoLink to the site's own pages (default true)
useYouTubeVideosNoEmbed relevant YouTube videos (default false)
youtubeChannelUrlNoPrefer videos from this channel (youtube.com/@handle or youtube.com/channel/UC...)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-idempotent, non-destructive. The description adds real context beyond them: cost/latency ('One LLM call') and the fact that it produces a fresh outline. But it does not state whether an existing draft/outline must already exist, whether the previous outline is overwritten, or any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the pipeline role, followed by the required inputs and the return value. The parenthetical on `feedback` earns its space; only 'step 2 again' is slightly cryptic on first read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters but 91% schema coverage and no output schema, the description supplies what the structured data cannot: the regeneration intent, the two key required inputs, the single-LLM-call cost, and the handoff to write_from_outline. It omits the role of `site`/`title` and the optional link/media flags, but those are covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 91%, so the baseline is 3, and the description goes further by expanding what `feedback` should contain (sections to add, drop, reorder, tone), which the schema only labels as 'What to change about the outline'. It also clarifies why `prompt` is required (to keep the brief).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('redo the outline', step 2 again) and places it in the Builder pipeline relative to the sibling that consumes its output (write_from_outline). It implies the contrast with the initial generate_outline via 'again', though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use: when you have `feedback` describing what to change, and instructs passing the original `prompt` to preserve the brief. It names the downstream consumer write_from_outline. It does not explicitly say when to prefer generate_outline (the first pass) over this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regenerate_research_briefRegenerate the research briefAInspect

Rebuilds the research brief from the live site, products, Search Console queries and manual keywords (one LLM call plus page fetches; blocks 20-60 seconds). Entries a user added are carried forward. keepScalars=true keeps the current businessSummary, audience and geography text. Use when the business changed or the brief looks off; otherwise edit single fields with update_research_brief.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
keepScalarsNoKeep the current summary, audience and geography text.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it is non-readonly and non-destructive but say nothing about cost, latency, or data preservation; the description fills all three gaps — one LLM call plus page fetches, 20-60 second blocking behavior, and that user-added entries are carried forward. That is exactly the context an agent needs before invoking an expensive blocking operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero padding: what it does, what it preserves and how long it takes, and when to prefer it over the sibling. The cost/latency warning is front-loaded in the first sentence rather than buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-readonly, non-idempotent, blocking regeneration tool with no output schema, the description covers inputs, runtime cost, and preservation semantics completely. It stops short of saying what the call returns or how to inspect the result, though get_research_brief is available as a companion.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the schema already documents site and keepScalars. The description's explanation of keepScalars ('keeps the current businessSummary, audience and geography text') is nearly a restatement of the schema text, so it adds little beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Rebuilds) plus resource (the research brief) and enumerates the exact inputs it draws from: live site, products, Search Console queries, and manual keywords. This clearly separates it from the sibling update_research_brief, which the description explicitly names as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use condition ('when the business changed or the brief looks off') and an explicit when-not with the alternative tool ('otherwise edit single fields with update_research_brief'). The routing decision is fully determined without opening any schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

regenerate_sectionBuilder: rewrite one sectionAInspect

Article Builder: rewrite a single section of a written article (pass the section object from write_from_outline) with instructions (what to fix or change). One LLM call. Returns the replacement section; swap it into the article's sections before publish_article_from_builder. Keys accepted in section: id, title, content, imageUrl, youtubeVideoId.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
urlsNoSource articles to draw on (required for remix, max 1 there)
titleYes
promptYesThe original article brief
sectionYes
locationIdNoBusiness location id to focus on (multi-location sites)
articleTypeNosmart-composer (default) writes fresh; remix rewrites the article at `urls`
instructionsYes
useExternalLinksNoCite outside sources (default true)
useInternalLinksNoLink to the site's own pages (default true)
useYouTubeVideosNoEmbed relevant YouTube videos (default false)
youtubeChannelUrlNoPrefer videos from this channel (youtube.com/@handle or youtube.com/channel/UC...)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark it non-readonly, non-idempotent, non-destructive but say nothing about persistence or cost. The description adds two genuinely useful behavioral facts: it is a single LLM call, and it does NOT mutate the article in place — the caller must swap the returned section back in. That non-persistence disclosure is the key behavior an agent needs and is not derivable from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tight, front-loaded, and every clause carries signal: purpose, input source, instruction meaning, cost, return contract, and workflow order. The final key-enumeration list is mildly redundant with the schema, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with no output schema, the description covers the essentials: what it does, what to pass, that it returns a replacement section, and that the caller must persist it. It does not document error/permission behavior or rate limits, but given the closed-world, non-destructive annotation profile, nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so most parameters are already documented structurally; the schema spells out `urls`, `articleType`, `useExternalLinks`, and the section sub-keys. The description adds meaning for `instructions` ('what to fix or change') and enumerates the accepted `section` keys, but leaves other inherited builder params (site, prompt, locationId) unexplained. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('rewrite a single section of a written article') and scopes it precisely against the sibling family (write_from_outline produces the section, regenerate_outline is a different granularity). The title 'Builder: rewrite one section' reinforces it without being a tautology. An agent can distinguish this from write_article_now or update_article without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the input source ('pass the section object from write_from_outline') and the downstream step ('swap it into the article's sections before publish_article_from_builder'), giving a clear workflow position. It lacks an explicit 'when not to use' or named alternative (e.g., when to edit manually vs regenerate), so it stops 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.

regenerate_webhook_tokenRegenerate a webhook's auth tokenA
Destructive
Inspect

Invalidates the old signing token immediately and returns the new one ONCE. The receiver must be updated or deliveries will fail verification. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
webhookIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond annotations: it names the destroyed artifact (the old signing token, invalidated immediately), the one-time-only exposure of the new token, the downstream breakage (failed signature verification), and the exact two-call confirmation protocol. The destructiveHint annotation is confirmed and substantially enriched rather than merely restated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler, and the highest-impact fact (immediate invalidation, one-time return) is front-loaded ahead of the confirmation mechanics. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent mutation with no output schema, the description supplies the return shape (summary + confirmToken), the call protocol, and the consequence of inaction. The only residual gap is webhookId semantics, undocumented in schema and description alike.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: confirmToken is documented in both schema and description (the description reinforces that it must come from a prior call with the same arguments), but webhookId has no description anywhere and the description does not clarify it either. Baseline 3 is appropriate since the schema carries most of the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (regenerate a webhook's auth token) and immediately defines the effect: the old signing token is invalidated and the new one is returned once. This is clearly distinguishable from sibling webhook tools such as update_webhook, test_webhook, and retry_webhook_delivery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the required operational context: the receiver must be updated or deliveries will fail verification, and the two-step summary/confirmToken flow is spelled out. It does not explicitly contrast with update_webhook or state prerequisites (permissions, plan tier), so it stops short of full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_held_articleRelease a held articleA
Destructive
Inspect

An article in status "held" was written but a content guardrail flagged it, so it will never publish on its own. action: "publish" approves it as written (publishes on its publish date, as a CMS draft when post-as-draft is on); action: "regenerate" throws the body away and writes it again (counts as another article). Read it first with get_article. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYes
siteYesThe site to act on. One of: fencestainingdenver.com.
actionYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, and the description adds substantial context on top: it explains the two-step confirmToken flow (first call returns summary+token), that regenerate discards the body and counts as another article, and how publish interacts with post-as-draft. This is real added value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the essential 'what is a held article' context, then defines each action and the destructive confirmation flow in dense but well-organized sentences. Text is slightly heavy but every clause carries needed meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers what an agent needs: the trigger condition, the action semantics, the read-first dependency, and the confirmToken round-trip. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: 'site' and 'confirmToken' are documented in the schema, but the description supplies the critical missing semantics for the 'action' enum, explaining exactly what publish and regenerate do. It doesn't describe 'id', but that is reasonably implied by the get_article reference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and defines what a 'held' article is (written but flagged by a content guardrail, will never publish on its own), making the tool's role distinct from siblings like republish_article or mark_published. The two action modes are spelled out, so an agent can recognize it without reading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use it (held articles that won't self-publish) and gives a clear prerequisite workflow: read it first with get_article, then choose publish vs regenerate. It doesn't explicitly contrast with sibling tools like republish_article, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remix_from_urlsRemix an existing articleAInspect

Run the whole Article Builder in one go for a rewrite: scrape the article at urls, generate titles (or use title), build the outline and write the full article with a fresh angle from prompt. Slow (three generation steps, several minutes) and spends roughly a full builder session of LLM budget. Saves the result as a builder draft and returns { draftId, title, titles, outline, article }. Nothing is published: review it, then publish_article_from_builder with the draftId.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
urlsYes
titleNoUse this title instead of generating options
promptYesThe new angle, audience and what to keep or drop
locationIdNo
useExternalLinksNo
useInternalLinksNo
useYouTubeVideosNo
youtubeChannelUrlNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: warns it is 'Slow (three generation steps, several minutes)', discloses budget cost ('roughly a full builder session of LLM budget'), states the side effect ('Saves the result as a builder draft'), and confirms 'Nothing is published' — consistent with destructiveHint=false and 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action, followed by cost/latency warnings and then the output shape plus publishing hand-off. Every sentence carries distinct, decision-relevant information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a heavy multi-step tool with no output schema, it supplies the return shape { draftId, title, titles, outline, article } and the next-tool hand-off, which is what an agent needs most. The only real gap is the undocumented optional link/YouTube toggles that affect generation behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (six of nine params undocumented, including locationId, useExternalLinks, useInternalLinks, useYouTubeVideos, youtubeChannelUrl). The description only touches `urls` (article to scrape), `title` and `prompt`, and its notes on title/prompt largely restate the schema's own descriptions, so it does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Run the whole Article Builder in one go for a rewrite') with the resource being remixed (the article at `urls`). It implicitly and clearly distinguishes itself from the step-by-step siblings (generate_titles, generate_outline, write_from_outline) by framing itself as the whole pipeline in one call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use it (rewriting an existing article at a URL with a fresh angle) and routes the agent to the correct follow-up: 'Nothing is published: review it, then publish_article_from_builder with the draftId.' It doesn't explicitly name the manual step-by-step alternatives for comparison, so the contrast with siblings is inferable rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_dutchie_locationDisconnect a Dutchie locationA
Destructive
Inspect

Removes one connected Dutchie store and its API key from the site. Its products stop syncing. Use get_dutchie_status for the location reference. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
locationRefYesThe location id or retailer id from get_dutchie_status.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true but the description goes further: it names exactly what is destroyed (the store and its API key), the downstream effect (products stop syncing), and the non-obvious two-phase confirmation behavior where the first call only returns a summary and confirmToken. That is material 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and its consequence, followed by the prerequisite and the confirmation protocol. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 3-parameter tool with no output schema, the description covers the action, its side effects, the source of the location reference, and the mandatory confirmation handshake. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds flow-level meaning: confirmToken is omitted on the first call and used on the retry, and locationRef must come from get_dutchie_status. This clarifies how the parameters interact rather than restating their types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Removes one connected Dutchie store and its API key') plus the consequence ('Its products stop syncing'). This clearly separates it from siblings like disconnect_bing, disconnect_gsc, and delete_business_location.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the prerequisite for the required locationRef ('Use get_dutchie_status for the location reference') and explains the required two-call confirmation sequence. It does not explicitly say when not to use it (e.g., vs sync_dutchie or connect_dutchie), but the operational context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_existing_pageRemove an existing pageAInspect

Remove one page from the list of existing pages Blawgy keeps for this site (for example a URL imported by mistake, or a page that no longer exists). It stops counting when the plan checks for duplicates. Does not touch the website itself. Undo with restore_existing_page.

NameRequiredDescriptionDefault
urlYesThe page URL, as shown by list_existing_pages
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavioral context beyond annotations: the removal only affects duplicate detection ('It stops counting when the plan checks for duplicates') and explicitly does not touch the live website, which reconciles with destructiveHint=false. It does not address the non-idempotent hint (what happens if the URL was already removed) or what the response reports.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, then the side-effect boundary, then the recovery path. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, output-schema-less tool, the description covers scope, side effects, and recovery. Minor gaps: whether removing an already-absent URL errors out (idempotentHint=false) and whether the page can be re-imported afterward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, both parameters are already documented, including the note that the URL should come from list_existing_pages. The description adds no format, normalization, or matching-behavior detail (e.g. trailing slash or case sensitivity) beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource scoped precisely: removes one page from Blawgy's internal existing-pages list for a site. The parenthetical examples and the contrast with restore_existing_page and list_existing_pages make it unmistakable among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger cases ('a URL imported by mistake, or a page that no longer exists') and names the undo path via restore_existing_page. It does not explicitly state when not to use it versus siblings like remove_plan_entry or delete_article, but scope is clear enough to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_my_keywordsRemove my keywordsAInspect

Removes keywords from the customer's own list (case-insensitive match). Removed keywords go to the archive (Settings > Keywords > Archived) with their last known volume and difficulty; see them with list_archived_keywords and put them back with restore_archived_keywords. Does not touch articles already scheduled or published for them; to stop a keyword from ever being planned again use exclude_keyword. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
keywordsYesKeywords to remove.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description explains that removal is reversible via an archive, preserves last known volume and difficulty, and does not disturb related articles. This aligns with destructiveHint=false and adds meaningful behavioral context about side effects and recovery.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action, followed by archive behavior, article impact, and the alternative tool. Every sentence carries relevant information, including the billing note 'Free.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no output schema, the description covers the action, reversibility, recovery paths, side effects, and alternative behavior. Nothing an agent needs in order to invoke it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds useful semantics by specifying that keyword matching is case-insensitive. It does not add much about the site parameter, but the schema already documents it fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it removes keywords from the customer's own list. It also clarifies case-insensitive matching and explicitly distinguishes itself from exclude_keyword, so an agent can identify its role without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage boundaries: removed keywords are archived rather than permanently lost, they can be seen with list_archived_keywords and restored with restore_archived_keywords, and exclude_keyword should be used instead when a keyword must never be planned again. It also states that scheduled or published articles are not affected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_plan_entryRemove a plan entryA
Destructive
Inspect

Delete an unpublished entry from the plan (scheduled, written, held, failed or draft). The row and any written body are gone for good; a queued write is cancelled. Published articles cannot be removed here (use delete_article). Use exclude_topic as well if the planner should never pick this keyword again. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYesEntry (article) id from get_plan
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint annotation by stating exactly what is destroyed (the row and any written body), the side effect on in-flight work (a queued write is cancelled), and the non-trivial two-call confirmation protocol with confirmToken. This is the operational detail an agent needs before invoking 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the destructive scope, then alternatives, then the confirmation protocol across tightly packed sentences with no filler. Length is appropriate for a destructive operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still explains the first-call return (a summary plus confirmToken) and the required second call, covering the tool's full call sequence. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so id, site, and confirmToken are already documented in the schema, including the confirmToken's two-call purpose. The description restates the confirm flow rather than adding new field-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (delete/remove) and resource (plan entry) plus the precise scope of entry types affected (scheduled, written, held, failed, draft). It explicitly demarcates from the sibling delete_article, so an agent can distinguish the two without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use (unpublished entries), when-not (published articles -> use delete_article), and a companion action (use exclude_topic if the keyword should never be re-picked). Routing to alternatives is fully spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

republish_articleRepublish an articleA
Destructive
Inspect

Push a published or failed article to the website again (re-sends the current Blawgy content; use after a failed publish or when the live post drifted). Only for published or failed articles with a body. Runs in the background; check list_articles for the status afterwards. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYes
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, and the description reinforces this with the two-step confirmToken protocol, telling the agent the first call is only a summary. It further discloses the async/background execution model and how to verify the outcome, which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the action and eligibility, then the async behavior, then the destructive confirmation requirement. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers everything an agent needs: eligibility, content source, background execution, the confirmation handshake, and where to check the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, with site and confirmToken documented in the schema. The description adds real meaning to confirmToken by explaining the two-call flow and that it must match the prior arguments, going beyond the schema text. The 'id' parameter remains undocumented in both places, which is the only gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Push a published or failed article to the website again'), specifies the source of content ('re-sends the current Blawgy content'), and clarifies it differs from a first-time publish by naming the eligible article states. An agent can distinguish it from publish_draft, mark_published, or reschedule_article without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('after a failed publish or when the live post drifted') and an eligibility restriction ('Only for published or failed articles with a body'). It also routes the agent to the follow-up tool: 'check list_articles for the status afterwards'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_refreshRefresh a page that covers a keywordAInspect

Refresh one of the site's pages to cover a keyword it already owns, instead of writing a new article that would compete with it (for a keyword get_keywords or keyword research shows as covered by a page). Give the keyword and the page as url (or blogId for an article Blawgy wrote, or sitePageId from list_existing_pages). The refresh is accepted at once: an article Blawgy wrote gets a smart-update draft that waits for review in Updates (Pro+), any other page gets its update brief (read it with get_refresh_brief). A page that already has a refresh on the plan returns that refresh with the keyword added. Does not use a posts-per-week slot.

NameRequiredDescriptionDefault
urlNoFull URL of the page on this site
siteYesThe site to act on. One of: fencestainingdenver.com.
blogIdNoArticle id, for a page written by {{brand}}
keywordYesThe keyword the page should also cover
sitePageIdNoExisting page id from list_existing_pages

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real lifecycle context beyond the annotations: the request is accepted immediately, produces a smart-update draft queued in Updates (Pro+) for Blawgy-written articles or an update brief readable via get_refresh_brief otherwise, and does not consume a posts-per-week slot. Notably it discloses that re-requesting a page with an existing refresh returns that refresh with the keyword added, which is meaningful given idempotentHint=false. It stops short of stating permission or auth requirements, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose and the competing-alternative rule, then adds behavior in a compact sequence. It is dense and slightly long, but every clause carries distinct information (alternatives, identifier options, async behavior, quota exemption) rather than repeating schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden and does: it explains the smart-update draft, the update brief and its reader tool, and the re-request behavior. Combined with annotations covering the safety profile, nothing needed 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining how the three page-identifier parameters relate: use url, or blogId for a Blawgy-written article, or sitePageId from list_existing_pages. That disambiguation is not spelled out in the schema itself, so it earns above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Refresh one of the site's pages') and immediately scopes it against the alternative behavior ('instead of writing a new article that would compete with it'). An agent can distinguish this from write_article_now or generate_outline without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('for a keyword get_keywords or keyword research shows as covered by a page'), the negative case (don't write a competing new article), and names the sibling tools that route here (get_keywords, list_existing_pages, get_refresh_brief). Nothing about when to invoke 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.

reschedule_articleChange an article's publish dateA
Destructive
Inspect

Move an article to a new publish date. An unwritten entry dated in the past is picked up by the next writing run and publishes at once, so past dates are refused unless the article is already on the CMS (draft or published). The date on the CMS itself is not changed; the writing queue order is not re-sorted until the next run. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYes
siteYesThe site to act on. One of: fencestainingdenver.com.
publishDateYesISO date-time
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and non-idempotent, but the description adds material behavior the annotations do not: the two-step confirmToken flow, that the CMS date is not actually changed, that the writing queue is not re-sorted until the next run, and the past-date refusal rule. This is unusually rich disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded, and each subsequent sentence carries distinct behavioral information with no filler. It is slightly dense but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still explains what the first call returns (a summary and confirmToken) and the constraints on dates. Combined with annotations covering the safety profile, an agent has everything needed to invoke this tool correctly, including the two-step confirmation protocol.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and already documents site, publishDate, and confirmToken. The description adds the semantics of the confirmToken handshake (first call returns summary + token, second call proceeds), which clarifies why the parameter exists beyond the schema text. The undocumented id parameter is implicitly covered by "an article."

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Move an article to a new publish date") that clearly separates it from siblings like update_article, mark_published, and republish_article. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies real conditional guidance about past dates (refused unless the article is already on the CMS as draft/published), which is genuine when-to-use context. However, it never names or contrasts with alternatives such as update_article or republish_article, so the routing decision against siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reschedule_overdueReschedule overdue entriesAInspect

Move every unwritten entry dated before the current week onto the next open days, oldest first, one article per day, skipping days another entry already holds and days past a trial's visible window. This is what the dashboard's "Reschedule all overdue" button does. dryRun: true returns the planned moves without changing anything.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
dryRunNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply generic flags (readOnly=false, idempotent=false, destructive=false); the description adds real behavioral detail: oldest-first ordering, one article per day, skip rules for occupied days and past-window days. It also discloses the dryRun preview behavior, which is genuinely useful for a mutating tool. It stops short of permissions 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and its ordering rules, then the dashboard analogy, then the dryRun note. Every sentence carries information, though the first sentence is dense enough to warrant a re-read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating batch tool with no output schema and only generic annotations, the description covers what gets moved, ordering, skip rules, and preview semantics — enough to call it safely. Minor gaps remain around required state (e.g., autopilot mode) and error/edge behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% — the required `site` param is documented in the schema, but `dryRun` has no schema description. The description compensates by explaining exactly what `dryRun: true` does (returns planned moves without changing anything), adding meaning beyond the bare boolean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (move) plus the exact resource and scope (every unwritten entry dated before the current week), and the batch nature distinguishes it from the singular reschedule_article sibling without naming it. An agent knows precisely what this tool acts on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trigger condition (overdue, unwritten entries) is clear, and the dashboard-button analogy anchors it to a known operation. However, it never names reschedule_article as the single-entry alternative or states any when-not-to-use condition, so 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.

resend_inviteResend an invitationA
Destructive
Inspect

Sends the invitation email again for a pending invite from list_team. At most once per hour per invitation. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
inviteIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real value beyond the annotations: the per-invitation hourly rate limit and the two-phase confirm flow ('first call returns a summary and a confirmToken; call again with confirmToken to proceed'), which is essential to invoking the tool correctly. It labels the operation destructive consistently with destructiveHint=true, but never explains what makes it destructive (an email is sent to a real recipient) or what failure modes exist. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no filler. The purpose and rate limit come first, and the non-obvious two-step confirmation requirement is front-loaded rather than buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with no output schema, the description covers what the first call returns (summary + confirmToken), the rate limit, and the pending-invite precondition. It stops short of describing the result of the confirming call or error cases such as an invite that is no longer pending.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: site and confirmToken are documented in the schema, but inviteId has no schema description. The description compensates by telling the agent where inviteId comes from (list_team) and reiterates the confirmToken contract, adding meaning the bare schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Sends the invitation email again for a pending invite') and points at the sibling list_team as the source of the inviteId. It clearly scopes the action to an existing pending invite, though it never explicitly contrasts itself with invite_teammate or revoke_invite, which are the tools an agent would most likely confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear triggering context ('a pending invite from list_team') and a hard constraint ('At most once per hour per invitation'), which tells the agent when the call will be accepted. It does not name alternative tools or state when not to use this one (e.g., for already-accepted or revoked invites).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_archived_keywordsRestore archived keywordsAInspect

Moves keywords from the archive (list_archived_keywords) back onto the end of the customer's own list and queues a fresh volume, difficulty and coverage lookup, so they read "researching" in list_my_keywords for a few minutes. Keywords that are not archived are reported in notArchived and left alone. This is not restore_keyword, which lifts an exclusion. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
keywordsYesArchived keywords to restore (case-insensitive match).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses asynchronous side effects (a fresh volume/difficulty/coverage lookup is queued, keywords show 'researching' for a few minutes), partial-success handling ('notArchived ... left alone'), and the zero-cost trait. Annotations only give the safety profile (non-readonly, non-destructive, non-idempotent); the description supplies the operational behavior an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences, front-loaded with the core action, then side effects, then the disambiguation. 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.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter mutation tool with no output schema, the description covers the action, its async consequences, the partial-failure return field (notArchived), cost, and sibling disambiguation. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (site, keywords) are already documented, including the case-insensitive matching note. The description adds the ordering nuance ('onto the end of the list') but no syntax or format detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (moves/restores) plus resource (archived keywords), and it names the exact source list (list_archived_keywords) and destination (list_my_keywords). It also explicitly distinguishes itself from the similarly-named restore_keyword sibling, so an agent can disambiguate without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description routes the agent clearly by naming restore_keyword as the wrong choice ('lifts an exclusion') and pointing at list_archived_keywords as the source. It adds a useful 'Free' cost note. It stops short of stating explicit preconditions (e.g., what happens if the keyword is already on the list), so it's strong but not fully prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_existing_pageRestore a removed existing pageAInspect

Undo remove_existing_page: the page counts again when the plan checks new ideas for duplicates. See removed pages with list_existing_pages kind "removed". Free.

NameRequiredDescriptionDefault
urlYesThe removed page URL, as shown by list_existing_pages kind "removed"
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive, non-idempotent mutation. The description adds meaningful behavior beyond that: the page counts again during duplicate checks, and the operation is free.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and inverse sibling, then gives the discovery path and pricing in compact clauses. No sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter restore tool with full schema coverage and annotations, the description supplies the important behavioral effect and how to find the target page. No output schema exists, so return-value explanation is not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description reinforces where the URL comes from, but adds no syntax or format details beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (restore) and resource (existing page), frames it as the inverse of remove_existing_page, and explains the effect on duplicate checking. An agent can distinguish it from removal/listing siblings immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to undo remove_existing_page and points to list_existing_pages kind "removed" for finding candidates. It gives clear usage context but does not state any when-not conditions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_keywordRestore an excluded keyword or topicAInspect

Removes a keyword or topic from the exclusion list so the planner may use it again. Give exactly one of keyword or topic. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
topicNoAn excluded topic (cluster label) to restore.
keywordNoAn excluded keyword to restore.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, and the description does not contradict them. It adds real value by naming the mutated resource (the exclusion list) and the billing trait ("Free"), but it says nothing about the non-idempotent behavior the annotation flags or what happens if the term isn't currently excluded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, purpose front-loaded, no filler. Even the terse "Free." fragment carries an actionable billing fact rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should carry the behavioral load, and it covers purpose, the key parameter constraint, and cost. It falls short only on failure/idempotency behavior for a non-read-only, non-idempotent mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds a constraint the schema itself does not enforce: exactly one of keyword or topic is required, with the other omitted. That mutual-exclusion rule is materially useful beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (removes), the resource (keyword or topic from the exclusion list), and the downstream consequence (the planner may use it again). This is clearly the inverse of exclude_keyword/exclude_topic, so an agent can place it against those siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the description makes clear it undoes an exclusion, but it never states when to reach for it versus exclude_keyword, exclude_topic, or dismiss_topic, nor any prerequisite such as the term actually being excluded. The 'Give exactly one of keyword or topic' line is a constraint, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_photo_originalRestore a photo's original uploadAInspect

Swaps the cutout back for the picture as uploaded. Use when background removal clipped the product.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
photoIdYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, and idempotent=false, so the safety profile is covered. The description adds useful semantics about what changes (cutout replaced by the original upload), but says nothing about whether the cutout is recoverable, required prior state, or failure modes, so it earns only modest credit beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, action first then condition, with zero filler. The reason-to-use clause is front-loaded after the core action and nothing wastes space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter, non-destructive mutation with no output schema and safety already covered by annotations, the description is nearly complete: it says what it does and when to invoke it. It omits edge behavior such as what happens if the photo has no generated cutout.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: site is documented with its allowed value, but photoId has no description in either schema or description text. The description references "the cutout" and "the picture" without mapping them to photoId, so it does not compensate for the coverage gap. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Swaps the cutout back for the picture as uploaded" states a specific action and resource, making clear this reverses background removal rather than deleting (delete_photo) or updating (update_photo) a photo. It does not name any sibling to differentiate against, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when background removal clipped the product" gives a concrete trigger condition for selecting this tool. It offers no explicit when-not or named alternative (e.g., update_photo), 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.

resume_autopilotResume the planA
Destructive
Inspect

Resume automatic writing and publishing after pause_autopilot. Entries whose dates have passed write on the next run and publish; call reschedule_overdue first if they should be spread out. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=true and idempotentHint=false; the description goes well beyond by spelling out the two-step confirm flow (first call returns a summary and confirmToken, second call with the token proceeds) and the concrete side effect that overdue entries write on the next run and publish immediately. This is exactly the context needed to invoke a destructive tool safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler, front-loading the core action and the destructive confirm requirement before the optional reschedule guidance. Every clause carries operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully explains that the first call returns a summary plus token, and it discloses the publishing side effect of resuming. Minor gaps remain (e.g., what happens if the token is never supplied), but nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both site and confirmToken are already documented in the schema itself. The description restates the confirmToken handshake but adds no new syntax or format detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (resume) plus the resource and effect (automatic writing and publishing), and anchors it to the sibling state it reverses (after pause_autopilot). An agent can distinguish this from pause_autopilot or reschedule_overdue without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly conditions usage on a prior pause_autopilot and names a precondition alternative ('call reschedule_overdue first if they should be spread out'), which is genuine when/when-not guidance. It stops short of stating any exclusion for when NOT to resume at all, so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retry_webhook_deliveryRetry a failed webhook deliveryAInspect

Re-sends one delivery from get_webhook_history to its webhook URL. Pass the webhook the delivery belongs to.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
historyIdYes
webhookIdYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, covering the safety profile. The description adds that the effect is an outbound re-send to the webhook URL, which is useful, but it does not warn that a non-idempotent retry can produce duplicate deliveries at the endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, the action front-loaded and the parameter hint trailing. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple three-parameter mutation, but with no output schema and no annotations about side effects, the description omits what happens on success/failure and the duplicate-delivery risk implied by idempotentHint=false.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%: site is documented while webhookId and historyId are not. The sentence 'Pass the webhook the delivery belongs to' adds real meaning for webhookId, but historyId's provenance is left implicit and neither field's format is clarified. It partially compensates for the coverage gap but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (re-sends) and resource (one delivery) and scopes it to a known source, get_webhook_history. An agent can distinguish this from test_webhook or get_webhook_history. It stops short of explicitly naming those siblings as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage by referencing get_webhook_history as the source of the delivery, so the workflow context is inferable. However, it never states when to retry vs. when to fall back to test_webhook, nor any preconditions such as the delivery needing to be in a failed state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revert_post_imageRevert a post's imageA
Destructive
Inspect

Puts back the featured image the post had before the last apply_post_image, including on the CMS. Only possible while get_post_image reports canRevert. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
postIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which only flag destructiveHint=true), the description discloses the exact scope of destruction (it reverts the prior image and propagates that to the CMS) and the non-obvious two-step confirmation protocol: the first call returns a summary plus a confirmToken, and the call must be repeated with that token to proceed. This is material behavior an agent cannot infer 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct payload: what is reverted and where, the eligibility precondition, and the destructive confirmation flow. The destructive warning is front-loaded before the procedural detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers the safety-relevant mechanics (destructive scope, confirmation handshake, eligibility check) and even sketches the first-call return value. It omits any note on permissions or how to verify the revert landed, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%; confirmToken is already documented in the schema, but the description reinforces its lifecycle (obtained from a prior call, omitted on the first call), and 'the last apply_post_image' clarifies what postId's revert target actually is. The undocumented postId remains self-evident, so this adds meaning without fully compensating for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and resource ('Puts back the featured image the post had before the last apply_post_image'), explicitly ties itself to the sibling it undoes (apply_post_image), and notes the effect extends to the CMS. An agent can distinguish it from apply_post_image, upload_post_image, and restore_photo_original without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit precondition — 'Only possible while get_post_image reports canRevert' — which tells the agent when the call is valid and routes it to the sibling that reports eligibility. It stops short of naming the alternative to use when canRevert is false (e.g. apply_post_image), so it is clear context rather than full when/when-not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revert_updateRevert a published updateA
Destructive
Inspect

Restore the page to the version stored before the update was published. part picks what to undo: "search" puts back the old title, H1 and meta description and keeps the new body; "content" puts back the old body (keeping the current H1) and keeps the new title and meta; "all" (the default) restores both. Public and immediate. Undoing every changed part marks the update reverted; undoing one leaves it published with that part marked reverted. Returns status and revertedParts. For published updates, and for flagged ones (an automatic revert that could not be pushed is retried here). A part the update never changed answers 422. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
partNosearch, content or all (default all)
siteYesThe site to act on. One of: fencestainingdenver.com.
updateIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: 'Public and immediate', the confirmToken two-step flow with a summary on the first call, the resulting state change (fully reverted vs. still published with one part reverted), and the 422 failure mode. It is fully consistent with destructiveHint=true and idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but nearly waste-free, front-loaded with what gets restored. The main structural weakness is that the confirmToken requirement — critical to invoking the tool correctly — is buried in the final sentence rather than stated before or alongside the destructive note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description names the return fields (status and revertedParts), covers error behavior, applicable states, and the confirmation workflow. An agent has everything needed to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and the schema only lists the enum values for `part`, but the description spells out exactly what each value restores (search = old title/H1/meta keeping new body; content = old body keeping current H1; all = both) and confirms the default. It also clarifies the confirmToken lifecycle beyond the schema's phrasing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource up front: restore the page to the pre-publish version. It also scopes applicability ('For published updates, and for flagged ones'), which implicitly separates it from the draft-side siblings like edit_update_draft, draft_update, and publish_draft.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: published updates and flagged updates whose automatic revert could not be pushed. It also implies when the call is invalid (a part the update never changed answers 422). It never names an alternative sibling explicitly, so it stops short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_inviteRevoke an invitationA
Destructive
Inspect

Withdraws a pending invitation so its link stops working. It does not remove a teammate who already accepted. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
inviteIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, but the description goes well beyond them by disclosing the two-phase protocol: the first call returns only a summary and confirmToken, and nothing is revoked until the token is passed back. That is exactly the behavioral detail an agent needs to avoid a half-finished mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each doing distinct work: purpose, exclusion, and protocol. The destructive two-step warning is stated up front rather than buried, and there is no restatement of the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still tells the agent what the first call returns (summary + confirmToken) and how to complete the operation. Combined with annotations covering the safety profile, nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and confirmToken is already documented in the schema, but the description ties it to the actual workflow ('call again with confirmToken to proceed'), reinforcing the required sequencing. It says little about inviteId, though 'pending invitation' implicitly scopes it to an invitation identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Withdraws a pending invitation') plus the concrete effect ('its link stops working'), and immediately bounds the scope with 'It does not remove a teammate who already accepted.' That negative clause separates it from invite_teammate and any teammate-removal tool without the agent having to open a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly establishes the condition for use — the invitation must still be pending — and rules out the adjacent case of an already-accepted teammate. It does not name a sibling alternative (e.g. resend_invite for the inverse intent), 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.

run_ai_mentions_scanRescan AI mentions (Pro+)AInspect

Forces a fresh AI-mentions scan now instead of waiting for the weekly job. Pro+ only. Spends a DataForSEO scan, so one scan per site per hour (a 429 includes nextRefreshAvailable). Blocks until the scan is saved (usually under a minute) and returns the new snapshot summary.

NameRequiredDescriptionDefault
llmNoScan one model only (default all).
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag a non-read, non-idempotent write; the description goes well beyond that by disclosing the paid resource cost (a DataForSEO scan), the rate-limit in prose and the 429 error shape with nextRefreshAvailable, the blocking/latency behavior (usually under a minute), and the Pro+ entitlement requirement. This is exactly the operational 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each earning its place, with the core action and the 'now vs weekly' distinction front-loaded before cost, limits, and blocking behavior. No repetition of the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still characterizes the return ('the new snapshot summary') and covers cost, quota, error signaling, latency, and entitlement. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented (including the llm enum and the site value). The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (force a fresh AI-mentions scan now) against a named alternative behavior (the weekly job), making it clearly distinct from the read-side sibling get_ai_mentions. An agent can identify the resource and the effect without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use this over the default path ('now instead of waiting for the weekly job') and gives the gating conditions (Pro+ only, one scan per site per hour). It stops short of explicitly naming get_ai_mentions as the read alternative, so routing is inferred rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_keyword_researchRun keyword researchAInspect

Starts keyword research for the site: the quick pass runs inline (the call blocks about 30-60 seconds and returns its topics) and the deep pass continues in the background for a few minutes, then tops up the content plan automatically. Spends DataForSEO credits, so a complete deep run from the last 30 days is reused (status "fresh", with nextRunAllowedAt); a forced re-run is only available from the dashboard. Returns status "processing" if a run is already going. Poll with get_research_status, then read results with get_keywords.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: the call blocks 30-60s, the deep pass runs in the background, DataForSEO credits are consumed, recent complete runs are reused with status 'fresh' and nextRunAllowedAt, and status 'processing' is returned if a run is in flight. These are exactly the operational facts an agent needs and none are in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its two execution modes, and every clause carries real information (timing, credits, caching, status values, next steps). It is somewhat dense with nested parentheticals, which slightly hurts readability but not substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent action tool with no output schema, the description covers the async lifecycle, the status values returned, the credit cost, the caching/reuse rule, and the follow-up tools. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter ('site') and the schema already documents it at 100% coverage, so the description does not need to add parameter detail. Baseline 3 applies since the schema carries the semantics and the description adds nothing further about the argument.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Starts keyword research for the site') and immediately explains the two-phase execution model (inline quick pass, background deep pass). It is trivially distinguishable from siblings like get_research_status, get_keywords, and list_research_runs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: poll with get_research_status, then read results with get_keywords. It also states when the call is unnecessary (a fresh deep run from the last 30 days is reused) and where the alternative lives (forced re-run only from the dashboard).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_rank_scanRun SEO scan (Pro+)AInspect

Runs a fresh SEO Analysis scan (DataForSEO ranked keywords, opportunities and Lighthouse) for every selected country that is stale. Pro+ only. Costs real API spend, so each country can be scanned once per 24 hours; a 429 means nothing is stale yet (the error includes nextScanAvailable). The call blocks until the scan finishes (typically 30-90 seconds) and returns a summary; read details with get_seo_snapshot.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give the safety profile (not read-only, not idempotent, not destructive, closed-world). The description goes well beyond that: real API spend, a 24-hour per-country rate limit, the 429 semantics with nextScanAvailable, and the fact that the call blocks 30-90 seconds before returning only a summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, each carrying distinct information (what, eligibility, cost/rate limit, blocking behavior plus hand-off). The most decision-relevant constraint, Pro+ and 24h staleness, is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a blocking mutation with no output schema, it covers everything an agent needs: eligibility, cost, rate limit, error semantics, latency, and where to read the full results. No return-value explanation is required since it explicitly delegates to get_seo_snapshot.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'site' parameter, so the schema already documents it. The description's phrase 'every selected country' hints at a selection concept that is not represented in the schema, but it adds no syntax or format detail for 'site' itself. Baseline 3 applies when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (runs) and resource (SEO Analysis scan), enumerates what the scan covers (DataForSEO ranked keywords, opportunities, Lighthouse), and scopes it to 'every selected country that is stale'. It also names the sibling tool for reading results (get_seo_snapshot), so an agent can separate it from run_keyword_research or run_ai_mentions_scan without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit preconditions: Pro+ only, countries must be stale, once per 24 hours per country. It tells the agent what a 429 means ('nothing is stale yet') and where to find the alternative (get_seo_snapshot for details), which is exactly the when/when-not/alternative guidance needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_builder_draftSave a builder draftAInspect

Store Article Builder progress so a human or a later session can pick it up in the dashboard. Create a new draft (omit draftId) or update one. Send only what you have: prompt/options, titles/selectedTitle, outline, article, keywords, featuredImage, metaDescription. Returns the draftId. Keys accepted in outline: sections. Keys accepted in article: title, sections, metaDescription.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
urlsNoSource articles to draw on (required for remix, max 1 there)
promptNo
titlesNo
articleNo
draftIdNo
outlineNo
keywordsNo
locationIdNoBusiness location id to focus on (multi-location sites)
articleTypeNosmart-composer (default) writes fresh; remix rewrites the article at `urls`
currentStepNo
featuredImageNo
selectedTitleNo
metaDescriptionNo
useExternalLinksNoCite outside sources (default true)
useInternalLinksNoLink to the site's own pages (default true)
useYouTubeVideosNoEmbed relevant YouTube videos (default false)
youtubeChannelUrlNoPrefer videos from this channel (youtube.com/@handle or youtube.com/channel/UC...)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower. The description still adds real value: it discloses the return value (draftId), the create/update branching mechanism, and that payloads may be partial. It does not state anything that contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense sentences, front-loaded with the purpose before the create/update mechanics and payload list. No filler, though the trailing 'Keys accepted in...' sentences restate structure the schema already nests and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter, nested-object mutation with no output schema, the description covers purpose, branching, payload groups, and the return value (draftId). The remaining gaps — no mention of the required `site` or the remix/`urls` path — are real but partly recoverable from the schema's own descriptions and enums.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 44%, so the schema documents some parameters (articleType, link/video options, locationId) but leaves many bare. The description enumerates the acceptable payload groups and gives the nested shapes for outline and article, adding some meaning, but it never mentions the required `site` parameter or `urls`/remix handling, so it only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (store/save) and resource (Article Builder draft) plus the persistence intent ('so a human or a later session can pick it up in the dashboard'), which separates it from the read siblings get_builder_draft/list_builder_drafts and the publish sibling. An agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the key use case and the create-vs-update condition explicitly: 'Create a new draft (omit draftId) or update one.' 'Send only what you have' clarifies partial saves. It stops short of naming sibling alternatives (get_builder_draft, delete_builder_draft) or prerequisites, 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.

save_keywordsSave keywords from researchAInspect

Bulk-saves keywords found in research or rankings into the customer's own keyword list in one call (union with the existing list, no metrics refresh). Prefer add_my_keywords for a few keywords; use this when saving many at once. Free.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
keywordsYesKeywords to save.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read, non-destructive, non-idempotent write, so the bar is lower. The description still adds real value beyond them: union semantics with the existing list, no metrics refresh, and no credit cost ('Free'). It stops short of mentioning the 500-keyword cap or any permissions, but the added context is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler, and the core capability is front-loaded before the routing advice. Every clause earns its place, including the cost note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter write tool with full schema coverage, no output schema, and informative annotations, the description covers purpose, alternative, side effects (no metrics refresh, union merge) and cost. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, both parameters are documented in the schema and the baseline of 3 applies. The description only implies the source of the 'keywords' values (research or rankings) and the union merge behavior, adding little syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Bulk-saves keywords ... into the customer's own keyword list'), plus scope ('in one call', 'bulk'). It also names the sibling it is contrasted with (add_my_keywords), so the agent can distinguish it without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Prefer add_my_keywords for a few keywords; use this when saving many at once.' Both the alternative and the selecting condition are stated, 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.

search_helpAsk the help centreA
Read-onlyIdempotent
Inspect

Answers a how-does-Blawgy-work question from the public help docs and cites the matching articles. Costs one LLM call and is rate limited; keep questions specific. Read only.

NameRequiredDescriptionDefault
questionYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the closing 'Read only' is redundant. However, the description adds genuinely non-obvious behavior the annotations don't cover: it 'costs one LLM call,' is 'rate limited,' and 'cites the matching articles.' This is real operational context that changes how an agent should batch or throttle calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with zero filler. The core purpose is front-loaded, followed by cost/limit constraints and then the read-only note. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully signals the return shape by stating it 'cites the matching articles.' Annotations cover the safety profile, and the description adds cost, rate-limit, and phrasing constraints. Complete enough for a one-parameter read tool, though it could say more about result formatting or empty-result behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 0% schema description coverage — the schema only supplies minLength/maxLength bounds. The description partially compensates by indicating the question should be a 'how-does-Blawgy-work' query kept 'specific,' but it adds no format, scope, or content-shape detail. Baseline of 3 is appropriate given the schema does not carry the meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it 'answers a how-does-Blawgy-work question from the public help docs and cites the matching articles.' That clearly separates it from the closest sibling, file_support_request (which files a ticket rather than answering). It stops short of naming any alternative explicitly, so it is clear but not sibling-differentiating in the strongest sense.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Keep questions specific' is the only usage guidance, and it is about phrasing rather than when-to-use. There is no statement of when to prefer this over file_support_request or other tools, nor any exclusion criteria. Usage is implied by the phrase 'how-does-Blawgy-work question'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_draft_modeTurn draft mode on or offA
Destructive
Inspect

On: new articles are sent to the CMS as drafts for the owner to publish. Off: Blawgy publishes them live on schedule (turning it off needs the confirm step). For some arguments this is destructive: the first call then returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
enabledYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-idempotent, but the description adds real context beyond them: which argument path is destructive, that the first call returns a summary plus confirmToken, and that confirming requires a second call. It omits why idempotency is false or what the summary contains, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the On/Off semantics before the confirm-token mechanic. No filler, and the destructive warning is placed exactly where it matters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description covers the relevant return behavior (summary + confirmToken). Combined with annotations that carry the safety profile and the schema covering two of three params, an agent has nearly everything needed; only the confirmation lifecycle edge cases are unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 67%, the description meaningfully fills the gap: it explains what enabled=true vs false actually does, which the schema leaves blank, and clarifies the confirmToken round-trip. The site parameter is only covered by the schema's single-value list, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description concretely defines both states of the toggle: On sends new articles to the CMS as drafts, Off publishes them live on schedule. An agent immediately understands this is a draft-mode switch rather than a one-shot publish. It does not, however, contrast itself with siblings like publish_draft or pause_autopilot, so the sibling-routing dimension is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implicit rather than stated: the description implies you flip this when you want autonomous publishing vs owner review, but never says when to prefer this over the many publish/schedule siblings. The two-call confirm flow is spelled out clearly, which is the strongest guidance present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_pixel_enabledTurn the engagement pixel on or offA
Destructive
Inspect

Enabling mints the tracking token and, on Framer and Duda, installs the site-wide code automatically; other platforms get it injected into articles. Disabling stops collection. Pro+ only. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
enabledYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only give destructiveHint=true and idempotentHint=false; the description adds substantial non-obvious behavior: the tracking token is minted, installation is automatic on Framer and Duda but article-injected elsewhere, collection halts on disable, Pro+ entitlement is required, and the first call is destructive-mitigating (returns a summary plus confirmToken). This is exactly the context an agent needs before a destructive, non-idempotent write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the enable/disable effect, then preconditions, then the safety protocol. Slightly dense but each sentence carries distinct information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing what the first call returns (summary and confirmToken). Platform behavior, entitlement gating, destructive semantics, and the confirm flow are all covered, so an agent can invoke this safely without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (site and confirmToken documented, enabled bare). The description adds real semantic value by explaining the confirmToken round-trip in prose ('call again with confirmToken to proceed') and tying it to the first call's returned summary/token, which no single schema field description conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (enabling/disabling the engagement pixel) and spells out the distinct effects per platform (Framer/Duda site-wide code vs. article injection), which differentiates it from sibling get_pixel_snippet. An agent knows exactly what the tool does and what changes as a result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the precondition 'Pro+ only' and explains the two-step confirmation protocol, which tells the agent how and when the call is valid. What is missing is explicit routing versus alternatives such as get_pixel_snippet (read the snippet instead of installing it), so the when-not guidance is implied rather than named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_primary_locationMake a location the primary oneDInspect

The primary location is the one articles and pages speak for by default.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
locationIdYes

TDQS

D1.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that this is a non-read-only, non-idempotent, non-destructive, closed-world operation. The description adds no behavioral context beyond that: it does not say what happens to the previous primary location, whether articles/pages are updated automatically, or what side effects to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single sentence with no wasted words, but it is under-specified rather than concise. The one sentence explains a concept instead of front-loading the action an agent needs to select and invoke the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with two required parameters and no output schema, the description is largely incomplete. Annotations cover the safety profile, but the description still does not explain the operation's effect, prerequisites, or expected outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions neither the site nor the locationId parameter. With only 50% schema description coverage, locationId is undocumented in both the schema and the description, so the description fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description defines what a 'primary location' is, but never states that this tool sets or changes the primary location. It restates the title's concept rather than naming a specific action, and it does not distinguish this tool from siblings such as update_business_location or add_business_location.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to call this tool, when not to call it, or what alternatives exist. It also omits prerequisites such as whether a location must already exist or whether the site must be configured.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_updates_autopilotTurn updates autopilot on or offA
Destructive
Inspect

Autopilot is ON by default for sites with Updates access (OFF by default while the site posts as draft). With it on, the weekly run writes AND publishes updates itself: about 3 a week per site, more on sites with many indexed posts (3 plus 1 per 50 indexed posts, at most 15), only on pages Google has indexed, each page at most once every 60 days; every update is versioned for revert_update and judged afterwards, and a part judged worse is reverted automatically. Off means every update waits for approve_update. Calling this records an explicit choice that overrides the default. Returns autopilot and autopilotState { on, source }. Pro+ (or grandfathered) sites only; platforms that cannot receive updates automatically (Duda) stay approval only. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
enabledYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond the annotations: publication cadence, indexed-page constraints, 60-day page limits, automatic versioning, automatic reversion of worse updates, approval-only behavior when off, tier and platform restrictions, and return fields. It also explains the two-step destructive confirmation flow, consistent with destructiveHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but mostly earns its length for a complex, destructive autopilot toggle. It is a single long paragraph rather than structurally front-loaded, but the details are relevant and not redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still names the return values, explains the confirmation flow, states prerequisites and exclusions, and describes the operational consequences of enabling or disabling autopilot. An agent has enough information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description compensates for the undocumented boolean by explaining what ON and OFF actually do. It also reinforces the confirmToken workflow, though the site parameter is mostly left to the schema enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool turns Updates autopilot on or off and explains what each state means: ON writes and publishes updates automatically, while OFF makes every update wait for approve_update. It is specific enough to distinguish this from approval and revert tools, even without explicitly naming pause_autopilot or resume_autopilot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful usage context: the default state, that calling it records an explicit override, that it is limited to Pro+ or grandfathered sites, and that Duda sites remain approval-only. However, it does not explicitly say when to use this tool instead of the sibling pause_autopilot or resume_autopilot tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_dutchiePull the Dutchie menu nowAInspect

Re-reads every connected Dutchie location's menu into the product catalogue. Slow; returns the added and updated counts.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety profile (not read-only, not idempotent, not destructive), and the description adds two useful facts beyond them: it is slow, and it returns added/updated counts. That latency and return-shape context is genuinely helpful since there is no output schema. It omits auth/permission requirements, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero waste; the core action is front-loaded and the cost/return caveats follow immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter sync tool with annotations covering safety and no output schema, the description covers action, latency, and return shape adequately. It leaves minor gaps around prerequisites and the all-locations vs single-site discrepancy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'site' parameter is already fully documented, establishing a baseline of 3. The description adds nothing about the parameter and in fact says 'every connected location' while the schema requires one specific site, a mild tension an agent may need to resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Re-reads every connected Dutchie location's menu into the product catalogue'), so the scope is clear. It does not explicitly distinguish itself from the sibling sync_products, but the Dutchie qualification makes the intent reasonably unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to call this versus sync_products, or whether get_dutchie_status / get_product_sync_status should be checked first. The word 'Slow' hints at a cost but does not translate into a usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_existing_pagesRe-scan existing pagesAInspect

Ask Blawgy to re-read the site's sitemap, feeds and Search Console pages now and update the existing-page list (it also refreshes weekly on its own). Runs in the background for a few minutes; check list_existing_pages after. At most once every 10 minutes per site.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark it non-read-only and non-destructive; the description adds valuable context the annotations lack: asynchronous background execution for minutes, the rate limit of once per 10 minutes per site, and the fact that Blawgy refreshes weekly on its own. It doesn't disclose exactly what gets modified or error behavior, minor gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with purpose, then the async caveat and next step, then the rate limit. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, runtime behavior, follow-up and throttling for a single-parameter tool with no output schema. The one gap is what happens on failure or what exactly is updated, but for an agent deciding to call it, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, so the schema already defines site fully. The description adds no parameter-specific semantics beyond what is in the schema description. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (re-read sitemap, feeds, Search Console) and the concrete outcome (update the existing-page list). Easily distinguished from siblings like import_existing_pages or list_existing_pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent what to do afterwards (check list_existing_pages) and implies the weekly auto-refresh makes this an on-demand supplement. Does not explicitly say when NOT to use it or compare against import_existing_pages, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_productsSync products from Shopify nowAInspect

Pulls the Shopify store's products into the catalogue right now (Shopify sites only). Slow: it waits for the whole sync and returns the counts. For scheduled syncs use update_product_sync_settings.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-idempotent, non-destructive write, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the call blocks ('Slow: it waits for the whole sync') and returns counts. It stops short of noting permissions or what happens on partial failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the core action and scope front-loaded and the alternative routing placed last where it belongs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by stating it returns counts. Combined with the blocking-behavior warning, scope restriction, and alternative routing, an agent has what it needs; only auth/permission prerequisites are unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with only one parameter, so the schema already documents 'site' including the allowed value. The description's 'Shopify sites only' adds a small constraint on what site is valid, but nothing about format or identity beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (syncs/pulls) and resource (Shopify products into the catalogue) plus a scope qualifier ('Shopify sites only'). It is immediately distinguishable from siblings like get_product_sync_status or update_product_sync_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the tool as a run-it-now manual sync and routes scheduled syncs to the named alternative update_product_sync_settings. The 'Shopify sites only' restriction further tells the agent when this tool is inapplicable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_webhookSend a test event to a webhookAInspect

Delivers a sample payload for one event to the webhook URL and reports the HTTP status. Fails with the receiver's error when it does not return 2xx.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
eventNo
webhookIdYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description earns credit by adding what annotations cannot: the call is synchronous and reports the HTTP status, and it surfaces the receiver's error on non-2xx responses. That error-propagation behavior is the key operational fact for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler, with the core action front-loaded and the failure behavior as a follow-up. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully covers both the return value (HTTP status) and error semantics for a simple 3-parameter tool. The remaining gap is per-parameter detail on event and webhookId, which is minor relative to overall completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% — site is documented in the schema, while event (an enum) and webhookId have no descriptions. The description alludes to 'one event' and 'the webhook URL' but adds no format, default, or optionality guidance, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — delivers a sample payload for one event to the webhook URL — which an agent can distinguish from create_webhook, update_webhook, retry_webhook_delivery, and get_webhook_history. It does not explicitly name those siblings, but the 'test' framing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use case is implied (verifying a webhook's endpoint responds) but the description never states when to use this versus retry_webhook_delivery or get_webhook_history, nor any precondition such as the webhook needing to exist first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unhide_productUnhide a productBInspect

Makes a hidden product available to articles again.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
productIdYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered. The description adds modest context — the effect is scoped to article availability — but omits what happens if the product is not hidden, whether it is reversible, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is efficient, though so terse that it sacrifices some needed context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple toggle with no output schema and only two parameters, the description is minimally adequate. However, it leaves the second parameter undocumented and gives no insight into error conditions or state requirements, which an agent would want before invoking a mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: 'site' is described in the schema (including the allowed value), but 'productId' has no description anywhere. The description adds no parameter-level detail, so it fails to compensate for the undocumented required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('makes... available') and resource ('a hidden product'), and 'again' signals it reverses hiding. It is distinguishable from hide_product by the inverse action, though it never names the sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use condition, no prerequisites (e.g. product must currently be hidden), and no mention of alternatives. The only routing signal is the tool name itself, which implies usage but is not stated guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_articleEdit an articleA
Destructive
Inspect

Edit an article's title, keywords, HTML body or linked productIds. Saves to Blawgy and, when the article already lives on the CMS (draft or published), syncs the edit in place (a draft stays a draft). A failed CMS sync still saves locally and returns cmsWarning; try republish_article afterwards. Fields you omit are kept. Use reschedule_article to change the date. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYes
bodyNoFull HTML body; replaces the current one
siteYesThe site to act on. One of: fencestainingdenver.com.
titleNo
keywordsNo
productIdsNoProducts to link; empty array clears them
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the generic profile (destructive, non-idempotent, closed-world); the description adds substantial specifics: local-save-always behavior, the CMS draft-stays-draft rule, the cmsWarning return on partial failure, keep-omitted-fields semantics, and the two-phase summary/confirmToken flow. These are exactly the traits that change how an agent sequences its calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Sentences are front-loaded with the editable fields and each one carries distinct information (sync behavior, failure handling, patching semantics, alternative tool, confirm flow). Dense but not padded; the parenthetical asides are slight compression rather than waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutating tool with no output schema, the description covers return signaling (cmsWarning), the confirmation protocol, and the local-vs-CMS effect. Remaining gaps are minor: no mention of permission/auth requirements or error shapes beyond the CMS warning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 57%, so the description has to compensate, and it does: it names the mutable fields, clarifies the body is full-replacement HTML, and states that omitted fields are preserved (partial-update semantics not encoded in the schema). It does not explain constraints like the maxLength/maxItems limits, but that gap is covered by the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (edit an article) and enumerates exactly which fields are mutable: title, keywords, HTML body, productIds. It also names sibling tools (reschedule_article, republish_article) that an agent might otherwise confuse with this one, so disambiguation is possible without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes date changes to reschedule_article and failed CMS syncs to republish_article, which gives concrete alternative selection. It does not state when not to use the tool (e.g. for builder drafts, which have their own siblings), so this is clear context rather than 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.

update_business_locationEdit a business locationAInspect

Changes the fields given on one saved location. Use list_business_locations for ids. Keys accepted in profile: businessName, address, city, state, postalCode, phone, email, serviceArea, serviceRadiusMiles, mapEmbed, label.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
profileYes
locationIdYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description adds one genuinely useful behavioral detail: only the fields supplied are changed (partial update), consistent with the non-idempotent hint. It says nothing about permissions, whether changes are immediate/live, or what happens on invalid keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the core action, then the id source, then the payload keys. Every clause carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with annotations covering safety and no output schema, the description supplies the action semantics, the id acquisition path, and the full accepted key list for a nested object. Remaining gaps are minor: no note on the required `site` parameter or error behavior on unknown keys.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (just 'label' and 'serviceArea' are described), so the description must compensate, and it does by enumerating all eleven accepted keys inside `profile`. It adds names but not per-key semantics, and never explains `site` or `locationId`, which keeps it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Changes the fields given on one saved location'), making clear this is a partial edit of an existing location rather than a create. It doesn't explicitly name add_business_location or delete_business_location as siblings, but the word 'saved' plus the id-lookup instruction differentiates it well enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete prerequisite: 'Use list_business_locations for ids', which routes the agent to the right discovery tool before calling this one. It does not state exclusions (e.g. when to prefer add_business_location or how to delete), 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.

update_guardrailEdit a guardrailA
Destructive
Inspect

Changes a library guardrail's name, rules or enabled flag. Sites it is attached to regenerate their unwritten articles. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
nameNo
siteYesThe site to act on. One of: fencestainingdenver.com.
rulesNo
enabledNo
guardrailIdYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds non-obvious behavior beyond that: the two-call confirmation protocol and the downstream effect that attached sites regenerate unwritten articles. It stops short of saying whether changes are reversible or what the summary contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct information: scope of change, side effect, and the confirmation protocol. The destructive/confirm warning is front-loaded in the final position where it belongs before invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with six parameters, no output schema, and partial schema coverage, the description covers the calling protocol and side effects well. It still omits whether omitted fields are left untouched or cleared, and whether the token expires — details that matter for a destructive write.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only site and confirmToken are described), so the description must compensate — and it does, naming all three optional mutable fields (name, rules, enabled) and restating the token's two-phase semantics. The required guardrailId remains unexplained by both schema and description, leaving one real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Changes a library guardrail's name, rules or enabled flag'), and the word 'library' plus editable fields distinguishes it from create_guardrail and delete_guardrail. What is left implicit is the boundary with update_site_guardrails, which an agent must infer from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The confirmToken instruction is a genuine usage pattern ('first call returns a summary and a confirmToken; call again with confirmToken to proceed'), which tells the agent how to invoke deliberately. However, there is no explicit statement of when to prefer this over delete_guardrail or update_site_guardrails, so the choice among guardrail tools is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_notification_prefsChange email notification preferencesAInspect

Turns individual Blawgy notification emails on or off for the signed-in account. Only the keys given change. Keys accepted in prefs: postPublished, draftReady, publishingProblems, researchReady, monthlyReport, indexingProblems, tips.

NameRequiredDescriptionDefault
prefsYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a mutation (readOnlyHint=false) and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: 'Only the keys given change' establishes merge/patch semantics, which is not conveyed by idempotentHint or destructiveHint alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences: purpose first, the partial-update rule second, the key list last. The key enumeration mildly duplicates the schema's property names, but it earns its place by pinning them to the `prefs` argument.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-nested-object mutation with no output schema and adequate annotations, the description covers purpose, patch semantics, and the full accepted key set. The remaining gap is that it never indicates how to read current preferences back (get_notification_prefs), which an agent setting a partial update may want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the meaning, and it does: it names all seven accepted keys inside `prefs` and confirms the partial-update contract. It still doesn't add value semantics beyond key names (e.g., what 'tips' or 'monthlyReport' actually control), but it fully compensates for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete verb+resource ('Turns individual Blawgy notification emails on or off') and scopes it to the signed-in account, so the mutation intent is unambiguous. It does not explicitly name the read-side sibling get_notification_prefs, so the differentiation is inferable from the verb rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this to change notification email toggles. There is no explicit guidance on when to prefer it over get_notification_prefs for reading current values, and no mention of prerequisites or account/permission context, leaving the agent to infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_photoEdit a photo bank entryAInspect

Changes a photo's metadata (name, description, placement notes, feature checklist, prominence, look group, when to use it, framing hint) and/or its reference pictures: set or clear the in-use photo, add an extra angle (up to 4) or remove one by index. Only the fields given are changed.

NameRequiredDescriptionDefault
nameNo
siteYesThe site to act on. One of: fencestainingdenver.com.
photoIdYes
useWhenNo
groupLabelNo
inUsePhotoNoA photo of the product installed or in use (base64).
prominenceNo
descriptionNo
framingHintNo
addAnglePhotoNoAnother angle of the same product (base64).
placementNotesNoHow to place the product in a scene. Empty string clears it.
clearInUsePhotoNo
removeAngleIndexNo
distinctiveFeaturesNoFeature checklist; an empty list hands it back to automatic detection.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), and the description adds genuinely useful behavior beyond them: partial-update semantics, the four-angle cap, removal by index, and clearing semantics (empty string clears placementNotes, empty feature list hands detection back to automatic). It does not mention auth requirements, payload size implications of base64 photos, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the metadata change and followed by the picture operations, ending on the important partial-update constraint. The long parenthetical field list is heavy but every item corresponds to a real parameter, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter mutation tool with no output schema and thin annotations, the description covers the field set, the reference-picture operations, the angle cap, and clearing behavior. It stops short of stating the required identifiers or what the response returns, but an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 36%, so the description carries most of the burden, and it does: it maps colloquial names to nearly every parameter (look group → groupLabel, when to use it → useWhen, feature checklist → distinctiveFeatures, framing hint → framingHint) and explains set/clear/add/remove actions for the photo fields. Only the required site/photoId parameters and the exact clearing conventions already stated in the schema are not re-explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (changes) and resource (a photo bank entry's metadata and reference pictures) and enumerates exactly which fields can be touched, so an agent knows this is a partial edit of an existing photo. It does not explicitly distinguish itself from near siblings such as delete_photo, duplicate_photo, or restore_photo_original, but the scope is clear enough to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives (e.g., update_photo vs. get_photo_candidates or upload_post_image), nor any prerequisites such as the photo needing to already exist. The only usage-adjacent cue is the partial-update note ('Only the fields given are changed'), which describes mechanics rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_plan_configUpdate plan settingsAInspect

Change plan settings: postsPerWeek (1-7; a change re-plans the calendar at once, topping it up or trimming unwritten entries, and is subject to the plan's cadence limits), horizonWeeks (4, 6 or 8 weeks filled ahead), autoRenew (keep refilling the horizon automatically), manualKeywordRatio (0-100, share of new articles drawn from the customer's own keywords vs discovered topics) and priorities (restrict new articles to these research topic labels; omit to allow all topics). Send only the fields to change.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
autoRenewNo
prioritiesNo
horizonWeeksNo
postsPerWeekNo
manualKeywordRatioNo

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations give the safety profile (readOnly=false, destructive=false, idempotent=false), and the description goes well beyond them: a postsPerWeek change re-plans the calendar immediately, topping up or trimming unwritten entries and being subject to cadence limits, and autoRenew controls automatic refilling. These side effects are exactly the behavioral context an agent needs before mutating plan state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded with the verb and resource, and the closing 'Send only the fields to change' is a useful, tight instruction. The middle is a dense run of parenthetical clauses, but nearly every clause carries distinct semantic value, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no output schema, the description covers all mutable fields, their effect, and partial-update behavior; the required 'site' param is documented in the schema. It stops short of stating what is returned after a successful change or how cadence-limit violations surface, which would close the last gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17% (just 'site'), so the description carries the burden and does so well: it explains the meaning of manualKeywordRatio (share of articles from the customer's own keywords vs discovered topics), priorities (restrict to research topic labels; omit to allow all), and the effect of autoRenew, beyond the bare ranges/enum in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Change plan settings') and enumerates exactly which settings are mutable, so an agent immediately knows the scope. It does not explicitly distinguish itself from near-siblings like update_plan_entry or update_settings, leaving that separation to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Send only the fields to change' establishes partial-update (PATCH) semantics, which is genuine usage guidance. However there is no when-to-use/when-not guidance and no pointer to alternatives such as update_plan_entry for individual calendar items or get_plan for reading current values.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_plan_entryEdit a plan entryA
Destructive
Inspect

Change a scheduled or written (not yet published) entry: new title, new publishDate, or swap its keyword. A title or keyword change on an already-written article clears the body and rewrites it (response regenerate: true); an article the customer edited by hand refuses the swap. A keyword swap runs the duplicate-intent guard and can return blocked; pass force: true to override. Published articles cannot be edited here (use update_article). Use reschedule_overdue to move every overdue entry at once. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
idYesEntry (article) id from get_plan
siteYesThe site to act on. One of: fencestainingdenver.com.
forceNoSwap even when the site already owns the new intent
titleNo
intentNo
keywordNoSwap the target keyword
difficultyNo
publishDateNoISO date-time
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.
searchVolumeNoMetrics for the new keyword, when known

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructive=true/idempotent=false annotations by disclosing that a title or keyword change clears and rewrites the body (regenerate: true), that hand-edited articles refuse the swap, that the duplicate-intent guard can return blocked, and that the operation is a two-step confirm flow returning a confirmToken.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool changes, then layers edge cases, alternatives, and the destructive confirm flow. Every sentence adds actionable information; no filler despite the density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation tool with no output schema, it discloses the key response fields (regenerate, blocked, confirmToken) and the safety flow. Only the metric-only parameters (difficulty, intent, searchVolume) remain unaddressed, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 70% schema coverage, the schema carries most parameter docs, but the description adds genuine meaning for force (overrides the duplicate-intent guard) and confirmToken (omit on first call to receive a summary). It leaves difficulty, intent, and searchVolume unexplained, but those are minor metric fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (change/edit a plan entry) and enumerates exactly what can be changed: title, publishDate, keyword. It explicitly distinguishes itself from the sibling update_article (published articles) and reschedule_overdue (bulk overdue), so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-not conditions with named alternatives: published articles cannot be edited here (use update_article), and bulk overdue moves belong to reschedule_overdue. It also names the conditions that select the force override and the confirmToken flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_productEdit a productAInspect

Changes a product's name, description, URL, image, price, currency, tags, type or vendor. Only the fields given are changed. A synced product's edits may be overwritten by the next sync.

NameRequiredDescriptionDefault
urlNo
nameNo
siteYesThe site to act on. One of: fencestainingdenver.com.
tagsNo
imageNoPublic https URL of the product image.
priceNo
vendorNo
currencyNo
productIdYes
descriptionNo
productTypeNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower. The description still adds real behavioral value beyond them: partial-update semantics and a data-persistence risk (edits on synced products can be overwritten). It stops short of describing failure behavior or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, mutation scope front-loaded, with the sync caveat as the closing sentence. No filler, no repetition of schema metadata.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no output schema and very low schema coverage, the description covers the essentials (what is editable, partial-update behavior, sync risk) but omits parameter formats and any statement of what a successful call returns or how errors surface. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 18%, so the description carries extra burden. It partly compensates by naming the nine editable fields (mapping 'type' to productType), which is genuinely helpful. But it adds no format or constraint detail for price (number-or-string), tags (array, max 50), currency codes, or max lengths, so the gap is only partially closed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Changes') plus the exact resource and enumerates the mutable fields (name, description, URL, image, price, currency, tags, type, vendor). An agent can distinguish it from add_product/delete_product/get_product without opening the schema. It does not, however, explicitly contrast itself with update_product_sync_settings or hide_product, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives useful conditional context ('Only the fields given are changed' and 'A synced product's edits may be overwritten by the next sync'), which is effectively a caveat about when the edit may not persist. It never names an alternative tool or an explicit precondition, 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.

update_product_sync_settingsChange automatic product syncBInspect

Turns scheduled Shopify product sync on or off and sets its frequency (daily, weekly or manual).

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
enabledNo
frequencyNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-destructive, non-idempotent, closed-world, so the safety profile is covered. The description adds the concrete scope of the mutation (schedule on/off plus frequency), but says nothing about prerequisites (e.g. a connected Shopify platform), what happens to scheduled jobs when disabling, or the resulting state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the action, target and options are all packed into one readable clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param settings toggle with annotations and no output schema, the description covers the action and the two configurable dimensions. Remaining gaps (param interdependence, platform connection precondition) are modest but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 33% – only 'site' has a description. The description compensates for 'enabled' via 'on or off' and restates the frequency options that already live in the enum. It does not clarify that 'site' is required, whether frequency is ignored when enabled is false, or how the two optional params interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: toggling scheduled Shopify product sync and setting its frequency. An agent can distinguish this from get_product_sync_status and sync_products (the latter is an on-demand sync, not schedule configuration), though the description never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative guidance. With siblings like sync_products and get_product_sync_status nearby, the agent gets no signal about which of the three to select for a given intent beyond the word 'scheduled'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_research_briefEdit the research briefAInspect

One edit to the research brief: action "add" or "remove" with a list field (seedTopics, competitors, chaseThemes, avoidThemes, productCore, buyerNeeds) and a value, or action "set" with a scalar field (businessSummary, audience, geography) and the new text. User entries survive regeneration. avoidThemes is the customer's "Never write about" list (Settings > Keywords): a HARD filter, so Blawgy never researches, plans or autopilot-refills keywords whose article would be about one of those subjects. It never filters the customer's own keywords. Write each entry as a plain subject ("celebrity news"), not a single keyword. Changes steer the next research run and plan refill; they do not touch scheduled articles (preview_avoid_matches lists the scheduled ones that now match, remove them with remove_plan_entry). Free. Returns the updated brief.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
fieldYesWhich brief field.
valueYesEntry text (add/remove) or the new text (set).
actionYesadd/remove a list entry, or set a scalar.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: entries persist through regeneration, avoidThemes acts as a HARD filter on research/planning/autopilot-refill but never filters the customer's own keywords, and edits do not affect already-scheduled articles. It also states cost ('Free') and the return ('Returns the updated brief'), none of which the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core add/remove vs set pattern is front-loaded in the first sentence and the rest is information-dense rather than padding. It does re-list the entire field enum already present in the schema, which is mild redundancy in an otherwise tight block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All four required parameters are explained, mutation side-effects and non-effects are covered, the target site is constrained by the schema, and the return value is stated despite there being no output schema. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds meaning the schema cannot: it partitions the field enum into list fields (paired with add/remove) versus scalar fields (paired with set), and prescribes entry style ('a plain subject, not a single keyword'). That is genuine semantic value beyond the enum listings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('One edit to the research brief') and immediately enumerates the exact action/field combinations, distinguishing it from the read-side siblings get_research_brief and regenerate_research_brief. An agent knows precisely what this mutates without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit downstream effects ('changes steer the next research run and plan refill; they do not touch scheduled articles') and routes the agent to two named alternatives with conditions (preview_avoid_matches, remove_plan_entry). It lacks any guidance on when to read the brief first (get_research_brief) or when to prefer regenerate_research_brief, so not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_settingsUpdate site settingsA
Destructive
Inspect

Partial update of customer-editable settings: business description and audience, language, competitors, article length, outbound links, YouTube videos, images on or off, text on images (imageTextOverlay), product photos in articles, draft mode, related articles (relatedArticles), sitemap URL, internal links, call to action (cta), image style (style text, theme, brand colours, shape, photo bank switch) and per-platform publishing options. Only the keys given change. Keywords, posts per week and CMS credentials have their own tools. Unknown keys are rejected. Keys accepted in settings: businessDescription, targetAudience, language, competitors, articleLength, links, videos, includeImages, draft, relatedArticles, sitemapUrl, internalLinks, cta (enabled, text, url, buttonText, position), imageTextOverlay, productPhotosInArticles, imageStyle (style, guidelines, guidelinesEnabled, contextualImageStyle, contextualImageStyleReuse, contextualImageGuidelines, contextualImageGuidelinesMode, visualComponentsEnabled, themeId, contextualThemeId, colors, shape (featured, inline), productPhotosEnabled), categoryId, author, memberId, framerCollectionId, framerPublishConsent, fields. For some arguments this is destructive: the first call then returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
settingsYes
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the safety bar is lower, and the description still adds material context beyond them: the two-step summary/confirmToken flow, the partial-write contract, and rejection of unknown keys. The phrase 'for some arguments this is destructive' is notably vague about which arguments, which is the main gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The behavioral rules are front-loaded, but the middle is a long comma-separated key list that largely restates the schema's own property names (which are fully enumerated at additionalProperties:false). The information density is high yet the redundancy costs readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, deeply nested, no-output-schema mutation tool, the description covers the essential mechanics an agent must know before calling: partial semantics, rejection of unknown keys, and the confirmation handshake. It does not describe what the settings summary returns or whether changes take effect immediately, but nothing required to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description compensates by enumerating the accepted top-level keys and drilling into nested groups (cta sub-fields, imageStyle style/theme/colors/shape). It also clarifies the confirmToken role. It still leaves several nested keys without prose meaning, so it is good but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Partial update of customer-editable settings') and enumerates the setting families it touches, so the scope is concrete. It also explicitly demarcates siblings: 'Keywords, posts per week and CMS credentials have their own tools,' which separates it from add_my_keywords, set_draft_mode and connect_platform.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating rules — 'Only the keys given change', 'Unknown keys are rejected' — and routes three excluded domains to their own tools, which is genuine when-not-to-use guidance. It does not explicitly say when to prefer get_settings for inspection or how partial writes interact with prior values, so it stops short of full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_site_guardrailsSet which guardrails apply to this siteA
Destructive
Inspect

Replaces the COMPLETE list of library guardrails attached to this site (send every id that should stay). Future articles are regenerated against the new rules. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.
guardrailIdsYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=false, and the description goes well beyond them: it spells out the replacement semantics (omitted ids are dropped), the downstream effect ('Future articles are regenerated against the new rules'), and the non-obvious two-phase confirmation handshake that the annotations cannot express. This is exactly the extra context a destructive mutation needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the destructive replacement behavior before the execution flow. No filler, no restatement of the title or name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, non-idempotent mutation with no output schema, the description covers the essentials: what is overwritten, what happens afterward, and how the confirmToken flow works. The only real gap is where the guardrail ids originate, but that is a discovery detail rather than a call-correctness one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%; site and confirmToken are already documented, but guardrailIds carries no schema description. The prose compensates by defining the array as an exhaustive keep-list rather than an additive set, which is the one piece of semantics a caller could get wrong. It stops short of clarifying that ids must come from the library guardrail set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Replaces the COMPLETE list of library guardrails attached to this site') and emphasizes full-set replacement, which cleanly separates it from sibling update_guardrail (single guardrail edit) and get_site_guardrails (read). An agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'send every id that should stay' tells the caller how to construct the argument, and the two-step confirm instruction ('call again with confirmToken to proceed') tells them how to execute it. It gives clear context but never points at get_site_guardrails for retrieving the current list, so the obvious prerequisite for a full-replacement call is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_webhookEdit a webhookA
Destructive
Inspect

Changes a webhook's URL, name, events, active flag, expiry or retry count. Only the fields given change. Destructive: the first call returns a summary and a confirmToken; call again with confirmToken to proceed.

NameRequiredDescriptionDefault
nameNo
siteYesThe site to act on. One of: fencestainingdenver.com.
eventsNo
isActiveNo
validityNo
webhookIdYes
maxRetriesNo
webhookUrlNo
confirmTokenNoConfirmation token from a previous call of this tool with the same arguments. Omit on the first call to get a summary and a token.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations flag destructiveHint=true and idempotentHint=false, but the description explains the actual mechanism behind that destructiveness: the first call is effectively a dry-run returning a summary and confirmToken, and only a repeat call with the token mutates. That confirmation protocol is essential invocation knowledge that no annotation conveys, and it is stated explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste. The mutable-field list and the partial-update rule are front-loaded, and the destructive confirmation flow follows immediately where an agent will read it before acting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nine-parameter mutation tool with no output schema, it covers the two things an agent most needs: partial-update semantics and the confirm-token protocol, including what the first call returns. It omits permission/auth requirements and failure behavior, which are minor but leave a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 22%, so the description carries real weight by naming six of the nine parameters in prose (URL, name, events, active flag, expiry, retry count), leaving site, webhookId and confirmToken documented in the schema itself. It adds meaning beyond field-name mapping but no format or constraint detail (e.g., retry bounds, URI rules).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (changes) and resource (webhook) and enumerates the mutable fields (URL, name, events, active flag, expiry, retry count). The verb cleanly separates it from create_webhook, delete_webhook and list_webhooks, but no sibling is named explicitly, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear invocation context: 'Only the fields given change' (partial update) and the two-step protocol of first call returning a summary plus confirmToken and the second call proceeding. It never states when to prefer this over regenerate_webhook_token or test_webhook, so there are no explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_post_imageUpload your own image for a postAInspect

Adds a customer-supplied picture (base64 data) as a candidate for the post, free of charge; it does not count as an image change. Then call apply_post_image with the returned candidate id. Pro and above.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
postIdYes
targetNoWhich image: 'featured' (default) or 'inline:<n>' for an in-article image listed by get_post_image.
fileDataYesThe image as a data: URL or bare base64 (JPG or PNG, under about 7MB). Remote URLs are not accepted.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (readOnly=false, destructive=false, idempotent=false), so the description carries the rest and does well: it discloses the candidate/staging nature of the write, the plan gating (Pro and above), the cost behavior, and the required follow-up call. It omits any error/limit behavior beyond what the schema's 7MB cap implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight clauses; the action, the cost/no-change caveat, the next step, and the plan requirement are all front-loaded with no filler. Slightly clunky semicolon phrasing but well within budget.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by stating the tool returns a candidate id to pass to apply_post_image, and it covers the plan prerequisite. Missing only failure-mode guidance for oversized or remote-URL inputs, which the schema partially covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so the schema already documents site, target, and fileData formats. The description only restates that the payload is base64 picture data and adds nothing on target ('featured' vs 'inline:<n>'), postId, or size limits. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — adding a customer-supplied (base64) picture as a candidate for a post — and implicitly distinguishes itself from get_post_image (retrieval) and apply_post_image (commitment) among siblings. An agent can tell what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context: it is the first step of a two-step flow, followed by apply_post_image with the returned candidate id, and it notes the operation is free and doesn't count as an image change. It does not name what to use instead for non-customer images (e.g., get_photo_candidates).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiWho am IA
Read-onlyIdempotent
Inspect

Identify the account this credential acts as on Blawgy: email, role (customer, partner owner or team member), credential kind and access level (read or write), scope, and how many sites it can use. For a white-label partner owner it also returns clientCount (clients this credential can act for; null unless partner-scoped) and, when the credential is not partner-scoped, a scopeHint explaining why client sites are hidden. Call this first in a session, then list_sites to pick a site.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already cover the safety profile (readOnlyHint, idempotent, non-destructive, closed-world), but the description goes further by disclosing the exact response contents and two conditional edge behaviors: clientCount is null unless partner-scoped, and scopeHint appears only when the credential is not partner-scoped. That conditional return behavior is genuinely non-obvious. It stops short of 5 only because nothing is said about error states or what an unauthenticated credential yields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core identity statement and the 'use this first' instruction are front-loaded, and the sentences carry useful information rather than filler. The parenthetical about clientCount semantics is dense but earns its place given there is no output schema; the description is slightly longer than strictly necessary but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description carries the full burden of explaining what comes back, and it does so field by field, including the partner-specific extras and their null conditions. An agent has everything needed to call it and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description does not need to and does not discuss inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a precise verb ('Identify') plus the exact resource ('the account this credential acts as on Blawgy') and enumerates the concrete return fields: email, role, credential kind, access level, scope, and site count. No sibling tool in the list does this, so an agent can separate it from tools like get_settings or list_team without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the workflow position ('Call this first in a session') and names the exact next step and alternative ('then list_sites to pick a site'). That gives the agent both a when-to-use and a routing decision, which is rare and highly actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_article_nowWrite article(s) nowAInspect

Queue one or more plan entries to be written immediately instead of waiting for their publish dates. Each article counts against the site's posts-per-week allowance and, on a trial, its article limit; a frozen or ended subscription is refused. Writing takes a few minutes and the article still publishes on its publish date (or goes to the CMS as a draft when post-as-draft is on). Returns status "queued" with kind "article": poll each id with get_job.

NameRequiredDescriptionDefault
idsYesEntry (article) ids
siteYesThe site to act on. One of: fencestainingdenver.com.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which only say it is a non-read-only, non-destructive, non-idempotent, closed-world call), it discloses quota consumption (posts-per-week allowance, trial article limit), a failure mode (frozen or ended subscription is refused), latency (a few minutes), the real publish outcome (still publishes on its publish date, or lands as a CMS draft when post-as-draft is on), and the return shape and polling path. That is rich disclosure the annotations cannot supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct load: action and scope first, then quota/refusal constraints, then timing, outcome, and the polling next step. Nothing is repeated from the name or schema, and the core action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still covers what an agent needs: the queued result ('status "queued" with kind "article"'), the async nature and duration, the get_job polling path, quota effects, and the subscription-refusal failure case. Nothing material is missing for a two-parameter mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description clarifies that ids are plan entries and that multiple are allowed, but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Queue one or more plan entries to be written immediately') and scopes the effect ('instead of waiting for their publish dates'). An agent can distinguish it from write_from_outline, reschedule_article, and publish_draft without opening a schema, because it operates on already-planned entries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for use ('written immediately instead of waiting for their publish dates') and points to the follow-up tool (get_job). It does not name exclusions or explicitly contrast with sibling alternatives such as reschedule_article or publish_draft, 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.

write_from_outlineBuilder step 3: write the articleAInspect

Article Builder, step 3. Write the full article from title + outline (the object returned by generate_outline, edited as you like). Slow: several LLM calls, typically 1-3 minutes, returns when done. Returns { article: { title, sections: [{ id, title, content (HTML), imageUrl }], guardrails } }. Nothing is saved or published yet. Next: regenerate_section to fix one part, then publish_article_from_builder to put it on the plan. Pass saveDraft: true to also store progress as a builder draft (returns draftId). Keys accepted in outline: sections.

NameRequiredDescriptionDefault
siteYesThe site to act on. One of: fencestainingdenver.com.
urlsNoSource articles to draw on (required for remix, max 1 there)
titleYes
promptYesThe original article brief
draftIdNoExisting builder draft to update when saveDraft is true
outlineYes
saveDraftNo
locationIdNoBusiness location id to focus on (multi-location sites)
articleTypeNosmart-composer (default) writes fresh; remix rewrites the article at `urls`
useExternalLinksNoCite outside sources (default true)
useInternalLinksNoLink to the site's own pages (default true)
useYouTubeVideosNoEmbed relevant YouTube videos (default false)
youtubeChannelUrlNoPrefer videos from this channel (youtube.com/@handle or youtube.com/channel/UC...)

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, non-idempotent): it discloses latency ('several LLM calls, typically 1-3 minutes, returns when done'), the persistence state ('Nothing is saved or published yet'), and that saveDraft:true stores progress and returns a draftId. These are exactly the operational traits annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the workflow position, then latency, then return shape, then persistence state, then next steps. Dense but every sentence earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description supplies the return shape inline ({ article: { title, sections, guardrails } }), plus latency and persistence semantics. For a complex 13-param nested tool, 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 77%, so the schema documents most parameters. The description adds real value anyway: it ties title + outline together as the source, notes the accepted outline key ('sections'), and explains the saveDraft side effect (returns draftId). Remaining parameters like site, urls, articleType are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Write the full article from title + outline') and situates it precisely as 'Article Builder, step 3'. It distinguishes itself from generate_outline (input source), regenerate_section (partial fix), and publish_article_from_builder (publishing), so an agent can place it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit workflow guidance: use after generate_outline, then 'regenerate_section to fix one part, then publish_article_from_builder to put it on the plan.' It also gives the saveDraft: true conditional for storing a draft. Both when-to-use and the sibling alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Addedget_updates_overview
    • Changedrevert_update1 field changed
      • addedInput schema / properties / part
        Added value: +{
        +  "description": "search, content or all (default all)",
        +  "enum": [
        +    "search",
        +    "content",
        +    "all"
        +  ],
        +  "type": "string"
        +}
  2. 2 tool updates
    • Changedcreate_site1 field changed
      • addedInput schema / properties / clientId
        Added value: +{
        +  "description": "White-label partners only: create the site for this client (client id or email from create_client / list_clients). Needs a partner-scoped credential.",
        +  "maxLength": 254,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedlist_sites1 field changed
      • addedInput schema / properties / relation
        Added value: +{
        +  "description": "Only sites with this relation: owner, invited or partner_client.",
        +  "enum": [
        +    "owner",
        +    "invited",
        +    "partner_client"
        +  ],
        +  "type": "string"
        +}
  3. 1 tool update
    • Addedpreview_avoid_matches
  4. 6 tool updates
    • Addedget_refresh_brief
    • Addedinclude_existing_page
    • Changedlist_existing_pages4 fields changed
      • changedInput schema / properties / kind / description
        Previous value: -"Only pages of this kind"New value: +"Only pages of this kind, or skipped / removed"
      • changedInput schema / properties / kind / enum
        Previous value: -[
        -  "article",
        -  "product",
        -  "category",
        -  "landing",
        -  "other",
        -  "unknown"
        -]New value: +[
        +  "article",
        +  "help",
        +  "product",
        +  "category",
        +  "landing",
        +  "other",
        +  "unknown",
        +  "skipped",
        +  "removed"
        +]
      • addedInput schema / properties / origin
        Added value: +{
        +  "description": "Only pages from this source (import = added by the customer)",
        +  "enum": [
        +    "sitemap",
        +    "rss",
        +    "gsc",
        +    "import",
        +    "cms"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / search / description
        Previous value: -"Substring match on URL or title"New value: +"Substring match on URL, title or what the page answers"
    • Addedmark_refresh_done
    • Addedrequest_refresh
    • Addedrestore_existing_page
  5. 2 tool updates
    • Addedlist_archived_keywords
    • Addedrestore_archived_keywords
  6. 4 tool updates
    • Addedimport_existing_pages
    • Addedlist_existing_pages
    • Addedremove_existing_page
    • Addedsync_existing_pages
  7. 1 tool update
    • Changedupdate_settings1 field changed
      • addedInput schema / properties / settings / properties / relatedArticles
        Added value: +{
        +  "description": "End each Blawgy article with a \"Related articles\" list of 2 to 3 other Blawgy articles on the site, and add new articles to the lists on older ones. WordPress, Shopify, Ghost and Blawgy-hosted blogs.",
        +  "type": "boolean"
        +}
  8. 153 tool updates
    • First observedaccept_plan_suggestion
    • First observedadd_business_location
    • First observedadd_my_keywords
    • First observedadd_product
    • First observedadd_to_plan
    • First observedanalyze_new_site
    • First observedapply_post_image
    • First observedapprove_update
    • First observedcheck_for_updates
    • First observedcomplete_site_setup
    • First observedconnect_bing
    • First observedconnect_dutchie
    • First observedconnect_platform
    • First observedcreate_guardrail
    • First observedcreate_site
    • First observedcreate_webhook
    • First observeddelete_article
    • First observeddelete_builder_draft
    • First observeddelete_business_location
    • First observeddelete_guardrail
    • First observeddelete_photo
    • First observeddelete_product
    • First observeddelete_site
    • First observeddelete_webhook
    • First observeddetect_business_location
    • First observeddisconnect_bing
    • First observeddisconnect_gsc
    • First observeddismiss_plan_suggestion
    • First observeddismiss_topic
    • First observeddismiss_update
    • First observeddraft_update
    • First observedduplicate_photo
    • First observededit_update_draft
    • First observedexclude_keyword
    • First observedexclude_topic
    • First observedextract_brand_colors
    • First observedfetch_sitemap_links
    • First observedfile_support_request
    • First observedfind_competitors
    • First observedgenerate_description
    • First observedgenerate_location_page_drafts
    • First observedgenerate_outline
    • First observedgenerate_plan
    • First observedgenerate_titles
    • First observedget_ai_mentions
    • First observedget_article
    • First observedget_article_preview_url
    • First observedget_behavior
    • First observedget_billing
    • First observedget_branded_split
    • First observedget_builder_draft
    • First observedget_connect_link
    • First observedget_dutchie_status
    • First observedget_image_preview_usage
    • First observedget_indexing_status
    • First observedget_job
    • First observedget_keyword_recommendations
    • First observedget_keywords
    • First observedget_nearby_towns
    • First observedget_notification_prefs
    • First observedget_overview
    • First observedget_photo_candidates
    • First observedget_pixel_snippet
    • First observedget_plan
    • First observedget_platform_options
    • First observedget_post_image
    • First observedget_product
    • First observedget_product_sync_status
    • First observedget_rankings
    • First observedget_research_brief
    • First observedget_research_run
    • First observedget_research_status
    • First observedget_seo_snapshot
    • First observedget_settings
    • First observedget_site_guardrails
    • First observedget_traffic
    • First observedget_upgrade_link
    • First observedget_webhook_history
    • First observedhide_product
    • First observedinvite_teammate
    • First observedlist_articles
    • First observedlist_builder_drafts
    • First observedlist_business_locations
    • First observedlist_guardrails
    • First observedlist_image_posts
    • First observedlist_my_keywords
    • First observedlist_page_templates
    • First observedlist_photos
    • First observedlist_products
    • First observedlist_research_runs
    • First observedlist_sites
    • First observedlist_team
    • First observedlist_update_opportunities
    • First observedlist_webhooks
    • First observedmark_published
    • First observedpause_autopilot
    • First observedpreview_location_page_content
    • First observedpreview_location_pages
    • First observedpublish_article_from_builder
    • First observedpublish_draft
    • First observedpublish_location_pages
    • First observedrecheck_indexing
    • First observedregenerate_outline
    • First observedregenerate_research_brief
    • First observedregenerate_section
    • First observedregenerate_webhook_token
    • First observedrelease_held_article
    • First observedremix_from_urls
    • First observedremove_dutchie_location
    • First observedremove_my_keywords
    • First observedremove_plan_entry
    • First observedrepublish_article
    • First observedreschedule_article
    • First observedreschedule_overdue
    • First observedresend_invite
    • First observedrestore_keyword
    • First observedrestore_photo_original
    • First observedresume_autopilot
    • First observedretry_webhook_delivery
    • First observedrevert_post_image
    • First observedrevert_update
    • First observedrevoke_invite
    • First observedrun_ai_mentions_scan
    • First observedrun_keyword_research
    • First observedrun_rank_scan
    • First observedsave_builder_draft
    • First observedsave_keywords
    • First observedsearch_help
    • First observedset_draft_mode
    • First observedset_pixel_enabled
    • First observedset_primary_location
    • First observedset_updates_autopilot
    • First observedsync_dutchie
    • First observedsync_products
    • First observedtest_webhook
    • First observedunhide_product
    • First observedupdate_article
    • First observedupdate_business_location
    • First observedupdate_guardrail
    • First observedupdate_notification_prefs
    • First observedupdate_photo
    • First observedupdate_plan_config
    • First observedupdate_plan_entry
    • First observedupdate_product
    • First observedupdate_product_sync_settings
    • First observedupdate_research_brief
    • First observedupdate_settings
    • First observedupdate_site_guardrails
    • First observedupdate_webhook
    • First observedupload_post_image
    • First observedwhoami
    • First observedwrite_article_now
    • First observedwrite_from_outline

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI coding agents to manage a blog directly from an IDE, including drafting, editing, publishing, scheduling, SEO optimization, and analytics tracking through natural language.
    7,964,013 npm
    BSD 3-Clause
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI tools to research, write, and publish finished blog posts to Ghost and WordPress in the user's voice, supporting multiple author personas and destinations through natural language.
    14
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to research competitors, keywords, ads, and AI citations, and to audit public websites for SEO, AEO, and GEO readiness with prioritized fixes.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Run the full agency SEO loop from your AI assistant: Search Console insights, prioritized actions, article generation, CMS publishing, indexing, and performance measurement.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.