Skip to main content
Glama
anthesiallc

StoreSignal MCP Server

by anthesiallc

StoreSignal MCP Server

mcp-name: io.github.anthesiallc/storesignal

A Model Context Protocol server that exposes the StoreSignal API as tools, so any MCP client (Claude Desktop, Cursor, ChatGPT connectors, or an agent framework) can analyze Shopify stores and run market intelligence queries conversationally.

It's a thin wrapper: each tool maps to one StoreSignal REST endpoint. All the data work happens in the API.

Tools

Tool

What it does

analyze_store

Full structured profile for a Shopify store URL (apps, CDN, security headers, schema.org, classification, revenue estimate)

compare_stores

Side-by-side comparison of 2-5 stores (shared apps, exclusive apps, tier)

find_stores_using_app

Paginated list of every analyzed store running a specific app

list_apps

All 278 apps in the catalog, optionally filtered by category

app_adoption

Top apps by adoption % across the corpus, optionally filtered by category

app_vs_app

Head-to-head: install counts, overlap, co-install rate, bidirectional cross-adoption

industry_overview

Per-vertical stats: store count, median price, top countries, top apps, tier mix

store_census

Whole-corpus stats (19,647 stores, 20 industries, app/tier/type breakdowns)

get_usage

Current billing period usage and plan limit

Related MCP server: Clind MCP Server

Get an API key

Free tier is 250 calls/month, no credit card:

curl -X POST https://storesignal.anthesia.io/api/v1/signup \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com"}'

The key comes back in the api_key field of the response.

Install and run

The easiest way is with uv (no manual venv needed):

# stdio transport (default — for Claude Desktop, Cursor, most local clients)
STORESIGNAL_API_KEY=ss_your_key uvx storesignal-mcp

# streamable-HTTP transport (for remote / web clients)
STORESIGNAL_API_KEY=ss_your_key uvx storesignal-mcp --http

Or install with pip into its own environment:

pip install storesignal-mcp
STORESIGNAL_API_KEY=ss_your_key storesignal-mcp

Note: install into a dedicated environment. The mcp SDK requires a newer starlette than the StoreSignal API app pins, so the two will conflict if installed together.

Environment variables:

  • STORESIGNAL_API_KEY (required) — your StoreSignal API key.

  • STORESIGNAL_BASE_URL (optional) — defaults to https://storesignal.anthesia.io.

  • STORESIGNAL_TIMEOUT (optional) — request timeout in seconds, default 60.

Client configuration

Claude Desktop

Add to claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "storesignal": {
      "command": "uvx",
      "args": ["storesignal-mcp"],
      "env": { "STORESIGNAL_API_KEY": "ss_your_key" }
    }
  }
}

Cursor

Add the same block to ~/.cursor/mcp.json (or the project .cursor/mcp.json).

Smithery (hosted, no install)

The server is hosted on Smithery, so MCP clients that support Smithery can connect without installing anything. You provide your StoreSignal API key in the Smithery config and it routes to the server.

LangChain / LangGraph

Any LangChain or LangGraph agent can use these tools through langchain-mcp-adapters:

# pip install langchain-mcp-adapters langgraph "langchain[anthropic]"
from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient(
    {
        "storesignal": {
            "transport": "stdio",
            "command": "uvx",
            "args": ["storesignal-mcp"],
            "env": {"STORESIGNAL_API_KEY": "ss_your_key"},
        }
    }
)
tools = await client.get_tools()
# hand `tools` to a LangGraph/LangChain agent, e.g.
# from langgraph.prebuilt import create_react_agent
# agent = create_react_agent("anthropic:claude-opus-4-8", tools)

LlamaIndex works the same way via its MCP tool spec.

Example agent conversations

"What apps does Allbirds use?" → analyze_store("https://www.allbirds.com")

"Compare the tech stacks of Brooklinen and Bombas." → compare_stores(["https://brooklinen.com", "https://bombas.com"])

"Which Shopify stores are running Judge.me?" → find_stores_using_app("judge-me")

"What are the top email-marketing apps on Shopify?" → app_adoption(category="Email Marketing")

