Independent buyer's guide for wearables and phones: buy now or wait, compatibility, prices. Sourced.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Whether a price offered for one product is a good deal: GOOD DEAL, NOT A GOOD DEAL or NOT ENOUGH DATA, by the same written rules as should_i_buy. Compares the price with the lowest current retailer price iDevice read today, the lowest verified price of this exact model (over low_period_days, said as low_period; only once iDevice has 30 days of verified checks, and called a 90-day low only when 90 days are covered) and the near-low band the rules use, and gives the buy-or-wait verdict at that price where the rules can state one. Each line says what it rests on. No model is involved and no probability is given. A line slug (for example 'samsung-galaxy-ring') names the line's newest model; when that model is not on sale the answer is for the newest model of the line that is, and resolved_to says which and why.
The price offered, in US dollars
The product, a product_slug, e.g. 'oura-ring-4'
Where the price was offered, e.g. 'Best Buy'. Repeated in the answer as given.
Whether a price offered for one product is a good deal: GOOD DEAL, NOT A GOOD DEAL or NOT ENOUGH DATA, by the same written rules as should_i_buy. Compares the price with the lowest current retailer price iDevice read today, the lowest verified price of this exact model (over low_period_days, said as low_period; only once iDevice has 30 days of verified checks, and called a 90-day low only when 90 days are covered) and the near-low band the rules use, and gives the buy-or-wait verdict at that price where the rules can state one. Each line says what it rests on. No model is involved and no probability is given. A line slug (for example 'samsung-galaxy-ring') names the line's newest model; when that model is not on sale the answer is for the newest model of the line that is, and resolved_to says which and why.
| Argument | Type | Description |
|---|---|---|
| retailer | string | Where the price was offered, e.g. 'Best Buy'. Repeated in the answer as given. |
| price_usd* | number | The price offered, in US dollars |
| product_slug* | string | The product, a product_slug, e.g. 'oura-ring-4' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug",
"price_usd"
],
"properties": {
"retailer": {
"type": "string",
"maxLength": 60,
"description": "Where the price was offered, e.g. 'Best Buy'. Repeated in the answer as given."
},
"price_usd": {
"type": "number",
"maximum": 100000,
"description": "The price offered, in US dollars",
"exclusiveMinimum": 0
},
"product_slug": {
"type": "string",
"description": "The product, a product_slug, e.g. 'oura-ring-4'"
}
},
"additionalProperties": false
}Side-by-side specs for 2 or 3 products, from the same engine as idevice.com/compare. Each cell carries Confirmed/Reported/Our read and its source outlet and date. Products in different categories are compared on shared structured facts only. Optional specs filters rows by keyword, e.g. ['battery','sleep'].
| Argument | Type | Description |
|---|---|---|
| specs | array | Keywords to keep only matching rows |
| product_slugs* | array | e.g. ['oura-ring-4','samsung-galaxy-ring-1'] |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slugs"
],
"properties": {
"specs": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Keywords to keep only matching rows"
},
"product_slugs": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3,
"minItems": 2,
"description": "e.g. ['oura-ring-4','samsung-galaxy-ring-1']"
}
},
"additionalProperties": false
}A short ranked list of on-sale products in one category for a shopper: optionally the phone platform they use, a budget, and up to three priorities from the uses iDevice's Guides assign (for example sleep, running, battery-life, photos-video). Each product comes with its verdict (buy_now or wait), its fit with the phone given, today's retailer price, a one-line reason and its sources, and the place its Guide gives a named priority. In the list: a verdict of Buy now or Wait, and Works or Works with limits with the phone given. Order: the verdict, then the fit answer, then where the product's Guide places a named priority among the uses it lists, then price. A priority outside the Guides' uses is refused and the uses are listed. The same list rule as the decision card on idevice.com. No model is involved. For earbuds, when iDevice's earbuds recommendation is published, the order is that recommendation's instead: quality and fit from independent reviewers' findings, card by card (all-around, music and sound, workouts, noise cancellation, calls, value), with the buy-or-wait verdict shown beside each product, where it does not move the product; the answer adds a recommendation block naming each card's pick, strong choices or why there is none, and reads at most two priorities from calls, sound, anc, workouts and comfort. iDevice's own pick answers first, in every category it covers (earbuds, headphones, watches, fitness trackers, glasses, headsets and phones): the product it names for your question, then the alternatives it names, each with its verdict, fit, price and sources, and a best_answer block with the reviews behind the pick. Your phone and budget decide which products fit you, not which is better. Priorities are the uses the pick covers (for example sleep, running, battery life, calls); a use outside them is refused and the uses are listed.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many products, 1 to 5, default 3 |
| category |
What is on sale in one category (glasses, rings, watches, earbuds, phones, headsets, fitness trackers), optionally at or under a price or from one company, cheapest first. Each carries its current retailer price with the retailer and date, its list price, iDevice's published verdict and the Guide link. Current and previous models are listed; pre-orders and unreleased products are in get_release_calendar.
| Argument | Type | Description |
|---|---|---|
| company | string | A company or brand word, e.g. 'apple', 'samsung', 'meta' |
| category* | string | glasses, rings, watches, earbuds, phones, headsets or fitness trackers |
| max_price | number | Price ceiling in US dollars |
| works_with | string | Keep only products that work with this, e.g. 'iPhone', 'Android' or a device name. Not confirmed counts as unknown, not incompatible. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category"
],
"properties": {
"company": {
"type": "string",
"description": "A company or brand word, e.g. 'apple', 'samsung', 'meta'"
},
"category": {
"type": "string",
"description": "glasses, rings, watches, earbuds, phones, headsets or fitness trackers"
},
"max_price": {
"type": "number",
"description": "Price ceiling in US dollars",
"exclusiveMinimum": 0
},
"works_with": {
"type": "string",
"description": "Keep only products that work with this, e.g. 'iPhone', 'Android' or a device name. Not confirmed counts as unknown, not incompatible."
}
},
"additionalProperties": false
}What a product is best for, from its Guide's Best For: up to three uses, each with a one-line reason and how it is known (the official page, the specification, a reported detail, or iDevice's own judgement). Or pass use_case (for example 'sleep', 'running', 'gaming', 'travel', 'photos and video') with an optional category to list the products on sale whose Guide puts that use in its top three.
| Argument | Type | Description |
|---|---|---|
| category | string | Narrows a use_case search: glasses, rings, watches, earbuds, phones, headsets, fitness trackers or pendants |
| use_case | string | A use, e.g. 'sleep', 'running', 'gaming'. With no product_slug, lists the products best for it. |
| product_slug | string | A product_slug, e.g. 'oura-ring-4'. Gives that product's own uses. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"category": {
"type": "string",
"description": "Narrows a use_case search: glasses, rings, watches, earbuds, phones, headsets, fitness trackers or pendants"
},
"use_case": {
"type": "string",
"description": "A use, e.g. 'sleep', 'running', 'gaming'. With no product_slug, lists the products best for it."
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'oura-ring-4'. Gives that product's own uses."
}
},
"additionalProperties": false
}A company as iDevice's public directory lists it: its name, homepage and a short description, the categories iDevice covers for it, and each of its products that has a Guide, with lifecycle, price and the Guide link. Pass the company's name or key, for example 'oura' or 'Samsung'.
| Argument | Type | Description |
|---|---|---|
| company* | string | A company name or key, e.g. 'oura', 'Samsung', 'meta' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"company"
],
"properties": {
"company": {
"type": "string",
"minLength": 2,
"description": "A company name or key, e.g. 'oura', 'Samsung', 'meta'"
}
},
"additionalProperties": false
}Whether a product works with a given phone or device, from its Guide's Works with tab: iPhone, Android, apps, other devices and standards. Each answer says Works, Works with limits (to a person, say "Some features missing" and name what is missing), Needs extra hardware, Does not work or Not confirmed, with its requirements, limits, an evidence word (Confirmed, Reported, Our read or Not confirmed) and the source page link. Not confirmed means unknown, never incompatible. Optional query narrows to one thing, e.g. 'iphone' or 'android'.
| Argument | Type | Description |
|---|---|---|
| query | string | What it should work with, e.g. 'iphone', 'android', 'ps5' |
| product_slug* | string | A product_slug, e.g. 'apple-airpods-pro-3' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"query": {
"type": "string",
"description": "What it should work with, e.g. 'iphone', 'android', 'ps5'"
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-airpods-pro-3'"
}
},
"additionalProperties": false
}Every individual fact for one product, grouped by topic: water and durability, temperature, battery and charging, display, camera, audio, connectivity, health sensors, lenses and sun, size and weight, chip and software. Each carries its value, unit, who stated it (Confirmed is an official first-party statement) and the source page. Optional topic narrows the list, e.g. 'temperature' or 'battery'. A product with more than 20 facts is read in pages with offset and limit.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Facts per page. Default and maximum 20. |
| topic | string | A topic or keyword, e.g. 'water', 'temperature', 'camera' |
| offset | integer | How many facts to skip, to read the next page. Default 0. |
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Facts per page. Default and maximum 20."
},
"topic": {
"type": "string",
"description": "A topic or keyword, e.g. 'water', 'temperature', 'camera'"
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "How many facts to skip, to read the next page. Default 0."
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}Three parts of the Guide: section 'timeline' gives a product's Timeline tab events, oldest first, with their sources, plus the official lifecycle dates; section 'faq' gives the Guide's questions and answers (optional query narrows them); section 'glossary' defines one term, the same text as the Guide's mouse-over.
| Argument | Type | Description |
|---|---|---|
| term | string | The term to define, e.g. 'field of view'. Needed for glossary. |
| query | string | For faq: words to look for in the questions and answers |
| section* | string | timeline, faq or glossary |
| product_slug | string | A product_slug, e.g. 'apple-watch'. Needed for timeline and faq. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"section"
],
"properties": {
"term": {
"type": "string",
"description": "The term to define, e.g. 'field of view'. Needed for glossary."
},
"query": {
"type": "string",
"description": "For faq: words to look for in the questions and answers"
},
"section": {
"enum": [
"timeline",
"faq",
"glossary"
],
"type": "string",
"description": "timeline, faq or glossary"
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'. Needed for timeline and faq."
}
},
"additionalProperties": false
}The buying summary of one product's Guide: its one-line summary and bottom line, the at-a-glance facts, price and dates, where it sits in its line (the newest released model), and the facts that bear on buying now or waiting: whether a newer model is out or announced, the expected window with who stated it, the current retailer read against the list price and the lowest and typical price seen, and iDevice's published verdict with its reasons.
| Argument | Type | Description |
|---|---|---|
| product_slug* | string | A product_slug, e.g. 'apple-airpods-pro-3' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-airpods-pro-3'"
}
},
"additionalProperties": false
}What ships in the box for one product, per model or configuration, as the official product page states it: each item, its quantity, whether it is included (false means the official page says it is not), and the page it came from. Optional variant narrows to one configuration.
| Argument | Type | Description |
|---|---|---|
| variant | string | Part of a configuration name, e.g. 'Pro' |
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"variant": {
"type": "string",
"description": "Part of a configuration name, e.g. 'Pro'"
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}What owning one product involves, each fact with its source page and date: the official return window, who pays return shipping and any restocking fee; the warranty length and what it covers; whether a subscription is needed, its price and the first-year cost where the price and billing period are both stated; the official support status as of a stated date; and published recalls, service programs and security-update windows. Optional section narrows the answer to one part.
| Argument | Type | Description |
|---|---|---|
| section | string | Only this part: returns, warranty, subscription, support or programs (recalls and service programs) |
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"section": {
"enum": [
"returns",
"warranty",
"subscription",
"support",
"programs"
],
"type": "string",
"description": "Only this part: returns, warranty, subscription, support or programs (recalls and service programs)"
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}Dated prices for one product: today's verified price for this exact model (price_verified; when it is not verified the price is null and price_unverified_reason says Price not confirmed and why), when iDevice began checking it (tracking_since) and on how many days (history_days). Lows come only from verified checks of this exact model, one price a day: none under 30 days of checks; from 30 to 89 days the low (lowest_checked) with the days it covers (low_period_days, low_period), and lowest_last_30_days with the 30-day low and high; lowest_last_90_days only when 90 days are covered. Also the researched history (first and last observation, range, the points themselves, with bundles and refurbs marked and left out of the range).
| Argument | Type | Description |
|---|---|---|
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}Lifecycle, official or estimated price, key dates, availability (on sale or not, release date and its basis, where to buy), report count and how well-sourced the reports are. Works for products with no reports yet.
| Argument | Type | Description |
|---|---|---|
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}Official price (only when it was officially announced or is sold officially; otherwise labelled as an estimate), announcement and availability dates with their source, availability (is it on sale, and where to buy with the last price we read), a short compatibility summary, and specs. Every spec is marked Confirmed, Reported, Our read or Not confirmed, with the source outlet and date.
| Argument | Type | Description |
|---|---|---|
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}Latest iDevice news about one product, each story with the sources it rests on. Newest first: the title, the date, the story page on idevice.com, a one-line summary, the kind of story (standalone or cluster) and the outlets and links it is based on (outlet, URL, date). The same stories as the News tab on the product's Guide. Optional limit (default 5, at most 15) and since (YYYY-MM-DD); a company_key returns a company's news instead. A story with no source link says so.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 5, max 15 |
| since | string | Only stories published on or after this day, YYYY-MM-DD |
| company_key | string | A company key such as 'apple' or 'samsung', instead of a product_slug |
| product_slug | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 15,
"minimum": 1,
"description": "Default 5, max 15"
},
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Only stories published on or after this day, YYYY-MM-DD"
},
"company_key": {
"type": "string",
"description": "A company key such as 'apple' or 'samsung', instead of a product_slug"
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}Products not yet on sale, in date order: a release date, an announcement event, or a window shown as written (for example Fall 2026), each with who stated it (Announced by the company, Company event, Reported date, Reported window, iDevice estimate) and how many pre-release reports it has. Defaults to the next 120 days; optional from and to (YYYY-MM-DD, at most one year), category (watches, earbuds, glasses, phones, rings) and company narrow it. Products with no dated or sourced window are counted, not listed.
| Argument | Type | Description |
|---|---|---|
| to | string | Last day, YYYY-MM-DD. Default 120 days after from; at most 366 days. |
| from | string | First day, YYYY-MM-DD. Default today. |
| company | string | A company or brand word, e.g. 'apple', 'samsung', 'meta' |
| category | string | A category word, e.g. 'watches', 'earbuds', 'glasses', 'phones', 'rings' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last day, YYYY-MM-DD. Default 120 days after from; at most 366 days."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First day, YYYY-MM-DD. Default today."
},
"company": {
"type": "string",
"description": "A company or brand word, e.g. 'apple', 'samsung', 'meta'"
},
"category": {
"type": "string",
"description": "A category word, e.g. 'watches', 'earbuds', 'glasses', 'phones', 'rings'"
}
},
"additionalProperties": false
}Every generation of a product's line with its announcement and release dates, sources and launch price, plus the gaps between releases: mean, median, shortest and longest, in days and months.
| Argument | Type | Description |
|---|---|---|
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}A roll-up of one product's pre-release reports by how they turned out (Right, Partly right, Wrong, Never settled, Not comparable, Not checked yet, No outcome yet), and the reports themselves, newest first: the date, a one-sentence summary, who reported it, the outlet that carried it, its status and a link on idevice.com. Optional query narrows the reports to words in the summary or the outlet.
| Argument | Type | Description |
|---|---|---|
| query | string | Words to look for in the reports, e.g. 'battery' or 'Gurman' |
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"query": {
"type": "string",
"description": "Words to look for in the reports, e.g. 'battery' or 'Gurman'"
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}Every well-sourced pre-release report for one product, each with its status (Right, Partly right, Wrong, Never settled, Not comparable, Not checked yet, No outcome yet), how many outlets reported it, who reported it first, and a link to the evidence on idevice.com.
| Argument | Type | Description |
|---|---|---|
| category | string | Filter by report type, e.g. 'hardware', 'design', 'pricing' |
| product_slug* | string | A product_slug, e.g. 'apple-glasses' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"category": {
"type": "string",
"description": "Filter by report type, e.g. 'hardware', 'design', 'pricing'"
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-glasses'"
}
},
"additionalProperties": false
}What other outlets scored one product: the Review Consensus (a normalized average, shown only from two scored reviews by two different publishers), the themes reviewers agree on, and each review with its outlet, published rating and link. The scores are the outlets' work; iDevice did not test these products for them.
| Argument | Type | Description |
|---|---|---|
| product_slug* | string | A product_slug, e.g. 'apple-watch' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'apple-watch'"
}
},
"additionalProperties": false
}The configurations of one product with their launch prices, to answer '$399 for which one?': storage, size, colour and material, each with its source; the retailer listings that are this exact model; and the conditions retailers attach to a member price, coupon, bundle, refurbished or trade-in offer, for the retailers where iDevice has read a price for it. Pass retailer (for example 'Best Buy') to see one store's conditions, with or without a product.
| Argument | Type | Description |
|---|---|---|
| retailer | string | A store name, e.g. 'Best Buy', 'Costco', 'Verizon'. Adds that store's offer conditions. |
| product_slug | string | A product_slug, e.g. 'oura-ring-4' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"retailer": {
"type": "string",
"description": "A store name, e.g. 'Best Buy', 'Costco', 'Verizon'. Adds that store's offer conditions."
},
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'oura-ring-4'"
}
},
"additionalProperties": false
}Every product iDevice covers, with its lifecycle (reported, announced, preorder, shipping, previous) and how many well-sourced reports it has (can be 0). Each entry includes its product_slug. Optional query filters by name, e.g. 'iphone 18 pro'. A line slug such as 'samsung-galaxy-ring' names the line's newest model (which can be one not yet on sale); a generation slug such as 'samsung-galaxy-ring-1' names one model; is_line: true marks a line slug, and part_of names a generation's line. Up to 20 entries per call with the total; a query narrows a longer list.
| Argument | Type | Description |
|---|---|---|
| query | string | Words in the product name, e.g. 'galaxy ring' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"type": "string",
"description": "Words in the product name, e.g. 'galaxy ring'"
}
},
"additionalProperties": false
}For two or three products, which one the written buy-or-wait rules put ahead, or that neither is ahead, optionally for a shopper who owns a device or uses iPhone or Android, with a budget. Each product comes with its verdict (buy_now, wait, skip, check_fit or not_enough_data), its fit with the phone given, today's retailer price and the reasons, each with its source and how sure iDevice is. A product that does not work with the phone given goes last; then the verdict decides, then the fit answer. Price alone does not put one ahead. When the rules leave two products level, review_tiebreak says whether outlets' published review scores separate them (at least two independent outlets that reviewed each, all one way, a clear margin) and lists the themes reviewers agree on, each with the outlets that reported it. purchase_today and product_for_you split the answer in two: the better purchase today on the rules, and the better product, named only on the phone or fit answer or on outlets' review scores, else No clear winner; where the companies' own figures lean one way, product_for_you says which product leads on which criteria, conditionally, and names no winner (lead null). A lead on the verdict alone (lead_basis timing) is about when to buy, not which product is better; a product that only reads BUY NOW or FINE TO BUY against NO RUSH is not a lead, and a product whose answer is not_enough_data (NEWER MODEL OUT, NOT ENOUGH DATA) is not out-bought unless the other product is its own newer model already out. The same comparison as the decision card on idevice.com. No model is involved. A line slug (for example 'samsung-galaxy-ring') names the line's newest model; when that model is not on sale the answer is for the newest model of the line that is, and resolved_to says which and why. With buyer_context, the answer also carries buyer_decision: the personal answer the idevice.com decision page for the same question gives for that context (a recommendation class, its rule_id, the decisive factors, the trade-offs, what would change it and what is unknown, each with its evidence), and buyer_decision_info with the same answer in plain words and the page it belongs to. buyer_decision.base_answers are that page's own answers, which can differ from this tool's answer for a phone platform or a budget given as arguments.
| Argument | Type |
|---|
Find well-sourced pre-release reports by keyword across every covered product, e.g. 'battery', 'display', 'price'. Each result carries its status and product lifecycle.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 20, max 20 |
| query* | string | Keyword or phrase |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Default 20, max 20"
},
"query": {
"type": "string",
"minLength": 2,
"description": "Keyword or phrase"
}
},
"additionalProperties": false
}For one product: buy now, wait, skip or check fit first, optionally for a shopper who already owns a device or uses iPhone or Android, with a budget or a use. Returns a verdict (buy_now, wait, skip, check_fit or not_enough_data) and the rule behind it, reasons that each carry a source link and how sure iDevice is (Confirmed, Reported, Our read or Not confirmed), the fit with the shopper's phone platform, timing (a newer model out, announced or reported), price (iDevice's published verdict and the lowest verified price over the period iDevice has checked it, low_period; none under 30 days of checks), what changed from the model the shopper owns when that comparison is available, and which of those four parts could not be answered. Reported dates are worded as reported. No probability is given. For a shopper who owns the model this one directly replaces, the answer also carries the two parts the /upgrade page on idevice.com says apart: upgrade_merit, whether replacing the owned model is worth it (worth_upgrading, not_a_clear_upgrade, depends_on_your_needs or too_early_to_say), and purchase_timing, whether today is a good time to buy the new one (good_time_to_buy, fine_at_this_price, no_rush, wait_for_price, newer_model_close, price_not_confirmed or not_on_sale_yet), each with its basis, and upgrade_answer, both parts in the page's own words; all five are null for any other question. decision_word is the word iDevice shows for the verdict: BUY NOW, FINE TO BUY (a buy_now because the model is new and at its launch price, with no price signal: no reason to wait, no deal to chase), NO RUSH, WAIT, SKIP, KEEP YOURS, UPGRADE, CHECK FIT, NOT ENOUGH DATA or NEWER MODEL OUT (PRICE NOT CONFIRMED when no price is confirmed for the exact model); the verdict field is the same whichever word is shown. display_label is the same answer in the words idevice.com prints (Good to buy, Fine to buy, No need to rush, Hold off for now, Look elsewhere, Newer model out, Price not confirmed, Keep what you have, Worth upgrading, Check the fit first, Too early to say); say that label to a person, and key on decision_word. A line slug (for example 'samsung-galaxy-ring') names the line's newest model; when that model is not on sale the answer is for the newest model of the line that is, and resolved_to says which and why. With buyer_context, the answer also carries buyer_decision: the personal answer the idevice.com decision page for the same question gives for that context (a recommendation class, its rule_id, the decisive factors, the trade-offs, what would change it and what is unknown, each with its evidence), and buyer_decision_info with the same answer in plain words and the page it belongs to. buyer_decision.base_answers are that page's own answers, which can differ from this tool's answer for a phone platform or a budget given as arguments.
For one product: its stage, the release window with who stated it (the company, a company event, pre-release reports, or iDevice's own estimate), and the pre-release reports its Guide lists, each with its status (Confirmed, Reported, Expected or Our estimate), the track record of reporting like it with the group that record comes from, how many independent origins and outlets carried it, whether sources disagree, and the outlet and link it names. A detail that has already turned out right or wrong is not listed. The same rows as the Guide's own tab on idevice.com.
| Argument | Type | Description |
|---|---|---|
| product_slug* | string | A product_slug, e.g. 'iphone-pro' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"product_slug": {
"type": "string",
"description": "A product_slug, e.g. 'iphone-pro'"
}
},
"additionalProperties": false
}| string |
| The kind of product |
| budget_usd | number | A price ceiling in US dollars |
| priorities | array | Up to three uses, e.g. ['sleep','battery-life']. A use iDevice's Guides do not assign is refused, with the list. |
| owned_platform | string | The phone platform the shopper uses |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "How many products, 1 to 5, default 3"
},
"category": {
"enum": [
"glasses",
"rings",
"watches",
"earbuds",
"phones",
"headsets",
"fitness trackers",
"headphones"
],
"type": "string",
"description": "The kind of product"
},
"budget_usd": {
"type": "number",
"description": "A price ceiling in US dollars",
"exclusiveMinimum": 0
},
"priorities": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 3,
"description": "Up to three uses, e.g. ['sleep','battery-life']. A use iDevice's Guides do not assign is refused, with the list."
},
"owned_platform": {
"enum": [
"iphone",
"android",
"other"
],
"type": "string",
"description": "The phone platform the shopper uses"
}
},
"additionalProperties": false
}| Description |
|---|
| budget_usd | number | A price ceiling in US dollars |
| buyer_context | any | Optional. The shopper's own situation, in the closed grammar of the form on the idevice.com decision pages: { context_version: "buyer-context-v1", context, provenance }. context: currency "USD", risk_tolerance "normal", urgency (today, within_30_days, within_90_days or can_wait), priorities (up to three { id, importance }, importance must_have, high or medium; an id is a use or buying criterion the page can weigh, such as sleep, fitness or battery_life), hard_constraints (up to three: { id: "phone_platform", value: "iphone" or "android" }, { id: "no_subscription", value: true }, { id: "max_budget", value: a dollar amount }), cost_inputs (up to three { kind: offered_price, trade_in or required_accessories, amount, currency "USD", explicit_zero }), and optionally platform, expected_ownership_months (12, 24, 36 or 48), owned_condition and ecosystem_switch_willingness. Amounts are numbers from 0 to 100000 with at most two decimals. provenance: for each hard constraint, "hard_constraints:<id>": "selected" when the shopper stated it; a hard constraint without "selected" is not applied. The products come from this call's own arguments. A context outside the grammar is answered with buyer_decision_info naming the fields to fix, and the rest of the answer is unchanged. The context is used for this one answer and then dropped: it goes into no log. |
| product_slugs* | array | Two or three product_slugs, e.g. ['oura-ring-4','samsung-galaxy-ring-1'] |
| owned_platform | string | The phone platform the shopper uses |
| owned_device_slug | string | A product_slug of a device the shopper already owns, e.g. 'iphone-17' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slugs"
],
"properties": {
"budget_usd": {
"type": "number",
"description": "A price ceiling in US dollars",
"exclusiveMinimum": 0
},
"buyer_context": {
"description": "Optional. The shopper's own situation, in the closed grammar of the form on the idevice.com decision pages: { context_version: \"buyer-context-v1\", context, provenance }. context: currency \"USD\", risk_tolerance \"normal\", urgency (today, within_30_days, within_90_days or can_wait), priorities (up to three { id, importance }, importance must_have, high or medium; an id is a use or buying criterion the page can weigh, such as sleep, fitness or battery_life), hard_constraints (up to three: { id: \"phone_platform\", value: \"iphone\" or \"android\" }, { id: \"no_subscription\", value: true }, { id: \"max_budget\", value: a dollar amount }), cost_inputs (up to three { kind: offered_price, trade_in or required_accessories, amount, currency \"USD\", explicit_zero }), and optionally platform, expected_ownership_months (12, 24, 36 or 48), owned_condition and ecosystem_switch_willingness. Amounts are numbers from 0 to 100000 with at most two decimals. provenance: for each hard constraint, \"hard_constraints:<id>\": \"selected\" when the shopper stated it; a hard constraint without \"selected\" is not applied. The products come from this call's own arguments. A context outside the grammar is answered with buyer_decision_info naming the fields to fix, and the rest of the answer is unchanged. The context is used for this one answer and then dropped: it goes into no log."
},
"product_slugs": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3,
"minItems": 2,
"description": "Two or three product_slugs, e.g. ['oura-ring-4','samsung-galaxy-ring-1']"
},
"owned_platform": {
"enum": [
"iphone",
"android",
"other"
],
"type": "string",
"description": "The phone platform the shopper uses"
},
"owned_device_slug": {
"type": "string",
"description": "A product_slug of a device the shopper already owns, e.g. 'iphone-17'"
}
},
"additionalProperties": false
}| Argument | Type | Description |
|---|---|---|
| use_case | string | What it is for, e.g. 'running' or 'sleep tracking' |
| budget_usd | number | A price ceiling in US dollars |
| product_slug* | string | The product being considered, a product_slug, e.g. 'apple-watch' |
| buyer_context | any | Optional. The shopper's own situation, in the closed grammar of the form on the idevice.com decision pages: { context_version: "buyer-context-v1", context, provenance }. context: currency "USD", risk_tolerance "normal", urgency (today, within_30_days, within_90_days or can_wait), priorities (up to three { id, importance }, importance must_have, high or medium; an id is a use or buying criterion the page can weigh, such as sleep, fitness or battery_life), hard_constraints (up to three: { id: "phone_platform", value: "iphone" or "android" }, { id: "no_subscription", value: true }, { id: "max_budget", value: a dollar amount }), cost_inputs (up to three { kind: offered_price, trade_in or required_accessories, amount, currency "USD", explicit_zero }), and optionally platform, expected_ownership_months (12, 24, 36 or 48), owned_condition and ecosystem_switch_willingness. Amounts are numbers from 0 to 100000 with at most two decimals. provenance: for each hard constraint, "hard_constraints:<id>": "selected" when the shopper stated it; a hard constraint without "selected" is not applied. The products come from this call's own arguments. A context outside the grammar is answered with buyer_decision_info naming the fields to fix, and the rest of the answer is unchanged. The context is used for this one answer and then dropped: it goes into no log. |
| owned_platform | string | The phone platform the shopper uses |
| owned_device_slug | string | A product_slug of a device the shopper already owns, e.g. 'iphone-17' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_slug"
],
"properties": {
"use_case": {
"type": "string",
"maxLength": 120,
"description": "What it is for, e.g. 'running' or 'sleep tracking'"
},
"budget_usd": {
"type": "number",
"description": "A price ceiling in US dollars",
"exclusiveMinimum": 0
},
"product_slug": {
"type": "string",
"description": "The product being considered, a product_slug, e.g. 'apple-watch'"
},
"buyer_context": {
"description": "Optional. The shopper's own situation, in the closed grammar of the form on the idevice.com decision pages: { context_version: \"buyer-context-v1\", context, provenance }. context: currency \"USD\", risk_tolerance \"normal\", urgency (today, within_30_days, within_90_days or can_wait), priorities (up to three { id, importance }, importance must_have, high or medium; an id is a use or buying criterion the page can weigh, such as sleep, fitness or battery_life), hard_constraints (up to three: { id: \"phone_platform\", value: \"iphone\" or \"android\" }, { id: \"no_subscription\", value: true }, { id: \"max_budget\", value: a dollar amount }), cost_inputs (up to three { kind: offered_price, trade_in or required_accessories, amount, currency \"USD\", explicit_zero }), and optionally platform, expected_ownership_months (12, 24, 36 or 48), owned_condition and ecosystem_switch_willingness. Amounts are numbers from 0 to 100000 with at most two decimals. provenance: for each hard constraint, \"hard_constraints:<id>\": \"selected\" when the shopper stated it; a hard constraint without \"selected\" is not applied. The products come from this call's own arguments. A context outside the grammar is answered with buyer_decision_info naming the fields to fix, and the rest of the answer is unchanged. The context is used for this one answer and then dropped: it goes into no log."
},
"owned_platform": {
"enum": [
"iphone",
"android",
"other"
],
"type": "string",
"description": "The phone platform the shopper uses"
},
"owned_device_slug": {
"type": "string",
"description": "A product_slug of a device the shopper already owns, e.g. 'iphone-17'"
}
},
"additionalProperties": false
}