Shopify Theme Inspector MCP
Provides tools for profiling and analyzing Shopify theme performance, including Liquid template rendering, comparing pages, and generating actionable reports.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Shopify Theme Inspector MCPWhy is my Shopify homepage rendering slowly?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Shopify Theme Inspector MCP
Ask your AI assistant why a Shopify theme is slow—and get a report that points to the Liquid files and lines worth fixing.
Shopify Theme Inspector MCP connects Shopify's server-side Liquid profiler to AI tools such as Codex, Claude Desktop, Cursor, Windsurf, and VS Code. It measures a live storefront, finds expensive templates and repeated work, compares pages, and turns flame-graph data into readable recommendations.
You do not need to be a programmer to run a report. If your AI app supports MCP, the setup is mostly copy, paste, sign in, and ask a question.
This is an unofficial community project. It is not affiliated with or supported by Shopify.
Shopify store owner? Start here
This tool helps answer a practical question:
Which parts of my Shopify theme are making Shopify work harder before it can send the page to a customer?
You can ask that question in normal language. Your AI assistant runs the technical checks, reads Shopify's profiling data, and explains the findings without expecting you to understand a flame graph.
For example, a report can tell you that:
A homepage section is doing a large amount of server-side work.
The same product, menu, price, or image code is being rendered many times.
A third-party app block appears frequently in the slowest part of the profile.
A collection or product template deserves attention before less important code.
A recent theme change improved, worsened, or did not meaningfully change Liquid render time.
The result is a prioritized investigation plan that you can understand yourself or give to a Shopify developer. It helps replace “the store feels slow” with evidence about which Liquid files, sections, snippets, and operations deserve attention.
The MCP diagnoses and explains potential theme bottlenecks. It doesnot automatically edit or publish your live theme. A theme developer should review, test, and deploy code changes safely—ideally on a duplicate theme first.
Related MCP server: Shopify MCP Server
What does “MCP” mean?
MCP stands for Model Context Protocol. In simple terms, it is a way to give an AI assistant access to a specialized set of tools.
Without this MCP, an AI assistant cannot normally request your store's Shopify Liquid performance profile directly. With it, the assistant can run authorized, read-only profiling checks and discuss the results with you.
Think of it as a local bridge:
You ask a question
↓
Your AI assistant chooses the right inspection tool
↓
Shopify returns Liquid profiling data for the requested page
↓
The AI explains the evidence and suggests what to investigateHow it can help your Shopify business
Situation | How the MCP helps |
The homepage feels slow | Finds the Liquid sections, snippets, and operations using the most server-rendering time. |
Collection pages became slower as the catalogue grew | Compares pages and looks for repeated product, menu, filter, or loop work. |
You installed or removed an app | Shows whether app-related theme blocks appear in expensive parts of the profile. |
An agency or developer optimized the theme | Saves profile history so you can compare results before and after the work. |
You do not know where to begin | Ranks likely bottlenecks so the team can investigate the highest-impact areas first. |
You need to brief a developer | Produces a readable Markdown or CSV report with technical evidence and relevant file information when available. |
Different page types behave differently | Compares the homepage, collections, products, cart, and other public storefront URLs. |
Finding and correcting Liquid bottlenecks can reduce Shopify's server-side theme-rendering work. However, this tool does not promise a particular Lighthouse score, Core Web Vitals result, search ranking, or sales increase. Those outcomes also depend on images, JavaScript, apps, network conditions, customer devices, theme design, and many other factors.
What happens during an inspection?
You choose a page, such as the homepage, a collection, or a product.
You sign in to Shopify with an account authorized to access that store.
The MCP requests a read-only Liquid profile for the page.
Shopify returns timing data showing how the theme was rendered on the server.
Your AI assistant explains the profile and organizes the findings by likely importance.
You or your developer decide what to change. The MCP does not change the theme.
You run the profile again after a safe theme update to see whether the result improved.
For more reliable comparisons, profile the same page several times. Shopify infrastructure and cache state can cause normal variation between runs.
What can it inspect?
Profile any page on a Shopify store you are authorized to inspect.
Explain slow Liquid sections, snippets, blocks, tags, and app embeds.
Point to relevant theme files and line numbers when Shopify provides them.
Compare two pages or rank up to ten pages from slowest to fastest.
Detect repeated rendering, expensive lookups, heavy templates, and other common patterns.
Save profile history so you can measure whether a theme change helped.
Export reports as Markdown, CSV, or Speedscope JSON.
Read and explain the results through your AI assistant.
Profiling is read-only: it requests performance data from Shopify and does not edit or publish your theme.
Before you start
You need:
Node.js 18 or newer. Download the LTS version from nodejs.org if it is not installed.
Google Chrome or Chromium for Shopify sign-in.
An AI app that supports local MCP servers.
A Shopify account authorized to access the store you want to profile.
You do not need to download this repository when using the npm package.
npm package details
The MCP is published as a public package on npm, so supported AI applications can download and start it for you.
Detail | Value |
Package | |
Current release | |
Runtime | Node.js 18 or newer |
License | MIT |
Source code | |
MCP Registry identity |
|
MCP connection type | Local STDIO process |
The examples below use npx -y shopify-theme-inspector-mcp@latest. npx downloads the public package when needed and starts the MCP locally. You do not need a global installation, a cloned repository, or an npm account.
To check the newest published version:
npm view shopify-theme-inspector-mcp versionUsing @latest automatically selects the current npm release. Teams that require repeatable environments can replace it with a fixed version, such as shopify-theme-inspector-mcp@0.5.1.
Connect to Codex
Open a terminal and run:
codex mcp add shopify-theme-inspector -- npx -y shopify-theme-inspector-mcp@latestRestart Codex. You can confirm the server is registered with:
codex mcp listThen ask:
Use the shopify-theme-inspector health_check tool and show me the result.
Codex stores local MCP configuration in ~/.codex/config.toml. The Codex app, CLI, and IDE extension share that configuration on the same Codex host. You can also add the server through Settings → MCP servers in supported Codex interfaces. See the official Codex MCP documentation for current configuration options.
Connect to Claude Code
Open a terminal and run:
claude mcp add --transport stdio --scope user shopify-theme-inspector -- npx -y shopify-theme-inspector-mcp@latestThe --scope user option makes the MCP available across your Claude Code projects. Confirm the connection with:
claude mcp listInside Claude Code, you can also run /mcp to view the server and its tools. Then ask:
Use the shopify-theme-inspector health_check tool and explain the result.
See the official Claude Code MCP documentation for scopes, server management, and troubleshooting.
Connect to Claude Desktop
Claude Desktop can run this package as a local MCP server on macOS or Windows:
Install Node.js 18 or newer.
Open Claude Desktop → Settings → Developer → Edit Config.
Add the configuration below inside the
mcpServersobject.Save the file, fully quit Claude Desktop, and reopen it.
{
"mcpServers": {
"shopify-theme-inspector": {
"type": "stdio",
"command": "npx",
"args": ["-y", "shopify-theme-inspector-mcp@latest"]
}
}
}If you already have other MCP servers, keep them and add only the shopify-theme-inspector entry. Do not create a second mcpServers object.
After restarting, open the Connectors menu from the + button in the chat box to confirm the tools are available. Then ask Claude:
Use Shopify Theme Inspector health_check and explain whether everything is ready.
The configuration file is normally located at:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
See the official MCP guide for connecting local servers to Claude Desktop.
Setup in other MCP apps
Find MCP Servers, Tools, or Integrations in your AI application's settings and add a local/STDIO server with:
Name:
shopify-theme-inspectorCommand:
npxArguments:
-y,shopify-theme-inspector-mcp@latest
If your app asks for JSON, use:
{
"mcpServers": {
"shopify-theme-inspector": {
"command": "npx",
"args": ["-y", "shopify-theme-inspector-mcp@latest"]
}
}
}Restart the AI app after saving the server.
Your first homepage report
Copy these prompts one at a time into your AI assistant. Replace the example domain with your store.
1. Check the connection
Use Shopify Theme Inspector health_check and explain the result.
2. Sign in to Shopify
Use the login tool for https://example-store.com/
A Chrome/Chromium window opens. Sign in with the Shopify account that has access to the store.
If you specifically want to reuse an already-open signed-in Chrome profile, ask:
Log in to https://example-store.com/ using my existing Chrome profile.
The AI can use login_in_chrome followed by complete_login_in_chrome. Depending on your AI app, it may ask you to copy the final callback URL from Chrome's address bar. Treat that URL as temporary private login data and only provide it to the local MCP tool that started the login.
3. Ask for a readable audit
Create a deep performance report for the homepage. Explain the findings in plain English, rank fixes by impact, and include the relevant Liquid files and lines.
That is enough to start. The AI chooses the profiling tools and turns the results into a report.
Useful prompts anyone can use
Find the biggest homepage problem
Profile the homepage of https://example-store.com/ and tell me the three most important things to fix first.
Compare pages
Compare
/with/collections/allon https://example-store.com/ and explain why one is slower.
Check several pages
Profile
/,/collections/all,/products/example, and/carton https://example-store.com/. Rank them from slowest to fastest.
Measure a theme optimization
Show the profile history for
/on https://example-store.com/ and tell me whether performance is improving.
Create a shareable report
Export a Markdown performance report for the homepage of https://example-store.com/.
Create a report for your developer or agency
Profile the homepage of https://example-store.com/. Create a handoff report for my Shopify developer with an owner-friendly summary, evidence for every finding, relevant Liquid files and lines, recommended fixes, risks to check before changing anything, and a before-and-after testing plan. Do not edit the theme.
See the sanitized example homepage report to understand the expected output before profiling your own store. It uses fictional store data and contains no merchant information or authentication data.
Separate business decisions from code changes
Review the homepage profile and separate the recommendations into: things I can decide as the store owner, things a Shopify developer should investigate, and things that need more evidence before anyone changes the theme.
Do I need a Shopify developer?
You do not need to understand programming to follow the setup, request a profile, or read an owner-friendly report. The AI assistant can explain technical terms and help you prepare a clear brief. If you are uncomfortable installing Node.js or using a terminal, ask a developer or technical team member to complete the one-time setup for you.
You will usually want a Shopify theme developer to implement the recommendations. Liquid performance work can affect product cards, menus, pricing, localization, analytics, app features, and other storefront behavior. A developer can confirm the cause, make changes on a duplicate theme, test the storefront, and publish only after the change is safe.
A useful report should contain:
An owner summary: what was inspected and why the result matters.
Prioritized findings: what deserves attention now, later, or only if more evidence appears.
Evidence: timings, repetition counts, template names, and file or line information when Shopify provides it.
A recommended action: what the developer should investigate—not just a generic instruction to “optimize the theme.”
Risks and trade-offs: features or business behavior that must continue working.
A validation plan: how to profile and test the page again after the change.
Treat recommendations as leads to investigate, not permission to delete theme or app code. A frequently rendered component may still be essential to the shopping experience.
What the AI can inspect
Tool | What it does |
| Confirms the MCP server is working and lists its capabilities. |
| Shows whether the store login is valid. |
| Opens Shopify Identity sign-in in a dedicated browser session. |
| Starts sign-in in an existing Chrome profile. |
| Safely completes the existing-Chrome sign-in flow. |
| Removes saved local authentication for a store. |
| Returns the full Shopify Liquid flame graph. |
| Returns readable totals, top nodes, and template breakdowns. |
| Finds performance patterns and recommends fixes. |
| Lists sections and snippets above a chosen threshold. |
| Profiles two pages and shows the differences. |
| Profiles up to ten pages and ranks them. |
| Shows changes in render time across saved runs. |
| Exports Markdown, CSV, or Speedscope JSON. |
| Starts the optional legacy session required for Admin API theme-file access. |
| Statically checks a Liquid file; requires the legacy login. |
For most users, login, get_profile_summary, get_bottlenecks, and find_slow_templates are enough.
How to read the results
Total Liquid render time is Shopify's server-side theme-rendering time, not the complete browser page-load time.
Self time is work done by one operation without its children.
Total time includes work done by nested operations.
Percentage shows how much of that profile is attributed to a node or template.
Render/event count highlights repeated work inside loops and nested theme structures.
Do not add every template percentage together as guaranteed savings; parent and child timings can overlap. Run several profiles and prioritize items that stay near the top.
Plain-English glossary
Term | Meaning |
Theme | The templates and code that control how your online store looks and behaves. |
Liquid | Shopify's template language. It builds page content on Shopify's servers before the page reaches the shopper. |
Template | The main layout for a type of page, such as a product or collection page. |
Section | A configurable part of a theme page, such as a banner, product grid, or featured collection. |
Snippet | A smaller reusable piece of Liquid code, such as a product card, price, or icon. |
App block or embed | Theme code added by a Shopify app to provide a storefront feature. |
Server-side render time | Time Shopify spends processing the Liquid theme before sending the response. It is only one part of the shopper's total page-load experience. |
Bottleneck | Work that consumes enough time or repeats enough times to deserve investigation. |
Flame graph | A technical visualization showing where rendering time was spent. The MCP translates this data into summaries and recommendations. |
Profile | One recorded measurement of how Shopify rendered a particular storefront page. |
What it detects
The recommendation engine can flag:
all_products[handle]and repeated product/resource lookups.Expensive work around
content_for_header.Deep or repeated Liquid loops.
Heavy sections, snippets, blocks, and third-party app embeds.
Product, menu, image, price, schema, and cart rendering patterns.
Templates that consume a disproportionate share of Liquid time.
Recommendations are starting points, not automatic proof that a feature should be removed. Business value and storefront behavior still matter.
Privacy and local data
Authentication and profile history stay on the computer running the MCP server:
Data | Default location |
OAuth tokens |
|
Profile history |
|
Tokens are used to request Shopify profiling data.
The package does not send profiling results to a separate analytics service.
Your AI application may have its own data and privacy policy; review that policy separately.
Never post OAuth callback URLs, access tokens, or the local token file in issues or public chats.
Run logout for a store when you want to remove its saved authentication.
What this does not measure
This package focuses on Shopify's server-side Liquid rendering. It is not a replacement for Lighthouse, WebPageTest, or real-user Core Web Vitals.
It does not directly measure:
Browser JavaScript execution.
Image transfer size or CDN download time.
Fonts and third-party browser scripts.
CLS, INP, or real-user LCP.
Mobile network and device performance.
For a complete performance project, use this MCP for Liquid work and a browser performance tool for front-end work.
Troubleshooting
The AI cannot find the tools
Restart the AI app after adding the MCP server. In Codex, run:
codex mcp listConfirm that shopify-theme-inspector is enabled.
npx is not recognized
Install the Node.js LTS release from nodejs.org, then reopen your terminal and AI app.
Shopify says the store is not authenticated
Ask the AI to run get_auth_status, then run login again for the same store domain.
The wrong Chrome profile opens
Keep your preferred Chrome profile open and ask the AI to use login_in_chrome. If Chrome still selects another profile, copy the authorization URL into the correct profile, complete sign-in, and provide the final callback URL only to complete_login_in_chrome.
The report changes between runs
Some variation is normal because of Shopify infrastructure and cache state. Run three to five profiles and compare the median plus the slowest result.
The browser does not open
Install Google Chrome or Chromium. On a headless Linux machine, Puppeteer may also need a browser download:
npx puppeteer browsers install chromeInstall and run from source
This section is for contributors and developers.
git clone https://github.com/dragnoir/Shopify-Theme-Inspector-MCP.git
cd Shopify-Theme-Inspector-MCP
npm install
npm run build
npm run test:runRun the built MCP server:
node dist/index.jsOpen the MCP Inspector:
npm run inspectorHow it works
Shopify Identity OAuth authenticates the authorized Shopify account.
The server exchanges that login for a Storefront Renderer DevTools token.
It requests the storefront with Shopify's Speedscope response type.
Shopify returns a server-side Liquid flame graph instead of ordinary HTML.
The MCP parses, compares, stores, and exports that data for the AI assistant.
Contributing
Issues and pull requests are welcome. Please include:
The problem or improvement in plain language.
Steps to reproduce it.
A sanitized example that does not contain tokens or private store data.
Test results for code changes.
Repository: github.com/dragnoir/Shopify-Theme-Inspector-MCP
License
Available Tools
16 toolsanalyze_liquid_fileA
Statically analyze a specific Liquid file for performance anti-patterns. Requires legacy cookie authentication (use 'login_legacy' tool).
| Name | Required | Description | Default |
|---|---|---|---|
| themeId | No | Theme ID to analyze. Defaults to the live (main) theme. | |
| fileName | No | Specific file to analyze (e.g., 'layout/theme.liquid'). If omitted, analyzes layout/theme.liquid. | |
| storeUrl | Yes | The Shopify store URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It clearly states the operation is static analysis (non-executing) and requires specific authentication. It does not explicitly state that no files are modified, but 'statically analyze' strongly implies a read-only operation, and the auth requirement is a key behavioral constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the main purpose and immediately followed by the auth prerequisite. Every word earns its place; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only 3 parameters, and the description covers the core purpose and auth context. The absence of an output schema means a note about return format would be useful, but the phrase 'for performance anti-patterns' implies the output is a list of findings, so the description is reasonably complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptions in the schema (100% coverage), so the baseline is 3. The tool description does not add extra semantics about parameter formatting or relationships beyond calling out 'specific file', which aligns with the fileName parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'statically analyze' with a precise resource 'specific Liquid file' and a clear objective 'for performance anti-patterns'. This distinguishes it from broader sibling tools like find_slow_templates or get_bottlenecks, which likely operate at the theme or page level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (analyzing a specific file) and adds a critical prerequisite (legacy cookie authentication via login_legacy). It does not explicitly state when not to use it or name alternatives, but the prerequisites and single-file scope give solid guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_profileA
Profile multiple pages on the same store in a single call. Returns a summary comparison of all pages sorted by render time. Useful for finding the slowest pages on a site. Maximum 10 pages per call.
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | Yes | The Shopify store URL | |
| pagePaths | Yes | Array of page paths to profile (e.g., ['/', '/collections/all', '/products/my-product']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the output behavior ('Returns a summary comparison... sorted by render time'), a hard limit ('Maximum 10 pages per call'), and the scope constraint ('same store'). It does not explicitly state the operation is read-only, but the profiling context implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the primary action, then provides the output, a use case, and a constraint—all in order of relevance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter tool with no output schema, the description covers the essential aspects: what it does, what it returns, a use case, and a key limit. It lacks explicit return structure details, but the summary comparison is adequately described for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters with descriptions, including an example for pagePaths. The description's 'Maximum 10 pages per call' merely reiterates the schema's maxItems constraint, adding little semantic value beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Profile multiple pages on the same store') and identifies the resource ('multiple pages') and output ('summary comparison of all pages sorted by render time'). It distinguishes itself from siblings like profile_page by focusing on the batch/summary aspect, and the use case is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes the tool is 'Useful for finding the slowest pages on a site,' which provides a clear use case. However, it does not directly mention when not to use it or name alternatives, though the batch context implicitly contrasts with single-page profiling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_pagesA
Profile two pages on the same store and compare their performance side-by-side. Shows differences in render time, template breakdown, and recommendations. Great for A/B testing template changes or comparing product vs collection page performance.
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | Yes | The Shopify store URL | |
| pagePathA | Yes | First page path (e.g., '/' or '/products/my-product') | |
| pagePathB | Yes | Second page path to compare against |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It tells the user what the tool outputs (differences in render time, template breakdown, recommendations) which is useful behavioral context. However, it does not mention side effects, authentication requirements, or failure modes, leaving some ambiguity about the operation's safety and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose and followed by practical use cases. Every word earns its place, with no redundant or vague content. This is an example of concise, effective tool documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description appropriately summarizes the return values (differences in render time, template breakdown, recommendations). For a comparatively simple 3-parameter tool, this covers the essential output aspects. Minor gaps include lack of detail on output format or error conditions, but the description is adequate for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all three parameters with 100% coverage, so the schema does the heavy lifting. The tool description adds minimal parameter-level semantics beyond reiterating that pagePathA and pagePathB are the two pages to compare. This meets the baseline for schema-heavy descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Profile two pages on the same store and compare their performance side-by-side.' This is a specific verb+resource combination that distinguishes it from single-page profilers like profile_page. The mention of 'render time, template breakdown, and recommendations' adds clarity about what the comparison includes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'Great for A/B testing template changes or comparing product vs collection page performance.' This implies the tool is for comparative analysis rather than single-page profiling. However, it does not explicitly name alternatives (e.g., 'use profile_page for single pages') or state 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.
complete_login_in_chromeA
Complete a login_in_chrome flow using the full final chromiumapp.org callback URL copied from Chrome's address bar.
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | Yes | The same Shopify store URL used with login_in_chrome | |
| callbackUrl | Yes | The full final URL from Chrome's address bar, including code and state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior itself. It states the required input format and implies the action completes login, but it does not discuss session/auth side effects, idempotency, or the single-use nature of the callback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence conveys the entire purpose and the critical input requirement, with no padding or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a clear two-parameter contract and uses existing login context, so the description is adequately complete for selecting and invoking it. Some behavioral details (e.g., what a successful completion returns or whether it invalidates a previous session) are absent, but they are not essential for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers both parameters with meaningful descriptions (storeUrl same as login_in_chrome; callbackUrl includes code and state). The description adds no parameter details beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Complete') and identifies the resource ('login_in_chrome flow') and key input ('callback URL'), making its purpose clear and distinguishing it from the sibling login_in_chrome, which starts the flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this is for completing the flow with the full callback URL copied from Chrome's address bar. It does not explicitly name alternatives or when-not-to-use, but the sibling set makes the role clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_profileA
Profile a page and export the results in a specified format. Supported formats: 'speedscope' (JSON for speedscope.app visualization), 'csv' (spreadsheet-friendly), 'markdown' (shareable report with tables, recommendations, and severity badges). Can save to a file or return inline.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Export format: 'speedscope', 'csv', or 'markdown' | |
| pagePath | No | The page path to profile (defaults to '/') | |
| storeUrl | Yes | The Shopify store URL | |
| outputPath | No | Optional file path to save the export. If omitted, returns content inline. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility. It discloses output behavior (save to file or return inline) and provides format details, but does not mention auth requirements, side effects, or whether it's a read-only operation. The format descriptions add some context, but the side-effect profile remains unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, highly concise, and front-loaded with the main purpose. Every phrase adds useful information: the command, the formats, and output options. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the formats and output options, and the schema documents all parameters. However, it lacks guidance on when to use this versus sibling profiling tools and does not address behavioral aspects like authentication or side effects. Given there is no output schema, the return structure for inline content is also not detailed. Overall it is adequate for a simple export tool but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining what each format means (speedscope JSON, csv spreadsheet-friendly, markdown report with tables and severity badges) and by clarifying outputPath behavior via 'Can save to a file or return inline.' This enriches the parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool profiles a page and exports results in a specified format, with a specific verb and resource. It lists supported formats, which helps understanding, but does not explicitly distinguish it from siblings like profile_page, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: if you need to export profiling data in a particular format, this is the tool. However, there is no explicit guidance on when to use this versus profile_page or other sibling tools, nor any exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_slow_templatesC
Identify Liquid templates and sections that are taking longer than a specified threshold to render. Requires OAuth2 authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| pagePath | No | The page path to profile | |
| storeUrl | Yes | The Shopify store URL | |
| thresholdMs | No | Threshold in milliseconds. Defaults to 50ms. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It mentions OAuth2 authentication, which is a useful context, but it omits what the tool returns, whether it is read-only, how pagination or filtering works, or any side effects. The description is too sparse for an analysis tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose and the authentication requirement. Every word earns its place, with no fluff or repetition. Front-loaded with the main action, it is a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool having no output schema, the description does not explain what the tool returns (e.g., a list of templates with render times). It also ignores the optional pagePath parameter and how it interacts with the threshold. Given the presence of related sibling tools, this description lacks sufficient context for an agent to fully understand the tool's scope and output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal semantic value by mentioning the threshold concept, but it does not elaborate on pagePath or thresholdMs beyond what the schema already states. The schema itself documents all parameters adequately, so no extra compensation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool identifies Liquid templates and sections exceeding a render threshold. The verb 'Identify' is specific and the resource is well-defined. However, it does not explicitly differentiate the tool from sibling profiling tools like get_bottlenecks or analyze_liquid_file, so it misses the highest distinction mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It only mentions OAuth2 authentication, which is a prerequisite, not a usage condition. There are no exclusions or hints about when to prefer this over get_bottlenecks or profile_page. This leaves the agent without direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auth_statusA
Check authentication status. Shows both OAuth2 (for profiling) and legacy (for Admin API) authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | No | Optional: specific store URL to check. If omitted, lists all authenticated stores. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds useful context by specifying the two authentication types (OAuth2 and legacy), but it does not disclose potential side effects, return format, or prerequisites. The behavior is minimally transparent but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that immediately convey the tool's purpose and scope. Every word adds value, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description is fairly complete. It explains what the tool does and distinguishes between two authentication types, though it could be more explicit about the form of the returned status information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional parameter 'storeUrl'. The description does not add meaningful semantics beyond what the schema already states, so it remains at the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks authentication status, with a specific verb ('check') and resource ('authentication status'). It also distinguishes between OAuth2 and legacy authentication, setting it apart from sibling tools like login/logout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to check authentication status) and distinguishes it from login/logout siblings, but it does not explicitly state alternatives or when-not-to-use scenarios. However, the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bottlenecksA
Profile a page and automatically detect performance anti-patterns. Returns prioritized recommendations with severity ratings (critical/warning/info), specific file/line locations, measured impact, and concrete fix suggestions. This is the BEST tool for identifying what to optimize.
| Name | Required | Description | Default |
|---|---|---|---|
| pagePath | No | The page path to analyze (defaults to '/') | |
| storeUrl | Yes | The Shopify store URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the core behavior (profiling and detecting anti-patterns) and the output format (recommendations, severity, locations, impact, fixes). However, it doesn't mention any side effects, prerequisites like login, or whether it's read-only. The absence of such disclosure is a gap, but the description is not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that are front-loaded with the main action, followed by output details and a usage claim. Every sentence contributes value and there is no unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool of this complexity, the description covers the primary behavior and the full output format, which is substantial. It doesn't mention preconditions (e.g., requires authentication) or limitations, but the core functionality is well-explained. Given no output schema and moderate complexity, this is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents both parameters (storeUrl and pagePath) with descriptions. The description adds no parameter-level information, so it doesn't go beyond the baseline 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Profile a page') and clearly states the purpose: automatically detect performance anti-patterns. It also distinguishes itself from siblings by claiming to be the BEST tool for identifying what to optimize, giving it a unique role among profiling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool: 'This is the BEST tool for identifying what to optimize.' However, it does not mention any exclusions or alternatives, and it doesn't explain when not to use it, but the strong usage recommendation elevates it above an implied guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_historyA
View profiling history and performance trends for a store. Shows how render times have changed over time. Every profiling call is automatically saved to history. Use this to track the impact of optimizations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of history entries to return (default: 10) | |
| pagePath | No | Filter history to a specific page path. If omitted, lists all profiled pages. | |
| storeUrl | Yes | The Shopify store URL | |
| clearHistory | No | Set to true to clear history for this store/page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It reveals that profiling calls are auto-saved and that trends are shown, but it omits the destructive `clearHistory` capability, painting the tool as purely view-only when it can delete history. This is a significant under-disclosure for a tool with a mutation side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, detail, and usage guidance. No fluff or repetition. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema and no annotations, the description covers the primary functionality and use case, but lacks disclosure of the clearHistory side effect and does not describe what the returned history data looks like. These gaps prevent it from being fully complete, though the core viewing purpose is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some conceptual context (history auto-save, trend tracking) but does not enrich any specific parameter semantics beyond what the schema already states. The `clearHistory` parameter's destructive nature is not reinforced in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'View profiling history and performance trends for a store' – a specific verb and resource. It clearly distinguishes from sibling tools by focusing on historical trends over time, and adds context with 'Shows how render times have changed over time.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use this to track the impact of optimizations,' giving a concrete when-to-use scenario. It does not explicitly name alternatives or exclusions, but the use case is clear enough to differentiate from siblings like get_profile_summary or find_slow_templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_summaryA
Profile a Shopify store page and return a structured performance summary with top slow nodes and template breakdown. More readable than raw profile_page data. Requires OAuth2 authentication first.
| Name | Required | Description | Default |
|---|---|---|---|
| pagePath | No | The page path to profile | |
| storeUrl | Yes | The Shopify store URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It states the output structure and authentication requirement, which adds useful context. However, it does not disclose whether the operation is strictly read-only, potential side effects, rate limits, or what 'top slow nodes' entails in detail. These are reasonable expectations for a profiling tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear, front-loaded sentences. The first provides the purpose and output, the second adds a comparative advantage and prerequisite. No wasted words or repetition of schema info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the key return components (top slow nodes, template breakdown) and the readability benefit. It misses a more detailed comparison with related siblings, but for a two-parameter, likely read-only tool, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (storeUrl, pagePath) have meaningful descriptions in the schema. The tool description itself does not add extra parameter-level semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Profile' and identifies the resource 'Shopify store page' with a clear outcome: structured performance summary with slow nodes and template breakdown. It also distinguishes itself from profile_page by noting it is 'more readable than raw profile_page data', separating it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context: use for a readable summary over raw profile_page data, and requires OAuth2 authentication first. It does not explicitly exclude other likely alternatives like find_slow_templates or get_bottlenecks, but the purpose and contrast are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Check if the Shopify Theme Inspector MCP server is running correctly
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the check behavior but adds no details about side effects (likely none), return format, or potential failure modes. It is minimally sufficient but not revealing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that wastes no words. It directly states the tool's function without filler, appropriate for this simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health check with no output schema, the description adequately conveys the tool's purpose. It could have specified the return format, but the essence is clear enough for basic agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty (100% coverage). Per guidelines, a 0-parameter tool receives a baseline of 4. The description correctly omits parameter information since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: checking server health. It uses a specific verb ('check') and resource ('Shopify Theme Inspector MCP server'), and is clearly distinct from sibling tools like login or profile queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case: verifying the server is operational before relying on other tools. It does not explicitly mention alternatives, but the context is unambiguous and no exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
Authenticate with Shopify via OAuth2 (same method as the Chrome Theme Inspector extension). Opens a browser for you to log in. This provides full flame graph profiling data.
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | Yes | The Shopify store URL (e.g., onebed.com.au or mystore.myshopify.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It discloses the OAuth2 method, the browser interaction, and the resulting profiling capability. However, it does not explicitly state that the process requires a human to complete login, that it may block while waiting, or what happens to existing authentication state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three clear, front-loaded sentences with no filler. Each sentence adds essential information: the authentication method, the browser side effect, and the resulting benefit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple login tool with one parameter and no output schema, the description covers the key aspects: purpose, authentication mechanism, browser interaction, and what the authentication enables. It could be more explicit about the interactive nature and post-login behavior, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage of the single parameter, storeUrl, including a description and example. The tool description does not add extra semantic detail about the parameter, which is acceptable given full schema coverage, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Authenticate with Shopify via OAuth2'), the resource (Shopify), and the method (browser-based OAuth2, same as Chrome Theme Inspector). It also distinguishes itself from sibling tools by mentioning the browser flow and the full flame graph profiling data it enables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to authenticate via OAuth2 in a browser and to get access to flame graph profiling data. It doesn't explicitly mention when to avoid this tool or list alternatives, but the browser-based OAuth2 method and the purpose are enough to guide typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
login_in_chromeA
Start Shopify OAuth in the user's existing Chrome profile without closing Chrome. After authorization, copy the full final callback URL and pass it to complete_login_in_chrome.
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | Yes | The Shopify store URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It discloses that the tool does not close Chrome and that user authorization is required, but it omits other behavioral traits such as whether a new tab is opened, whether the tool blocks while awaiting authorization, or how the callback URL is exposed to the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the primary action and then gives a concrete follow-up instruction, making every word earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers the basic flow but leaves the practical outcome under-specified. It does not indicate what the tool returns or how the callback URL is obtained after authorization, which is a noticeable gap for an interactive OAuth flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'storeUrl' described as 'The Shopify store URL'. The description does not add any additional meaning, but the schema already fully documents the parameter, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Start Shopify OAuth' and identifies the resource 'user's existing Chrome profile' plus a key constraint 'without closing Chrome'. It clearly distinguishes itself from the sibling 'complete_login_in_chrome' by positioning this as the initial step of a two-step flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow: start OAuth, then copy the final callback URL and pass it to complete_login_in_chrome. It implies this is for reusing an existing Chrome profile, but it does not explicitly state when to prefer this over sibling login tools or 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.
login_legacyA
Legacy cookie-based Shopify login. Opens browser for manual login. Required for 'analyze_liquid_file' tool which needs Admin API access. Use 'login' (OAuth2) for profiling tools.
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | Yes | The Shopify store URL (e.g., mystore.myshopify.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does mention that the tool is cookie-based and opens a browser for manual login, which informs the agent about the interactive nature. However, it lacks details on what happens after login, whether it revokes existing sessions, or how authentication state is managed, leaving room for ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, consisting of three focused sentences. It front-loads the core purpose, provides necessary usage context, and does not waste words, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema) and the presence of sibling tools, the description adequately covers the core purpose, usage, and alternative. It also explains the dependency on analyze_liquid_file. However, it does not mention what the tool returns or how success is indicated, which could be a minor gap for an agent expecting a completion signal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter storeUrl, with the schema providing the format example. The description does not add any extra detail about the parameter itself, so it adds no value beyond the schema, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Legacy cookie-based Shopify login' that opens a browser for manual login. It distinguishes itself from the 'login' (OAuth2) tool by mentioning the legacy nature and cookie-based approach, making the purpose specific and well-differentiated among sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Required for analyze_liquid_file tool which needs Admin API access.' It also provides an alternative: 'Use login (OAuth2) for profiling tools.' This gives clear guidance on context and exclusion, adhering to the best standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutA
Remove saved authentication (both OAuth2 and legacy sessions) for a Shopify store
| Name | Required | Description | Default |
|---|---|---|---|
| storeUrl | Yes | The Shopify store URL to logout from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates a destructive action ('Remove saved authentication'), which is helpful, but it does not mention any prerequisites, side effects (e.g., needing to re-authenticate), or whether the operation is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately states the action and scope, making it highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema), the description adequately covers the core functionality. However, it could be more complete by mentioning expected outcomes (e.g., success/failure response) or preconditions, but those are not critical given the clear purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the storeUrl parameter (100% coverage), so the description's mention of 'a Shopify store' adds only minimal confirmation of the parameter's purpose without providing extra format, constraints, or usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Remove' and clearly identifies the resource: 'saved authentication' for a Shopify store. It also distinguishes from sibling login tools by explicitly mentioning both OAuth2 and legacy sessions, making the tool's unique purpose obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context implies this tool is for logging out or clearing saved credentials, but it does not explicitly state when to use it versus alternatives. No alternatives are named, and there is no when-to-use or when-not-to-use guidance beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profile_pageA
Profile a Shopify store page to analyze Liquid template rendering performance. Returns FULL flame graph profiling data (same as Chrome extension). Requires OAuth2 authentication first (use the 'login' tool).
| Name | Required | Description | Default |
|---|---|---|---|
| pagePath | No | The page path to profile (e.g., /products/example). Defaults to homepage '/' | |
| storeUrl | Yes | The Shopify store URL (e.g., onebed.com.au or mystore.myshopify.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses the authentication requirement and the output type (full flame graph). However, it does not explicitly state whether the operation is read-only, any potential performance impact on the store, or the format of the flame graph data. The reference to the Chrome extension provides some context but leaves room for more transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and purpose. The first sentence immediately states what the tool does; the second provides output type and auth requirement. Every clause earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately conveys the return type ('FULL flame graph profiling data') and references the Chrome extension for familiarity. It covers the key context: purpose, prerequisites, and output. It does not detail edge cases or error handling, but for a straightforward profiling tool with two simple parameters, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers 100% of parameter descriptions (storeUrl and pagePath), so the baseline is 3. The tool description adds little beyond the schema, only implying the target is a store page. No extra semantic nuance is added, but the schema is sufficiently clear on its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Profile a Shopify store page to analyze Liquid template rendering performance.' It uses a specific verb ('Profile') and resource ('Shopify store page'), and distinguishes from siblings like get_profile_summary (which likely provides a summary) and find_slow_templates (which targets slow templates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the prerequisite: 'Requires OAuth2 authentication first (use the 'login' tool).' This tells the agent when to use this tool (after login) and provides an alternative for the auth step. It also hints at when to use this over summary tools by saying it returns 'FULL flame graph profiling data,' implying it's for detailed analysis rather than high-level summaries.
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. Dates show when Glama detected each change.
16 tool updates
v0.5.1- First observed
analyze_liquid_file - First observed
batch_profile - First observed
compare_pages - First observed
complete_login_in_chrome - First observed
export_profile - First observed
find_slow_templates - First observed
get_auth_status - First observed
get_bottlenecks - First observed
get_profile_history - First observed
get_profile_summary - First observed
health_check - First observed
login - First observed
login_in_chrome - First observed
login_legacy - First observed
logout - First observed
profile_page
TDQS
Most tools have distinct purposes, but there is potential confusion among the four login methods (login, login_in_chrome, complete_login_in_chrome, login_legacy) and among profiling tools (profile_page, get_profile_summary, get_bottlenecks, export_profile) that all profile a page. Descriptions clarify differences, but the overlap requires careful reading.
Tool names generally follow a verb_noun pattern (e.g., get_profile_summary, find_slow_templates, export_profile), but there are minor inconsistencies: some use 'get_' prefixes, others don't (profile_page vs. get_profile_summary), and multi-word names like login_in_chrome and complete_login_in_chrome break the simple pattern. Still readable and predictable overall.
With 16 tools, the server is slightly over the typical well-scoped range of 3-15, but the count is justified by the broad feature set including authentication, profiling, batch operations, comparison, export, history, and health checks. Each tool serves a distinct function in the domain of theme performance analysis.
The tool set provides comprehensive coverage for Shopify theme performance profiling: multiple authentication methods, single and batch profiling, raw and summarized output, bottleneck detection, static analysis, comparison, export formats, history tracking, and a health check. No significant gaps are apparent for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
All-in-one Shopify SEO. Rank on Google and in AI search. Find what's broken and fix it in chat.
AI commerce for Shopify: product search, comparison, recommendations, and checkout via MCP.
Commerce intelligence for AI agents. Diagnose drop-offs, fix checkouts, optimize pricing.
Safe Shopify theme changes for AI agents: staging, validation, visual review, approval, rollback.
1
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides instant, offline access to complete Shopify Liquid documentation (198 docs covering tags, filters, and objects) for AI assistants to help with theme development and Liquid templating.73MIT
- AlicenseAqualityDmaintenanceProvides AI assistants with real-time access to Shopify store analytics, sales data, and inventory through ShopifyQL and the Admin GraphQL API. It enables users to query store performance, customer metrics, and marketing insights using natural language.13MIT
- FlicenseNot gradedqualityDmaintenanceStreams live React profiler data to AI agents, enabling them to analyze performance and suggest specific, actionable fixes for slow components.3-

Presso MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceConnects e-commerce and marketing data sources like Shopify, GA4, Google Ads, and Meta Ads to AI assistants, enabling natural language queries about store performance, ad campaigns, and customer behavior.202MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dragnoir/Shopify-Theme-Inspector-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server