"Compare Klaviyo to Omnisend." → app_vs_app("klaviyo", "omnisend")

"Tell me about the Beauty vertical." → industry_overview("Beauty")

Develop from source

git clone https://github.com/anthesiallc/storesignal-mcp && cd storesignal-mcp
python -m venv .venv
.venv/Scripts/python -m pip install -e ".[http]"   # Windows; [http] adds uvicorn for --http
# .venv/bin/pip install -e ".[http]"                # macOS/Linux
STORESIGNAL_API_KEY=ss_your_key .venv/Scripts/python -m storesignal_mcp.server

Notes

  • Data is extracted only from publicly accessible Shopify storefront endpoints.

  • Not affiliated with Shopify Inc.

  • The LLM-classification endpoints (industry / store type / growth stage) are intentionally not exposed as MCP tools. The agent calling MCP is already an LLM and can reason about the raw corpus data itself — exposing them would waste tokens on a round trip to OpenAI.

Available Tools

9 tools
analyze_storeA

Analyze a single Shopify store URL and return a full structured profile.

Returns the store's name, theme, product count, apps installed, payment + analytics + checkout providers, CDN brand, security headers, schema.org markup, AI-classified industry / store type / growth stage (paid tiers), revenue estimate, social media, and more.

Use this as the default entry point when the user asks "what's this store using" or "tell me about https://...". If the URL is already in the 19K-store corpus the response is served from cache; otherwise the API runs a fresh crawl (5-15 seconds for new stores).

Args: url: Shopify store URL, e.g. "https://www.allbirds.com".

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but description discloses caching behavior for known stores and fresh crawl timing for new stores. Mentions paid tiers for some classification fields, though slightly ambiguous. No contradictions.

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?

Well-structured with main action first, then output list, usage guidance, caching behavior, and parameter description. Concise yet comprehensive with no unnecessary fluff.

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?

Despite having an output schema, the description lists many specific outputs and explains caching behavior, making the tool easy to understand. Given the complexity, it is very complete.

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

Parameters4/5

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

Only one parameter 'url' with 0% schema description coverage. Description adds example URL and explains it's a Shopify store URL, providing meaningful guidance beyond the schema.

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

Purpose5/5

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

Description clearly states it analyzes a single Shopify store URL and returns a full structured profile, listing many specific outputs. It distinguishes itself from siblings like compare_stores and find_stores_using_app by being the default entry point.

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

Usage Guidelines4/5

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

Explicitly says 'Use this as the default entry point when the user asks...' providing clear when-to-use guidance. While it doesn't state when not to use, the context implies alternatives for specific queries.

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

app_adoptionA

Percentage of analyzed Shopify stores using each app.

Returns apps ranked by adoption percentage. For example, PayPal is on 99.6% of stores; Klaviyo 24.9%. Optionally filter by category to see (e.g.) only the email-marketing landscape.

Args: category: Optional category to filter on (Email Marketing, Reviews, Payment, Analytics, Loyalty, etc). limit: Top-N apps to return (1-200).

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses ranking by adoption percentage and optional category filtering, but does not clarify if percentages are real-time, cached, or how 'analyzed stores' is defined. Lacks depth on data freshness or limits.

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

Conciseness5/5

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

The description is concise, two short paragraphs with front-loaded purpose. No unnecessary words. The examples and parameter list are efficient and clear.

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 doesn't need to detail return values. It covers purpose, parameters, and filtering. Could add a note about the source of data (e.g., all Shopify stores or a subset), but complete enough for the tool's simplicity.

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

Parameters4/5

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

Schema description coverage is 0%, so the description adds value. It explains that 'category' filters by specific categories (e.g., Email Marketing) and 'limit' controls top-N results from 1-200. This complements the schema which only has types and defaults.

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

Purpose5/5

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

The description clearly states the tool returns adoption percentage of apps across Shopify stores, with examples (PayPal 99.6%, Klaviyo 24.9%). It distinguishes from siblings like app_vs_app and find_stores_using_app by focusing on overall adoption ranking.

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

Usage Guidelines3/5

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

The description implies usage for seeing app adoption percentages, but does not explicitly state when to use this tool vs alternatives like app_vs_app or list_apps. The optional category filter is mentioned, but no when-not-to-use guidance.

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

app_vs_appA

Head-to-head comparison of two apps' installed bases.

Returns: install count for each app, exclusive users (A only / B only), overlap (both installed), co-install rate (overlap as % of union), and bidirectional cross-adoption (% of A users that also run B, and vice versa).

Good for competitive questions like "is Omnisend losing ground to Klaviyo?". The cross-install asymmetry is usually the most interesting number: if 44% of B users also run A but only 5% of A users run B, A is eating B's market from the inside.

Args: app_a: Slug of the first app (e.g. "klaviyo"). app_b: Slug of the second app (e.g. "omnisend").

ParametersJSON Schema
NameRequiredDescriptionDefault
app_aYes
app_bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It describes the outputs well and implies a read-only query, but does not explicitly state its safety, idempotency, or lack of side effects. An explicit note would improve transparency.

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?

Description is well-structured with a clear purpose sentence, return list, usage advice, and parameter definitions. Slightly wordy in the return list, but front-loads key information and is easy to scan.

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

Completeness5/5

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

Given the complexity of a comparison tool with multiple return metrics and an existing output schema, the description provides sufficient detail on what the tool returns and how to interpret the results. It is complete for an agent to understand and use correctly.

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

Parameters4/5

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

Schema has 0% coverage (no descriptions). Description adds meaning with 'slug of the first app' and examples (e.g., 'klaviyo'), clarifying the parameter intent beyond just 'string'. However, no format constraints or validations are mentioned.

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

Purpose5/5

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

Description clearly states it performs a head-to-head comparison of two apps' installed bases, with specific return metrics. It differentiates from siblings like app_adoption (single app) and compare_stores (stores) by focusing on two-app comparison.

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

Usage Guidelines4/5

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

Provides context with competitive questions and highlights the most interesting metric (cross-install asymmetry). Lacks explicit when-not-to-use statements, but the context is clear and helps in selection.

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

compare_storesA

Side-by-side comparison of 2-5 Shopify stores.

Returns each store's profile plus a comparison table: shared apps, apps unique to each, payment-provider overlap, tier comparison. Good for "compare https://A and https://B" or competitive recon questions.

Args: urls: 2-5 Shopify store URLs to compare.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool returns each store's profile and a comparison table, but does not mention any behavioral traits like data freshness, authentication needs, rate limits, or whether the tool is read-only. The lack of transparency is moderate.

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

Conciseness4/5

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

The description is concise (3 sentences plus example) and front-loaded with purpose. It uses bullet points for expected output, which aids readability. Every sentence adds value, though the example could be integrated more seamlessly.

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

Completeness3/5

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

Given the presence of an output schema (not shown) and only one parameter, the description adequately covers input constraints and output types. However, it lacks details on error handling (e.g., what happens with fewer than 2 URLs) and does not fully compensate for absent annotations.

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

Parameters4/5

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

With schema description coverage at 0%, the description adds meaning to the single parameter 'urls' by specifying it accepts 2-5 Shopify store URLs. This provides constraints and domain context not present in the schema, though it could elaborate on URL 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?

The description clearly states the tool's purpose: side-by-side comparison of 2-5 Shopify stores, with specific output details (profile, comparison table). The verb 'compare' and resource 'stores' define the action and object. It distinguishes from siblings like 'analyze_store' (single store) by requiring multiple URLs.

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

Usage Guidelines4/5

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

The description provides usage context with examples ('compare https://A and https://B' or competitive recon). It implies when to use (comparing multiple stores) but does not explicitly exclude alternatives or state when not to use it versus siblings.

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

find_stores_using_appA

List analyzed Shopify stores that have a specific app installed.

Returns paginated stores (up to 100 per page) with the basic profile so the agent can do downstream filtering or rank by store tier / country / industry. Useful for prospecting: "find me stores running Klaviyo" or "who's using ReCharge Subscriptions in the apparel vertical".

Args: app_slug: Catalog slug, e.g. "klaviyo", "judge-me", "loox", "yotpo", "recharge", "shogun", "pagefly". List all slugs with list_apps(). limit: Results per page (1-100). offset: Pagination offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_slugYes
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions pagination up to 100 per page and that it returns a 'basic profile' for downstream filtering. However, it does not specify authentication requirements, rate limits, or whether the results are limited to the user's accessible stores.

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

Conciseness4/5

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

The description is concise: two purpose sentences followed by a structured Args block. It is front-loaded with the main purpose. The Args section could be more formally structured (e.g., a list), but it is clear and efficient.

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

Completeness4/5

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

Given that an output schema exists, the description does not need to detail return values, but it mentions the 'basic profile' includes store tier/country/industry. It covers pagination and parameter details. Missing details like ordering and exact output fields are compensated by the output schema.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains 'app_slug' as a catalog slug with examples, 'limit' as results per page (1-100), and 'offset' as pagination offset. It also tells how to get slugs via 'list_apps()'. This adds significant value beyond the bare schema.

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

Purpose5/5

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

The description begins with a clear verb and resource: 'List analyzed Shopify stores that have a specific app installed.' This distinguishes it from siblings like 'list_apps' (lists apps) and 'analyze_store' (deep dive on a single store).

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

Usage Guidelines4/5

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

The description gives concrete usage examples ('find me stores running Klaviyo') and references 'list_apps()' for obtaining app slugs. It implies when to use (prospecting) but does not explicitly state when not to use it (e.g., for detailed store analysis).

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

get_usageB

Show this API key's current billing period usage and plan limits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only says 'show' (a read operation) but omits details like auth requirements, rate limits, or whether it resets data. Basic disclosure is missing.

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

Conciseness4/5

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

The description is a single, clear sentence with no wasted words. However, it lacks additional context that could be added without sacrificing brevity.

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

Completeness3/5

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

For a zero-parameter tool with an output schema, the description is minimally complete. It identifies the resource (API key usage) but could clarify scope (current billing period) and response format. No significant gaps given simplicity.

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 has zero parameters, so the description does not need to add parameter semantics. Baseline 4 is appropriate as the schema fully covers the empty parameter list.

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

Purpose5/5

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

The description clearly states the tool shows billing period usage and plan limits for the API key, distinguishing it from sibling tools that focus on stores, apps, or adoption.

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

Usage Guidelines2/5

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

No guidance on when to use this tool over alternatives. It does not exclude any contexts or mention prerequisites, leaving the agent without decision support.

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

industry_overviewA

Big-picture stats for one industry vertical.

Returns: store count, median product count, median price (with p25/p75 quartiles), average domain age, country distribution, store-tier mix (small/medium/large), store-type mix (DTC/marketplace/dropshipper), and the top apps installed across the vertical.

Use for questions like "what does the Beauty vertical look like on Shopify?" or "are Apparel stores mostly DTC or marketplaces?".

Args: industry: One of: Apparel, Beauty, Home & Garden, Food & Beverage, Electronics, Pets, Fitness & Sports, Jewelry & Accessories, Toys & Games, Automotive, Health & Wellness, Outdoors & Adventure, Baby & Kids, Books & Stationery, Arts & Crafts, Music & Instruments, Office & Business, Travel & Luggage, Gifts & Novelty, Other.

ParametersJSON Schema
NameRequiredDescriptionDefault
industryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description fully details that the tool returns aggregated statistics and is a read-only query. It specifies the output structure (quartiles, distributions, top apps) but does not discuss permissions or error behavior. However, for a simple query tool, this is adequate.

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

Conciseness5/5

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

The description is concise and well-structured: it opens with a summary, lists return fields, and provides usage examples plus parameter details. Every sentence adds value without 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?

Given the low complexity (one parameter) and presence of output schema, the description fully covers purpose, output, parameter semantics, and usage examples. No gaps remain.

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

Parameters5/5

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

Schema coverage is 0%, but the description explicitly lists all allowed industry values (Apparel, Beauty, etc.) in the args section. This compensates fully for the missing schema descriptions, adding clear meaning to the parameter.

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

Purpose5/5

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

The description clearly states it provides 'big-picture stats for one industry vertical' and enumerates specific return fields (store count, median product count, etc.). It distinctively differs from sibling tools like 'analyze_store' or 'app_adoption' by focusing on aggregate industry-level data.

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

Usage Guidelines4/5

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

The description provides example questions ('what does the Beauty vertical look like?') indicating when to use. It does not explicitly state when not to use or mention alternatives, but the examples provide clear usage context.

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

list_appsA

List all apps in the StoreSignal catalog (currently 278 apps).

Returns each app with its slug, display name, category, subcategory, estimated monthly cost tier, competing alternatives, and live install count across the corpus. Use this to discover what's trackable before calling find_stores_using_app or app_vs_app.

Args: category: Optional category filter, e.g. "Email Marketing", "Reviews", "Payment", "Analytics", "Loyalty", "Privacy", "Fraud & Risk". limit: Max apps to return (1-200).

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

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

Discloses return fields, current catalog size (278), and parameter constraints (limit 1-200). No annotations provided, but description adequately covers behavior.

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

Conciseness5/5

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

Well-structured with first line for purpose, return fields, usage hint, and labeled args. No superfluous text.

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?

Given output schema exists and description already lists return fields plus usage guidance, it is complete for a list tool.

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

Parameters5/5

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

Schema coverage is 0%, but description adds full meaning: category filter with concrete examples and limit range, going beyond schema types.

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

Purpose5/5

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

Clearly states 'List all apps' and distinguishes from siblings by mentioning when to use this before find_stores_using_app or app_vs_app.

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 advises to use this to discover trackable apps before calling specific sibling tools, and details optional filters.

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

store_censusA

High-level statistics for the entire analyzed-stores corpus.

Returns: total stores indexed, count classified, distinct countries, distinct industries, total apps in the catalog, plus breakdowns (top 25 countries, all industries, tier mix, store-type mix, growth-stage mix). Useful when the agent or user wants to understand the dataset's scope before doing more targeted queries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It details the return values (statistics, breakdowns) but does not explicitly mention that it is read-only or non-destructive. However, the nature is clear from context.

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

Conciseness5/5

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

The description is very concise: two sentences of summary, a list of returns, and a usage note. No wasted words, front-loaded with purpose.

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?

Given zero parameters and the existence of an output schema, the description fully covers what the tool does, what it returns, and when to use it. Nothing 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?

The tool has zero parameters, and the description does not need to explain any. According to guidelines, baseline is 4.

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

Purpose5/5

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

The description clearly states the verb 'returns' and the resource 'high-level statistics for the entire analyzed-stores corpus'. It distinguishes from siblings by emphasizing it's for the entire dataset, not individual stores or comparisons.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Useful when the agent or user wants to understand the dataset's scope before doing more targeted queries.' No need for exclusions as it's a broad overview tool.

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. 9 tool updatesv0.1.0
    • First observedanalyze_store
    • First observedapp_adoption
    • First observedapp_vs_app
    • First observedcompare_stores
    • First observedfind_stores_using_app
    • First observedget_usage
    • First observedindustry_overview
    • First observedlist_apps
    • First observedstore_census

TDQS

A4.2/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: analyzing a single store, comparing multiple stores, app adoption stats, head-to-head app comparison, finding stores by app, API usage, industry overview, app catalog listing, and corpus census. No two tools overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., analyze_store, list_apps, compare_stores). The naming is clear and predictable, aiding agent selection.

Tool Count5/5

With 9 tools, the set is well-scoped for the server's domain of Shopify store analytics. Each tool serves a necessary function without unnecessary bloat, covering store analysis, app intelligence, and dataset exploration.

Completeness4/5

The tools cover core workflows: single store analysis, comparison, app landscape, industry stats, and catalog browsing. Minor gaps exist (e.g., no direct search by country or tier), but the surface is sufficiently complete for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers