Skip to main content
Glama

Shopify SEO Expert: Digital Darts

Server Details

All-in-one Shopify SEO. Rank on Google and in AI search. Find what's broken and fix it in chat.

Ownership verified
Status
Healthy
Uptime
34.0% over 64 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

A4.1/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target a distinct resource+action, and the descriptions actively disambiguate the riskiest pairs (get_indexing_status vs inspect_url, create_redirect vs replace_link vs fix_broken_links, preview_link_replacement vs replace_link). The remaining friction is the single-vs-bulk twins (update_meta_tags/update_meta_tags_bulk, update_image_alt/update_image_alt_bulk) and the get_page_seo / get_resource / list_resources trio, which are distinguishable but easy to mispick when an agent already has an id or a URL.

Naming Consistency5/5

Every name is snake_case verb_noun (apply_/create_/fix_/flatten_/get_/inspect_/list_/preview_/replace_/run_/unhide_/update_), with a consistent _bulk suffix for batch variants. The convention is predictable enough that an agent can guess a tool name before reading its description.

Tool Count3/5

27 tools is on the heavy side, though the surface is genuinely broad (audits, meta, alt text, links, redirects, Search Console, backlinks, job polling). Much of the count comes from deliberate preview/apply and single/bulk pairs, which are justified individually but push the set past the comfortable range and increase selection load.

Completeness4/5

The audit → issue → fix loop, meta tags, alt text, broken-link remediation, indexing checks and Search Console reporting are all covered, including background-job status for async work. The main gap is redirect lifecycle: you can create and flatten redirects but there is no way to list all redirects or delete/deactivate one, which will cause dead ends for merchants managing large redirect sets.

Available Tools

27 tools
create_redirectCreate redirectA
Idempotent
Inspect

Create a Shopify URL redirect. Preferred: pass brokenLinkId (from list_broken_links, internal links only) plus target, which also marks the broken link fixed. Or pass path + target directly. Targets must be an existing page on the store (or '/'); redirects into another 404 are refused.

NameRequiredDescriptionDefault
pathNoBroken path, e.g. /products/old-handle (when no brokenLinkId)
targetYesWhere to send visitors, e.g. /products/new-handle or /
brokenLinkIdNoFix this broken link (preferred)

Output Schema

NameRequiredDescription
okYes
pathYes
targetYesThe target that was requested
createdYesFalse when the path already had a redirect and nothing changed
messageYesWhat to tell the merchant
existingTargetNoWhere the path already redirected; present only when created is false
existingTargetUnknownNoA redirect existed but Shopify didn't reveal its target

TDQS

A4.7/5.0
Behavior4/5

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

Adds genuine side-effect and constraint detail beyond the annotations: passing brokenLinkId 'also marks the broken link fixed', and targets must resolve to an existing page or redirects into a 404 are refused. It stops short of stating auth/permission requirements, but the annotations already cover the safety and idempotency profile.

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 written sentences, front-loaded with the core action, then the preferred path, then the constraint. Every sentence carries distinct, 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?

With an output schema handling return values and 100% schema description coverage, the description supplies exactly the missing pieces: the two input strategies, the side effect, and the refusal condition. Nothing an agent needs to call it correctly is absent.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: brokenLinkId originates from list_broken_links and applies to internal links only, and that it is the preferred input over path. This contextualizes parameter choice, not just 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 ('Create a Shopify URL redirect') and anchors it to a concrete workflow by naming list_broken_links as the source of brokenLinkId. An agent can distinguish this from siblings like replace_link or flatten_redirect_chain 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 Guidelines5/5

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

Explicitly ranks two invocation modes ('Preferred: pass brokenLinkId... Or pass path + target directly') and names the prerequisite source tool. It also states the routing/validation condition under which creation is refused, so the agent knows both when and how to call it.

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

flatten_redirect_chainFlatten a redirect chainA
DestructiveIdempotent
Inspect

