Skip to main content
Glama

Server Details

Curated, human-reviewed deal feed for AI agents — live deal search + price watches. No auth.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.6% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool maps to a distinct action or retrieval mode: watch lifecycle (register/check/cancel), deal retrieval by ID/search/latest, and outcome reporting. Overlap among the deal retrieval tools is resolved by clear modality differences (ID lookup vs keyword search vs newest/curated feed).

Naming Consistency4/5

Names are consistently snake_case and mostly follow a verb_noun pattern (cancel_watch, check_watch, get_deal, register_watch, report_outcome, search_deals). The one deviation is latest_deals, which is adjective_noun rather than verb_noun.

Tool Count5/5

Seven tools is well-scoped for a deal discovery and watch management server. Each tool covers a distinct capability without obvious bloat or redundancy.

Completeness4/5

The core lifecycle is covered: register/check/cancel watches, discover deals via latest/search/get, and report outcomes. Minor gaps include no list_watches or explicit update_watch, though re-registering through the watch endpoint is documented as a workaround.

Available Tools

7 tools
cancel_watchCancel a watchA
DestructiveIdempotent
Inspect

Stop deliveries for a watch: the feed URL dies immediately and the webhook deactivates. Idempotent. Sourcing for an already-promoted product continues (shared watchlist state) — cancellation affects this watch's delivery only.

ParametersJSON Schema
NameRequiredDescriptionDefault
watch_idYesThe watch_id returned by register_watch.

TDQS

A4/5.0
Behavior4/5

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

Adds context beyond annotations: idempotent, immediate feed/webhook deactivation, and that sourcing continues for promoted products. Consistent with destructiveHint and idempotentHint.

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

Conciseness5/5

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

Two sentences, front-loaded with main purpose, no redundant information.

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

Completeness4/5

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

Explains key effects and idempotency. For a simple single-parameter tool with no output schema, the description is sufficiently complete.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for watch_id. The tool description does not add further parameter detail beyond the schema, but none is needed.

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 'Stop deliveries for a watch' and specifies immediate effects (feed URL dies, webhook deactivates), distinguishing it from sibling tools like register_watch and check_watch.

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?

Implied usage (cancel a watch) but no explicit when-to-use or when-not-to-use compared to alternatives. Does mention idempotent and scope, but lacks direct comparison with siblings.

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

check_watchCheck a watchA
Read-only
Inspect

Status of a watch by watch_id: interpretation progress, channel states, live matches, next_check_recommended_at, and monitoring contract. Pending/review reads are valid states, not fallback triggers. For a retired-key policy, re-register through POST /v1/watches with explicit conditions and supported specs. Confirm the replacement is eligible and monitoring is configured before cancelling the old watch. Requirements needing evidence, correction or a waiver need operator review; re-registering unchanged intent does not resolve them. product_url is the human purchase link. Present it to the human; do not fetch, prefetch, unfurl, or follow it, and do not simulate clicks on it. Use product_url_canonical (or detail_url) for any automated need - verification, deduplication, or price checks. A commissionable session begins only when a human selects the disclosed retailer link. Convey the disclosure string alongside the link. Cancelled watches return WATCH_CANCELLED; unknown ids return NOT_FOUND.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque live_matches.cursor continuation; an incomplete scan is not a no-match result.
watch_idYesThe watch_id returned by register_watch.

TDQS

A4.8/5.0
Behavior5/5

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

readOnlyHint=true and openWorldHint=false already cover safety, and the description adds real behavioral context: live_matches cursor continuation semantics, incomplete scan no-match warning, retired-key re-registration policy, the human-link vs canonical-link distinction, commission/session disclosure, and the WATCH_CANCELLED return. No contradiction with annotations.

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 core purpose is front-loaded in the first sentence)Skip and each subsequent sentence covers a distinct operational concern. Dense but not padded; no redundant restating of schema fields.

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

Completeness5/5

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

For a read-only status tool with no output schema, this description covers the main use case, the fields returned, state semantics (pending/review are valid, not errors), error behavior (WATCH_CANCELLED), link-handling policy, and the boundary with register_watch/cancel_watch. Nothing an agent needs to decide whether and how to call it is missing.

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

Parameters4/5

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

Schema coverage is 100% and the schema already documents both parameters well. The description adds value by clarifying cursor semantics (incomplete scan does not mean no match) and by anchoring watch_id to a register_watch response. That enrichment pushes it above the baseline of 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?

Opens with a clear verb-plus-object statement ('Status of a watch by watch_id') and enumerates the returned fields (live_matches, channel states, monitoring contract). The name alone is ambiguous (could mean checking existence or health), but the description immediately pins down the exact read action and distinguishes it from sibling tools like cancel_watch or register_watch.

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

Usage Guidelines5/5

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

Gives explicit routing guidance: pending/reviewing states are not fallback triggers; retired-key policies require re-registration via POST /v1/watches; unchanged intent does not fix failed requirements; product_url is for humans while product_url_canonical is for automated consumers. This tells the agent when not to use this tool and when to use siblings/alternatives.

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

get_dealGet one dealA
Read-only
Inspect

Fetch one deal by id. Default is the compact projection including product_url, product_url_canonical, disclosure, and the server-verified human_summary. product_url is the human purchase link. Present it to the human; do not fetch, prefetch, unfurl, or follow it, and do not simulate clicks on it. Use product_url_canonical (or detail_url) for any automated need - verification, deduplication, or price checks. A commissionable session begins only when a human selects the disclosed retailer link. Convey the disclosure string alongside the link. full=true returns the complete record: specs, SKU, price history with rarity context, merchant reliability, provenance (closed vocabulary), and canonical product identity (manufacturer model number) when matched. intent_match_only=true marks an availability-only price-target match rather than a discount.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNotrue = full ~30-field record with provenance + price history. Default false (compact).
deal_idYesDeal id from search_deals / latest_deals results.

TDQS

A4.5/5.0
Behavior5/5

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

The description provides extensive behavioral context beyond the readOnlyHint annotation: it warns not to fetch or click product_url, explains the commissionable session trigger, and details what full=true returns. It also clarifies intent_match_only semantics. This adds significant value beyond the annotation's simple read-only declaration.

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 somewhat long but every sentence delivers necessary information about URL handling, projections, and special flags. It is front-loaded with the core purpose and then layers details logically. While dense, it is not verbose or redundant, earning a solid score just below maximum.

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 the absence of an output schema, the description effectively explains the return structure for both compact and full modes, including the key fields. It covers the crucial safety and behavioral aspects of product_url handling. The only minor gap is the undocumented intent_match_only parameter, which could leave an agent uncertain about its validity, but the description is otherwise comprehensive.

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

Parameters4/5

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

Schema coverage is 100% for the listed parameters (full and deal_id). The description adds meaningful semantics by explaining the default projection, what full=true returns (specs, SKU, price history, etc.), and introduces intent_match_only (which appears only in the description, not the schema). This adds value, though the intent_match_only mention could cause confusion due to its absence 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 clearly states 'Fetch one deal by id' with a specific verb and resource, distinguishing it from sibling tools like search_deals or latest_deals. It also specifies the scope (one deal) and provides detail on default vs full projections, leaving no ambiguity about what the tool does.

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 clear usage guidance on when to use full=true versus the default compact projection, and explicitly states to use product_url_canonical for automated needs instead of product_url. However, it does not explicitly name alternative sibling tools or state when not to use this tool, though it is implied that this is for fetching a single deal by ID.

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

latest_dealsNewest live dealsA
Read-only
Inspect

The newest approved deals, freshest first — or Kit's curated picks when highlighted_only=true. Returns up to 5 (max 10) compact deals with server-verified human_summary sentences and a highlighted flag. Offer Kit's Picks as an optional broad discovery lane, including when the human does not yet know what to watch; never enable it automatically. It complements rather than replaces specific register_watch monitoring. Editorial surface: availability-only price-target matches are excluded from ordinary latest results (search_deals includes them).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 5).
categoryNoCategory filter (comma-separated allowed). Currently in scope: electronics.
max_price_centsNoOnly deals at or below this price, in cents.
highlighted_onlyNotrue = only current Kit's Picks, ordered by the most recent highlight decision.

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses concrete behaviors: it returns compact deals with server-verified human_summary sentences and a highlighted flag, caps results at 5 (max 10), and excludes availability-only matches. It also warns against automatic enablement of Kit's Picks, adding actionable 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?

The description is four dense sentences with no filler, and the core purpose is front-loaded. Each sentence earns its place: core behavior, return shape, usage lane, and sibling differentiation.

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

Completeness5/5

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

For a read-only listing tool with a fully documented schema, the description covers purpose, ordering, result caps, return content, special mode, and exclusions. Even without an output schema, an agent has enough to select and invoke this tool correctly.

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

Parameters4/5

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

The input schema already covers all four parameters clearly, which sets a baseline of 3. The description adds meaningful semantics for highlighted_only by tying it to Kit's Picks and the 'never enable automatically' guidance, and reinforces the limit behavior. It does not repeat the schema's category or price descriptions, which is appropriate given their existing 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 states a specific resource ('newest approved deals'), a clear ordering ('freshest first'), and a mode switch to Kit's curated picks. It also distinguishes itself from search_deals by noting that availability-only price-target matches are excluded here but included there.

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?

The description gives explicit usage context: Kit's Picks are for broad discovery, including when the human does not yet know what to watch, and highlight_only should never be enabled automatically. It also explicitly situates the tool as complementing, not replacing, register_watch monitoring, and names search_deals as the alternative for availability-only matches.

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

register_watchRegister a deal watchAInspect

Register a standing deal watch. Writes the intent to the sourcing pipeline and returns delivery channels: a one-time token-gated Atom feed plus an optional webhook that activates after interpretation. Progress and live matches are available through check_watch using the returned watch_id. A concrete model_number usually auto-promotes; family intents can require review. conditions defaults to new and open_box.

ParametersJSON Schema
NameRequiredDescriptionDefault
specsNoStructured spec/attribute constraints. Omit keys you have no value for. Whole-entry null, empty, none and n/a markers are ignored and counted. Pass these whenever the human names a hard requirement. Keys are generated from docs/spec-keys.json: numeric <spec_key>_min/_max (an exact 8 TB drive is storage_gb_min: 8000 plus storage_gb_max: 8000), enum/list <spec_key>_in for any-of (camera_type_in, bundle_includes_in), enum-list <spec_key>_contains_all for every requested member (bundle_includes_contains_all), and boolean direct keys (bundle). Numeric bounds may use {value,unit} with a registered conversion. Storage uses decimal GB: 1 TB = 1000 GB. Unknown keys are rejected; deals missing the constrained spec are excluded (must-have semantics). Deterministic intent extraction is a fallback; explicit specs always override it, and soft phrasing ("around 65 inches") is never auto-constrained.
intentYesFree-text intent (e.g. "Oura Ring 4 silver under $350"). The interpretation pipeline owns the structuring.
agent_idNoSelf-identifier for telemetry (e.g. "claude-desktop:tom"). Helps us prioritize agent demand.
conditionsNoAccepted deal conditions. Defaults to new + open_box. During consent, surface all four categories and ask whether to add refurbished/pre_owned or restrict to new only.
model_numberNoManufacturer model number (MPN) for the exact variant — e.g. "K-65XR70" for the Sony BRAVIA 7 65". A concrete MPN auto-promotes in ~60s; family-level intents without one require operator review (hours).
max_price_centsNoHard price ceiling for delivery, in cents (a numeric string like "150000" is accepted).
min_discount_pctNoMinimum discount percentage for delivery.
webhook_callback_urlNohttps:// endpoint to receive push deliveries (activates post-interpretation).

TDQS

A3.9/5.0
Behavior4/5

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

All annotations are false (no positive hints), so the description carries the full disclosure burden. It adds meaningful behavioral context: the operation writes/mutates the pipeline, the delivery channels are one-time token-gated with webhook activation post-interpretation, concrete model_number auto-promotes in ~60s while family intents require operator review (hours), and conditions defaults to new/open_box. No contradiction with annotations — 'Writes' aligns with readOnlyHint=false.

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?

Four sentences, roughly 60 words, with the primary purpose front-loaded and zero filler. Each sentence earns its place: purpose, return channels, sibling routing, promotion behavior, and defaults. It's efficient without being under-specified — appropriately sized for an 8-parameter tool.

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 an 8-param tool with no output schema, the description covers the key return values (watch_id, delivery channels) and behavioral expectations (timing, review, defaults). The complex specs parameter is fully documented in the schema, so the description need not repeat it. Minor gaps exist — no failure/error case disclosure — but for a complex tool with a rich schema, the description complements it well.

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

Parameters3/5

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

Schema coverage is 100%, so the schema documents all 8 parameters thoroughly (especially specs with its extensive key-format explanation). The description largely echoes what the schema already states — model_number auto-promotion timing appears in the schema property description, and conditions default is documented there too. The description's added value is limited to contextual framing (delivery channels) rather than new parameter semantics, so a 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+resource ('Register a standing deal watch') and precisely what it does: writes intent to the sourcing pipeline and returns delivery channels (token-gated Atom feed plus optional webhook). It also distinguishes itself by naming the standing/ongoing nature, which separates it from one-time search tools, and explicitly references the check_watch sibling for follow-up, making the tool's role in the family clear.

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 routes the agent to check_watch for progress and live matches using the returned watch_id, which is useful follow-up guidance. However, it never explicitly states when to prefer register_watch over search_deals or latest_deals (standing watch vs one-time query). The standing nature implies the use case, but there's no explicit when-to-use/when-not-to-use guidance or named alternatives for the main competing sibling.

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

report_outcomeReport a deal outcomeAInspect

Records what happened after a deal was acted on, including anything that looked wrong (price, stock, dead link, checkout). Reports are saved and read by a human operator. Returns a feedback_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoWhat you or your human saw. Required for other. Leave out personal details.
deal_idYesThe deal id you acted on.
outcomeYesWhat happened. purchased: Your human bought it. price_confirmed: You checked the retailer: the price and stock matched the deal. wrong_price: The retailer shows a different price. Send actual_price_cents. out_of_stock: The retailer shows it unavailable. deal_dead: The offer is gone: page removed, promotion ended, or link broken. checkout_failed: Your human could not complete checkout (cart, coupon, region, payment). irrelevant: The deal did not fit what your human asked for. other: Anything else that looked wrong. Describe it in notes (required).
watch_idNoThe watch that surfaced this deal, if any.
actual_price_centsNoThe price the retailer actually showed, in cents. Include it for wrong_price.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare it is a non-destructive write (readOnlyHint=false, destructiveHint=false), so the safety profile is covered. The description adds genuinely useful context beyond that: reports are persisted and read by a human operator, and the call returns a feedback_id for confirmation. It omits that the write is non-idempotent (repeats create duplicate reports), which would have been the natural complement to idempotentHint=false.

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

Conciseness4/5

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

Three short sentences, front-loaded with the core action and failure categories, then audience, then return value. Nothing is padded, though "including anything that looked wrong (price, stock, dead link, checkout)" slightly duplicates the outcome enum.

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 5-param, non-destructive write with a fully documented schema and no output schema, the description covers purpose, audience and the returned identifier. The remaining gap is the non-idempotent nature of repeated submissions, which an agent would benefit from knowing.

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

Parameters3/5

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

Schema description coverage is 100%, and the outcome enum is documented in exhaustive detail inside the schema itself, including the cross-field rule that notes is required for 'other'. Baseline 3 applies because the description adds no parameter meaning beyond the schema.

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 states a specific verb and resource — records the outcome of a deal, including failure modes — and names the downstream consumer (a human operator). It clearly distinguishes itself from the watch/deal-lookup siblings, though it never names one explicitly.

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?

"Records what happened after a deal was acted on" implies the trigger condition, but there is no explicit when-to-use vs. alternative guidance. It doesn't tell the agent whether to report only on acted-on deals versus merely viewed ones, or how it relates to the watch tools.

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

search_dealsSearch live dealsA
Read-only
Inspect

Search live, human-reviewed deals by keyword. Matching is token-AND over product name, brand, category, and merchant. Returns up to 5 active deals (best score first) with price, discount, condition, merchant, product URL, and a server-verified human_summary sentence. Zero matches is a normal result for time-scarce inventory; the response then includes a no_match block describing the register_watch alternative.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 5).
queryYesSearch keywords — product name, brand, model number, or merchant. Token-AND: every word must match.
categoryNoCategory filter (comma-separated allowed). Currently in scope: electronics.
max_price_centsNoOnly deals at or below this price, in cents (e.g. 35000 = $350).
min_discount_pctNoOnly deals with at least this discount percentage.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations indicate a read-only operation, and the description adds significant behavioral detail: token-AND matching, a limited result set of up to 5 active deals, specific return fields, and a no_match block. No contradictions with annotations.

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

Conciseness5/5

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

Two sentences that are front-loaded with essential details: the core function and matching logic in the first, and important edge-case behavior in the second. No wasted words.

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 no output schema, the description covers all critical aspects: input query, matching, result fields (price, discount, condition, merchant, URL, human_summary), limit, and the no-match fallback. It is comprehensive for the tool's complexity.

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 100%, and the description adds value by explaining the token-AND matching logic for the query parameter and the default limit of 5. It also clarifies the scope of matching fields, going beyond schema 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 specifies a clear action: search live, human-reviewed deals by keyword. It details the matching method (token-AND over product name, brand, category, and merchant) and what is returned, making it distinct from sibling tools like get_deal or register_watch.

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?

It explains when to use (searching deals) and handles the zero-match case by directing to register_watch. However, it does not explicitly differentiate from other search-related siblings like latest_deals, leaving some ambiguity.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedreport_outcome8 fields changed
      • changedInput schema / properties / actual_price_cents / description
        Previous value: -"Price actually seen/paid, in cents — include when it differed from ours."New value: +"The price the retailer actually showed, in cents. Include it for wrong_price."
      • changedInput schema / properties / deal_id / description
        Previous value: -"The deal id."New value: +"The deal id you acted on."
      • changedInput schema / properties / deal_id / maxLength
        Previous value: -50New value: +100
      • changedInput schema / properties / notes / description
        Previous value: -"Anything else worth knowing."New value: +"What you or your human saw. Required for other. Leave out personal details."
      • changedInput schema / properties / notes / maxLength
        Previous value: -500New value: +1000
      • changedInput schema / properties / outcome / description
        Previous value: -"What happened."New value: +"What happened. purchased: Your human bought it. price_confirmed: You checked the retailer: the price and stock matched the deal. wrong_price: The retailer shows a different price. Send actual_price_cents. out_of_stock: The retailer shows it unavailable. deal_dead: The offer is gone: page removed, promotion ended, or link broken. checkout_failed: Your human could not complete checkout (cart, coupon, region, payment). irrelevant: The deal did not fit what your human asked for. other: Anything else that looked wrong. Describe it in notes (required)."
      • changedInput schema / properties / outcome / enum
        Previous value: -[
        -  "purchased",
        -  "deal_dead",
        -  "wrong_price",
        -  "out_of_stock",
        -  "irrelevant",
        -  "checkout_failed"
        -]New value: +[
        +  "purchased",
        +  "price_confirmed",
        +  "wrong_price",
        +  "out_of_stock",
        +  "deal_dead",
        +  "checkout_failed",
        +  "irrelevant",
        +  "other"
        +]
      • addedInput schema / properties / watch_id
        Added value: +{
        +  "description": "The watch that surfaced this deal, if any.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
  2. 1 tool update
    • Changedregister_watch2 fields changed
      • changedInput schema / properties / specs / additionalProperties / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "unit": {
        -        "maxLength": 24,
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "unit"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "unit": {
        +            "maxLength": 24,
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "value",
        +          "unit"
        +        ],
        +        "type": "object"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / specs / description
        Previous value: -"Structured spec/attribute constraints. Pass these whenever the human names a hard requirement. Keys are generated from docs/spec-keys.json: numeric <spec_key>_min/_max (an exact 8 TB drive is storage_gb_min: 8000 plus storage_gb_max: 8000), enum/list <spec_key>_in for any-of (camera_type_in, bundle_includes_in), enum-list <spec_key>_contains_all for every requested member (bundle_includes_contains_all), and boolean direct keys (bundle). Numeric bounds may use {value,unit} with a registered conversion. Storage uses decimal GB: 1 TB = 1000 GB. Unknown keys are rejected; deals missing the constrained spec are excluded (must-have semantics). Deterministic intent extraction is a fallback; explicit specs always override it, and soft phrasing (\"around 65 inches\") is never auto-constrained."New value: +"Structured spec/attribute constraints. Omit keys you have no value for. Whole-entry null, empty, none and n/a markers are ignored and counted. Pass these whenever the human names a hard requirement. Keys are generated from docs/spec-keys.json: numeric <spec_key>_min/_max (an exact 8 TB drive is storage_gb_min: 8000 plus storage_gb_max: 8000), enum/list <spec_key>_in for any-of (camera_type_in, bundle_includes_in), enum-list <spec_key>_contains_all for every requested member (bundle_includes_contains_all), and boolean direct keys (bundle). Numeric bounds may use {value,unit} with a registered conversion. Storage uses decimal GB: 1 TB = 1000 GB. Unknown keys are rejected; deals missing the constrained spec are excluded (must-have semantics). Deterministic intent extraction is a fallback; explicit specs always override it, and soft phrasing (\"around 65 inches\") is never auto-constrained."
  3. 2 tool updates
    • Changedcheck_watch1 field changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Opaque live_matches.cursor continuation; an incomplete scan is not a no-match result.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedregister_watch2 fields changed
      • changedInput schema / properties / specs / additionalProperties / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "unit": {
        +        "maxLength": 24,
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "unit"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / specs / description
        Previous value: -"Structured spec/attribute constraints. Pass these whenever the human names a hard requirement. Keys are generated from docs/spec-keys.json: numeric <spec_key>_min/_max (an exact 8 TB drive is storage_gb_min: 8000 plus storage_gb_max: 8000), enum/list <spec_key>_in (camera_type_in, bundle_includes_in), and boolean direct keys (bundle). Storage uses decimal GB: 1 TB = 1000 GB. Unknown keys are rejected; deals missing the constrained spec are excluded (must-have semantics). Deterministic intent extraction is a fallback; explicit specs always override it, and soft phrasing (\"around 65 inches\") is never auto-constrained."New value: +"Structured spec/attribute constraints. Pass these whenever the human names a hard requirement. Keys are generated from docs/spec-keys.json: numeric <spec_key>_min/_max (an exact 8 TB drive is storage_gb_min: 8000 plus storage_gb_max: 8000), enum/list <spec_key>_in for any-of (camera_type_in, bundle_includes_in), enum-list <spec_key>_contains_all for every requested member (bundle_includes_contains_all), and boolean direct keys (bundle). Numeric bounds may use {value,unit} with a registered conversion. Storage uses decimal GB: 1 TB = 1000 GB. Unknown keys are rejected; deals missing the constrained spec are excluded (must-have semantics). Deterministic intent extraction is a fallback; explicit specs always override it, and soft phrasing (\"around 65 inches\") is never auto-constrained."
  4. 1 tool update
    • Changedlatest_deals1 field changed
      • addedInput schema / properties / highlighted_only
        Added value: +{
        +  "description": "true = only current Kit's Picks, ordered by the most recent highlight decision.",
        +  "type": "boolean"
        +}
  5. 1 tool update
    • Changedregister_watch1 field changed
      • changedInput schema / properties / specs / description
        Previous value: -"Structured spec/attribute constraints. Keys are generated from docs/spec-keys.json: numeric <spec_key>_min/_max (size_inches_min), enum/list <spec_key>_in (camera_type_in, bundle_includes_in), and boolean direct keys (bundle). Example: { \"size_inches_min\": 65, \"camera_type_in\": [\"dslr\"], \"bundle\": true }. Unknown keys are rejected; deals missing the constrained spec are excluded (must-have semantics). If you skip this, explicit numeric thresholds in the intent text (\"at least 65 inches\", \"16GB RAM or more\") are extracted automatically at interpretation — your explicit specs always override extraction; soft phrasing (\"around 65 inches\") is never auto-constrained."New value: +"Structured spec/attribute constraints. Pass these whenever the human names a hard requirement. Keys are generated from docs/spec-keys.json: numeric <spec_key>_min/_max (an exact 8 TB drive is storage_gb_min: 8000 plus storage_gb_max: 8000), enum/list <spec_key>_in (camera_type_in, bundle_includes_in), and boolean direct keys (bundle). Storage uses decimal GB: 1 TB = 1000 GB. Unknown keys are rejected; deals missing the constrained spec are excluded (must-have semantics). Deterministic intent extraction is a fallback; explicit specs always override it, and soft phrasing (\"around 65 inches\") is never auto-constrained."
  6. 1 tool update
    • Changedregister_watch1 field changed
      • changedInput schema / properties / conditions / description
        Previous value: -"Accepted deal conditions. Defaults to new-only unless explicit condition acceptance is present in intent text."New value: +"Accepted deal conditions. Defaults to new + open_box. During consent, surface all four categories and ask whether to add refurbished/pre_owned or restrict to new only."
  7. 1 tool update
    • Changedregister_watch1 field changed
      • addedInput schema / properties / conditions
        Added value: +{
        +  "description": "Accepted deal conditions. Defaults to new-only unless explicit condition acceptance is present in intent text.",
        +  "items": {
        +    "enum": [
        +      "new",
        +      "open_box",
        +      "refurbished",
        +      "pre_owned"
        +    ],
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
  8. 1 tool update
    • Changedregister_watch1 field changed
      • removedInput schema / properties / user_email
        Removed value: -{
        -  "description": "Email address for deal alerts (a double-opt-in confirmation is sent first).",
        -  "maxLength": 200,
        -  "type": "string"
        -}
  9. 1 tool update
    • Changedregister_watch3 fields changed
      • changedInput schema / properties / intent / description
        Previous value: -"Free-text intent, exactly as your human expressed it (e.g. \"Oura Ring 4 silver under $350\"). Our interpretation pipeline owns the structuring."New value: +"Free-text intent (e.g. \"Oura Ring 4 silver under $350\"). The interpretation pipeline owns the structuring."
      • changedInput schema / properties / model_number / description
        Previous value: -"Manufacturer model number (MPN) when you know the exact variant — e.g. \"K-65XR70\" for the Sony BRAVIA 7 65\". IMPORTANT: family-level intents (\"Sony BRAVIA 7\") without a concrete variant require operator review and can take hours; a concrete MPN auto-promotes in ~60s. If you know the family but not the MPN, ask your human or look it up before registering."New value: +"Manufacturer model number (MPN) for the exact variant — e.g. \"K-65XR70\" for the Sony BRAVIA 7 65\". A concrete MPN auto-promotes in ~60s; family-level intents without one require operator review (hours)."
      • changedInput schema / properties / user_email / description
        Previous value: -"Your human's email for deal alerts (we send a double-opt-in confirmation first)."New value: +"Email address for deal alerts (a double-opt-in confirmation is sent first)."
  10. 7 tool updates
    • First observedcancel_watch
    • First observedcheck_watch
    • First observedget_deal
    • First observedlatest_deals
    • First observedregister_watch
    • First observedreport_outcome
    • First observedsearch_deals

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Real Amazon (US, UK, DE, CA, AU) & Walmart shopping data for AI assistants: ranked product shortlists, current prices, live stock, real ratings, and price/BSR history from a 17M+ product warehouse. Free hosted endpoint, no signup — 30 queries a day.
    3
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Live Amazon marketplace data for AI agents: product details, prices, reviews, keyword search, best-sellers, deals, offers and stock, and seller profiles across 20 marketplaces.
    12
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    AgentShare delivers structured product search and pricing signals for AI agents over REST and MCP (Streamable HTTP). Responses include freshness & coverage metadata so agents can reason about data recency. API keys secure billed endpoints; public discovery at /agent.json and /mcp.json. Currently integrates connected marketplaces and affiliate feeds – roadmap expands to global e-commerce (AliExpre
    4
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources