deals
Server Details
Curated, human-reviewed deal feed for AI agents — live deal search + price watches. No auth.
- Status
- Healthy
- Uptime
- 99.4% over 38 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
The tools are mostly distinct: register_watch/check_watch/cancel_watch form a clear lifecycle, get_deal/latest_deals/search_deals cover different retrieval modes, and report_outcome is unique feedback. The only mild overlap is between get_deal and latest_deals/search_deals, but their descriptions make the distinction clear.
Tool names follow a consistent verb_noun pattern: cancel_watch, check_watch, get_deal, latest_deals, register_watch, report_outcome, search_deals. The only minor deviation is latest_deals, which uses an adjective rather than a verb, but it is still readable and predictable.
Seven tools is well-scoped for a deal-monitoring server: three watch lifecycle operations, three deal retrieval modes, and one outcome feedback tool. Each tool earns its place and the count is within the ideal range.
The surface covers the core domain well: watch registration, status checking, cancellation, deal retrieval (by id, latest, search), and outcome reporting. A minor gap is the lack of an explicit update_watch or pause_watch operation, but the described workflow (cancel and re-register) covers that need.
Available Tools
7 toolscancel_watchCancel a watchADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| watch_id | Yes | The watch_id returned by register_watch. |
TDQS
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.
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.
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.
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.
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.
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 watchARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque live_matches.cursor continuation; an incomplete scan is not a no-match result. | |
| watch_id | Yes | The watch_id returned by register_watch. |
TDQS
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.
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.
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.
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.
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.
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 dealARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | true = full ~30-field record with provenance + price history. Default false (compact). | |
| deal_id | Yes | Deal id from search_deals / latest_deals results. |
TDQS
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.
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.
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.
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.
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.
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 dealsARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 5). | |
| category | No | Category filter (comma-separated allowed). Currently in scope: electronics. | |
| max_price_cents | No | Only deals at or below this price, in cents. | |
| highlighted_only | No | true = only current Kit's Picks, ordered by the most recent highlight decision. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| specs | No | 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. | |
| intent | Yes | Free-text intent (e.g. "Oura Ring 4 silver under $350"). The interpretation pipeline owns the structuring. | |
| agent_id | No | Self-identifier for telemetry (e.g. "claude-desktop:tom"). Helps us prioritize agent demand. | |
| conditions | No | 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. | |
| model_number | No | 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). | |
| max_price_cents | No | Hard price ceiling for delivery, in cents (a numeric string like "150000" is accepted). | |
| min_discount_pct | No | Minimum discount percentage for delivery. | |
| webhook_callback_url | No | https:// endpoint to receive push deliveries (activates post-interpretation). |
TDQS
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.
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.
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.
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.
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.
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
Record what happened after a deal was acted on. Outcomes: purchased, deal_dead, wrong_price, out_of_stock, irrelevant, checkout_failed. Feedback feeds deal ranking, and deal_dead / wrong_price reports trigger fast removal of bad deals.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Anything else worth knowing. | |
| deal_id | Yes | The deal id. | |
| outcome | Yes | What happened. | |
| actual_price_cents | No | Price actually seen/paid, in cents — include when it differed from ours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint false) but not destructive. Description adds that feedback feeds ranking and triggers fast removal for deal_dead/wrong_price. This provides extra behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second explains consequences. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, outcomes, and consequences. Lacks mention of prerequisites (e.g., need a valid deal_id from get_deal) but overall adequate for a simple reporting tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. Description repeats outcome enum but adds no additional meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool records what happened after a deal is acted on, listing specific outcome options and their consequences. It distinguishes from sibling tools (watching, searching) which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after acting on a deal, but does not explicitly state when not to use or provide alternatives. Sibling tools are distinct, so no confusion, but guidance could be more explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dealsSearch live dealsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 5). | |
| query | Yes | Search keywords — product name, brand, model number, or merchant. Token-AND: every word must match. | |
| category | No | Category filter (comma-separated allowed). Currently in scope: electronics. | |
| max_price_cents | No | Only deals at or below this price, in cents (e.g. 35000 = $350). | |
| min_discount_pct | No | Only deals with at least this discount percentage. |
TDQS
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.
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.
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.
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.
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.
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 tool update
- Changed
register_watch2 fields changed- changed
Input schema / properties / specs / additionalProperties / anyOfPrevious 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" + } +] - changed
Input schema / properties / specs / descriptionPrevious 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."
2 tool updates
- Changed
check_watch1 field changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Opaque live_matches.cursor continuation; an incomplete scan is not a no-match result.", + "maxLength": 2048, + "type": "string" +}
- Changed
register_watch2 fields changed- changed
Input schema / properties / specs / additionalProperties / anyOfPrevious 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" + } +] - changed
Input schema / properties / specs / descriptionPrevious 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."
1 tool update
- Changed
latest_deals1 field changed- added
Input schema / properties / highlighted_onlyAdded value: +{ + "description": "true = only current Kit's Picks, ordered by the most recent highlight decision.", + "type": "boolean" +}
1 tool update
- Changed
register_watch1 field changed- changed
Input schema / properties / specs / descriptionPrevious 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."
1 tool update
- Changed
register_watch1 field changed- changed
Input schema / properties / conditions / descriptionPrevious 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."
1 tool update
- Changed
register_watch1 field changed- added
Input schema / properties / conditionsAdded 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" +}
1 tool update
- Changed
register_watch1 field changed- removed
Input schema / properties / user_emailRemoved value: -{ - "description": "Email address for deal alerts (a double-opt-in confirmation is sent first).", - "maxLength": 200, - "type": "string" -}
1 tool update
- Changed
register_watch3 fields changed- changed
Input schema / properties / intent / descriptionPrevious 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." - changed
Input schema / properties / model_number / descriptionPrevious 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)." - changed
Input schema / properties / user_email / descriptionPrevious 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)."
7 tool updates
- First observed
cancel_watch - First observed
check_watch - First observed
get_deal - First observed
latest_deals - First observed
register_watch - First observed
report_outcome - First observed
search_deals
Related MCP Connectors
Search 86 US retailers — 260M+ products with real-time pricing, stock, and price history.
AI shopping comparison — search 50M+ products, compare prices, find deals
Collective intelligence for AI shopping agents — product intel, deals, and more
Search 100+ US retailers, 260M+ products with real-time pricing, stock, and price history. Documentation - https://www.lemmebuyit.com/developer Homepage - https://www.lemmebuyit.com
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceCollective intelligence for AI shopping agents — product intel, deals, and more33 npmMIT
- AlicenseAqualityAmaintenanceReal 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.31MIT
- AlicenseAqualityCmaintenanceAgentShare 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 (AliExpre41MIT
- AlicenseNot gradedqualityDmaintenanceAffiliate product search for AI agents. Indexes structured merchant feeds — real prices, live stock, affiliate links built in. Works with any MCP client.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.