MCP server / Documentation

MCP server documentation

The iDevice Buyer's Guide in MCP format. Independent, source-backed answers for phones and wearables: what to buy, what works with what, whether to buy now or wait, what owning it involves, and what is coming. Facts carry their status (Confirmed, Reported, Our read or Not confirmed), so an assistant can say how sure iDevice is, and every result links to the page with the evidence.

Everything to connect an AI assistant or app to https://idevice.com/api/mcp: setup for every client, every tool with real example calls and responses, limits, data freshness, what is and isn't included, and how to cite iDevice.

What agents use it for

Build a shopping agent

Ask what to buy for a phone, a budget and a use, and get a short ranked list, the lead between two or three products, and a buy-now-or-wait verdict with its reasons and sources. The same written rules answer every time, with no model in the decision.

Uses find_best_device, pick_between, should_i_buy. Ask: “Which smart ring under $400 for sleep works with my Android phone?”

Stop a bad purchase

Before checkout, check the product works with the shopper's phone, that they do not already own something newer, and whether a newer model is close. Not confirmed means unknown, never a yes.

Uses should_i_buy, get_compatibility, whats_coming. Ask: “I use Android. Should I buy the Apple Watch Series 12?”

Verify device facts

Every spec, date, price and compatibility answer comes with its status (Confirmed, Reported, Our read or Not confirmed) and a link to its source, so an agent can say how sure it is.

Uses get_product_facts, get_compatibility, get_detailed_facts. Ask: “What is the battery life of the Oura Ring 4, and who says so?”

Check a deal

Say whether a price someone was offered is a good deal, against today's retailer price and the lowest price iDevice read in the last 90 days.

Uses check_deal, get_price_history. Ask: “Is $339 a good price for the Oura Ring 4?”

In the chat: views

should_i_buy, pick_between, check_deal and whats_coming each name an MCP Apps view in their _meta. An app that draws MCP Apps, such as ChatGPT or Claude, can show the decision card, the side-by-side, the deal card with the last 30 days of prices, or the pre-release reports with their evidence row beside the answer. A view shows only what the tool returned, loads nothing from the network, and its buttons call the same read-only tools. An app that draws no views gets the same text and data.

Quick start

Claude Code

claude mcp add --transport http idevice https://idevice.com/api/mcp

Claude Desktop

Settings, Connectors, Add custom connector, and paste https://idevice.com/api/mcp. Or add this to claude_desktop_config.json (needs Node.js):

{
  "mcpServers": {
    "idevice": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://idevice.com/api/mcp"]
    }
  }
}

ChatGPT

Settings, Connectors, Create, paste the endpoint URL, and set authentication to "No authentication".

Cursor

Add to .cursor/mcp.json in your project, or ~/.cursor/mcp.json globally.

{
  "mcpServers": {
    "idevice": {
      "url": "https://idevice.com/api/mcp"
    }
  }
}

Generic JSON (any MCP-compatible app)

{
  "mcpServers": {
    "idevice": {
      "type": "streamable-http",
      "url": "https://idevice.com/api/mcp"
    }
  }
}

Raw protocol, with curl

The server speaks streamable HTTP MCP directly, so any HTTP client works without an SDK. Discovery (no protocol handshake needed):

curl https://idevice.com/api/mcp

Initialize a session:

curl -s https://idevice.com/api/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-app","version":"1.0"}}}'

Call a tool (the server is stateless, so this works without reusing a session id):

curl -s https://idevice.com/api/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
        "name":"get_product","arguments":{"product_slug":"apple-watch"}
      }}'

Questions it answers

The questions a shopper puts to an assistant. The assistant picks the tool, and each answer keeps its source and its status. Where iDevice has not confirmed a fact, the answer says so.

  • “Should I buy the Apple Watch Series 12 now, or wait?” Uses should_i_buy.
  • “I use an Android phone. Should I buy the Apple Watch Series 12?” Uses should_i_buy.
  • “I use an iPhone. Does the Samsung Galaxy Watch 8 work with it?” Uses get_compatibility.
  • “Which smartwatches under $300 work with an Android phone, and is it a good time to buy?” Uses find_products.
  • “What is Samsung's return window for the Galaxy Watch 8, and is there a restocking fee?” Uses get_ownership_facts.
  • “Does the Oura Ring 5 need a subscription, and what does the first year cost?” Uses get_ownership_facts.
  • “Which smart rings are best for sleep?” Uses get_best_for.
  • “Which Oura Ring 4 finish costs $349, and what do the others cost?” Uses get_variants_and_offers.
  • “What is the latest news on the Apple Watch Series 12?” Uses get_product_news.
  • “Which phones are coming in the next few months, and who says so?” Uses get_release_calendar.
  • “Compare the Oura Ring 4 and the Samsung Galaxy Ring on battery.” Uses compare_products.
  • “Has the Apple Watch Series 12 been cheaper than its launch price?” Uses get_price_history.
  • “What did the pre-release reports get right about the Apple Watch Series 12?” Uses get_reports.
  • “Which Oura products does iDevice cover?” Uses get_company_profile.
  • “Give me the timeline of the AirPods Pro 3, with sources.” Uses get_guide_extras.

All 34 tools, by job

The same tools, grouped by the question they answer. Each name links to its entry in the reference below.

Decide a buy

Start here when the question is whether to buy, and which one.

  • should_i_buy Buy now, wait, skip or check fit first for one product, with the reasons, each with its source and how sure we are, and the parts it could not answer. Ask: “I use an iPhone. Should I buy the Samsung Galaxy Watch 8?”
  • check_deal Whether a price you were offered is a good deal, against today's retailer price and the lowest read in 90 days, by the same rules as should_i_buy. Ask: “Is $249 a good price for the Oura Ring 4?”
  • pick_between Which of two or three products the same rules put ahead for your phone and budget, or that neither is, with each one's verdict, fit and price. Ask: “I use Android. Galaxy Watch 8 or Pixel Watch 4?”
  • find_best_device A short ranked list for a category, your phone, a budget and up to three priorities like sleep or battery life, each with its verdict, fit, price and a reason. Ask: “Which smart ring under $400 for sleep works with my Android phone?”
  • get_guide_summary A Guide's summary, with the facts on buying now or waiting.
  • find_products On-sale products in a category, cheapest first, optionally under a price or only those that work with your phone.
  • get_best_for What a product is best for, or which products on sale are best for a use like sleep or running. Ask: “Which smart rings are best for sleep?”
  • compare_products Two or three products side by side, on any spec.
  • get_reviews Review scores from the outlets that tested it.

Ownership and policies

What owning it involves after the purchase.

  • get_ownership_facts The official return window and fees, the warranty, any subscription and its first-year cost, how long it is supported, and published recalls. Ask: “What is Samsung's return window for the Galaxy Watch 8, and is there a restocking fee?”
  • get_in_the_box What ships in the box, by configuration.

Find a product or a company

Start here to get a product_slug, or to look up a maker.

  • list_products Every covered product, its category, lifecycle stage and report count.
  • get_product One product's status, dates, price and where to buy.
  • get_company_profile A company as iDevice's public directory lists it, with the categories and products iDevice covers for it. Ask: “Which Oura products does iDevice cover?”

Compatibility, specs and prices

What it works with, what it is, and what it costs.

  • get_compatibility What it works with, each answer with its evidence and a link to the official page.
  • get_product_facts Sourced specs and a short compatibility summary.
  • get_detailed_facts Every detailed fact on a topic, like water, battery or camera, read in pages.
  • get_variants_and_offers A product's configurations with launch prices, the retailer listings that are this exact model, and the conditions retailers attach to member prices, coupons and refurbished offers. Ask: “Which Oura Ring 4 finish costs $349, and what do the others cost?”
  • get_price_history Price over time.
  • is_good_price Today's verified price against our own 30- and 90-day record of this exact model, with the low, median and dates, and whether today reads as a good price, a normal one, or one to wait on. Ask: “Is today's price on the AirPods Pro 3 a good price?”

News, reports and history

What is happening now, what was reported before launch and how it turned out, and what is coming. Pre-release reports carry a status: right, wrong, partly right, or not settled yet.

  • whats_coming A product's release window with who stated it, and the pre-release reports its Guide lists, each with its status, track record and source. Ask: “What is coming in the next Galaxy Ring, and who says so?”
  • get_product_news The latest iDevice news about a product, newest first, each story with the outlets and links it rests on. Ask: “What is the latest news on the Apple Watch Series 12?”
  • get_reports A product's pre-release reports and how each turned out.
  • search_reports Search every report by keyword.
  • get_report_card How a product's reports turned out, rolled up by status.
  • get_release_history Every release and the gap between them.
  • get_release_calendar What is coming, in date order, with who stated each date.
  • get_guide_extras A Guide's timeline of dated events with their sources, its FAQ, or the plain definition of a term. Ask: “Give me the timeline of the AirPods Pro 3, with sources.”
  • release_odds The expected release window, who stated it and how sure we are, and our published probability where one exists. No basis, no answer. Ask: “When are Apple Glasses expected, and how often do windows like that hold?”
  • source_track_record A reporter's or outlet's graded record: right, partly right and wrong, and what it was first to report. Ask: “How often has Mark Gurman been right?”
  • whats_moved This week's price moves, release window changes and launches. Ask: “What moved in wearables this week?”

Price watches (API key)

For an agent with an iDevice API key: get a signed callback when a product's verified price reaches a target. Keyless callers do not see these tools.

  • watch_price Register a watch: one signed POST to your https callback when the verified price is at or below your target. Ask: “Tell my agent when the Oura Ring 4 is $299 or less.”
  • unwatch_price Cancel one of your watches.
  • list_watches Your watches and their status.

Tools reference

Every tool is read-only (readOnlyHint: true). None of them write anything or take an admin action. Every result includes a url back to the relevant page on idevice.com; please keep and show that link. A product whose Guide is sponsored also carries sponsored, sponsor and sponsor_note (see what's included).

should_i_buy

Should I buy this

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. It 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 retailer price in 90 days), what changed from the model the shopper owns when that comparison is available, and which of those parts could not be answered. A part that could not be answered is listed as unanswered, not guessed. The rules are written down and fixed, no model is involved, reported dates are worded as reported, and no probability is given.

Arguments

product_slugstringThe product being considered, from list_products, e.g. "samsung-galaxy-watch-8".
owned_device_slug?stringOptional. A product_slug of a device the shopper already owns, e.g. "iphone-17".
owned_platform?stringOptional. The phone platform the shopper uses: "iphone", "android" or "other".
budget_usd?numberOptional. A price ceiling in US dollars.
use_case?stringOptional. What it is for, e.g. "running" or "sleep tracking". Up to 120 characters.

Example call

{"name":"should_i_buy","arguments":{"product_slug":"samsung-galaxy-watch-8","owned_platform":"iphone"}}

Example response (real data, trimmed for length)

{
  "product": "Samsung Galaxy Watch 8",
  "product_slug": "samsung-galaxy-watch-8",
  "found": true,
  "verdict": "check_fit",
  "verdict_detail": "platform_not_supported",
  "rule": "R2",
  "headline": "Check fit first. Samsung Galaxy Watch 8 with iPhone: Does not work.",
  "reasons": [
    {
      "part": "fit",
      "rule": "R2",
      "how_sure": "Confirmed",
      "source_url": "https://www.samsung.com/hk_en/support/mobile-devices/devices-and-operating-systems-that-work-with-samsung-galaxy-watch/",
      "text": "Samsung Galaxy Watch 8 with iPhone: Does not work. Limit: Samsung’s current model-specific compatibility table says iOS is not supported."
    },
    {
      "part": "timing",
      "how_sure": "Confirmed",
      "text": "Samsung Galaxy Watch 9 is already out.",
      "source_url": "https://idevice.com/smart-watches/samsung-galaxy-watch/roadmap/watch-8"
    },
    {
      "part": "price",
      "rule": "R11",
      "how_sure": "Our read",
      "text": "The price is interesting, but nothing makes today the day to buy. (iDevice's published verdict: No rush.)",
      "source_url": "https://idevice.com/smart-watches/samsung-galaxy-watch/roadmap/watch-8"
    }
  ],
  "price": {
    "answered": true,
    "signal": "no_rush",
    "best_current_usd": 219.99,
    "retailer": "Amazon",
    "read_on": "2026-10-07",
    "list_usd": 329.99,
    "lowest_90_days_usd": 219.99,
    "published_verdict": { "label": "No rush", "summary": "The price is interesting, but nothing makes today the day to buy." }
    // ... summary and flags trimmed
  },
  // ... fit, timing and upgrade blocks trimmed
  "data_completeness": {
    "parts": { "fit": "answered", "timing": "answered", "price": "answered", "upgrade": "not_asked" },
    "answered": 3,
    "of": 4,
    "could_not_answer": [ "Upgrade was not asked: a platform was given, not an owned device." ]
  },
  "basis": "Decided by written rules from what iDevice has confirmed, with no model involved. Reported dates are worded as reported. No probability is given. Not confirmed means unknown, not incompatible.",
  "url": "https://idevice.com/smart-watches/samsung-galaxy-watch/roadmap/watch-8"
}

check_deal

Is this price a good deal

For one product and a price someone was offered: GOOD DEAL, NOT A GOOD DEAL or NOT ENOUGH DATA, by the same written rules as should_i_buy. It compares the price with the lowest current retailer price iDevice read today, the lowest read in the last 90 days and the near-low band the rules use (the 90-day low plus 5%, at most $15). A price above what a retailer charges today is not a good deal; a price inside the band and not above today's read is. With no 90-day low, or a price the bad-read guard would refuse beside the last 90 days of reads (an accessory or an instalment price, for example), the answer is NOT ENOUGH DATA. Where the rules can state one, it also gives the buy-or-wait verdict at that price. The offer itself is repeated as given: iDevice did not read it. No model is involved and no probability is given.

Arguments

product_slugstringThe product, from list_products, e.g. "oura-ring-4".
price_usdnumberThe price offered, in US dollars.
retailer?stringOptional. Where the price was offered, e.g. "Best Buy". Repeated in the answer as given, up to 60 characters.

Example call

{"name":"check_deal","arguments":{"product_slug":"oura-ring-4","price_usd":339,"retailer":"Best Buy"}}

Example response (real data, trimmed for length)

{
  "product": "Oura Ring 4",
  "product_slug": "oura-ring-4",
  "found": true,
  "deal_word": "GOOD DEAL",
  "deal_basis": "The price is inside the near-low band the rules use, and not above today's best read.",
  "how_sure": "Our read",
  "offered": { "usd": 339, "retailer": "Best Buy", "note": "The price and the retailer as given. iDevice did not read this offer.", "refused_as_a_bad_read": false },
  "today_best_read": { "usd": 349, "retailer": "Amazon", "read_on": "2026-10-09", "basis": "What each retailer's product page showed when iDevice loaded it. A measurement, not a quote, and it can be out of date." },
  "relation_to_today": "below",
  "lowest_90_days": { "usd": 336.99, "on": "2026-09-25", "retailer": "Amazon" },
  "near_low_band": { "top_usd": 351.99, "inside": true, "at_or_below_lowest_90_days": false },
  "verdict_if_paid": null,
  "verdict_today": { "verdict": "wait", "verdict_word": "WAIT", "decision_word": "NO RUSH", "rule": "R11" },
  "lines": [
    "You were offered $339. The best price iDevice read today is $349 at Amazon (read Oct 9, 2026).",
    "The lowest read in the last 90 days is $336.99 (Sep 25, 2026).",
    "$339 is $2.01 above the lowest read in the last 90 days, inside the near-low band the rules use (the band tops out at $351.99)."
  ],
  "sources": [ { "label": "iDevice Guide", "url": "https://idevice.com/smart-rings/oura/roadmap/ring-4" } ],
  "rules_version": "2026-10-09.1",
  "layer_version": "2026-10-09.8",
  "url": "https://idevice.com/smart-rings/oura/roadmap/ring-4"
  // ... verdict_if_paid_note, launch_price, as_of, basis
}

pick_between

Pick between two or three products

For two or three products, which one the written buy-or-wait rules put ahead, or that neither is, optionally for a shopper who owns a device or uses iPhone or Android, with a budget. A product that does not work with the phone given goes last; then the verdict decides (buy now, check fit, wait, skip, not enough data), then the fit answer. Price alone does not put one ahead: two products that read the same are a tie, and the price gap is named. Each product comes with its verdict, decision word, fit, today's retailer price and its reasons with their sources and how sure iDevice is. The same comparison as the decision card on idevice.com. No model is involved.

Arguments

product_slugsstring[]Two or three product_slugs, e.g. ["samsung-galaxy-watch-8","google-pixel-watch-4"].
owned_device_slug?stringOptional. A product_slug of a device the shopper already owns, e.g. "iphone-17".
owned_platform?stringOptional. The phone platform the shopper uses: "iphone", "android" or "other".
budget_usd?numberOptional. A price ceiling in US dollars.

Example call

{"name":"pick_between","arguments":{"product_slugs":["apple-watch","samsung-galaxy-watch-8","google-pixel-watch-4"],"owned_platform":"android"}}

Example response (real data, trimmed for length)

{
  "found": true,
  "answer": "lead",
  "lead": { "product": "Samsung Galaxy Watch 8", "product_slug": "samsung-galaxy-watch-8" },
  "text": "Samsung Galaxy Watch 8 is ahead: CHECK FIT against WAIT for Pixel Watch 4. Apple Watch Series 12 is behind both: CHECK FIT, fit: Does not work.",
  "products": [
    {
      "product": "Samsung Galaxy Watch 8",
      "product_slug": "samsung-galaxy-watch-8",
      "verdict": "check_fit",
      "verdict_word": "CHECK FIT",
      "fit": { "asked": true, "word": "Works with limits", "how_sure": "Confirmed" },
      "price_today": { "usd": 219.99, "retailer": "Amazon", "read_on": "2026-10-09" },
      "reasons": [
        { "part": "fit", "text": "Samsung Galaxy Watch 8 with Android: Some features missing: Samsung Health Monitor ECG/IHRN/sleep-apnea features require a Samsung phone; other Samsung-only features also exist.", "how_sure": "Confirmed" }
        // ... timing and price reasons, each with its source
      ]
    }
    // ... Pixel Watch 4 (WAIT), Apple Watch Series 12 (CHECK FIT, Does not work)
  ],
  "how_ranked": "A product that does not work with the phone given goes last, then the verdict (buy now, check fit, wait, skip, not enough data), then the fit answer. Price alone does not put one ahead.",
  "rules_version": "2026-10-09.1",
  "layer_version": "2026-10-09.7"
}

find_best_device

Find the device that fits

A short ranked list (1 to 5, default 3) 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 in that category (for example sleep, running, battery-life, photos-video). A priority outside those uses is refused, and the uses are listed. In the list: a verdict of Buy now or Wait, and, when a phone is given, Works or Works with limits with it (Not confirmed is left out and counted, not treated as a no). Order: the verdict, then the fit answer, then where the product's Guide places a named priority among its uses (first, second or third), then price. Each product has its verdict, fit, today's retailer price, a one-line reason and its sources. The same list rule as the decision card on idevice.com. No model is involved.

Arguments

categorystringOne of "glasses", "rings", "watches", "earbuds", "phones", "headsets", "fitness trackers".
owned_platform?stringOptional. The phone platform the shopper uses: "iphone", "android" or "other".
budget_usd?numberOptional. A price ceiling in US dollars.
priorities?string[]Optional. Up to three uses, e.g. ["sleep","battery-life"].
limit?numberOptional. How many products, 1 to 5, default 3.

Example call

{"name":"find_best_device","arguments":{"category":"rings","owned_platform":"android","budget_usd":400,"priorities":["sleep"]}}

Example response (real data, trimmed for length)

{
  "found": true,
  "category": "rings",
  "owned_platform": "android",
  "budget_usd": 400,
  "priorities": [ { "asked": "sleep", "use_cases": ["sleep"], "labels": ["Sleep"] } ],
  "products": [
    {
      "position": 1,
      "product": "Samsung Galaxy Ring",
      "product_slug": "samsung-galaxy-ring-1",
      "verdict": "buy_now",
      "verdict_word": "BUY NOW",
      "fit": { "asked": true, "word": "Works", "how_sure": "Confirmed" },
      "price_today": { "usd": 324.99, "retailer": "Amazon", "read_on": "2026-10-09", "launch": { "usd": 399.99, "line": "Launch price $399.99. Today's price is $75 below it." } },
      "reason": "This is close to its 30-day low, so we'd buy now.",
      "best_for": [ { "use_case": "sleep", "label": "Sleep", "rank": 2, "why": "It tracks your sleep, and its apnea risk detection is FDA-cleared.", "basis": "official", "source": "https://www.samsung.com/us/rings/galaxy-ring/" } ],
      "url": "https://idevice.com/smart-rings/samsung-galaxy-ring/roadmap/galaxy-ring"
      // ... reasons with sources, missing, confidence
    }
    // ... Oura Ring 5 (WAIT, sleep first), Amazfit Helio Ring (WAIT)
  ],
  "considered": 7,
  "excluded": [ { "reason": "Works with Android is not confirmed, or the answer is no", "count": 3 } ]
  // ... how_ranked, rules_version, layer_version, as_of, basis
}

list_products

List tracked products

Every product iDevice covers, including ones with no reports yet: name, product_slug, category, lifecycle (reported, announced, preorder, shipping, previous) and report count. Call this first to find a product_slug for the other tools.

Arguments

query?stringOptional. Words in the product name, e.g. "apple watch". Omit it to list everything.

Example call

{"name":"list_products","arguments":{"query":"apple watch"}}

Example response (real data, trimmed for length)

{
  "products": [
    {
      "product": "Apple Watch Series 12",
      "product_slug": "apple-watch",
      "category": "apple-watch",
      "lifecycle": "shipping",
      "reports": 24,
      "url": "https://idevice.com/smart-watches/apple-watch/roadmap"
    },
    {
      "product": "Apple Watch Ultra 4",
      "product_slug": "apple-watch-ultra",
      "category": "apple-watch",
      "lifecycle": "shipping",
      "reports": 5,
      "url": "https://idevice.com/smart-watches/apple-watch-ultra/roadmap"
    }
    // ... 13 more results (15 total) for this query
  ],
  "count": 15,
  "total": 15
}

get_product

Get one product's status

Lifecycle, official or estimated price, key dates, availability (on sale or not, the release date and what it rests on, where to buy), report count and how well-sourced the reports are. Works for products with no reports yet.

Arguments

product_slugstringFrom list_products, e.g. "apple-watch".

Example call

{"name":"get_product","arguments":{"product_slug":"apple-watch"}}

Example response (real data, trimmed for length)

{
  "product": "Apple Watch Series 12",
  "product_slug": "apple-watch",
  "found": true,
  "category": "apple-watch",
  "lifecycle": "shipping",
  "price": {
    "basis": "official",
    "label": "Starting price",
    "price": "$399"
  },
  "dates": {
    "announced_on": "2026-09-09",
    "announced_on_source": "apple.com",
    "available_on": "2026-09-18",
    "available_on_source": "Apple Newsroom"
  },
  "availability": {
    "lifecycle": "shipping",
    "status": "On sale now.",
    "announced": true,
    "released": true,
    "orderable_now": true,
    "announced_on": "2026-09-09",
    "announced_on_source": "apple.com",
    "release": {
      "date": "2026-09-18",
      "basis": "Reported by Apple Newsroom, not independently verified"
    },
    "where_to_buy": [
      {
        "retailer": "Best Buy",
        "last_read_price": {
          "usd": 399,
          "read_at": "2026-10-01T18:08:40.514Z"
        }
      }
    ],
    "where_to_buy_note": "Stores that carry this product, each with the last price iDevice read there (read_at), not a quote. iDevice lists no store links; a url appears only for the official store page."
  },
  "reports": 24,
  "best_corroboration": "widely-reported",
  "url": "https://idevice.com/smart-watches/apple-watch/roadmap"
}

get_product_facts

Get price, dates and specs for a product

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.

Arguments

product_slugstringFrom list_products, e.g. "oura-ring-4".

Example call

{"name":"get_product_facts","arguments":{"product_slug":"oura-ring-4"}}

Example response (real data, trimmed for length)

{
  "product": "Oura Ring 4",
  "product_slug": "oura-ring-4",
  "category": "oura",
  "lifecycle": "previous",
  "price": {
    "basis": "official",
    "label": "Launch price",
    "price": "$349"
  },
  "retail_price_seen": {
    "usd": 336.99,
    "retailer": "Amazon",
    "seen_on": "2026-10-01",
    "note": "A retailer listing we tracked, not the official price."
  },
  "dates": {
    "announced_on": "2024-10-03",
    "available_on": "2024-10-15",
    "available_on_source": "CNBC"
  },
  "availability": {
    "lifecycle": "previous",
    "status": "A previous generation. A newer model has replaced it.",
    "announced": true,
    "released": true,
    "announced_on": "2024-10-03",
    "release": {
      "date": "2024-10-15",
      "basis": "Verified against Oura"
    },
    "where_to_buy": [
      {
        "retailer": "Oura",
        "url": "https://www.ouraring.com"
      }
    ],
    "where_to_buy_note": "Stores that carry this product, each with the last price iDevice read there (read_at), not a quote. iDevice lists no store links; a url appears only for the official store page."
  },
  "compatibility": {
    "questions_covered": 12,
    "answered": 11,
    "confirmed": 10,
    "headline": [
      {
        "target": "Google Fit",
        "answer": "Does not work",
        "evidence": "Confirmed"
      },
      {
        "target": "Peloton",
        "answer": "Works with limits",
        "evidence": "Confirmed"
      },
      {
        "target": "Samsung Health",
        "answer": "Works with limits",
        "evidence": "Our read"
      }
    ],
    "note": "Call get_compatibility for each answer's requirements, limits and source links."
  },
  "colors": [
    "Silver",
    "Black",
    "Brushed Silver",
    "Stealth",
    "Gold",
    "Rose Gold"
  ],
  "specs": {
    "battery": {"value": "5–8 days", "status": "Confirmed", "source": "Oura (official)", "source_date": "2026-07-11"},
    "blood_glucose": {"value": "No", "status": "Not confirmed"}
    // ... every other tracked spec for this product
  },
  "spec_status_key": "Confirmed = backed by the official page or a confirmed source. Reported = reported by an outlet, not confirmed. Our read = iDevice's inference. Not confirmed = iDevice has not confirmed it, so the answer is not known.",
  "url": "https://idevice.com/smart-rings/oura/roadmap/ring-4"
}

get_compatibility

What a product works with

What a product works with, 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 link to the page it came from. Not confirmed means unknown, never incompatible, and an answer iDevice could not source is returned without any answer text. At most 20 answers per call; query narrows to one thing, and a query with no match returns the list of things iDevice does cover in other_targets.

Arguments

product_slugstringFrom list_products, e.g. "apple-airpods-pro-3".
query?stringOptional. What it should work with, e.g. "iphone", "android", "ps5".

Example call

{"name":"get_compatibility","arguments":{"product_slug":"apple-airpods-pro-3","query":"android"}}

Example response (real data, trimmed for length)

{
  "product": "AirPods Pro 3",
  "product_slug": "apple-airpods-pro-3",
  "lifecycle": "shipping",
  "query": "android",
  "eligible": true,
  "answers": [
    {
      "target": "Android",
      "target_id": "android",
      "device": "Android phone",
      "question": "Do AirPods Pro work with Android?",
      "answer": "Works with limits",
      "answer_text": "Listening and calls work over Bluetooth, but Apple-only features are limited.",
      "requirements": "Standard Bluetooth pairing.",
      "limitations": "No Siri; hearing features, heart-rate sensing, settings and firmware updates need an Apple device.",
      "evidence": "Our read",
      "evidence_note": "iDevice's inference from the official published information.",
      "sources": [
        {
          "publisher": "Apple",
          "title": "Set up AirPods with a Mac or other Bluetooth device",
          "url": "https://support.apple.com/en-ca/108786",
          "from": "the official page or platform",
          "checked_on": "2026-09-21"
        },
        {
          "publisher": "Apple",
          "title": "Heart rate sensing with AirPods Pro 3",
          "url": "https://support.apple.com/en-la/123184",
          "from": "the official page or platform",
          "checked_on": "2026-09-21"
        },
        {
          "publisher": "Apple",
          "title": "Firmware updates for AirPods",
          "url": "https://support.apple.com/en-au/106340",
          "from": "the official page or platform",
          "checked_on": "2026-09-21"
        }
      ],
      "last_verified": "2026-09-21"
    }
  ],
  "total": 1,
  "answered": 1,
  "confirmed": 0,
  "evidence_key": "Confirmed = the company or the platform says so on its own official page. Reported = user reports, not an official statement. Our read = iDevice's inference from official pages. Not confirmed = iDevice has not confirmed it, so no answer is given.",
  "url": "https://idevice.com/earbuds/apple-airpods-pro/roadmap/airpods-pro-3#works-with"
}

compare_products

Compare two or three products

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.

Arguments

product_slugsstring[]2 or 3 slugs, e.g. ["oura-ring-4","samsung-galaxy-ring-1"].
specs?string[]Optional, up to 10 keywords to keep only matching rows, e.g. ["battery"].

Example call

{"name":"compare_products","arguments":{"product_slugs":["oura-ring-4","samsung-galaxy-ring-1"],"specs":["battery"]}}

Example response (real data, trimmed for length)

{
  "mode": "same-category",
  "category": "rings",
  "products": [
    { "product": "Oura Ring 4", "product_slug": "oura-ring-4", "lifecycle": "previous",
      "price": { "basis": "official", "label": "Launch price", "price": "$349" },
      "url": "https://idevice.com/smart-rings/oura/roadmap/ring-4" },
    { "product": "Samsung Galaxy Ring", "product_slug": "samsung-galaxy-ring-1", "lifecycle": "shipping",
      "price": { "basis": "official", "label": "Starting price", "price": "$399.99" },
      "url": "https://idevice.com/smart-rings/samsung-galaxy-ring/roadmap/galaxy-ring" }
  ],
  "rows": [
    {
      "spec": "battery",
      "values": {
        "oura-ring-4": { "value": "5–8 days", "status": "Confirmed", "source": "Oura (official)", "source_date": "2026-07-11" },
        "samsung-galaxy-ring-1": { "value": "Up to 7 days (5–7 real-world)", "status": "Reported", "source": "Samsung Mobile Press (official specs)", "source_date": "2026-07-12" }
      }
    },
    {
      "spec": "battery case",
      "values": {
        "oura-ring-4": { "value": "Up to 48 days total · $99 optional", "status": "Confirmed", "source": "Oura", "source_date": "2026-07-15" },
        "samsung-galaxy-ring-1": { "value": "Up to 14 days total · included", "status": "Confirmed", "source": "Samsung", "source_date": "2026-07-15" }
      }
    }
  ],
  "spec_status_key": "Confirmed = backed by the official page or a confirmed source. Reported = reported by an outlet, not confirmed. Our read = iDevice's inference. Not confirmed = iDevice has not confirmed it, so the answer is not known."
}

get_reports

Get pre-release reports for a product

Every well-sourced pre-release report for one product (each corroborated by at least two independently verified sources), with its status, outlet count, who reported it first, and a link to the evidence on idevice.com.

Arguments

product_slugstringFrom list_products, e.g. "apple-watch".
category?stringOptional. Filter by report type, e.g. "hardware", "design", "pricing", "ai".

Example call

{"name":"get_reports","arguments":{"product_slug":"apple-watch"}}

Example response (real data, trimmed for length)

{
  "product": "Apple Watch Series 12",
  "product_slug": "apple-watch",
  "lifecycle": "shipping",
  "reports": [
    {
      "product": "Apple Watch Series 12", "product_slug": "apple-watch", "product_lifecycle": "shipping",
      "status": "Right", "status_explain": "It turned out the way this report said.",
      "report": "Apple's rebuilt Siri will come to the wrist",
      "summary": "watchOS 27 brings Apple's rebuilt Siri to the wrist with natural conversations, contextual awareness, and its own app.",
      "category": "ai",
      "corroboration": { "outlets": 11, "label": "widely-reported" },
      "url": "https://idevice.com/smart-watches/apple-watch/features/siri-ai-on-wrist-for-the-first-time-via"
    }
    // ... more reports, ordered by corroboration
  ],
  "count": 20,
  "total": 24,
  "status_counts": { "Right": 13, "Not checked yet": 6, "Wrong": 2, "Partly right": 2, "Never settled": 1 },
  "note": "Showing the top 20 of 24 by corroboration. Use category to narrow."
}

search_reports

Search pre-release reports across all products

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.

Arguments

querystringKeyword or phrase, minimum 2 characters.
limit?numberOptional, 1-20. Default 20.

Example call

{"name":"search_reports","arguments":{"query":"battery","limit":2}}

Example response (real data, trimmed for length)

{
  "query": "battery",
  "results": [
    {
      "product": "Samsung Galaxy Watch Ultra 2", "product_slug": "samsung-galaxy-watch-ultra", "product_lifecycle": "shipping",
      "status": "Right", "status_explain": "It turned out the way this report said.",
      "report": "The battery grows 35% to 800mAh",
      "summary": "Galaxy Watch Ultra 2 ships with an 800mAh battery, up from the original Ultra's 590mAh, a 35% increase, confirmed by Samsung at launch.",
      "category": "battery",
      "corroboration": { "outlets": 12, "label": "widely-reported" },
      "first_reported_by": "SamMobile", "first_reported_on": "2026-06-09",
      "url": "https://idevice.com/smart-watches/samsung-galaxy-watch-ultra/features/an-800mah-battery-35-bigger-than-the-ultra-1"
    },
    {
      "product": "Samsung Galaxy Watch 9", "product_slug": "samsung-galaxy-watch", "product_lifecycle": "shipping",
      "status": "Right", "status_explain": "It turned out the way this report said.",
      "report": "The watch still comes in 40mm and 44mm, each in Bluetooth or LTE",
      "category": "design",
      "corroboration": { "outlets": 12, "label": "widely-reported" },
      "first_reported_by": "Digital Citizen", "first_reported_on": "2026-06-20",
      "url": "https://idevice.com/smart-watches/samsung-galaxy-watch/features/40mm-and-44mm-sizes-each-in-bluetooth-and-lte"
    }
  ],
  "count": 2
}

get_in_the_box

What is in the box

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. Only items checked against the official page are listed; the count of any that could not be checked is returned. Missing box contents mean unknown, not empty. At most 20 items per call; variant narrows to one configuration.

Arguments

product_slugstringA product_slug, e.g. "apple-airpods-pro-3".
variant?stringOptional. Part of a configuration name.

Example call

{"name":"get_in_the_box","arguments":{"product_slug":"apple-airpods-pro-3"}}

Example response (real data, trimmed for length)

{
  "product": "AirPods Pro 3",
  "product_slug": "apple-airpods-pro-3",
  "found": true,
  "variants": [
    { "variant": "...", "items": [
      { "item": "AirPods Pro 3 earbuds", "quantity": 1, "included": true,
        "source": { "url": "https://www.apple.com/airpods-pro/specs/", "publisher": "Apple", "checked_on": "2026-09-22" } },
      { "item": "Silicone ear tips in XXS, XS, S, M and L", "quantity": 5, "included": true, "source": { "...": "..." } }
    ] }
  ],
  "total_items": 6,
  "shown": 6
}

get_release_history

Release history and gaps between releases

Every generation of a product's line with its announcement and release dates, their sources and the launch price, plus the gaps between releases: mean, median, shortest and longest, in days and months. The gaps are computed from the dates listed and describe the past, not the next release; iDevice's window for the next one, with who says so, is in get_product. At most the newest 20 generations per call.

Arguments

product_slugstringA product_slug, e.g. "apple-watch".

Example call

{"name":"get_release_history","arguments":{"product_slug":"apple-watch"}}

Example response (real data, trimmed for length)

{
  "product": "Apple Watch Series 12",
  "found": true,
  "generations": [
    { "model": "Apple Watch (1st generation)",
      "announced": { "date": "2014-09-09", "source": "Digital Trends", "verified": true },
      "released":  { "date": "2015-04-24", "source": "Apple", "verified": true },
      "launch_price": { "usd": 349, "basis": "generation", "verified": true } }
    // ... newest 20 generations
  ],
  "total_generations": 13,
  "release_gap": { "mean_days": 379, "mean_months": 12.5, "median_days": 364, "shortest_days": 336, "longest_days": 511,
                   "basis": "Computed from the release dates listed, between consecutive generations of this line. A pattern in the past, not a promise about the next one." }
}

get_reviews

Reviews and review consensus

What other outlets scored one product: the Review Consensus (a normalized average, shown only once three reviews carry a score), 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. At most 20 reviews per call.

Arguments

product_slugstringA product_slug, e.g. "apple-watch".

Example call

{"name":"get_reviews","arguments":{"product_slug":"oura-ring-4"}}

Example response (real data, trimmed for length)

{
  "product": "Oura Ring 4",
  "found": true,
  "review_consensus": { "label": "Review Consensus", "state": "established", "score_100": 82, "score_5": 4.1, "scored_reviews": 6, "outlets": 6,
                        "attribution": "Scores published by other outlets, normalized and averaged. iDevice did not test these products for this score.",
                        "methodology_url": "https://idevice.com/methodology/review-consensus" },
  "themes": [ { "topic": "battery", "sentiment": "positive", "reviews": 4 } ],
  "reviews": [ { "outlet": "...", "title": "...", "url": "...", "rating_as_published": "4/5", "score_100": 80, "counts_toward_consensus": true } ],
  "total_reviews": 8
}

get_price_history

Price history

Dated prices for one product. last_30_days: the 30-day low and high (with their days) from iDevice's own daily reads, once a product has a week of them; before that it says how many days it has, and states no low or high. retailer_reads: the lowest price any retailer's page showed in the last 30 and 90 days, with the retailer and the day. researched_history: dated prices a researcher recorded, with the first and last observation, the range, and the points themselves (bundles, refurbs and member-only prices are marked comparable: false and left out of the range). Irregular observations, not a daily series. At most the newest 20 points per call.

Arguments

product_slugstringA product_slug, e.g. "apple-watch".

Example call

{"name":"get_price_history","arguments":{"product_slug":"apple-watch"}}

Example response (real data, trimmed for length)

{
  "product": "Apple Watch Series 12",
  "found": true,
  "last_30_days": { "window_days": 30, "days_with_reads": 24, "reads": 51, "low_usd": 399, "low_on": "2026-09-10", "high_usd": 429, "high_on": "2026-09-22", "latest_usd": 399, "latest_on": "2026-10-04",
                    "basis": "One price a day (the cheapest read that day) from iDevice's own twice-daily retailer reads over the last 30 days, with implausible reads (an accessory, an instalment) refused. Not a quote, and not older researched history." },
  "retailer_reads": { "lowest_last_30_days": { "usd": 399, "retailer": "Apple", "read_on": "2026-09-10" },
                      "lowest_last_90_days": { "usd": 399, "retailer": "Apple", "read_on": "2026-09-10" },
                      "reads_on_file": 96,
                      "basis": "What each retailer's product page showed when iDevice loaded it. Not a quote, and not a promise the price is still available." },
  "researched_history": { "observations": 12, "range_usd": { "low": 329, "high": 399, "observations_in_range": 10 }, "points": [ "..." ] }
}

get_detailed_facts

Detailed facts for a product

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; Reported by an outlet, Maker target, Our read and Unconfirmed are not) and the page it came from. At most 20 facts per call; the response lists the topics available, and topic narrows to one. A product with more than 20 facts is read in pages with offset and limit.

Arguments

product_slugstringA product_slug, e.g. "apple-airpods-pro-3".
topic?stringOptional. A topic or keyword, e.g. "water", "temperature", "camera".
offset?numberOptional. How many facts to skip, to read the next page. Default 0.
limit?numberOptional, 1-20. Facts per page. Default 20.

Example call

{"name":"get_detailed_facts","arguments":{"product_slug":"apple-airpods-pro-3","topic":"temperature"}}

Example response (real data, trimmed for length)

{
  "product": "AirPods Pro 3",
  "found": true,
  "facts": [
    { "topic": "temperature", "fact": "Operating temp (°C)", "for": "maximum", "value": 35, "unit": "C", "status": "Confirmed", "source_url": "https://support.apple.com/en-us/119846" },
    { "topic": "temperature", "fact": "Operating temp (°C)", "for": "minimum", "value": 0, "unit": "C", "status": "Confirmed", "source_url": "https://support.apple.com/en-us/119846" }
  ],
  "total_facts": 4,
  "topics_available": { "water and durability": 1, "battery and charging": 5, "temperature": 4, "size, weight and materials": 7 }
}

get_release_calendar

Release calendar

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 entry says who stated the timing: Announced by the company (its own official word), Company event (an announcement event with a source link), Reported date or Reported window (from pre-release reports, not confirmed), iDevice estimate, or Expected from release cadence. A window is never turned into a single day and no probability is given. Products with no dated or sourced window are counted in the response, not listed. Defaults to the next 120 days; at most 20 products per call and a range of at most one year.

Arguments

from?stringOptional. First day, YYYY-MM-DD. Default today.
to?stringOptional. Last day, YYYY-MM-DD. Default 120 days after from; at most 366 days.
category?stringOptional. A category word, e.g. "watches", "earbuds", "glasses", "phones", "rings".
company?stringOptional. A company or brand word, e.g. "apple", "samsung", "meta".

Example call

{"name":"get_release_calendar","arguments":{"to":"2026-11-30"}}

Example response (real data, trimmed for length)

{
  "from": "2026-10-04",
  "to": "2026-11-30",
  "upcoming": [
    {
      "product": "Snap Specs", "product_slug": "snap-spectacles", "category": "glasses", "lifecycle": "preorder",
      "expected": { "kind": "window", "window": "Fall 2026", "precision": "season", "evidence": "Announced by the company", "source": "Snap Newsroom" },
      "reports": 13, "url": "https://idevice.com/smart-glasses/snap-specs/roadmap"
    },
    {
      "product": "Samsung Galaxy Buds On", "product_slug": "samsung-galaxy-buds-on", "category": "earbuds", "lifecycle": "reported",
      "expected": { "kind": "window", "window": "October 2026", "precision": "month", "evidence": "Reported window", "source": "ETNews" },
      "reports": 6, "url": "https://idevice.com/earbuds/samsung-galaxy-buds-on/roadmap"
    },
    {
      "product": "Ray-Ban Meta Audio", "product_slug": "meta-luna", "category": "glasses", "lifecycle": "preorder",
      "expected": { "kind": "release_date", "date": "2026-10-13", "precision": "day", "evidence": "Reported date" },
      "reports": 2, "url": "https://idevice.com/smart-glasses/ray-ban-meta-audio/roadmap"
    }
  ],
  "count": 6,
  "total_in_range": 6,
  "undated_not_shown": 10,
  "unsourced_windows_not_shown": 2,
  "note": "A window is shown as written (for example Fall 2026) and is never a single day. No probability is given. 10 more unreleased products have no dated or sourced window yet, so they are not listed. That means unknown, not far away."
}

find_products

Find products by category and price

On-sale products 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 best current retailer price with the retailer and the day it was read, its list price, iDevice's published verdict and the Guide link. A retailer read is what a page showed when iDevice loaded it, not a quote. Current and previous models are listed (a previous model says what replaced it); pre-orders and unreleased products are in get_release_calendar. At most 20 products per call; when more match, current models are kept ahead of previous ones.

Arguments

categorystringglasses, rings, watches, earbuds, phones, headsets or fitness trackers.
max_price?numberOptional. Price ceiling in US dollars.
company?stringOptional. A company or brand word, e.g. "apple", "samsung", "meta".
works_with?stringOptional. Keep only products that work with this, e.g. "iPhone", "Android" or a device name. Each product then carries the answer and its source. Not confirmed counts as unknown, not incompatible, and the response counts those products and lists the ones the official page or the platform says do not work.

Example call

{"name":"find_products","arguments":{"category":"earbuds","max_price":200}}

Example response (real data, trimmed for length)

{
  "found": true,
  "category": "earbuds",
  "max_price_usd": 200,
  "products": [
    {
      "product": "AirPods 4", "product_slug": "apple-airpods-4", "company": "Apple", "lifecycle": "previous", "replaced_by": "AirPods 5",
      "price": { "best_current_usd": 89, "retailer": "Amazon", "read_on": "2026-10-04", "list_usd": 129, "list_price_basis": "catalogue" },
      "idevice_verdict": { "label": "No rush", "summary": "This is the outgoing model, so there is no rush unless the price drops." },
      "url": "https://idevice.com/earbuds/apple-airpods/roadmap/airpods-4"
    },
    {
      "product": "Pixel Buds 2a", "product_slug": "google-pixel-buds-2a", "company": "Google", "lifecycle": "shipping",
      "price": { "best_current_usd": 124.99, "retailer": "Best Buy", "read_on": "2026-10-04", "list_usd": 129, "list_price_basis": "catalogue" },
      "idevice_verdict": { "label": "No rush", "summary": "Nothing is forcing the decision right now, so there is no need to rush." },
      "url": "https://idevice.com/earbuds/google-pixel-buds-2a/roadmap"
    }
  ],
  "count": 6,
  "total_matching": 6,
  "sorted_by": "Price, lowest first. When more than 20 match, current models are kept ahead of previous ones before the cap."
}

get_guide_summary

A product's Guide summary

The short summary of one product's Guide: its one-line summary and bottom line, the at-a-glance facts, price and dates, and where it sits in its line (the newest released model). It also carries the facts that bear on buying now or waiting: whether a newer model is out or announced, the expected window and who stated it (for a product not yet on sale), the current retailer read against the list price and the lowest and typical price seen, and iDevice advice on the price with its reasons. It is the advice printed on the Guide; no probability is given.

Arguments

product_slugstringA product_slug, e.g. "apple-airpods-pro-3".

Example call

{"name":"get_guide_summary","arguments":{"product_slug":"apple-airpods-pro-3"}}

Example response (real data, trimmed for length)

{
  "product": "AirPods Pro 3",
  "product_slug": "apple-airpods-pro-3",
  "found": true,
  "lifecycle": "shipping",
  "summary": "AirPods Pro 3 put a heart-rate sensor and an FDA-cleared hearing aid mode inside the buds, on top of noise cancellation roughly four times the original Pro. $249.",
  "at_a_glance": [ { "label": "Price", "value": "$249" }, { "label": "Water", "value": "IP57" } ],
  "line": { "newest_released_model": "AirPods Pro 3", "newest_released_on": "2025-09-19", "this_is_the_newest": true },
  "buy_or_wait_basis": {
    "stage": "shipping",
    "on_sale": true,
    "price": { "best_current_usd": 199.99, "retailer": "Amazon", "read_on": "2026-10-04", "list_usd": 249, "lowest_seen_usd": 169, "lowest_seen_on": "2026-06-17", "typical_usd": 219.99 },
    "idevice_verdict": {
      "label": "Buy now",
      "summary": "This is a strong enough price that waiting probably is not worth it.",
      "reasons": [ { "title": "Good discount", "detail": "It's about $49 less than Apple direct." } ]
    }
  },
  "url": "https://idevice.com/earbuds/apple-airpods-pro/roadmap/airpods-pro-3"
}

get_report_card

Report card for a product's pre-release reports

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 records 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. The roll-up covers every record for the product; at most 20 records are returned, and query narrows them to words in the summary or the outlet. Source links are not included; the evidence is on the linked page.

Arguments

product_slugstringA product_slug, e.g. "apple-watch".
query?stringOptional. Words to look for in the records, e.g. "battery".

Example call

{"name":"get_report_card","arguments":{"product_slug":"apple-watch","query":"battery"}}

Example response (real data, trimmed for length)

{
  "product": "Apple Watch Series 12",
  "product_slug": "apple-watch",
  "found": true,
  "lifecycle": "shipping",
  "status_counts": { "Not checked yet": 16, "Partly right": 1, "Right": 4, "Never settled": 3, "Not comparable": 1, "Wrong": 4 },
  "graded": 9,
  "total_records": 29,
  "records": [
    {
      "date": "2026-07-21", "report": "Apple is focused on longer battery life for the Series 12.",
      "reported_by": "Unnamed source", "carried_by": "MacRumors", "reporter_type": "other source",
      "status": "Wrong", "status_explain": "It did not turn out this way.",
      "url": "https://idevice.com/reporting-record/apple#index"
    }
  ],
  "count": 2,
  "matching": 2
}

get_product_news

Latest news about a product

The latest iDevice news about one product, newest first, each story with the sources it rests on: 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. These are the same stories as the News tab on the product's Guide. News is what is happening now; the pre-release reports in get_reports are what was said before launch. A story with no source link returns an empty sources list and says so. At most 15 stories per call, 5 by default.

Arguments

product_slug?stringA product_slug, e.g. "apple-watch". Give this or company_key.
company_key?stringA company key such as "apple" or "samsung", for a company's news instead of one product's.
limit?numberOptional, 1-15. Default 5.
since?stringOptional. Only stories published on or after this day, YYYY-MM-DD.

Example call

{"name":"get_product_news","arguments":{"product_slug":"apple-watch","limit":2}}

Example response (real data, trimmed for length)

{
  "product": "Apple Watch Series 12",
  "product_slug": "apple-watch",
  "found": true,
  "window_days": 90,
  "stories": [
    {
      "title": "Three weeks with the Series 12: the Readiness Score works but wasn't finished at launch",
      "published_at": "2026-10-07T18:06:40.239Z",
      "url": "https://idevice.com/three-weeks-with-the-series-12-the-readiness-score-works-but-wasnt-finished-at-l",
      "summary": "DC Rainmaker's Ray Maker found Apple's new Readiness Score tracks hard days and sick days well, but it sometimes shows no value. Battery was weak in week one, then settled at a day to a day and a half...",
      "kind": "standalone",
      "sources": [
        {
          "outlet": "DC Rainmaker",
          "url": "https://www.dcrainmaker.com/2026/10/apple-watch-series12-in-depth-review-worth-upgrade.html",
          "date": "2026-10-02"
        }
      ]
    }
    // ... 1 more story
  ],
  "count": 2,
  "total_matching": 12,
  "url": "https://idevice.com/smart-watches/apple-watch/roadmap",
  "note": "Newest first. sources are the outlets and links each story rests on; a story with no source link returns sources: [] and says so."
}

get_ownership_facts

What owning a product commits you to

What owning one product involves, each fact with its source page and the date it was checked: the official return window, who pays return shipping and any restocking fee; the warranty length and what it covers and excludes; 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. Facts marked "Apple's policy" (the company named) are its store-wide policy and can differ by country or retailer; facts marked "this product" are specific to it. A missing fact is unknown, not zero and not "no". At most 20 facts per section.

Arguments

product_slugstringA product_slug, e.g. "samsung-galaxy-watch-8".
section?stringOptional. Only one part: "returns", "warranty", "subscription", "support" or "programs" (recalls and service programs).

Example call

{"name":"get_ownership_facts","arguments":{"product_slug":"samsung-galaxy-watch-8","section":"returns"}}

Example response (real data, trimmed for length)

{
  "product": "Samsung Galaxy Watch 8",
  "product_slug": "samsung-galaxy-watch-8",
  "lifecycle": "previous",
  "returns": {
    "maker": "Samsung",
    "store": "samsung.com US online store (and Shop Samsung App)",
    "policy_page": "https://order-help.us.samsung.com/articles/returns-refunds/what-is-samsungs-return-policy/669e3173cd7d5a05a5318406",
    "policy_page_dated": "2026-09-02",
    "as_of": "2026-09-22",
    "facts": [
      {
        "topic": "Return window",
        "statement": "15 days, counted from delivery.",
        "applies_to": "Apple's policy",
        "value": { "days": 15, "clock_starts": "delivery" },
        "evidence": "Confirmed",
        "source": { "url": "https://order-help.us.samsung.com/articles/returns-refunds/what-is-samsungs-return-policy/669e3173cd7d5a05a5318406", "publisher": "Samsung", "checked_on": "2026-09-22" }
      },
      {
        "topic": "Restocking fee",
        "statement": "5% restocking fee for watches unless it arrived damaged or defective.",
        "applies_to": "this product",
        "evidence": "Confirmed",
        "source": { "url": "https://order-help.us.samsung.com/articles/returns-refunds/what-is-samsungs-return-policy/669e3173cd7d5a05a5318406", "publisher": "Samsung", "checked_on": "2026-09-22" }
      }
      // ... 9 more facts: return shipping, condition, refund timing, exceptions
    ],
    "total_facts": 11,
    "not_stated": [],
    "note": "Facts marked as Apple's policy are its store-wide policy and can describe other product families; facts marked this product are specific to it."
  },
  "url": "https://idevice.com/smart-watches/samsung-galaxy-watch/roadmap/watch-8",
  "note": "Every fact carries its source and the date it was checked. Policies are the official store policy and can differ by country or retailer. A missing fact is unknown, not zero and not 'no'."
}

get_best_for

What a product is best for

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. Products are not ranked against each other beyond how high each Guide ranks the use.

Arguments

product_slug?stringOptional. A product_slug, e.g. "oura-ring-4". Gives that product's own uses.
use_case?stringOptional. A use, e.g. "sleep", "running", "gaming". With no product_slug, lists the products best for it.
category?stringOptional. Narrows a use_case search: glasses, rings, watches, earbuds, phones, headsets, fitness trackers or pendants.

Example call

{"name":"get_best_for","arguments":{"use_case":"sleep","category":"rings"}}

Example response (real data, trimmed for length)

{
  "found": true,
  "use_case": "sleep",
  "label": "Sleep",
  "category": "rings",
  "products": [
    {
      "position": 1,
      "product": "Oura Ring 5",
      "product_slug": "oura",
      "lifecycle": "shipping",
      "price": "$399",
      "strength": 3,
      "why": "It gives you a Sleep Score, your sleep stages, your breathing and guidance on bedtime.",
      "how_we_know": "From the official published material.",
      "evidence": "Confirmed",
      "source_url": "https://ouraring.com/store/rings/oura-ring-5",
      "url": "https://idevice.com/smart-rings/oura/roadmap"
    }
    // ... 3 more products
  ],
  "total_matching": 4,
  "note": "Only products that can be bought now, and only where this use is one of the product's top three on its Guide. Strength is how high the Guide ranks the use for that product; products are not otherwise ranked against each other."
}

get_variants_and_offers

Configurations, listings and offer conditions

The configurations of one product with their launch prices, to answer "$349 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. A launch price from a source that is not the official page is marked as an outlet reporting the price. A retailer with no stated conditions is unknown, not "none". Pass retailer (for example "Best Buy") to see one store's conditions, with or without a product.

Arguments

product_slug?stringOptional. A product_slug, e.g. "oura-ring-4".
retailer?stringOptional. A store name, e.g. "Best Buy", "Costco", "Verizon". Adds that store's offer conditions.

Example call

{"name":"get_variants_and_offers","arguments":{"product_slug":"oura-ring-4"}}

Example response (real data, trimmed for length)

{
  "product": "Oura Ring 4",
  "product_slug": "oura-ring-4",
  "lifecycle": "previous",
  "variants": {
    "configurations": [
      {
        "model": "Oura Ring 4",
        "configuration": "Silver / Black",
        "launch_price_usd": 349,
        "price_is": "launch price, what this configuration cost when the model came out",
        "base_configuration": true,
        "material": "titanium",
        "evidence": "Reported",
        "source": { "url": "https://www.androidcentral.com/wearables/oura-ring-4-review", "site": "androidcentral.com", "maker_page": false, "recorded_on": "2026-09-24" }
      }
      // ... 2 more priced configurations
    ],
    "priced_configurations": 3,
    "shown": 3,
    "other_configurations_without_a_stated_price": 24,
    "note": "Prices are launch prices from the source shown. A source that is not the official page is an outlet reporting the price. Whether a subscription is needed is in get_ownership_facts."
  },
  "exact_model_listings": {
    "listings": [
      { "retailer": "Oura", "listed_as": "Oura Ring 4 Ceramic", "this_listing_is": "this exact model", "condition": "new", "sold_by": "Oura", "url": "https://ouraring.com/store/rings/oura-ring-4-ceramic" }
      // ... 2 more listings
    ],
    "count": 3,
    "total": 3,
    "note": "A listing page, not a price. Listings for a different configuration, or not confirmed as this model, are left out. iDevice lists no store links; a url appears only for the official store page."
  },
  "offer_conditions": [
    {
      "retailer": "Best Buy",
      "conditions": [
        {
          "type": "Member price",
          "rule": "My Best Buy Plus member prices",
          "requires": "Paid membership; My Best Buy Plus is listed at $29.99/year and auto-renews.",
          "evidence": "Confirmed",
          "stated_by": "the retailer's own page",
          "source": { "url": "https://www.bestbuy.com/site/electronics/best-buy-membership/pcmcat1679668833285.c?id=pcmcat1679668833285", "recorded_on": "2026-08-20" }
        }
        // ... more conditions
      ]
    }
    // ... other retailers
  ],
  "offer_conditions_note": "Conditions are what each retailer's own page says an offer requires. A price shown without a condition here has none stated, which is unknown, not 'none'.",
  "url": "https://idevice.com/smart-rings/oura/roadmap/ring-4"
}

get_company_profile

A company and the products iDevice covers for it

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". A company with no product that has a Guide is still described, with no products listed.

Arguments

companystringA company name or key, e.g. "oura", "Samsung", "meta". At least 2 characters.

Example call

{"name":"get_company_profile","arguments":{"company":"oura"}}

Example response (real data, trimmed for length)

{
  "found": true,
  "company": {
    "key": "oura",
    "name": "Oura",
    "homepage": "https://ouraring.com/",
    "about": "Oura helped bring the smart ring into the mainstream, with sleep and readiness tracking at the heart of its app.",
    "page": "https://idevice.com/companies/oura"
  },
  "categories_covered": [ "rings" ],
  "products_covered": [
    { "product": "Oura Ring 4", "product_slug": "oura-ring-4", "category": "rings", "lifecycle": "previous", "url": "https://idevice.com/smart-rings/oura/roadmap/ring-4" },
    { "product": "Oura Ring 5", "product_slug": "oura", "category": "rings", "lifecycle": "shipping", "price": "$399", "price_label": "Starting price", "url": "https://idevice.com/smart-rings/oura/roadmap" }
  ],
  "total_products": 2
}

get_guide_extras

A Guide's timeline, FAQ and glossary

Three parts of the Guide. Section "timeline" gives a product's Timeline tab events, oldest first, with their sources, plus the official lifecycle dates (announced, on sale, removed from sale). Section "faq" gives the Guide's questions and answers; the optional query narrows them. Section "glossary" defines one term, with the same text as the Guide's mouse-over. Each event carries its basis, and an event that rests on iDevice's own expectation is not a fact about the past. At most 20 items per call.

Arguments

sectionstring"timeline", "faq" or "glossary".
product_slug?stringA product_slug, e.g. "apple-airpods-pro-3". Needed for timeline and faq.
term?stringThe term to define, e.g. "field of view". Needed for glossary.
query?stringOptional, for faq. Words to look for in the questions and answers.

Example call

{"name":"get_guide_extras","arguments":{"section":"timeline","product_slug":"apple-airpods-pro-3"}}

Example response (real data, trimmed for length)

{
  "product": "AirPods Pro 3",
  "product_slug": "apple-airpods-pro-3",
  "found": true,
  "timeline": [
    // ... 6 earlier events
    {
      "date": "2025-09-09",
      "title": "Apple announces AirPods Pro 3",
      "what_happened": "Apple formally announced AirPods Pro 3 on September 9 and confirmed heart-rate sensing during workouts. Apple also set September 19 availability, ...",
      "kind": "Announcement",
      "basis": "A dated event",
      "sources": [ { "name": "Apple", "url": "https://www.apple.com/newsroom/2025/09/introducing-airpods-pro-3-the-ultimate-audio-experience/" } ]
    },
    {
      "date": "2025-09-19",
      "title": "AirPods Pro 3 go on sale",
      "kind": "Product Launch",
      "basis": "A dated event",
      "sources": [ { "name": "The Verge", "url": "https://www.theverge.com/tech/775719/airpods-pro-3-third-gen-preorder-buy-amazon-best-buy-walmart" } ]
    }
    // ... later events
  ],
  "total_events": 8,
  "shown": 8,
  "maker_lifecycle": [
    { "date": "2025-09-09", "event": "Announced", "model": "AirPods Pro 3", "market": "US", "evidence": "Confirmed", "source": { "url": "https://www.apple.com/gq/newsroom/2025/09/airpods-pro-3-introduce-the-ultimate-audio-experience/" } },
    { "date": "2025-09-19", "event": "On sale", "model": "AirPods Pro 3", "market": "US", "evidence": "Confirmed", "source": { "url": "https://www.apple.com/gq/newsroom/2025/09/airpods-pro-3-introduce-the-ultimate-audio-experience/" } }
    // ... 2 more dates
  ],
  "total_maker_lifecycle": 4,
  "note": "The Timeline tab's events, oldest first, and the official lifecycle dates (announced, on sale, removed from sale). An event whose basis is iDevice's own expectation is not a fact about the past.",
  "url": "https://idevice.com/earbuds/apple-airpods-pro/roadmap/airpods-pro-3"
}

whats_coming

What is coming for a product

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 report carries its status (Confirmed, Reported, Expected or Our estimate), the track record of reporting like it and which group that record comes from, how many independent origins and outlets carried it, whether sources disagree (contested), and the outlet and link it names. A detail that has already turned out right or wrong is not listed. These are the same rows as the Guide's own tab on idevice.com, and the track record is the Guide's own figure: how reporting like this has held up before, not a chance for this one.

Arguments

product_slugstringA product_slug, e.g. "samsung-galaxy-ring" (a line's next model) or "iphone-pro".

Example call

{"name":"whats_coming","arguments":{"product_slug":"samsung-galaxy-ring"}}

Example response (real data, trimmed for length)

{
  "product": "Samsung Galaxy Ring 2",
  "product_slug": "samsung-galaxy-ring",
  "found": true,
  "lifecycle": "reported",
  "stage_word": "Reported, not announced by Apple",
  "window": { "label": "Early 2027", "evidence": "Reported window", "how_sure": "Reported", "source": "ETNews" },
  "rumors": [
    {
      "id": 1352,
      "title": "The next ring is expected to be thinner and lighter than the first",
      "summary": "ETNews sourced anonymous industry figures. Samsung has confirmed nothing.",
      "tier": "reported",
      "tier_word": "Reported",
      "track_record": { "pct": 78, "group": "Based on how reporting on smart rings has held up, across 38 settled reports." },
      "reporting_spread": { "origins": 0, "outlets": 5, "definite": 0, "likely": 2, "possible": 3 },
      "outcome_word": null,
      "contested": false,
      "sources": [ { "outlet": "Digital Trends", "url": "https://www.digitaltrends.com/wearables/samsungs-next-smart-ring-is-running-late-but-youll-appreciate-the-planned-upgrades/", "date": "2026-05-06" } ]
    }
    // ... three more
  ],
  "count": 4,
  "total": 4,
  "url": "https://idevice.com/smart-rings/samsung-galaxy-ring/roadmap"
}

is_good_price

Is today's price a good price

For one product: today's verified retailer price with the day it was read, compared with iDevice's own daily price record of this exact model: the low, median and high over the last 30 days and, once 90 days are covered, the last 90 days, each with its dates; where today sits against them in percent; and a verdict, good_price, normal, wait or not_enough_data, which is iDevice's published Prices verdict for the product. No low is stated under 30 days of checks, and no price is stated without the day it was read.

Arguments

product_slugstringA product_slug, e.g. "apple-airpods-pro-3".

Example call

{"name":"is_good_price","arguments":{"product_slug":"apple-airpods-pro-3"}}

Example response (real data, trimmed for length)

{
  "product": "AirPods Pro 3",
  "product_slug": "apple-airpods-pro-3",
  "found": true,
  "verdict": "good_price",
  "why": "This is a strong enough price that waiting probably isn't worth it.",
  "verdict_source": { "label": "Buy now", "word": "BUY NOW", "from": "The Prices verdict on idevice.com" },
  "today": { "usd": 199.99, "retailer": "Amazon", "read_on": "2026-10-29" },
  "position": { "vs_30_day_low_pct": 11.7, "vs_30_day_median_pct": 0.5, "at_or_below_30_day_low": false, "vs_90_day_low_pct": null, "vs_90_day_median_pct": null },
  "last_30_days": {
    "period_days": 30, "from": "2026-09-30", "to": "2026-10-30", "days_with_a_check": 30,
    "low": { "usd": 179, "retailer": "Amazon", "read_on": "2026-10-05" },
    "median_usd": 199,
    "high": { "usd": 234, "retailer": "Amazon", "read_on": "2026-09-30" }
  },
  "last_90_days": null,
  "tracking_since": "2026-08-17",
  "history_days": 74
}

release_odds

Release window and its odds

For one product not yet released: the expected release window, how it is known (announced by the company, a reported window, an iDevice estimate, or the company's release cadence) with how sure iDevice is (Confirmed, Reported or Our read) and who stated it, and the published probability where iDevice publishes one: how often reported windows of that width have held for products later announced, for the window's calendar year and for the window as stated, with the sample size. A window with no recorded basis, or a reported window with no recorded source, is refused (answered: false, refused says why); so is a product already released.

Arguments

product_slugstringA product_slug, e.g. "apple-glasses".

Example call

{"name":"release_odds","arguments":{"product_slug":"apple-glasses"}}

Example response (real data, trimmed for length)

{
  "product": "Apple Glasses",
  "product_slug": "apple-glasses",
  "found": true,
  "lifecycle": "reported",
  "answered": true,
  "announced_on": null,
  "window": { "label": "Late 2027", "evidence": "Reported window", "how_sure": "Reported", "basis": "reported", "stated_by": null, "derived_from_source": false },
  "probability": {
    "year": { "window": "2027", "percent": 71.8, "sample_size": 37, "conditional_on_announcement": true },
    "stated_window": { "window": "late 2027", "percent": 23.5, "sample_size": 15, "conditional_on_announcement": true },
    "weighted_by_track_record_of": null,
    "means": "How often reported windows of this width have held for products that were later announced. A track record of reporting like this, not a forecast of this product alone."
  },
  "probability_note": null
}

source_track_record

A reporter's or outlet's track record

For one reporter or outlet, by name: its pre-release reports graded against what the company later announced (Right, Partly right, Wrong), how many are not graded yet, the share right or partly right over graded reports only, its most recent graded reports with their dates, and the reports iDevice credits it with being first to make. profile_url links its page on idevice.com when that page holds a reporting record.

Arguments

namestringA reporter's or outlet's name, e.g. "Mark Gurman" or "Bloomberg".

Example call

{"name":"source_track_record","arguments":{"name":"Mark Gurman"}}

Example response (real data, trimmed for length)

{
  "name": "Mark Gurman",
  "found": true,
  "kind": "reporter",
  "record": { "reports": 188, "graded": 57, "right": 44, "partly_right": 5, "wrong": 8, "plan_changed": 2, "not_graded": 120, "right_or_partly_pct": 86 },
  "recent_graded": [
    { "reported_on": "2026-09-09", "product": "Apple iPhone Fold", "summary": "Gurman names Apple's foldable the iPhone Duo and puts it at roughly $2,000, hours before the launch event.", "outcome": "Right" }
    // ... up to ten
  ],
  "first_to_report": { "count": 63, "right": 18, "partly_right": 4, "wrong": 3, "never_settled": 6, "open": 32 },
  "profile_url": "https://idevice.com/sources/mark-gurman"
}

whats_moved

What moved this week

The week's changes in iDevice's records: retailer price moves of at least 7% that held on at least two days (store, was and now, percent, the day last read), release windows that changed, and products that launched or changed stage, each with its Guide link. Optional week is the last day of the week asked (YYYY-MM-DD, up to 26 weeks back); without it, the 7 days to now.

Arguments

week?stringOptional. The last day of the week, YYYY-MM-DD, e.g. "2026-10-25".

Example call

{"name":"whats_moved","arguments":{}}

Example response (real data, trimmed for length)

{
  "found": true,
  "week_start": "2026-10-22",
  "week_end": "2026-10-29",
  "counts": { "price_moves": 14, "down": 10, "up": 4, "date_changes": 2, "launches": 3, "products_down": 9, "products_up": 3 },
  "price_moves": [
    { "product": "Nothing Headphone (a)", "product_slug": "nothing-headphone-a", "store": "Nothing", "direction": "down", "was_usd": 199, "now_usd": 129, "change_pct": -35.2, "latest_read_on": "2026-10-29", "days_confirmed": 5, "guide_url": "https://idevice.com/headphones/nothing-headphone-a/roadmap" }
    // ... more
  ],
  "date_changes": [ /* window_now, window_before, stated_by, changed_on, guide_url */ ],
  "launches": [ /* status_now, status_before, on_sale_now, changed_on, guide_url */ ]
}

watch_price

Watch a product's price (API key)

Listed and callable only with an iDevice API key, sent as X-API-Key or Authorization: Bearer; a keyless caller does not see it. Registers a price watch for one product: when iDevice records a verified retailer price of this exact model at or below target_usd, read after the watch was registered, iDevice sends one JSON POST to callback_url with the product, the price, the retailer and the moment the price was read, and the watch ends. The answer carries the watch_id and a secret, shown only this once. Each POST carries X-iDevice-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" keyed with the secret>; recompute it and refuse a timestamp more than five minutes old. callback_url must be a public https URL on port 443; private, loopback and internal addresses are refused, at registration and again at delivery, and redirects are not followed. A failed delivery is retried for about a day. A watch lasts at most 90 days; a key may hold 50 active watches and register 20 an hour.

Arguments

product_slugstringA product_slug, e.g. "oura-ring-4".
target_usdnumberThe price in US dollars at or below which the callback is sent.
callback_urlstringA public https URL that receives the POST.
days?numberOptional, 1-90. Default 90.

Example call

{"name":"watch_price","arguments":{"product_slug":"oura-ring-4","target_usd":299,"callback_url":"https://agent.example.com/idevice-hook"}}

Example response (real data, trimmed for length)

// illustrative: the shape, with made-up ids
{
  "registered": true,
  "product": "Oura Ring 4",
  "watch_id": "pw_3f9c0d6e1a2b4c5d6e7f8091",
  "product_slug": "oura-ring-4",
  "target_usd": 299,
  "status": "active",
  "created_at": "2026-10-29T18:00:00.000Z",
  "expires_at": "2027-01-27T18:00:00.000Z",
  "fired_at": null,
  "callback_host": "agent.example.com",
  "secret": "whsec_…",
  "secret_note": "Shown only in this answer. It signs every POST for this watch."
}
// the POST your callback receives
{ "event": "price_at_or_below_target", "watch_id": "pw_3f9c…", "product": "Oura Ring 4", "product_slug": "oura-ring-4", "target_usd": 299, "price_usd": 289, "retailer": "Amazon",
  "read_at": "2026-11-02T14:05:00.000Z", "read_on": "2026-11-02", "guide_url": "https://idevice.com/smart-rings/oura/roadmap/ring-4", "sent_at": "2026-11-02T15:00:04.000Z" }

unwatch_price

Cancel a price watch (API key)

With an API key only. Cancels one of this key's active price watches by its watch_id. A watch of another key, or one already fired, cancelled or expired, is not changed.

Arguments

watch_idstringThe watch_id watch_price returned.

Example call

{"name":"unwatch_price","arguments":{"watch_id":"pw_3f9c0d6e1a2b4c5d6e7f8091"}}

Example response (real data, trimmed for length)

{ "watch_id": "pw_3f9c0d6e1a2b4c5d6e7f8091", "cancelled": true, "status": "cancelled" }

list_watches

This key's price watches (API key)

With an API key only. This key's price watches, newest first (at most 100): watch_id, product_slug, target_usd, status (active, fired, cancelled or expired), when it was created, when it expires, when it fired, and the callback's host. The secret is never listed.

Arguments

Example call

{"name":"list_watches","arguments":{}}

Example response (real data, trimmed for length)

// illustrative
{ "count": 1, "watches": [ { "watch_id": "pw_3f9c…", "product_slug": "oura-ring-4", "target_usd": 299, "status": "active", "created_at": "2026-10-29T18:00:00.000Z", "expires_at": "2027-01-27T18:00:00.000Z", "fired_at": null, "callback_host": "agent.example.com" } ] }

Limits and fair use

  • 30 calls per minute per IP address.
  • 500 calls per day per IP address.
  • 20 items per list at most, on every tool that returns a list (and 20 store links in where_to_buy). get_product_news returns at most 15 stories, 5 by default. When a result is truncated, the response says so and gives the true total so you know more exists.
  • The only paging is on get_detailed_facts, which takes offset and limit to read one product's facts in pages of 20. No other tool has an offset or pagination parameter. This is deliberate. The server is meant for looking up specific products and reports, not for walking the whole catalogue.

A limit reached returns a JSON-RPC error rather than silently dropping the request, so a well-behaved client can back off and retry. There is no paid tier and no way to raise these limits today; if you need higher volume for a legitimate research or product use, reach out.

Data freshness

Everything served by the MCP server reads from the same database as idevice.com, live, on every call. There is no separate export, no nightly snapshot and no cache layer between the tool and the site's own data. If a price, a date or a report's status changes on the site, the next MCP call reflects it immediately.

What's included, and what isn't

Included

  • Every covered product's lifecycle, official or estimated price, and key dates.
  • Availability: whether it is on sale, the release date and the source it rests on, and where to buy, with the last price iDevice read at each store.
  • Sponsored Guides, once published. A sponsor's Guide that is public on idevice.com is served through the same tools as any other product, and every result for it carries sponsored: true, sponsor (the sponsor's name) and sponsor_note. Please say a Guide is sponsored when you cite it. Every fact keeps its own status, source and date. No Guide is published as sponsored today.
  • Compatibility: what a product works with (iPhone, Android, apps, other devices), each answer marked Confirmed, Reported, Our read or Not confirmed, with its requirements, limits and the link to the official or platform page it came from.
  • Ownership: the official return window, return shipping and restocking fee, the warranty, whether a subscription is needed and what the first year costs, the official support status as of a stated date, and published recalls and service programs. Each fact links to the official or retailer's own page and says when it was checked. A fact that is not confirmed is unknown, not zero and not "no".
  • Configurations with their launch prices, the retailer listings that are the exact model, and the conditions retailers attach to member prices, coupons, bundles and refurbished offers.
  • What a product is best for, and the products on sale whose Guide ranks a use like sleep or running in its top three.
  • The latest iDevice news about a product, with the outlets and links each story rests on.
  • The public company directory (name, homepage, a short description, the categories and products iDevice covers), a Guide's timeline events with their sources, its FAQ, and glossary definitions.
  • A buy-now, wait, skip or check-fit answer for one product, decided by written rules from what iDevice has confirmed, with the reasons and the parts it could not answer.
  • Sourced specs, each marked Confirmed, Reported, Our read or Not confirmed, with the outlet and date.
  • Side-by-side comparisons across up to three products.
  • Pre-release reports backed by at least one verified source, each with a public outcome status (Right, Wrong, Partly right, Never settled, Not comparable, Not checked yet, No outcome yet), outlet count, and who reported it first.

Not included

  • No unpublished sponsor Guides, and no advertiser data. A sponsor's Guide that is not yet public on idevice.com is not in the MCP: it cannot be listed, fetched or found by search. No placements, offers or sponsor pricing are served.
  • The evidence stays on idevice.com. Every spec, price, date and report was researched and checked against its source before it was published. The evidence behind each one lives on that product's page on idevice.com, and every tool result carries a url back to it. The exceptions are compatibility, ownership and offer answers: each links to the official, platform's or retailer's own page it rests on, and news stories list the outlets and links they are based on. This is deliberate: an assistant can accurately summarize what is known and how solid it is, and it links back for the evidence.
  • No source certainty grades or internal IDs. Only the public-facing status words.
  • No bulk export. Paging only on one product's detailed facts, a 20-item cap per list, and per-IP rate limits, so the tools work for specific lookups, not for reconstructing the whole catalogue in a script.

Attribution

If your assistant or app uses data from this server in an answer, please cite iDevice by name and link to the url the tool returned. That link points at the exact page the fact came from, with the full evidence and sourcing behind it. We built and maintain this data; a citation is how readers find their way back to it and how we know the server is being used well.

Changelog

2.18.02026-10-29

  • Price watches for agents with an iDevice API key (X-API-Key or Authorization: Bearer): watch_price, unwatch_price and list_watches. A watch sends one HMAC-signed JSON POST to your https callback when iDevice records a verified price of the exact model at or below your target, read after you registered it. Private, loopback and internal callback addresses are refused; watches last at most 90 days.
  • Without a key the server is unchanged: the same 31 read-only tools, no key needed.

2.17.02026-10-29

  • Four new read-only tools that answer from iDevice's own records: is_good_price (today's verified price against our daily record of this exact model, with the 30- and 90-day low, median and high and their dates, and our published Prices verdict as good_price, normal or wait), release_odds (the expected window, how it is known and who stated it, and our published probability with its sample size; refused when the window has no recorded basis), source_track_record (a reporter's or outlet's reports graded right, partly right or wrong, and what it was first to report) and whats_moved (the week's price moves, release window changes and launches).
  • tools/list now answers a request whose params is null, or whose cursor is not a string, instead of refusing it. A null id, a missing or wrong jsonrpc and an unsupported MCP-Protocol-Version header are still refused with HTTP 400, as the protocol requires.
  • Every existing tool, argument and field is unchanged.

2.16.02026-10-15

  • should_i_buy and pick_between take an optional buyer_context: the shopper's own situation in the closed grammar of the form on the idevice.com decision pages (priorities, a phone, a budget, no monthly fee, an offered price, a trade-in, how soon). The argument is listed only while the personal answers are switched on.
  • With it, the answer gains buyer_decision, the same personal answer the decision page for that question gives (its class, rule_id, decisive factors, trade-offs, what would change it and what is unknown, with evidence), and buyer_decision_info with the answer in plain words. A context outside the grammar is answered with buyer_decision_info naming the fields to fix. The context is used for that one answer and goes into no log.
  • Without buyer_context every tool, argument and field is unchanged.

2.15.02026-10-14

  • pick_between: product_for_you now reads the companies' own figures exactly as the /versus pages on idevice.com do, and says them conditionally: "Better product: No clear winner. On the makers' own figures, X leads on battery life and water resistance. That decides it only if those matter most to you." with lead null. The companies' figures never name a categorical better product, on the site or here. A figure counts only when it is stated in the company's own words on the page cited, and a lead counts only when it holds under every condition both companies state (for example with noise cancelling on and off). Outlets' review scores and the phone or fit answer still name a product as before.
  • Every other tool, argument and field is unchanged.

2.14.02026-10-14

  • should_i_buy, check_deal, pick_between and find_best_device: a product the company stopped selling, for which iDevice confirmed a price before, now reads PRICE NOT CONFIRMED (rule R1p, verdict not_enough_data) with its last confirmed price and day, exactly as the decision pages on idevice.com say it. It used to read NEWER MODEL OUT or NOT ENOUGH DATA on these tools only (today: iPhone 17 Pro and iPhone 17 Pro Max).
  • pick_between: a product whose answer is not_enough_data (NEWER MODEL OUT, NOT ENOUGH DATA, PRICE NOT CONFIRMED) is no longer out-bought: the answer is a tie with the line "Neither has a clear purchase advantage today" and the word each reads, unless the other product is its own newer model already out. The order of products in the answer and in find_best_device is unchanged.
  • Every other tool, argument and field is unchanged.

2.13.02026-10-14

  • pick_between: a product that only reads BUY NOW against another that reads NO RUSH is no longer named the better purchase today. The answer is a tie with the line "Neither has a clear purchase advantage today", the word each reads and the price difference, exactly as the /versus pages on idevice.com say it. A BUY NOW against a WAIT or NEWER MODEL OUT still leads, as before. With three products, one is said to be behind both only when each of the other two leads it. The order of products in the answer and in find_best_device is unchanged.
  • Every other tool, argument and field is unchanged.

2.12.02026-10-13

  • should_i_buy: for a shopper who owns the model a product directly replaces, the answer adds the two parts the /upgrade pages on idevice.com say apart. upgrade_merit is 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 is 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 a basis object, and upgrade_answer states both in the page's own words, for example "Worth upgrading, but there is no rush at today's price." All five are null for any other question. verdict and decision_word are unchanged.
  • Compatibility: one word for the middle answer, Works with limits (it used to say "with a limit"), in get_compatibility, should_i_buy's fit and the find_best_device list. An earbud or headphone answer for iPhone or Android whose own sourced limitation says key features need the other platform or one maker's phones (for example Samsung Galaxy Buds 4 on iPhone: no Galaxy Wearable app, so no firmware updates) now reads Works with limits, with that limitation and limits_kind: platform_features, instead of Works. It is a label: the verdicts and lists read such an answer exactly as Works, so no decision word and no list changes. Watches are unchanged.
  • Every other tool, argument and field is unchanged.

2.11.12026-10-10

  • A client whose Accept header does not list both application/json and text/event-stream is answered with one JSON body instead of HTTP 406. A client that lists both is served the event stream as before. Every refused request in the fourteen days to this release was that 406.
  • should_i_buy: the timing reason for a product already on sale says Our read, as the decision card on idevice.com does; it read Confirmed off the product's own past announcement.
  • get_product_news accepts a company_key in any case or with spaces ('Apple', 'Samsung Electronics'). An unknown product_slug with no near match says what the catalogue covers; list_products says so for a query that matches nothing, and its description says what a line slug names.
  • All tools, arguments and fields are unchanged.

2.11.02026-10-09

  • A new read-only tool, whats_coming: a product's stage, its release window with who stated it, 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 and its group, how many origins and outlets carried it, whether sources disagree, and its source.
  • MCP Apps views. should_i_buy, pick_between, check_deal and whats_coming each name a view in their _meta (ui.resourceUri): ui://idevice/decision/v1.html, ui://idevice/pick/v1.html, ui://idevice/deal/v1.html and ui://idevice/coming/v1.html, served as text/html;profile=mcp-app. A host that draws MCP Apps (ChatGPT, Claude) can show the decision card, the side-by-side, the deal card with the last 30 days of prices, or the reports with their evidence row beside the answer. A view reads only the data the tool already returns, loads nothing from the network, and calls the server's own read-only tools through the host (for example, checking a price the rules named). A client that draws no views sees no change.
  • should_i_buy adds launch_price (the verified launch price against today's price) after its other fields; check_deal adds last_30_days (one price a day from iDevice's own reads, bad reads refused).

2.10.02026-10-09

  • A new read-only tool, find_best_device: a short ranked list of on-sale products in one category for a shopper's phone, budget and up to three priorities from the uses iDevice's Guides assign, each with its verdict, fit, today's retailer price, a one-line reason and its sources. It uses the same list rule as the decision card on idevice.com; a named priority orders products after the verdict and the fit, and before price.
  • All existing tools and fields are unchanged.

2.9.02026-10-09

  • A new read-only tool, pick_between: for two or three products, which one the written buy-or-wait rules put ahead for the shopper's phone and budget, or that neither is, with each product's verdict, fit, today's retailer price and its sourced reasons. It is the same comparison as the decision card on idevice.com. Price alone does not put one ahead.
  • All existing tools and fields are unchanged.

2.8.02026-10-09

  • A new read-only tool, check_deal: for one product and a price someone was offered, GOOD DEAL, NOT A GOOD DEAL or NOT ENOUGH DATA by the same written rules as should_i_buy, against today's retailer price, the lowest read in the last 90 days and the near-low band, with the verdict at that price where the rules can state one.
  • should_i_buy adds five fields after its existing ones: decision_word (KEEP YOURS, UPGRADE, NO RUSH, NEWER MODEL OUT or the verdict word), missing (the parts it could not answer, in plain words), newer_model, what_changes_the_answer (the conditions that would change the verdict) and layer_version. Every existing field is unchanged.
  • Both come from the same code as the decision card on idevice.com, so the site and the tools give the same answer. No model is involved.

2.7.02026-10-07

  • Five new read-only tools about owning and choosing: get_ownership_facts (the official return window, return shipping and restocking fee; the warranty; 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; published recalls, service programs and security-update windows), get_best_for (what a product is best for, or the products on sale whose Guide ranks a use like sleep or running in its top three), get_variants_and_offers (a product's configurations with launch prices, the retailer listings that are this exact model, and the conditions retailers attach to member prices, coupons, bundles and refurbished offers), get_company_profile (a company as the public directory lists it, with the categories and products iDevice covers for it) and get_guide_extras (a Guide's timeline events with their sources, its FAQ, or a glossary term's definition).
  • find_products takes a new optional works_with (iPhone, Android or a device name) and keeps the products that work with it. Not confirmed counts as unknown, not incompatible. get_detailed_facts takes optional offset and limit, so a product with more than 20 facts can be read in pages. It is the only tool with paging.
  • Every fact in the new tools carries its source page and the date it was checked. A missing fact is unknown, not zero and not "no".
  • All existing tools and fields are unchanged. The limits are unchanged: 30 calls a minute, 500 a day per IP, and at most 20 items per list.

2.6.02026-10-07

  • Two new read-only tools: should_i_buy (buy now, wait, skip or check fit first for one product, optionally for a shopper who owns a device or uses iPhone or Android, with the reasons, each with its source and how sure iDevice is, and the parts it could not answer; the rules are written down and no model is involved) and get_product_news (the latest iDevice news about a product or a company, newest first, each story with the outlets and links it rests on).
  • Every tool now carries all four annotation hints: readOnlyHint true, destructiveHint false, idempotentHint true and openWorldHint false.
  • The server instructions open with what iDevice is for a shopper and map the tools. They are descriptive only.
  • All existing tools and fields are unchanged. The limits are unchanged: 30 calls a minute, 500 a day per IP, and at most 20 items per call.

2.5.02026-10-04

  • Three new read-only tools that answer what a Guide's own chat answers: find_products (on-sale products in a category, optionally at or under a price or from one company, cheapest first, each with its best current retailer price, list price and iDevice's published verdict), get_guide_summary (a product's Guide summary and bottom line with the facts that bear on buying now or waiting: a newer model, the expected window and who stated it, the current read against the list and lowest price seen, and the published verdict) and get_report_card (a roll-up of a product's pre-release reports by how they turned out, with the records newest first).
  • Source links and record ids are not part of any of them; every result links to the page on idevice.com that carries the evidence. No probability is given anywhere.
  • All existing tools and fields are unchanged. The limits are unchanged: 30 calls a minute, 500 a day per IP, at most 20 items per call, and no pagination.

2.4.02026-10-04

  • New read-only tool: get_release_calendar lists products not yet on sale in date order. Each entry has a release date, an announcement event or a window as written, with who stated it (Announced by the company, Company event, Reported date, Reported window, iDevice estimate or Expected from release cadence) and its report count. A window is never turned into a single day and no probability is given. Optional from, to, category and company narrow it; the default is the next 120 days and the most is one year.
  • Products with no dated or sourced window are counted in the response (undated_not_shown, unsourced_windows_not_shown), not listed. That means unknown, not far away.
  • get_price_history gains one additive block, last_30_days: the 30-day low and high with their days, the same figures the Prices page and the Guides show. A product with under a week of reads gets days_with_reads and days_needed instead, and no low or high.
  • All existing tools and fields are unchanged. The limits are unchanged: 30 calls a minute, 500 a day per IP, at most 20 items per call, and no pagination.

2.3.02026-10-04

  • Five new read-only tools: get_in_the_box (what ships in the box, per configuration, from the official page), get_release_history (every generation with dates and launch price, plus the mean, median, shortest and longest gap between releases), get_reviews (the Review Consensus, themes and each outlet's score and link), get_price_history (the lowest retailer price in the last 30 and 90 days and the researched history) and get_detailed_facts (every individual fact, by topic, with who stated it and the source page).
  • Tool annotations now also carry title. Server instructions and tool descriptions are descriptive only.
  • Naming: we call them pre-release reports, not claims or leaks, and the status word Rumored is now Reported (and the lifecycle value rumored is now reported). get_claims and search_claims are now get_reports and search_reports, and the result fields claims and claim are now reports and report. Nothing else about those tools changed.
  • The limits are unchanged: 30 calls a minute, 500 a day per IP, at most 20 items per call, and no pagination.

2.2.02026-10-01

  • Availability: get_product and get_product_facts now carry an availability block (lifecycle in plain words, announced, released, the release date and the source it rests on, and where to buy, with the last price iDevice read at each store and when).
  • Compatibility: new tool get_compatibility returns what a product works with (iPhone, Android, apps, other devices), each answer with its evidence word (Confirmed, Rumored, Our read or Not confirmed), requirements, limits and the link to the official or platform page it came from. get_product_facts carries a short summary.
  • An answer iDevice could not source is returned as Not confirmed with no answer text, never as a guess.
  • Sponsored Guides: a sponsor Guide that is public on idevice.com is served through the same tools, with sponsored: true, sponsor and sponsor_note on every result for it. A sponsor Guide that is not public is never served. No Guide is published as sponsored today.
  • All existing fields are unchanged. The new fields are additive, and the limits are unchanged: 30 calls a minute, 500 a day per IP, at most 20 items per call.

2.1.02026-09-24

  • Rate limits added: 30 calls/minute and 500 calls/day per IP.
  • Per-call result caps added: at most 20 items from list_products, get_claims and search_claims.
  • Every call logged server-side (tool, arguments, hashed IP, latency).
  • Every claim now carries its public outcome (Right / Wrong / Partly right / Never settled / Not comparable / Not checked yet / No outcome yet) and its product's lifecycle.
  • Two tools added: get_product_facts and compare_products, both reading the same engine as idevice.com/compare.
  • Products are reachable without claims. A product no longer needs a graded claim to be listed.

2.0.02026-07-31

  • Rebuilt on the official MCP SDK (streamable HTTP, protocol version negotiation handled by the SDK).
  • Tool set narrowed to protect the corpus: dropped get_timeline and search_articles (both returned article source URLs), dropped the original compare_products and get_glossary.
  • No key required, by design: every field served is already public on idevice.com.

Contact

Questions, higher-volume access, or something looks wrong: email [email protected]. Server card at /.well-known/mcp/server-card.json. Discovery metadata at GET /api/mcp. Listed on the official MCP Registry as com.idevice/wearables, on Smithery and on Glama.