Skip to main content
Glama

Shoppingate MCP Server (TypeScript)

Model Context Protocol (MCP) Server for the Shoppingate AI Platform — powering both Merchant & Customer Super-App capabilities across Claude Desktop, ChatGPT, Claude.ai, and the Shoppingate AI Gateway.


🛠️ Complete Feature & Tool Coverage

1. Merchant Tools (src/tools/merchantTools.ts)

  • search_products: Search catalog with keyword, category, price range, and stock status filters.

  • get_product_details: Fetch product specs, images, pricing, and stock levels by ID.

  • update_product_stock: Update inventory quantity and stock availability.

  • list_merchant_orders: Filter customer orders by status (pending, processing, shipped, delivered, cancelled).

  • get_order_details: Retrieve full order line items, customer details, and shipping address.

  • update_order_status: Change order fulfillment status with tracking notes.

  • list_promotions: View active store deals and promotional offers.

  • create_coupon: Create percentage or fixed SAR discount coupon codes.

2. Customer Super-App Tools (src/tools/customerTools.ts)

  • customer_search_products: Natural language product search for end-customers by budget, category, or brand.

  • get_recommendations: Fetch personalized recommendation rails (Recommended for You, Trending, New Arrivals).

  • get_similar_products: Semantic similarity search for Product Detail Pages (PDP).

  • track_customer_order: Live order tracking and delivery status.

  • check_visa_guidance: Query visa requirements and packages for travel destinations.

  • search_travel_insurance: Query travel insurance plans by destination & trip duration.

3. MCP Resources & Prompts

  • Resources: shoppingate://catalog/summary & shoppingate://orders/summary.

  • Prompts: merchant_daily_briefing & product_copywriter (Bilingual English/Arabic PDP copywriting).


Related MCP server: Universal Shopping Agent MCP Server

⚙️ Transport Modes

  • Stdio Mode (npm run start:stdio): Native integration with Claude Desktop.

  • HTTP / SSE Mode (npm run start:sse): Express server listening on http://localhost:3005 for ChatGPT, Claude.ai, & AI Gateway.


🚀 Quick Start

cd Backend/MCP-SERVER

# Install dependencies
npm install

# Compile TypeScript
npm run build

# Start in SSE / Browser Playground Mode (Port 3005)
npm run start:sse

# Start in Stdio Mode (For Claude Desktop CLI)
npm run start:stdio

🌐 Browser Playground

Open http://localhost:3005 in Chrome to test both Merchant and Customer tools visually.

  • Playground UI: http://localhost:3005

  • Health Check: http://localhost:3005/health-check

  • OpenAPI Schema: http://localhost:3005/openapi.json

  • SSE Stream: http://localhost:3005/sse


💡 Claude Desktop Setup

Config file location: %APPDATA%\Claude\claude_desktop_config.json (or Microsoft Store AppData path):

{
  "mcpServers": {
    "shoppingate-merchant": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": [
        "C:\\Repository\\Shoppingate\\Backend\\MCP-SERVER\\dist\\index.js"
      ],
      "env": {
        "TRANSPORT_MODE": "stdio",
        "ECOM_SERVICE_URL": "https://microservices.shoppinggate.app/ecom",
        "SERVICE_API_KEY": "O5Xpb9Lho$NooI@7@Q>ztCpGVCQ"
      }
    }
  }
}

Available Tools

14 tools
check_visa_guidanceA

Check visa requirements and package guidance for travel destinations in Shoppingate.

ParametersJSON Schema
NameRequiredDescriptionDefault
nationalityNoCustomer nationalitySaudi Arabia
destinationCountryYesDestination country (e.g. Turkey, UAE, UK, Schengen)

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It states the tool 'checks' information, implying a read-only operation, but does not disclose any other behavioral traits such as data sources, output format, or whether 'package guidance' is a separate feature.

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 a single concise sentence with no redundant information. It is front-loaded with the action and resource.

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

Completeness3/5

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

For a simple two-parameter tool without an output schema, the description provides the core purpose but leaves 'package guidance' ambiguous. It does not explain what the output will look like or what 'package guidance' entails, which could be necessary for correct usage.

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

Parameters3/5

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

The input schema has 100% description coverage for both parameters, including a default for nationality and examples for destinationCountry. The description adds no additional parameter semantics beyond what the schema already provides, so it meets the baseline.

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

Purpose5/5

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

The description uses the specific verb 'Check' and clearly identifies the resource: visa requirements and package guidance for travel destinations. It distinguishes from sibling tools like search_products and search_travel_insurance by focusing on visa guidance.

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 visa-related queries but provides no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions or alternative tools, though sibling names like search_travel_insurance suggest different purposes.

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

create_couponB

Create a new promotional discount coupon code for store customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCoupon code (e.g. SUMMER20, WELCOME100)
endDateNoCoupon expiration date (YYYY-MM-DD)
startDateNoCoupon valid start date (YYYY-MM-DD)
usageLimitNoTotal usage limit count
discountTypeYesDiscount type: percentage off or fixed SAR amount
discountValueYesDiscount value (e.g. 15 for 15% or 50 for 50 SAR)
minOrderAmountNoMinimum required order total to use coupon
maxDiscountAmountNoMaximum cap on discount amount for percentage coupons

TDQS

B3.2/5.0
Behavior2/5

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 implies a write operation via 'Create' but does not disclose potential side effects, idempotency, duplicate handling, required permissions, or any edge-case behavior. The description is too thin to be transparent.

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 a single, front-loaded sentence with no unnecessary words. It conveys the essential purpose directly and efficiently, achieving maximum conciseness.

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

Completeness2/5

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

Despite having 8 parameters and no output schema, the description provides only the basic purpose. It does not explain expected return values, validation rules, or behavior in edge cases like duplicate codes or inactive date ranges. The description is too sparse for the tool's complexity.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already explains all parameters. The description adds no parameter-specific information, leaving the semantics to be fully derived from the schema. This aligns with the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('Create') and a clear resource ('promotional discount coupon code'), which makes the tool's purpose immediately understandable. It is distinct from sibling tools like list_promotions or update_product_stock, and the phrase 'for store customers' adds useful audience context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites, limitations, or exclusions. It is a bare statement of function with no usage context.

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

customer_search_productsC

Search products for Shoppingate customers by title, category, budget, or brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoCustomer language choice (en or ar)en
limitNoNumber of recommendations to return
queryYesCustomer search term or product name (e.g. black Nike shoes, iPhone 15 case)
maxPriceNoMaximum budget in SAR
minPriceNoMinimum budget in SAR

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral transparency. It only states what the tool does but does not disclose language handling, limit behavior, price range semantics, or return format. There is no mention of how the 'query' relates to category/brand, nor any output details.

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 sentence, concise and to the point. It avoids redundancy, but its brevity comes at the cost of missing important contextual details. Still, it earns a 4 for being compact and front-loaded.

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

Completeness2/5

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

Given there are 5 parameters, no annotations, and no output schema, the description is incomplete. It does not explain the meaning of the min/max price, the lang behavior, or what the response contains. It also introduces ambiguity with 'category' and 'brand' that is not resolved. For a tool with this complexity, the description is insufficient.

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

Parameters2/5

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

While the schema has 100% parameter descriptions, the tool description adds confusion by listing 'category' and 'brand' as search dimensions, which are not separate parameters in the schema. The description does not clarify how query maps to these dimensions, and it fails to mention the lang and limit parameters that are documented in the schema. This reduces clarity rather than adding value.

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

Purpose4/5

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

The description clearly states the verb 'search', the resource 'products', and the intended audience 'Shoppingate customers'. It also lists search dimensions (title, category, budget, brand). However, it does not differentiate from the sibling tool 'search_products', and the mention of 'category' and 'brand' is not reflected in the schema, causing slight ambiguity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like 'search_products'. The phrase 'for Shoppingate customers' suggests a customer-facing context but is not explicitly contrasted with other search tools. No exclusions or alternative recommendations are provided.

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

get_order_detailsA

Fetch full order details including line items, prices, shipping address, and payment status.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderIdYesOrder ID or order number

TDQS

A3.8/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. The verb 'Fetch' implies a read-only operation, and the listed fields give some context about the response content. However, it does not disclose potential errors, permission requirements, or any conditions under which the operation might fail, leaving behavioral aspects only partially transparent.

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 a single, unambiguous sentence that front-loads the action ('Fetch full order details') and immediately provides the key fields expected. No unnecessary words or fluff.

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

Completeness4/5

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

For a simple fetch tool with one parameter and no output schema, the description adequately specifies what will be returned (line items, prices, shipping, payment status). It lacks any mention of error handling or edge cases, but given the tool's simplicity, it is nearly complete.

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

Parameters3/5

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

The input schema already provides a complete description of orderId as 'Order ID or order number' with types specified, achieving 100% coverage. The description adds no additional meaning beyond the schema, so per the baseline for high coverage, it scores a 3.

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

Purpose5/5

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

The description states 'Fetch full order details' with a clear verb and resource, and lists specific fields (line items, prices, shipping address, payment status). This distinguishes it from sibling tools like get_product_details or list_merchant_orders, making its purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage when full order details are needed, but it does not explicitly state when to use this tool versus alternatives like list_merchant_orders or track_customer_order. It lacks exclusion criteria or mention of alternative tools, so guidance is only implicit.

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

get_product_detailsA

Get full product details including images, inventory stock, brand, category, and pricing.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage for product names and descriptionsen
productIdYesNumeric ID of the product

TDQS

A4/5.0
Behavior4/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 for behavioral disclosure. It clearly indicates the returned fields (images, stock, brand, etc.) and the 'Get' verb implies a read-only operation, which is transparent for a simple retrieval tool. It does not discuss edge cases or side effects, but for a non-mutating getter this is sufficient.

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 a single, front-loaded sentence that lists the key return contents without extra filler. Every phrase earns its place, and it is immediately scannable and understandable.

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?

The tool is simple with only two parameters, a required productId and an optional lang, and no output schema exists. The description adequately covers the main return fields, while the schema covers parameter details. It is complete enough for an agent to know the tool's scope, though it could optionally mention dynamic behavior like language-specific names.

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

Parameters3/5

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

Schema coverage is 100%, with both productId and lang fully described in the input schema. The description adds no additional parameter semantics beyond what the schema already provides; it lists outputs but does not explain parameter usage or format beyond the schema's own descriptions.

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

Purpose5/5

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

The description uses a specific verb 'Get' with a clear resource 'full product details' and enumerates concrete contents: images, inventory stock, brand, category, and pricing. This clearly differentiates from sibling tools like search_products (search vs. details) and update_product_stock (update vs. read).

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 when a product's detailed information is needed, likely by ID, but it does not explicitly state when to use this tool over alternatives or any prerequisites. It mentions no exclusions or when-not-to-use scenarios, leaving guidance at an implied level rather than explicit.

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

get_recommendationsA

Get personalized product recommendations for a customer (Recommended for You, Trending, New Arrivals).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred response languageen
userIdNoCustomer user ID or guest session token

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states the action and provides no context about behavior for invalid/missing userId, authentication requirements, pagination, or response shape. The 'Get' verb implies a read operation but doesn't confirm non-destructiveness or edge cases.

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 a single, concise sentence that front-loads the core purpose and includes useful examples in parentheses. No wasted words or redundant information.

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

Completeness3/5

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

For a simple tool with two optional parameters and no output schema, the description is adequate but leaves gaps around response format, what 'personalized' means operationally, and behavior when no userId is provided. It covers the primary purpose but lacks depth needed for full self-service understanding.

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

Parameters3/5

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

The schema already fully describes both parameters (lang and userId) with 100% coverage. The description adds only a minor implication that userId drives personalization, but doesn't provide any additional syntax, format, or edge-case semantics beyond what the schema states. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') and clearly identifies the resource ('personalized product recommendations'), with parenthetical examples ('Recommended for You, Trending, New Arrivals') that further clarify scope. This distinguishes it from siblings like search_products (search vs recommend) and get_similar_products (product-based vs customer-based).

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

Usage Guidelines3/5

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

The phrase 'for a customer' and the category examples imply this tool is for recommendation surfaces, but there is no explicit guidance on when to use it versus alternatives like search_products or customer_search_products. No when-not or exclusion conditions are stated.

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

get_similar_productsA

Find products similar to a given product ID for PDP recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage choiceen
limitNoNumber of similar items
productIdYesAnchor product ID

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only says 'Find products similar' without describing what the output contains (e.g., list of IDs vs full details), whether it's read-only, or any edge cases like empty results. This is insufficient.

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 a single, front-loaded sentence that communicates the core purpose without any fluff. It earns its place fully.

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

Completeness2/5

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

Given there is no output schema, the description should explain what the tool returns. It does not. An agent is left guessing whether the response is a list of product IDs, full product objects, or something else. The schema covers inputs but not outputs, so the description remains incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no extra parameter semantics beyond identifying productId as the anchor, which is present in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb 'Find' with a precise resource 'products similar to a given product ID' and a clear context 'for PDP recommendations'. This clearly distinguishes from siblings like get_product_details (single product) and search_products (query-based search).

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 phrase 'for PDP recommendations' gives clear context for when the tool is appropriate. However, it does not explicitly state when not to use it or name alternative tools, so it stops short of a 5.

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

list_merchant_ordersA

List merchant store orders with optional status, date range, or search filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
limitNoNumber of orders per page
searchNoSearch query (order ID, customer name, email)
statusNoOrder status filter
toDateNoFilter orders up to date (YYYY-MM-DD)
fromDateNoFilter orders starting from date (YYYY-MM-DD)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the tool 'lists' orders without explicitly confirming it is read-only or disclosing pagination behavior, rate limits, or side effects. This is a notable gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant wording. Every clause adds meaning, 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.

Completeness3/5

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

For a list tool with a complete parameter schema, the description is adequate for basic invocation. However, it lacks notes on filter combination constraints, pagination defaults, or return format, which would enhance completeness given no output schema exists.

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

Parameters3/5

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

The input schema provides descriptions for all 6 parameters, giving the description minimal additional value. It merely groups them conceptually as 'status, date range, or search filtering,' which aligns with the baseline for high schema coverage.

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 action ('List') and the resource ('merchant store orders'), and enumerates specific filtering options. This distinguishes it from sibling tools like get_order_details, which implies a single-order fetch.

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 specifies what the tool does but offers no explicit guidance on when to use it versus alternatives. Usage context is implied by the verb 'list,' but no when-to-use or when-not-to-use scenarios are described.

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

list_promotionsB

List active promotions, deals, and discount coupons available in the store.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo

TDQS

B3.4/5.0
Behavior2/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 only discloses that the list filters to 'active' promotions, but does not mention pagination behavior, return format, permissions, or any side effects. For a listing tool this is a moderate gap, as the description does not explicitly confirm it is read-only or describe what fields are returned.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys the core function without unnecessary words. It uses clear, direct language and avoids redundancy.

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

Completeness3/5

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

For a simple listing tool with pagination, the description provides the essential purpose and the 'active' filter. However, without an output schema, it lacks details about the return structure, ordering, or whether any other filters (e.g., by type) are available. It is minimally viable but not rich in context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter explanation. It does not mention page or limit at all, though the schema includes defaults and ranges. The parameter names are self-explanatory, and the schema provides full type constraints, so this is acceptable but not ideal. Minimal compensation is provided by the description.

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

Purpose5/5

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

The description clearly states the tool lists active promotions, deals, and discount coupons in the store. It uses a specific verb (list) and resource (promotions), and distinguishes from siblings like create_coupon (which creates) and search_products (which searches). No ambiguity.

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 when the user wants to view promotions, but it does not explicitly mention when not to use it or point to alternatives. There is no exclusion of expired promotions or cross-reference to create_coupon for creation, so guidance is minimal yet not misleading.

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

search_productsC

Search the Shoppingate product catalog with keywords, category filters, and price ranges.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred response language (en or ar)en
pageNoPage number for pagination
limitNoNumber of items per page
queryNoKeyword or title search query
maxPriceNoMaximum price threshold in SAR
minPriceNoMinimum price threshold in SAR
categoryIdNoFilter by category ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only says 'Search', implying read-only without explicit disclosure. It does not mention pagination, language behavior, result format, or any side effects, leaving significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler. It is appropriately concise and front-loaded with the core purpose.

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

Completeness2/5

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

For a tool with 7 parameters, no annotations, and no output schema, the description is too sparse. It omits details about pagination, language options, filtering behavior, and return values, leaving the agent with incomplete context.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described, so the baseline is 3. The description adds minimal value by mentioning 'keywords, category filters, and price ranges' but does not provide syntax or semantics beyond what the schema already covers.

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

Purpose4/5

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

The description clearly states the tool's function: searching the Shoppingate product catalog with keywords, category filters, and price ranges. The verb 'search' and resource 'product catalog' are specific, but it does not differentiate from the sibling 'customer_search_products', so it loses a point for missing sibling distinction.

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 is provided on when to use this tool versus alternatives like 'customer_search_products' or 'get_recommendations'. The description only explains what it does, not the appropriate context 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.

search_travel_insuranceB

Search travel insurance coverage plans for upcoming trips.

ParametersJSON Schema
NameRequiredDescriptionDefault
destinationYesTrip destination or region
tripDurationDaysNoDuration of travel in days

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only restates the search action, with no mention of return format, filtering behavior, or read-only nature. 'Search' implies non-mutating but adds no extra behavioral context.

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

Conciseness5/5

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

A single sentence that is front-loaded with the verb and resource. No filler or redundant information.

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

Completeness3/5

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

The tool is simple and the schema covers parameters, but there is no output schema or annotations to fall back on. The description does not explicitly state what is returned (e.g., matching plans) and fails to mention the optional duration parameter in context.

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

Parameters3/5

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

The input schema already provides 100% coverage with descriptions for destination and tripDurationDays, including a default value. The description adds no additional parameter 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.

Purpose5/5

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

Uses a specific verb ('Search') and a clear resource ('travel insurance coverage plans') with a temporal scope ('upcoming trips'). This clearly distinguishes it from sibling tools like search_products and check_visa_guidance.

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 explicit guidance on when to use this tool versus alternatives. The phrase 'upcoming trips' provides mild context but no prerequisites, exclusions, or mention of sibling tools.

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

track_customer_orderB

Track the delivery status and shipping updates for a customer order.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderIdYesCustomer order ID

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations available, the description carries the full burden for behavioral disclosure. It only restates the core function without mentioning read-only nature, response format, authentication requirements, or error behavior.

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

Conciseness5/5

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

A single, well-structured sentence that immediately conveys the tool's purpose without any wasted words. It is appropriately front-loaded and concise.

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

Completeness3/5

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

The tool is simple with one well-described parameter, and the description states its primary purpose adequately. However, there is no output schema and the description omits return format or usage contexts, leaving minor gaps.

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

Parameters3/5

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

The single parameter orderId is fully described in the schema with 100% coverage, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides.

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

Purpose4/5

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

The description uses the specific verb 'track' with resource 'customer order' and specifies the scope as 'delivery status and shipping updates.' This clearly differentiates it from more general order tools like get_order_details, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings such as get_order_details or update_order_status. The description implies usage for tracking deliveries but lacks explicit context, prerequisites, or exclusions.

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

update_order_statusC

Update order status (e.g., mark as processing, shipped, delivered, or cancelled).

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional internal note or shipping tracking number
statusYesNew order status
orderIdYesOrder ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry the burden of behavioral disclosure. It only states 'Update order status' without mentioning side effects, permissions, transition restrictions, or whether the change is reversible. This is insufficient for a mutating operation.

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, front-loaded sentence that is efficient and easy to parse. It includes concrete examples, but lacks the structural richness of a top-tier description. Still, it earns a 4 for being appropriately minimal without waste.

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

Completeness2/5

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

This is a write tool with no annotations, no output schema, and only a minimal description. The agent is left unsure about response format, error handling, or operational consequences (e.g., does updating to 'cancelled' send notifications?). The description is incomplete for making fully informed invocations.

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

Parameters3/5

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

The input schema already provides full descriptions for all three parameters, including an enum for status. The description adds no additional meaning beyond restating that the status changes, so it meets the baseline of 3 for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Update order status') and the specific resource, making it distinct from siblings like get_order_details or update_product_stock. It also lists example status values, which reinforces the purpose. However, it does not explicitly differentiate from other update tools or mention scope (e.g., merchant-only), so it falls short of a 5.

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

Usage Guidelines2/5

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 does not mention who should use it (e.g., merchant) or exclusions (e.g., customer tracking uses track_customer_order). No context for decision-making is given.

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

update_product_stockB

Update inventory stock level or availability status for a merchant product.

ParametersJSON Schema
NameRequiredDescriptionDefault
stockYesNew stock quantity available
inStockNoExplicit flag indicating if product is in stock
productIdYesNumeric ID of the product

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description is the only source for behavioral disclosure. It implies mutation ('Update') but does not state side effects, permission requirements, whether stock changes automatically affect availability, or whether updates are partial or full replacements.

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 a single, front-loaded sentence that states the action and object with no wasted words. It is compact and directly to the point.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is too sparse. It omits important context such as whether stock and inStock are independent, what happens on validation failure, or any return value. The schema covers parameters, but the behavioral operation is under-specified.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (stock, inStock, productId) is already documented. The description adds no extra meaning beyond mapping 'stock level' to stock and 'availability status' to inStock, which is already evident from the schema.

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

Purpose5/5

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

The description uses a specific verb ('Update') and names the resource ('inventory stock level or availability status') for a merchant product, clearly distinguishing it from sibling tools that search/read or handle other merchant operations like orders/coupons.

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 is given on when to use this tool versus alternatives, nor any exclusions or prerequisites. The reader must infer from the tool name alone that it is for stock updates, as the description merely restates the function without contextual cues.

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. 14 tool updatesv1.0.0
    • First observedcheck_visa_guidance
    • First observedcreate_coupon
    • First observedcustomer_search_products
    • First observedget_order_details
    • First observedget_product_details
    • First observedget_recommendations
    • First observedget_similar_products
    • First observedlist_merchant_orders
    • First observedlist_promotions
    • First observedsearch_products
    • First observedsearch_travel_insurance
    • First observedtrack_customer_order
    • First observedupdate_order_status
    • First observedupdate_product_stock

TDQS

B3.2/5.0

Scored across 14 tools

Disambiguation3/5

search_products and customer_search_products are nearly identical in purpose, differing only by implied audience, which creates ambiguity. Other tools are distinct and clearly separated by resource/action.

Naming Consistency4/5

Most tools follow a verb_noun pattern (search_products, get_product_details, list_merchant_orders, etc.). customer_search_products breaks this by prepending a noun, and a couple of verbs vary, but the overall convention is mostly consistent.

Tool Count4/5

14 tools is within the ideal range and each shopping-related tool serves a clear purpose. However, the inclusion of travel-specific tools (visa guidance, insurance) dilutes the focus and makes the set slightly less cohesive.

Completeness3/5

The shopping surface covers search, details, stock update, orders, and promotions, but lacks product creation/deletion and order placement. Coupon management is partial (create/list only), and travel tools are advisory with no booking flow, leaving notable gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers