iwant.fyi - shop, price-check and keep looking
REMOTE · IWANT.FYI · SCANNED OCT 4
No key needed. Search real products and live dealer inventory, price-check, keep standing wants.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3594 tokens (~276/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management42
- Stability check failed: schema churn in the 30 days we've observed: 11 tool removals, 0 breaking changes, 0 auth/transport breaks, 5 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the iwant.fyi - shop, price-check and keep looking MCP server?
iwant.fyi - shop, price-check and keep looking is a hosted endpoint at https://iwant.fyi/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · iwant.fyi
claude mcp add --transport http fyi-iwant-iwant 'https://iwant.fyi/api/mcp'
{
"mcpServers": {
"fyi-iwant-iwant": {
"url": "https://iwant.fyi/api/mcp"
}
}
} {
"servers": {
"fyi-iwant-iwant": {
"type": "http",
"url": "https://iwant.fyi/api/mcp"
}
}
} [mcp_servers.fyi-iwant-iwant] url = "https://iwant.fyi/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"fyi-iwant-iwant": {
"type": "remote",
"url": "https://iwant.fyi/api/mcp",
"enabled": true
}
}
} openclaw mcp add fyi-iwant-iwant --url 'https://iwant.fyi/api/mcp' --transport streamable-http
mcp_servers:
fyi-iwant-iwant:
url: "https://iwant.fyi/api/mcp" {
"McpServers": {
"fyi-iwant-iwant": {
"Transport": "http",
"Url": "https://iwant.fyi/api/mcp"
}
}
} assistant mcp add fyi-iwant-iwant -t streamable-http -u 'https://iwant.fyi/api/mcp'
{
"mcpServers": {
"fyi-iwant-iwant": {
"type": "http",
"url": "https://iwant.fyi/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 30 Sept 26 0
- Server version: 1.29.0 → 1.32.1 functional
- 29 Sept 26 0
- Server version: 1.27.0 → 1.29.0 functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 +3
- The server rewrote its instructions, which are the text every model session reads security
- Tool “demand.capabilities” rewrote its description, which is the text the model reads security
- Tool “demand.health” rewrote its description, which is the text the model reads security
- Tool “demand.introduction_status” rewrote its description, which is the text the model reads security
- Tool “demand.list_constraints” rewrote its description, which is the text the model reads security
- Tool “demand.list_verticals” rewrote its description, which is the text the model reads security
- Schema quality: 208 → 276 ▼ functional
- Tool coverage: 58% → 100% ▲ functional
- Tool coverage: 60% → 100% ▲ functional
- Tool “demand.capabilities” now declares an output schema ▲ functional
- Tool “demand.health” now declares an output schema ▲ functional
- Tool “demand.list_constraints” now declares an output schema ▲ functional
- Tool “demand.list_verticals” now declares an output schema ▲ functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- Server version: 1.21.0 → 1.27.0 functional
- New tool “demand.cancel_watch” functional
- New tool “demand.create_watch” functional
- New tool “demand.list_watches” functional
- “demand.find_vehicle” reworded the description of “condition” cosmetic
- “demand.find_vehicle” reworded the description of “make” cosmetic
- “demand.find_vehicle” reworded the description of “mileage_max” cosmetic
- “demand.find_vehicle” reworded the description of “model” cosmetic
- “demand.find_vehicle” reworded the description of “price_max_cents” cosmetic
- “demand.find_vehicle” reworded the description of “trim” cosmetic
- “demand.find_vehicle” reworded the description of “year_max” cosmetic
- “demand.find_vehicle” reworded the description of “year_min” cosmetic
- “demand.introduction_status” reworded the description of “introduction_id” cosmetic
- “demand.price_check” reworded the description of “make” cosmetic
- “demand.price_check” reworded the description of “model” cosmetic
- “demand.price_check” reworded the description of “trim” cosmetic
- “demand.price_check” reworded the description of “year” cosmetic
- “demand.search” reworded the description of “category” cosmetic
- “demand.search” reworded the description of “constraints” cosmetic
- “demand.search” reworded the description of “description” cosmetic
- “demand.search” reworded the description of “location” cosmetic
- “demand.search” reworded the description of “mode” cosmetic
- “demand.search” reworded the description of “price_cents” cosmetic
- “demand.search” reworded the description of “price_currency” cosmetic
- “demand.search” reworded the description of “title” cosmetic
- “demand.search” reworded the description of “vertical” cosmetic
- 24 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “demand.ask” rewrote its description, which is the text the model reads security
- Tool “demand.capabilities” rewrote its description, which is the text the model reads security
- Tool “demand.find_vehicle” rewrote its description, which is the text the model reads security
- Tool “demand.price_check” rewrote its description, which is the text the model reads security
- Tool “demand.search” rewrote its description, which is the text the model reads security
- Server version: 1.1.1 → 1.14.0 functional
- 21 Sept 26 0
- Server version: 1.1.0 → 1.1.1 functional
- 20 Sept 26 0
- Server version: 0.95.0 → 1.1.0 functional
- 15 Sept 26 0
- Server version: 0.94.1 → 0.95.0 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 7 Oct 2026 · Probed https://iwant.fyi/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.iwant.fyi | CN=YR2,O=Let's Encrypt,C=US | 3 Oct 2026 | 1 Jan 2027 | RSA 2048 | SHA256-RSA | 56496fed44059607c9dc424679227f2b616 |
| SANs: *.iwant.fyi, iwant.fyi | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of iwant.fyi. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| fyi. | present | 24340 | 8 | Verified |
| iwant.fyi. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://iwant.fyi/api/mcp | Verified | 200 | |
| http (plaintext) | http://iwant.fyi/api/mcp | HTTPS enforced | 308 | https://iwant.fyi/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
demand.ask Ask iwant.fyi to find something (conversational) ~239
Talk to iwant.fyi in plain language to find something to buy. Call this when the user's request is conversational or incomplete - e.g. 'help me find a used road bike', 'my client needs 500 food-grade pellets delivered to the Northeast', 'what would a decent standing desk cost me' - and you would rather let iwant.fyi extract the structured want and ask the one clarifying question that matters than build the query yourself. Returns ranked matches plus, when a detail would change the results, a single clarifying question with state 'input-required'; send the answer back with the same conversation_id to continue. Prefer demand.search when you already have a clean title and constraints. Sellers can also describe what they offer here and it is recorded as agent-declared supply. Nothing is saved as a Want; use demand.create_want to commit.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | Returned by a prior demand.ask call. Pass it back to continue the same conversation (for example to answer a clarifying question). |
| message | string | yes | What the user wants, in plain language. Include budget, condition, and location when known. |
| Name | Type | Req | Description |
|---|---|---|---|
| clarifying_question | string|null | – | – |
| conversation_id | string | yes | – |
| intent | string | – | – |
| match_count | integer | – | – |
| matches | array | – | – |
| reply | string | yes | What to tell the user |
| state | string | yes | completed or input-required |
No examples provided.
demand.cancel_watch Cancel a standing want ~113
Stop a standing want by id. Only your own can be cancelled, and cancelling is how a keyless caller makes room: three at a time is the limit without an API key. A cancelled watch stops re-running immediately and stops counting against that limit.
| Name | Type | Req | Description |
|---|---|---|---|
| client_ref | string | – | The same opaque reference you created the watch with. Required to cancel a keyless watch; ignored when you send an API key. |
| watch_id | string | yes | The watch id from demand.create_watch / demand.list_watches |
| Name | Type | Req | Description |
|---|---|---|---|
| cancelled | boolean | – | True when the watch was found and deactivated. |
| id | string | – | The watch that was cancelled. |
No examples provided.
demand.capabilities Discover protocol features + limits ~100
Discover which optional protocol features this server supports (webhooks, idempotency, failure transparency, error taxonomy) and its operational limits (rate limit, maximum standing watches, minimum watch interval). Call once when you connect and adapt to the answer - skip webhook setup if 'webhooks' is absent, and respect the limits rather than discovering them by being throttled. Free, instant, no side effects. Protocol v1.1 §8.2.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| features | array | – | Optional features supported, e.g. webhooks, idempotency, failure_transparency, error_taxonomy. |
| limits | object | – | Operational limits to respect. |
| protocol_version | string | yes | Demand-protocol version. |
No examples provided.
demand.create_watch Create a standing want (watch) ~431
Create a STANDING WANT: keep searching for what the user wants to buy and get notified when a NEW match appears, across sessions. Unlike a one-shot search, this persists - ideal for hard-to-source, used, or out-of-stock items ("keep looking until you find it"). Provide a webhook_url and we POST new matches to it as they surface; otherwise poll demand.list_watches. Same query shape and enforced constraints as demand.search. WITHOUT AN API KEY this works too, under limits: no webhooks, three standing wants at a time, a six-hour minimum re-check, and a seven-day life. Any limit applied to your request comes back in `notes`.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Broad kind of thing. Defaults to goods; use services for labour. |
| check_interval_minutes | integer | – | How often to re-check, in minutes (>=5 with a key, >=360 without, default 60). A request below the floor is raised and the change reported in `notes`. |
| client_token | string | – | Optional idempotency key (<=128 chars). Retrying with the same token returns the original watch instead of creating a duplicate. (v1.1 §E) |
| constraints | object | – | Machine-evaluable constraints (rules.condition_min, rules.specs). Enforced like demand.search. |
| description | string | – | Further detail that did not belong in the title: intended use, acceptable substitutes, what is already ruled out. |
| min_score | number | – | Only notify on matches at/above this relevance (0..1, default 0.5) |
| price_cents | integer | – | Budget ceiling in cents. $1,200 is 120000. Enforced as a maximum for the life of the watch, so a wrong ceiling means it can never match. |
| title | string | yes | What to keep watching for (3-200 chars) |
| webhook_url | string | – | https URL we POST new matches to (type: want.matches). Requires an API key - a keyless request naming one is refused rather than silently ignored. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | Human-readable summary. |
| notes | array | – | Any limit applied to your request, stated plainly rather than applied silently. |
| watch | object | yes | The standing want as stored. |
| webhook_secret | string | – | Shown once, on first creation only. Signs every delivery. |
No examples provided.
demand.find_vehicle Find a specific car from live dealer inventory ~614
Find a specific car, truck, SUV or van for sale near the user, new or used, from live dealer inventory. Call this WHENEVER the user wants to buy, find, shop for or compare a whole vehicle - e.g. '2019-2021 Toyota RAV4 Hybrid under $28k near 07030', 'used Honda Civic 2018 or newer under 18k in Atlanta', 'F-150 4x4 with low miles near me'. Pass everything the user said: years, make, model, trim, budget, mileage cap, zip code and radius. Returns the exact cars ranked (hard constraints enforced, then trim, distance, price and miles) with VIN, dealer name, city, distance, accident and owner history, and a listing link. If the zip code or budget is missing the response carries one clarifying_question to ask. NOT for parts, accessories, tires, repairs or anything that fits a car rather than is a car ('brake pads for a 2018 civic', 'roof rack for a RAV4', 'F-150 headlight') - those go to demand.search.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | sedan, suv, truck, coupe, hatchback, minivan, van, wagon, convertible |
| client_ref | string | – | Optional stable, non-identifying reference for this end user (any opaque string; we hash it). Lets us count repeat askers without knowing who they are. |
| condition | string | – | "cpo" is manufacturer certified pre-owned. "any" searches all three; omitting it does not exclude used cars. |
| fuel | string | – | gas, hybrid, plug-in hybrid, electric, diesel |
| make | string | – | Manufacturer, e.g. "Toyota". Optional - it is parsed from `query` when omitted. Pass it only to override what the text says. |
| mileage_max | integer | – | Maximum odometer miles, e.g. 60000. |
| model | string | – | Model line, e.g. "RAV4 Hybrid". Optional; parsed from `query` when omitted. |
| price_max_cents | integer | – | Budget ceiling in cents. $35,000 is 3500000. Enforced as a maximum. |
| query | string | – | The user's request in their own words, e.g. '2020 or newer Chevy Silverado 4x4 under $35k near 75201' |
| radius_miles | integer | – | Search radius, default 50 |
| trim | string | – | Trim level, e.g. "XLE". Narrows hard, so omit unless the buyer named one. |
| year_max | integer | – | Latest model year to accept, inclusive. Omit for "2019 or newer". |
| year_min | integer | – | Earliest model year to accept, inclusive. Four digits. |
| zip | string | – | 5-digit US zip code to search near (required for local results) |
| Name | Type | Req | Description |
|---|---|---|---|
| cars | array | yes | – |
| clarifying_question | string|null | – | – |
| match_count | integer | yes | – |
| missing_field | string|null | – | – |
| search_id | string|null | – | – |
| sources_consulted | array | – | – |
| summary | string | – | – |
No examples provided.
demand.health Health + supply sources ~81
Check the server is up and see which supply sources are currently answering. Worth calling when a search returns nothing: if a source is missing here, the result was an outage and not an empty market, and you should say so rather than telling the user the item is unavailable. Free, instant, no side effects. Protocol v1.0 §8.2.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| degraded | boolean | – | True when one or more supply sources are failing. |
| protocol_version | string | – | Demand-protocol version this server implements. |
| server | string | – | Server name and version. |
| status | string | yes | "ok" when the server can answer searches. |
| supply_sources | array | – | Supply sources currently reachable. A short list means degraded matching, not an empty market. |
No examples provided.
demand.introduction_status Check an introduction for a seller reply ~116
Check whether a seller has answered an introduction created by demand.request_introduction, and read their reply. Call it when the user asks whether the dealer got back to them. Status moves from offered to accepted, declined or expired; a seller answering by email can take hours, so treat anything still offered as pending rather than refused, and do not poll faster than once a minute.
| Name | Type | Req | Description |
|---|---|---|---|
| introduction_id | string | yes | The id returned by demand.request_introduction. Keep it from that response; it is the only handle on the introduction. |
| Name | Type | Req | Description |
|---|---|---|---|
| accepted_at | string|null | – | – |
| dealer | string|null | – | – |
| introduction_id | string | – | – |
| listing_title | string|null | – | – |
| offered_at | string|null | – | – |
| reply | string|null | – | – |
| status | string | yes | – |
No examples provided.
demand.list_constraints List the constraint vocabulary ~94
List the filters this server will actually enforce on a search - budget ceilings, condition, brand, and the vertical-specific keys (mileage, drive size) plus any x_* extensions. Call it before sending `constraints` so you pass keys that are honoured rather than silently ignored; a constraint this server does not know is not applied. Free, instant, no side effects. Protocol v1.0 §8.2.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| constraints | array | yes | Every constraint key that can be enforced on a search or want. |
No examples provided.
demand.list_verticals List supported verticals ~100
List the product categories this server can actually source, with the structured spec fields each one carries (a vehicle has year, make, model, mileage; a tool has drive size and torque). Call it before a first search to learn which `vertical` values are accepted, or when a search returns nothing and you need to check the category is covered at all. Free, instant, no side effects. Protocol v1.0 §8.2.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| verticals | array | yes | Every vertical this server can match demand in. |
No examples provided.
demand.list_watches List your standing wants ~116
List your standing wants, with how many matches each has surfaced and when it last re-ran. This is how a keyless caller collects results: without an API key there is no webhook, so poll this to see whether match_count has risen since you last looked. Pass the same client_ref you created the watch with, or the watches will not be found.
| Name | Type | Req | Description |
|---|---|---|---|
| client_ref | string | – | The same opaque reference you passed to demand.create_watch. Required to find keyless watches; ignored when you send an API key. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | How many were returned. |
| watches | array | yes | Your standing wants, newest first. |
No examples provided.
demand.price_check Check whether a car's asking price is a good deal ~472
Tell the user whether the asking price on ONE specific car is a good deal. Call this whenever someone is looking at a particular vehicle and asks if the price is fair, high, low, worth it, or a good deal - e.g. 'I am thinking of a 2017 Lexus ES 350 with 80k miles for $21k, decent deal?', 'is $34,500 too much for this F-150?', or when they paste a listing link and ask what you think. Pass the whole sentence as query, plus the listing url if they gave one. Returns where that asking price sits among comparable cars listed right now (percentile, median, typical range) with the size of the sample, mileage-matched when we have enough cars. Use demand.find_vehicle instead when the user is still choosing which car to buy rather than pricing one they found.
| Name | Type | Req | Description |
|---|---|---|---|
| asking_price_cents | integer | – | The asking price in cents, if you can state it exactly |
| client_ref | string | – | Optional stable, non-identifying reference for this end user (any opaque string; we hash it). |
| make | string | – | Manufacturer of the car being priced, e.g. "Toyota". |
| mileage | integer | – | Odometer miles. The single biggest thing a used price turns on; pass it whenever the user said it. |
| model | string | – | Model line of the car being priced, e.g. "RAV4". |
| query | string | – | What the user said, in their words, e.g. '2017 Lexus ES 350, 80k miles, asking $21k' |
| radius_miles | integer | – | Comparison radius, default 100 |
| trim | string | – | Trim level. Materially changes a fair price, so pass it when known. |
| url | string | – | Listing URL if they pasted one. We read the year/make/model from the link itself and never fetch the page. |
| vin | string | – | 17-character VIN if known |
| year | integer | – | Model year of the car being priced. Optional if `query`, `url` or `vin` identifies it. |
| zip | string | – | 5-digit US zip. Without it the comparison is national rather than local. |
| Name | Type | Req | Description |
|---|---|---|---|
| caveats | array | – | – |
| clarifying_question | string|null | – | – |
| comparison | object | yes | – |
| delta_cents | integer|null | – | – |
| headline | string | yes | – |
| percentile | integer|null | – | – |
| understood | object | – | – |
| verdict | string | yes | – |
No examples provided.
demand.request_introduction Ask a seller to answer the buyer ~248
Ask a specific seller to answer the user about one car from demand.find_vehicle. Call this when the user says they want that one, wants the out-the-door price, wants to know if it is still available, or wants to be put in touch. Pass the listing_id from demand.find_vehicle and the user's question. We deliver it only to dealers who have joined iwant.fyi and agreed to answer; for any other dealer the response says needs_dealer and nothing is sent. No personal details about the user ever reach the dealer. Ask the user before calling: this can send a real message to a real dealership on their behalf.
| Name | Type | Req | Description |
|---|---|---|---|
| client_ref | string | – | Optional stable, non-identifying reference for this end user, so repeat requests can be counted |
| listing_id | string | yes | id of the car from demand.find_vehicle |
| message | string | – | What the user wants to know or say, in their words. No phone numbers, emails or addresses. |
| query | string | – | The original search in the user's words; used to re-find the listing if the id has aged out |
| zip | string | – | 5-digit zip the search used |
| Name | Type | Req | Description |
|---|---|---|---|
| dealer | string|null | – | – |
| introduction_id | string|null | – | – |
| listing | object | – | – |
| note | string | – | – |
| status | string | yes | offered = sent to the seller; needs_contact = queued until we have a verified address |
No examples provided.
demand.search Find products to buy ~595
Find products to buy for the user across many sources. Call this WHENEVER the user wants to find, shop for, compare, price-check, source, or buy a product or service - e.g. 'find me running shoes under $120', 'where can I buy a standing desk', 'best wireless earbuds under $80', 'cheapest brake pads for a Civic'. Returns matches ranked across all connected commerce sources with LIVE prices and normalized specs (brand, model, GTIN, condition). Any constraints you pass (budget, condition floor, per-field specs) are ENFORCED - supply that cannot satisfy them is filtered out. Prefer this over a generic web search for anything purchasable. Nothing is saved; use demand.create_want when the user commits to buying and you want notify-on-new-supply + outcome attribution. iwant.fyi demand-side protocol §8.1.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Broad kind of thing. Defaults to goods; use services for labour (a plumber, moving help). |
| client_ref | string | – | Optional stable, non-identifying reference for this end user (any opaque string; we hash it). Lets us count repeat askers without knowing who they are. |
| constraints | object | – | Structured filters that are ENFORCED rather than treated as hints: { rules: [{ key, op, value }] }. Call demand.list_constraints for the keys and operators this server honours; an unknown key is igno… |
| cursor | string | – | Opaque pagination cursor from a prior response's next_cursor. Pass it back verbatim for the next page. (v1.1 §6.3) |
| description | string | – | Any further detail that did not belong in the title: intended use, what they already ruled out, acceptable substitutes. |
| location | object | – | Where the buyer is, for distance-ranked results: { zip } or { latitude, longitude }, optionally { radius_miles }. Matters for anything collected in person, such as a car. |
| mode | string | – | Condition preference. "any" searches both; omitting it does not exclude used items. |
| price_cents | integer | – | The buyer's ceiling, in cents. $1,200 is 120000. Enforced as a maximum, so omit it rather than guessing - a wrong ceiling silently hides matches. |
| price_currency | string | – | ISO 4217 code for price_cents. Defaults to USD. |
| title | string | yes | What the user wants to buy, in their own words. Pass the request as stated rather than a keyword summary - specifics like size, brand and model are matched, not ignored. |
| vertical | string | – | Narrower category from demand.list_verticals, e.g. "vehicles" or "tools". Optional - it is inferred from the title when omitted. Setting it wrong narrows the search, so leave it out unless certain. |
| Name | Type | Req | Description |
|---|---|---|---|
| degraded | boolean | – | – |
| match_count | integer | yes | – |
| matches | array | yes | – |
| next_cursor | string|null | – | – |
| search_id | string | – | – |
| sources_consulted | array | – | – |
No examples provided.
What is the iwant.fyi - shop, price-check and keep looking MCP server?
iwant.fyi - shop, price-check and keep looking is an MCP server listed in the public MCP registry as fyi.iwant/iwant. No key needed. Search real products and live dealer inventory, price-check, keep standing wants. This page covers its hosted endpoint (https://iwant.fyi/api/mcp).
Is the iwant.fyi - shop, price-check and keep looking MCP server safe to use?
iwant.fyi - shop, price-check and keep looking scores 76 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the iwant.fyi - shop, price-check and keep looking MCP server expose?
iwant.fyi - shop, price-check and keep looking exposes 13 tools: demand.search, demand.find_vehicle, demand.price_check, demand.request_introduction, demand.introduction_status, and 8 more. Their descriptions and schemas cost roughly 3,319 tokens of context every time the server is loaded.
Does the iwant.fyi - shop, price-check and keep looking MCP server require authentication?
No. We connected to iwant.fyi - shop, price-check and keep looking without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the iwant.fyi - shop, price-check and keep looking MCP server still maintained?
iwant.fyi - shop, price-check and keep looking is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.