Skip to main content
Glama
Veselin15

CartScout MCP server

by Veselin15

Check if a price is a good deal

check_deal
Read-onlyIdempotent

Check if a product's current price is a good deal by comparing it to historical average, lowest, and highest prices for a given period.

Instructions

Rate whether a product's current price is a good deal compared with its recorded price history, with the average, lowest and highest price in the period. History builds up each time CartScout reads the product, so a product seen for the first time has little to compare against.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of one product page, e.g. https://www.allbirds.com/products/mens-tree-runner-nz-ochre
daysNoPeriod to compare against, capped by the plan.
refreshNoFetch the current price first so the rating includes today (1 extraction).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes
daysYesDays of history analyzed, limited by the plan.
verdictYesOne-sentence explanation of the rating.
currencyNo
refreshedNoTrue when the current price was fetched just before rating.
data_pointsNo
deal_ratingYesHow the current price compares with its recorded history, from the lowest price in the period through great, good and fair to high; insufficient_data while the product has less than a day of history.
lowest_priceNo
average_priceNoTime-weighted average price over the period.
current_priceNo
highest_priceNo
price_changesNo
lowest_price_atNo
highest_price_atNo
in_stock_percentNo
last_observed_atNo
percent_vs_averageNo
current_availabilityNounknown

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior4/5

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

The description goes beyond the readOnlyHint/openWorldHint/idempotentHint annotations by explaining that price history accumulates over CartScout reads and that first-time products have little to compare against. It also states the rating basis (average, lowest, highest). This is useful behavioral context with no contradiction to the annotations.

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

Conciseness5/5

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

The description is two sentences with no filler. The first sentence front-loads the core action and comparison inputs, while the second adds an important behavioral caveat about new products. Every phrase contributes to the agent's judgment.

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 complete parameter descriptions, an output schema, and strong annotations, the description focuses on the genuinely missing context: history behavior and the limitation of first-time products. It does not need to explain return values because the output schema already exists, though it could have more explicitly listed when to prefer sibling tools.

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?

All three parameters already have solid descriptions in the schema, so the description does not need to repeat them. It adds high-level context about the timeframe and comparison basis, but it does not materially deepen meaning for url, days, or refresh beyond what the schema already states.

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

Purpose5/5

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

The description opens with a specific predicate ('rate whether a product's current price is a good deal') and a clear resource ('recorded price history' with average, lowest, and highest price). This makes it easy to distinguish from get_product, compare_products, and get_price_history even without baking alternatives into the text.

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 the tool is most meaningful after a product has been read enough times to build history, and it calls out the first-visit limitation. However, it never explicitly says when to prefer check_deal over get_price_history or compare_products, nor gives concrete guidance such as a minimum history threshold.

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