Point a chained redirect straight at its final destination, turning A → B → C into A → C. Takes a chainId from list_redirect_chains. A loop is refused (there's nothing sane to point at), as is a final destination that would itself 404.

NameRequiredDescriptionDefault
chainIdYesFrom list_redirect_chains

Output Schema

NameRequiredDescription
okYes
pathYes
targetYesThe final destination it now points at
messageYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare it is a destructive, idempotent, non-read write; the description goes beyond them by naming two refusal conditions (loops and destinations that would 404), which tells the agent what failures to expect. It does not explain whether intermediate hops are removed or whether permissions are required.

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 concrete before/after example, then the ID source, then the failure modes. 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?

An output schema exists so return values need no explanation, and the refusal conditions cover the main edge cases for a chain mutation. Minor gaps remain around the fate of intermediate hops and required permissions, but the essential contract is conveyed.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 chainId is already documented as 'From list_redirect_chains', so the description's identical statement adds no new semantics. Baseline 3 applies 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?

States a specific verb and resource plus the exact transformation ('turning A → B → C into A → C'), which lets an agent distinguish it from create_redirect and list_redirect_chains at a glance. The arrow notation makes the post-condition 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?

Explicitly says the chainId comes 'from list_redirect_chains', routing the agent to the discovery tool it must call first. It doesn't contrast against create_redirect for the case where no chain exists, but the precondition is clear.

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

get_imageView an imageA
Read-onlyIdempotent
Inspect

Fetch ONE image (by image id from get_resource) so you can actually see it. Call this before writing alt text, because alt text guessed from the product title describes the product rather than the picture. Returns the image itself, downscaled.

NameRequiredDescriptionDefault
imageIdYesImage id from get_resource. A Shopify media gid or the image URL also resolves.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the safe-read profile (readOnly, idempotent, non-destructive), so the description's added value is the return-shape disclosure: 'Returns the image itself, downscaled.' That downscaling caveat is real behavioral information an agent cannot get from annotations or the schema, and it matters when judging image quality for alt text. No output schema exists, so it does leave the exact return format (bytes vs. URL vs. base64) unspecified.

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 the cardinality constraint, then the usage condition, then the return shape. Nothing is padded or restated.

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

Completeness4/5

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

For a one-parameter read tool with full annotation coverage and no output schema, the description supplies the rationale, the source of the id, and the downscaled-return caveat. The only minor gap is the concrete return format, which matters somewhat for an image-fetching 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% and the single parameter's schema description already covers the accepted forms (gid, URL, or id from get_resource). The description restates the get_resource provenance but adds no format or syntax detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Fetch ONE image') and immediately scopes the input source ('by image id from get_resource'), distinguishing it from the sibling get_resource that produces the id. The emphasis on ONE signals a single-item fetch, not a listing.

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 instructs when to call it ('Call this before writing alt text') and gives the failure mode that motivates it ('alt text guessed from the product title describes the product rather than the picture'). This effectively routes the agent toward update_image_alt as the downstream step.

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

get_indexing_statusGet indexing statusA
Read-onlyIdempotent
Inspect

Which of the store's pages are appearing in Google and which aren't, from Search Console: counts, the pages themselves, and the trend. 'Not appearing' means Google reported no impressions for that page over the window. That is a strong signal but not proof the page is unindexed, so use inspect_url for the definitive per-page check. Cached for a day; pass refresh to recompute.

NameRequiredDescriptionDefault
limitNoPages to list in each group, 1 to 50. The counts and trend cover every page regardless.
refreshNoRecompute instead of reading cache

Output Schema

NameRequiredDescription
noteNo
fixUrlNo
windowNo
historyNo
messageNoPresent when connected is false
summaryNo
appearingNo
checkedAtNo
connectedYes
connectUrlNoPresent when connected is false
notAppearingNo

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, and openWorldHint, so the safety profile is covered. The description adds value beyond that: it discloses a one-day cache and the refresh bypass, plus an epistemic caveat that 'not appearing' is a strong signal but not proof of non-indexation. It does not discuss rate limits or data freshness beyond the cache window, so it stops short of the top score.

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 returns, then the interpretation caveat, then the alternative tool, then the cache behavior. Three compact sentences, none wasted, all additive to structured fields.

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

Completeness5/5

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

With an output schema present and rich annotations, the description need not explain return shapes. It covers scope, the reliability caveat, the fallback tool, and caching, which is everything an agent needs to call and interpret this correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both limit and refresh, including that counts and trend cover every page regardless of limit. The description's 'pass refresh to recompute' largely restates the schema's 'Recompute instead of reading cache'; the one-day cache mention adds a little rationale but not new parameter semantics. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource: reporting which of the store's pages appear in Google, from Search Console, including counts, the page lists, and the trend. It also explicitly distinguishes itself from inspect_url, so an agent can route between 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?

Names the alternative (inspect_url) and the condition that selects it for the definitive per-page check, and clarifies the meaning of 'not appearing' so the agent knows the signal's strength. Refresh behavior is also explained so the agent knows when recomputation is warranted.

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

get_job_statusGet job statusA
Read-onlyIdempotent
Inspect

Progress of the store's background work: SEO audits, link scans, and bulk jobs (meta, alt text, link fixes, link titles). Pass a jobId from run_audit / run_link_scan / apply_link_titles / fix_broken_links, or a kind to get its latest run. Call this instead of guessing whether queued work has finished. An audit appears here once a worker picks it up, which is normally within seconds.

NameRequiredDescriptionDefault
kindNoReturn the latest run of this kind instead of one job. Use when you don't have a jobId. 'bulk' matches the most recent bulk job of ANY kind, so it can return image compression or a link job rather than the meta or alt run you meant.
jobIdNoFrom the tool that queued the work

Output Schema

NameRequiredDescription
jobYes
recentNo
tasksUrlNo

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. The description adds valuable behavioral context beyond that: an audit appears only after a worker picks it up, normally within seconds, which sets expectations for polling. It does not cover edge cases like unknown/expired jobIds or what an empty call returns, so it falls short of a 5.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the resource scope, then the calling patterns, then the timing caveat. Every sentence carries information an agent needs.

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

Completeness4/5

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

With an output schema and strong annotations, the description covers nearly everything. The one gap: neither parameter is required, yet the description never says what happens if both are omitted or if both are supplied, which is a real ambiguity for an agent.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents the bulk-enum pitfall thoroughly. The description still adds meaning by listing the upstream tools that produce a jobId, which the schema only summarizes as 'From the tool that queued 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 and resource — progress of background work (SEO audits, link scans, bulk jobs) — and enumerates the job types covered. An agent can immediately tell this apart from siblings like get_indexing_status or run_audit.

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 two calling modes (jobId from run_audit/run_link_scan/apply_link_titles/fix_broken_links, or kind for latest run) and names the alternative behavior it replaces: 'Call this instead of guessing whether queued work has finished.' That is clear when-to-use guidance with named sibling tools.

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

get_page_seoLook up page SEOA
Read-onlyIdempotent
Inspect

Look up a storefront URL (product/collection/page/blog/article) and return the matched resource's SEO fields plus its open audit issues and store-level issues. Use the returned resource id with update_meta_tags.

NameRequiredDescriptionDefault
urlYesFull storefront URL, e.g. https://example.com/products/foo

Output Schema

NameRequiredDescription
issuesYes
matchedYesWhether the URL mapped to a synced resource
resourceYes
lastAuditAtNo
storeIssuesYesStore-level issues (no single page)

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, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered before the description is read. The description adds that both resource-level audit issues and store-level issues are bundled into the result, which is useful behavioral context, but since an output schema exists that information is largely duplicative.

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 padding, and the operation is front-loaded before the downstream chaining hint. 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?

Return values are covered by the output schema and the safety profile by annotations, so the description only needs to frame purpose and chaining, which it does. The one unaddressed edge is behavior when the URL matches no resource, which the agent must infer.

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 one parameter at 100% schema description coverage (including a concrete example URL), the schema already carries the baseline. The description adds real meaning by constraining the URL to storefront resource types, telling the agent what kinds of paths will actually match.

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 ('look up') and resource ('storefront URL') and enumerates the accepted resource types (product/collection/page/blog/article), plus what comes back (SEO fields, open audit issues, store-level issues). It does not explicitly distinguish itself from nearby siblings like get_resource or get_seo_summary, 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?

Gives clear operative context by naming the follow-up workflow: 'Use the returned resource id with update_meta_tags.' It does not state when this lookup should be chosen over get_resource, inspect_url, or get_seo_summary, and there are no exclusions, so no 5.

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

get_resourceGet resource SEO detailA
Read-onlyIdempotent
Inspect

Full SEO detail for one resource by id (from list_resources / get_page_seo): SEO title/description, meta score, and every image with its alt text (image ids feed update_image_alt).

NameRequiredDescriptionDefault
resourceIdYesId from list_resources or get_page_seo. A Shopify gid, numeric id or handle also resolves.

Output Schema

NameRequiredDescription
imagesYes
editUrlYesAdmin deep link to the meta-tags editor
resourceYes

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, closed-world behavior, so the bar is lower. The description adds real value beyond them by disclosing return content and, importantly, the chaining behavior that returned image ids feed update_image_alt.

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 sentence with the purpose front-loaded, then the payload and the chaining hint. Zero filler; every clause carries information.

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

Completeness4/5

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

With annotations covering safety and an output schema covering return shape, the description only needs to frame purpose, input provenance, and workflow links, all of which it does. The absence of an explicit when-not/alternative keeps it just short of a 5.

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

Parameters3/5

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

Schema coverage is 100% for the single resourceId parameter, including the gid/numeric/handle resolution rule, so the schema does the heavy lifting. The description restates the id provenance ('from list_resources / get_page_seo') without adding syntax or constraints beyond what the schema provides, matching the 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 specific verb+resource ('Full SEO detail for one resource by id') and enumerates the payload (SEO title/description, meta score, image alt text), which distinguishes it from siblings like get_page_seo and get_image. 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 Guidelines4/5

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

Names upstream sources for the id (list_resources / get_page_seo) and a downstream consumer (image ids feed update_image_alt), giving clear workflow placement. It stops short of an explicit when-not or an alternative to use instead, so it is strong context rather than full routing.

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

get_search_performanceGet Google Search performanceA
Read-onlyIdempotent
Inspect

Google Search Console data for the connected property: 'overview' (daily clicks/impressions/CTR/position totals vs the previous period), 'queries' (top search queries), or 'pages' (top pages). Data lags ~3 days by Google's design. Requires the merchant to have connected Google in the app.

NameRequiredDescriptionDefault
daysNoLength of the reporting window in days. Anything other than 7, 28 or 90 falls back to 28. The window ends about 3 days ago, which is Google's own reporting lag.
limitNoRows to return for the 'queries' and 'pages' panels, 1 to 50. Ignored for 'overview'.
panelNoWhich view: 'overview' for whole-window totals compared with the previous period (no per-day series), 'queries' for the top search terms, 'pages' for the top URLs.overview

Output Schema

NameRequiredDescription
daysNo
noteNo
rowsNoqueries/pages panels
panelNo
totalsNooverview panel: clicks/impressions/ctr/position
windowNoThe date range the data covers
messageNoPresent when connected is false
connectedYes
connectUrlNoPresent when connected is false

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds two genuinely new traits: the ~3-day reporting lag (data freshness) and the prerequisite that the merchant has connected Google. No error-path or fallback behavior is described, keeping it at a 4.

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

Conciseness4/5

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

Two sentences, no filler, with the resource identity and panel list front-loaded and the prerequisite/lag caveats trailing. The first sentence is dense with inline parentheticals but every clause carries information the caller needs.

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

Completeness4/5

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

An output schema exists, so return values needn't be explained; the description covers resource scope, the three modes, data freshness, and the auth prerequisite. The only omission is what happens if Google is not connected (error vs empty result), a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents days, limit, and panel including the fallback-to-28 rule and the ignored-for-overview note. The description largely restates the panel meanings the schema already carries, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource — Google Search Console performance for the connected property — and enumerates the three panels with what each contains, so an agent knows exactly what it retrieves. It does not explicitly distinguish itself from near siblings like get_seo_summary or get_page_seo, so it falls short of a 5.

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

Usage Guidelines4/5

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

Gives clear operating context: which panel returns which view, that data lags ~3 days, and that the merchant must have connected Google in the app. It stops short of naming alternatives or stating when-not to use it (e.g. vs get_seo_summary), so no explicit exclusions.

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

get_seo_summaryGet SEO summaryA
Read-onlyIdempotent
Inspect

Overall SEO health of the store: health score (0-100), open audit issue counts by severity (critical/warning/info), and last audit time. Start here to understand where the store stands.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
openCountsYes
healthScoreYes0-100; null before the first audit
lastAuditAtYes
healthScoreAtNo

TDQS

A3.9/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, so the safety profile is fully covered. The description's added content is largely the payload composition (score range, severity buckets), which the output schema already carries, so net new behavioral disclosure is thin.

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

Conciseness5/5

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

Two tight sentences, zero filler, with the core subject front-loaded and the entry-point cue placed at the end as a call to action. 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-arg, read-only aggregate with a rich output schema, the description covers what the tool is and when to use it; return values need not be re-explained. Only marginal context (how this relates to list_seo_issues or run_audit) is absent.

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

Parameters4/5

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

The tool takes zero parameters, so there are no parameter semantics for the description to clarify; the baseline for a no-param tool applies. Nothing is misleading or missing here.

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

Purpose4/5

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

States a specific verb+resource ('Overall SEO health of the store') and enumerates the returned content (health score, issue counts by severity, last audit time). It clearly reads as the store-level aggregate rather than a page- or issue-level tool, though it never names the sibling it differs from (get_page_seo, list_seo_issues).

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?

'Start here to understand where the store stands' gives explicit entry-point guidance and clear context for when to reach for this tool first. It stops short of stating exclusions or naming follow-up alternatives, so it is clear but not fully routing.

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

inspect_urlInspect a URL in GoogleA
Read-onlyIdempotent
Inspect

Definitive index check for ONE page, straight from Google's URL Inspection API: indexed or not, coverage state, verdict, last crawl, and whether Google chose a different canonical. Slower than get_indexing_status because it makes a live call per URL, so use it to confirm a specific page rather than to sweep the store. Needs owner-level access to the Search Console property; anything less comes back unavailable with an explanation.

NameRequiredDescriptionDefault
urlYesFull storefront URL on this store

Output Schema

NameRequiredDescription
urlNo
demoNoSynthesized demo data, not a live Google answer
indexedNo
messageNo
verdictNo
availableNoFalse when Google refused the inspection
connectedYes
connectUrlNo
coverageStateNo
lastCrawlTimeNo
canonicalMismatchNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, and the description adds value beyond them: per-URL live-call latency, the owner-level Search Console access requirement, and the explicit failure mode ('comes back unavailable with an explanation'). That is exactly the behavioral context an agent needs before invoking.

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

Conciseness5/5

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

Three sentences, zero waste, and front-loaded: the capability comes first, then the cost trade-off, then the access prerequisite. 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?

An output schema exists, so return values need not be explained. Latency, auth requirement, failure behavior, and the sibling alternative are all covered, leaving nothing an agent needs to call this 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 at 100% schema coverage, so the schema already documents the url field fully ('Full storefront URL on this store'). The description reinforces the single-page scope but adds no syntax or format 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?

States a specific verb+resource+scope: 'Definitive index check for ONE page' from Google's URL Inspection API, enumerating the concrete outputs (indexed or not, coverage state, verdict, last crawl, canonical). It is immediately distinguishable from the sibling get_indexing_status, 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?

Explicitly routes between alternatives: 'Slower than get_indexing_status because it makes a live call per URL, so use it to confirm a specific page rather than to sweep the store.' Both the when-to-use and when-not-to-use conditions are stated, plus the access prerequisite.

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

list_redirect_chainsList redirect chainsA
Read-onlyIdempotent
Inspect

Redirects that point at another redirect (A → B → C), which wastes crawl budget and slows visitors down. Each row carries the path, the hops, the final destination, whether it loops, and where the store's own content links into it. Fix one with flatten_redirect_chain. Paginated.

NameRequiredDescriptionDefault
pageNo1-based page number.
limitNoChains per page, 1 to 50. Larger values are clamped, not rejected.

Output Schema

NameRequiredDescription
pageYes
totalYes
chainsYes
fixUrlYes
pageCountYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the burden is light. The description still adds useful behavior beyond them: it enumerates what each row contains (path, hops, final destination, loop flag, inbound store links) and notes pagination.

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 definition, then row shape, then remediation and pagination. Every sentence carries distinct information with no restatement of 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 annotations covering safety, an output schema covering return values, and full param documentation in the schema, the description supplies exactly the missing context: what a chain is, why it matters, and which tool fixes one.

Complex tools with many parameters or behaviors need more documentation. Simple tools 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 page and limit are fully documented with defaults and clamping semantics in the schema. The description only restates 'Paginated' and adds no format or usage detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific resource with a concrete definitional example (A → B → C) and the consequence it addresses (wasted crawl budget, slow visitors). An agent can immediately tell this apart from list_broken_links or list_seo_issues without opening a schema.

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

Usage Guidelines4/5

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

Gives clear context for what the rows represent and routes remediation to the sibling tool flatten_redirect_chain. It does not, however, state when to prefer this listing over other audit listings, so there is no explicit exclusion or alternative-selection rule.

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

list_resourcesList store contentA
Read-onlyIdempotent
Inspect

List the store's synced content (products, collections, pages, blogs, articles) with SEO fields and meta score (0-100). Filters combine, so several can be set at once. Items search engines never see (drafts, archived and unlisted items, and products not published to the Online Store) are left out unless includeUnpublished is true, because SEO work on them is wasted. Sorted worst score first. Paginated.

NameRequiredDescriptionDefault
pageNo1-based page number.
typeNoOnly this content type. Omit for every type.
limitNoItems per page, 1 to 50. Larger values are clamped, not rejected.
searchNoCase-insensitive match on the item's title.
maxScoreNoOnly items scoring at or below this meta score (0-100). 50 is a reasonable 'needs work' cut-off.
missingAltNoSet true for only the items carrying at least one image with no alt text. false is ignored, not inverted.
missingMetaTitleNoSet true for only the items with no SEO title. false is ignored, not inverted.
includeUnpublishedNoInclude items search engines never see: drafts, archived and unlisted items, and products not published to the Online Store
missingMetaDescriptionNoSet true for only the items with no meta description. false is ignored, not inverted.

Output Schema

NameRequiredDescription
pageYes
totalYes
pageCountYes
resourcesYes

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), and the description adds genuinely new behavior: filter conjunction semantics, the default exclusion of drafts/archived/unlisted/unpublished products, and the worst-first ordering. Pagination is mentioned but page size behavior is left to the schema.

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

Conciseness4/5

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

Front-loads purpose, then behavior, then ordering — a sensible order with little waste. The parenthetical list of excluded item types is slightly verbose but is the operative detail for the includeUnpublished flag.

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 read-only list tool with nine fully documented parameters and an output schema, the description covers everything an agent needs to call it correctly: default exclusion behavior, filter combination, and sort order. Return shape is delegated appropriately to the output schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all nine parameters including defaults, ranges, and the 'false is ignored, not inverted' nuance. The description's one addition beyond the schema is the statement that filters combine (AND semantics), which is useful but is the same fact already implied by the includeUnpublished sentence, so it stays at 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?

States a specific verb and resource ('List the store's synced content'), enumerates the resource kinds (products, collections, pages, blogs, articles) and the returned fields (SEO fields, meta score 0-100). It does not name or contrast with siblings such as list_seo_issues or get_resource, so an agent must infer the boundary itself.

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

Usage Guidelines3/5

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

Provides real usage context: filters combine, unpublished items are excluded by default with the rationale that SEO work on them is wasted, and results come back worst-score-first. It never says when to pick this instead of list_seo_issues or get_resource, so the when-to-use guidance is implied rather than explicit.

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

list_seo_issuesList SEO issuesA
Read-onlyIdempotent
Inspect

List open SEO audit issues, optionally filtered by severity (critical|warning|info) or ruleId. Each issue includes a fixUrl deep link into the SEO Expert app where the merchant can fix it. Paginated (page, limit ≤ 50).

NameRequiredDescriptionDefault
pageNo1-based page number.
limitNoIssues per page, 1 to 50. Larger values are clamped, not rejected.
ruleIdNoFilter to one audit rule id
severityNoOnly issues at this severity. Omit for all three, which returns critical first.

Output Schema

NameRequiredDescription
pageYes
totalYes
issuesYes
pageCountYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish the safe read-only, idempotent profile, so the bar is lower, and the description adds genuine value beyond them: every issue carries a fixUrl deep link into the SEO Expert app, and results are paginated. It stops short of describing ordering guarantees or what happens on an empty result set.

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

Conciseness5/5

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

Three tight sentences, no filler, and the core purpose is front-loaded before filters and return-shape details. Every clause carries information the agent can act on.

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

Completeness4/5

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

With an output schema present, return-value detail is not the description's burden, and annotations cover the safety profile; the description supplies the remaining essentials (scope, filters, pagination, fixUrl). Only the absence of sibling routing keeps it from being fully complete.

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

Parameters3/5

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

Schema coverage is 100%, so page, limit, ruleId, and the severity enum are all fully documented in the schema. The description restates the severity values and the limit ceiling but adds no new meaning such as rule-id format or severity interaction with ordering, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('List open SEO audit issues') plus the filter axes, so an agent immediately understands the tool's scope. It does not, however, distinguish itself from adjacent siblings like get_seo_summary, list_broken_links, or run_audit, which also surface audit-related data.

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 word 'open' and the optional severity/ruleId filters imply when the tool is useful, but there is no explicit when-to-use versus get_seo_summary or run_audit, and no stated preconditions (e.g. must an audit have been run first?). Usage is inferable rather than guided.

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

run_auditRun SEO auditAInspect

Queue a fresh SEO audit of the whole store (same limit as the in-app button: one per day). The audit runs in the background, so call get_seo_summary a few minutes later for the updated score.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
okYes
messageYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare it is a non-read-only, non-idempotent, open-world write, and the description adds the traits that matter operationally: the audit is asynchronous/background, it is rate-limited to one per day, and it does not return the score itself. These are precisely the behaviors an agent must account for and they are 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.

Conciseness5/5

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

Two sentences, front-loaded with the action and the rate limit, followed by the required follow-up call. Every clause earns its place with no redundant 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?

An output schema exists, so return values need not be described here; the description instead covers the async nature, the daily cap, and the polling step needed to observe the result. That is everything required to invoke and use this tool correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to clarify beyond confirming it acts on the whole store. No misleading parameter implications are introduced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (Queue/fresh audit) and resource (SEO audit of the whole store), clearly distinct from the read-oriented siblings like get_seo_summary and get_page_seo. An agent knows immediately this is the action that initiates an audit rather than retrieving one.

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 context (whole-store audit), an exclusion/limit (the same one-per-day cap as the in-app button), and routes the agent to the correct follow-up tool (get_seo_summary a few minutes later) since results are not returned inline. 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.

unhide_resourceUnhide from search enginesA
DestructiveIdempotent
Inspect

Remove Shopify's 'hidden from search engines' flag (the seo.hidden metafield) from one page, so it can be indexed and appears in the sitemap again. list_resources reports seoHidden, and a page that should rank but is hidden is one of the highest-value fixes there is. Only do this when the merchant confirms the page SHOULD be public.

NameRequiredDescriptionDefault
resourceIdYesId of the page to unhide, from list_resources (check its seoHidden field) or get_page_seo.

Output Schema

NameRequiredDescription
okYes
messageYes
seoHiddenYes
resourceIdYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true and readOnlyHint=false. The description adds useful context beyond that: what exactly is removed (the seo.hidden metafield), the consequence (indexing/sitemap), and that it is a high-value fix. It stops short of noting reversibility or permission requirements, but the annotation coverage lowers the burden.

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

Conciseness4/5

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

Three sentences, front-loaded with the action and effect, then the detection source, then the safety gate. Each sentence carries weight, though the 'highest-value fixes' phrasing is slightly editorial 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?

An output schema exists so return values need not be described, and the description fully covers the action semantics, detection path, and the key prerequisite. For a single-parameter tool this 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% and the single resourceId parameter is already documented as coming from list_resources (seoHidden) or get_page_seo. The description restates that list_resources reports seoHidden, adding little 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?

The description names a precise verb (remove the 'hidden from search engines' flag) and the exact mechanism (the seo.hidden metafield) on a single page, plus the downstream effect (indexable, reappears in sitemap). This clearly distinguishes it from its many sibling mutation tools like update_meta_tags or create_redirect.

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 precondition for use – 'Only do this when the merchant confirms the page SHOULD be public' – which is a real when-not rule, and points to list_resources and get_page_seo as the way to detect the hidden state. Nothing about when to invoke it 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_image_altUpdate image alt textA
DestructiveIdempotent
Inspect

Set the alt text for ONE image (by image id from get_resource). Writes to Shopify immediately. Good alt text describes the image for screen readers in ≤ 125 characters, with no 'image of' and no keyword stuffing. Empty string clears.

NameRequiredDescriptionDefault
altYesWhat the image actually shows, in ≤ 125 characters. Empty string clears the alt text.
imageIdYesImage id from get_resource. Call get_image first to see what it shows.

Output Schema

NameRequiredDescription
okYes
altTextNo
missingAltCountNoRemaining images without alt on the resource

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds real context beyond them: writes to Shopify 'immediately' (live side effect, no staging) and that an empty string clears existing alt text, which is exactly the destructive behavior the hint warns about.

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

Conciseness5/5

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

Front-loaded with the operation and scope in the first clause, then immediacy, then quality guidance. Three sentences, each carrying distinct information with 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?

With an output schema present and annotations covering the safety profile, the description only needs to add the non-obvious operational facts, which it does: single-image scope, immediate write, and clearing semantics. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema does not: the schema allows maxLength 512 and states 125 characters as an upper bound for good alt text, while imageId is tied back to get_resource. That constrains usage beyond the raw type declaration.

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

Purpose5/5

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

States a specific verb and resource ('Set the alt text for ONE image') and pins the scope to a single image by id, which cleanly separates it from the sibling update_image_alt_bulk. An agent can pick this over the bulk variant without inspecting 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 when-to-use context: operating on one image by imageId sourced from get_resource/get_image, and notes that an empty string clears the value. It implies but never explicitly names update_image_alt_bulk as the alternative for multi-image work, so there is no stated exclusion.

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

update_image_alt_bulkUpdate alt text in bulkA
DestructiveIdempotent
Inspect

Set alt text for up to 50 images in one call (image ids from get_resource). Writes to Shopify immediately; items succeed or fail independently and failures are reported per id. View every image with get_image BEFORE writing its alt, because alt text guessed from a product title describes the product rather than the picture. Same rules as update_image_alt: describe the image in ≤ 125 characters, no "image of", no keyword stuffing, empty string clears.

NameRequiredDescriptionDefault
itemsYesOne entry per image, up to 50. Entries are applied independently, so one bad id does not void the rest.

Output Schema

NameRequiredDescription
okYesTrue when every item succeeded
failedYes
resultsYes
updatedYes
missingAltRemainingYesImages still missing alt text across the store

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only carry the safety flags (destructive, idempotent, openWorld); the description adds what those flags actually mean in practice: writes land in Shopify immediately, items succeed or fail independently, and failures are reported per id. It also discloses that an empty string clears the alt, which is the destructive path an agent needs to know about.

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 batch limit and write behavior, and every sentence carries information. The 'Same rules as update_image_alt' clause then restates the 125-character/clearing rules that already appear in the schema, which is mild 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 1-parameter bulk mutation with an output schema present, the description covers everything an agent needs: id provenance, the mandatory get_image step, partial-failure semantics, and authoring rules. Return values need not be explained since the output schema exists.

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 nested fields are documented there, so the baseline is 3. The description adds a real constraint beyond the schema: the 125-character authoring rule (stricter than the schema's maxLength of 512) plus content rules (no 'image of', no keyword stuffing). That the two limits disagree is worth resolving, but the added semantics are genuine.

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

Purpose5/5

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

States a specific verb (Set), resource (alt text), batch scope (up to 50 images in one call), and the id source. The reference to update_image_alt makes the single-vs-bulk split inferable, so an agent can separate it from its closest 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 concrete prerequisites: image ids come from get_resource, and the agent must call get_image BEFORE writing each alt, with a reason (alt guessed from a product title describes the product, not the picture). It stops short of an explicit 'use update_image_alt for a single image' routing statement, but the when-to-use context is clear.

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

update_meta_tagsUpdate meta tagsA
DestructiveIdempotent
Inspect

Set the SEO title and/or meta description for ONE resource (by resourceId from list_resources / get_page_seo). Writes to Shopify immediately. Guidance: titles ≤ 60 characters, descriptions 120-160 characters, front-load the keyword, no keyword stuffing. Pass an empty string to clear a field. Fields the merchant hand-edited in the app are respected as locked against templates, and this call marks edited fields as manual.

NameRequiredDescriptionDefault
seoTitleNoOmit to leave unchanged; empty string clears
resourceIdYesId of the item to update, from list_resources or get_page_seo.
seoDescriptionNoOmit to leave unchanged; empty string clears

Output Schema

NameRequiredDescription
okYes
seoTitleNo
metaScoreNo
seoDescriptionNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true. The description adds real context beyond that: writes hit Shopify immediately, empty string clears a field, and hand-edited fields are locked against templates and marked manual. This is valuable behavioral detail, though write-reversibility is not addressed.

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

Conciseness4/5

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

Purpose and scope are front-loaded, then immediate-write behavior, guidance, and clearing are packed efficiently. Dense but every sentence carries information; the guidance clause could arguably be split but it is not 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?

An output schema exists, so return values need no explanation. The description covers scope, ID source, write immediacy, clearing, character guidance, and lock/manual-edit behavior, leaving nothing essential for a correct call missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by giving recommended length guidance (≤60 chars titles, 120-160 descriptions) that differs from the schema's hard maxLength limits of 70/320, and by confirming the empty-string clearing semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (set SEO title and/or meta description) and scopes it explicitly to ONE resource by resourceId. The 'ONE resource' framing distinguishes it from the sibling update_meta_tags_bulk without either schema being opened.

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 where resourceId comes from (list_resources / get_page_seo) and implies single-resource scope, giving clear context for when to use it. It stops short of explicitly routing to update_meta_tags_bulk for multi-resource updates, so no true exclusion is stated.

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

update_meta_tags_bulkUpdate meta tags in bulkA
DestructiveIdempotent
Inspect

Set SEO titles and/or meta descriptions for up to 50 resources in one call (resource ids from list_resources). Writes to Shopify immediately; items succeed or fail independently and failures are reported per id. Same rules as update_meta_tags: titles ≤ 60 characters, descriptions 120-160 characters, front-load the keyword, no keyword stuffing, empty string clears. Write UNIQUE copy per page, because reusing one title across items defeats the point.

NameRequiredDescriptionDefault
itemsYesOne entry per item to update, up to 50. Entries are applied independently, so one bad id does not void the rest.

Output Schema

NameRequiredDescription
okYesTrue when every item succeeded
failedYes
resultsYes
updatedYes

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: 'Writes to Shopify immediately' clarifies timing, and 'items succeed or fail independently and failures are reported per id' discloses partial-failure semantics the destructive/idempotent hints cannot convey. This is exactly the kind of operational detail an agent needs before calling a mutating bulk tool.

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

Conciseness4/5

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

Front-loads the action and the cap in the first clause, then layers rules and caveats. It is a dense paragraph but each sentence carries distinct information; only the personal-voice aside about uniqueness is slightly informal for the volume of rules packed in.

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 an output schema present the description need not explain return values, and it correctly focuses on write timing, per-item failure handling, and constraints. It is essentially complete for a bulk mutation tool; adding the single-vs-bulk routing would close 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 description coverage is 100%, so the baseline is 3, and the description adds real meaning: the 50-item cap, 'empty string clears' semantics, and editorial constraints (front-load the keyword, no stuffing). It also surfaces a numeric limit (titles ≤ 60, descriptions 120-160) that is stricter than the schema's maxLength of 70/320, giving the agent usable guidance rather than just hard caps.

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

Purpose5/5

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

States a specific verb (Set), the resource written (SEO titles and/or meta descriptions), and the batch scope ('up to 50 resources in one call'). It also names its single-item sibling ('Same rules as update_meta_tags'), so an agent can distinguish it from update_meta_tags and update_image_alt_bulk without opening a schema.

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

Usage Guidelines4/5

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

Gives clear context: resource ids come from list_resources, and behavior mirrors update_meta_tags. It adds a use-caveat ('Write UNIQUE copy per page, because reusing one title across items defeats the point') but never explicitly says when to prefer the single-item update_meta_tags over this bulk variant.

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. 1 tool update
    • Changedlist_resources1 field changed
      • changedInput schema / properties / includeUnpublished / description
        Previous value: -"Include draft and archived items (they don't render on the storefront)"New value: +"Include items search engines never see: drafts, archived and unlisted items, and products not published to the Online Store"
  2. 1 tool update
    • Addedfix_broken_links
  3. 26 tool updates
    • First observedapply_link_titles
    • First observedcreate_redirect
    • First observedflatten_redirect_chain
    • First observedget_backlinks
    • First observedget_image
    • First observedget_indexing_status
    • First observedget_job_status
    • First observedget_page_seo
    • First observedget_resource
    • First observedget_search_performance
    • First observedget_seo_summary
    • First observedinspect_url
    • First observedlist_broken_links
    • First observedlist_redirect_chains
    • First observedlist_resources
    • First observedlist_seo_issues
    • First observedpreview_link_replacement
    • First observedpreview_link_titles
    • First observedreplace_link
    • First observedrun_audit
    • First observedrun_link_scan
    • First observedunhide_resource
    • First observedupdate_image_alt
    • First observedupdate_image_alt_bulk
    • First observedupdate_meta_tags
    • First observedupdate_meta_tags_bulk

Publisher details

Operator
Digital Darts · Publisher source
Vendor relationship
First-party
Trust center
Not available
Restrictions
Requires a Shopify store with the SEO Expert: Digital Darts app installed on the Pro plan. One OAuth grant per store; no regional limits. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to audit any website's SEO with 39 tools (12 free, no account required), generate white-label client reports, and manage content at scale through natural conversation. It covers SEO scoring, meta tags, page speed, schema validation, keyword gaps, Google Search Console traffic, AI bot visibility, backlinks, and publishing to CMS platforms.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Google Search Console and Google Analytics 4 through natural language, with tools for SEO analysis like anomaly detection, cannibalization detection, and opportunity scoring.
    10 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    AI search intelligence + Ahrefs-class SEO suite as 59 MCP tools. Track your brand across ChatGPT, Google AI Overview, Gemini, Claude, and Perplexity with persona-anchored Brand Radar dispatches.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources