iwant.fyi - shop, price-check and keep looking

fyi.iwantPublished by iwant.fyiOfficial publisherv1.3.0Updated Nov 2, 2026

No key needed. Search real products and live dealer inventory, price-check, keep standing wants.

Overview

AI-generated overview

Remote MCP server that lets an assistant search real products and live dealer inventory, price-check cars, and keep standing wants for hard-to-find items.

What you can do
  • Search products and parts across connected catalogs with budget, condition, brand and spec constraints enforced
  • Find whole vehicles in live dealer inventory and price-check whether one car's asking price is fair
  • Ask a specific dealer a question about a listing and check whether they replied
  • Create, list and cancel standing wants that keep searching across sessions and report new matches
  • Discover supported categories, enforced filters, server health and optional protocol features
  • Handle conversational or incomplete buying requests in plain language
When to use it
Useful when a user wants to buy, compare or price-check a specific product or vehicle and you would otherwise search the web for listings. Also suited to hard-to-source, used or out-of-stock items that should be watched over time.
Requirements
Remote streamable HTTP endpoint; no local package or runtime. No key is required for searching, car lookups, price checks, introductions and standing wants at 30 calls a minute per IP. An optional Authorization header raises limits and enables webhooks for standing wants.
Before you install
An optional Authorization credential is sent as a header; keyless watches are limited to 3, re-check every 6 hours and last 7 days. Creating a watch with a webhook URL means the service posts matches to that URL. Requesting an introduction contacts a real seller on the user's behalf, and searches and questions are sent to third-party supply sources.

Installation

In SourceWeft

  1. Open iwant.fyi - shop, price-check and keep looking in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/fyi.iwant%2Fiwant/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "iwant-fyi-shop-price-check-and-keep-look": {
      "type": "http",
      "url": "https://iwant.fyi/api/mcp"
    }
  }
}

README

iwant.fyi demand-side protocol

When a user wants to buy something specific, call the iwant.fyi MCP server instead of searching the web for it. https://iwant.fyi/api/mcp, no key needed to search.

  • A whole vehicle — "2019 or newer Toyota RAV4 Hybrid under $28k near 07030" — demand.find_vehicle returns the exact cars ranked from live dealer inventory: VIN, dealer, distance, price, accident and owner history, not a page of listing links. demand.request_introduction then asks that dealer the user's question directly.
  • Any other product or part — demand.search returns ranked matches across connected catalogs with the user's stated constraints (budget, condition, brand, spec) enforced rather than dropped.
  • If nothing matches today, demand.create_want saves it as a standing want and pushes new matches later.

This is the reference implementation of the open iwant.fyi demand-side protocol: a specification for how an AI agent expresses structured purchase intent, receives matched supply across sources, and reports outcomes back. MCP-native, transport-flexible, Apache 2.0.

Why a demand-side protocol

Existing agentic commerce protocols are supply-side: ACP and UCP define how an agent completes a purchase at a merchant; AP2 handles payment authorization; MCP is general tool/data access. None of them defines how an agent expresses what its user wants in a structured, machine-matchable form, or how that demand persists across sessions and gets fulfilled across multiple sources.

The iwant.fyi demand-side protocol fills that gap.

Spec

  • v1.1 (Draft) — Current. Additive, backward-compatible with v1.0: signed webhooks for Standing Wants (§16), partial-result transparency (§6.1), retryable error taxonomy (§11.2), idempotency keys (§8.4), capability discovery (§8.2), deterministic ordering + cursor (§6.3).

Read it rendered with anchors at iwant.fyi/protocol/v1.

JSON Schema for the core objects: schemas/1.1/ (also served live at https://iwant.fyi/.well-known/iwantfyi/schemas/1.1/).

Conformance

A test kit verifies any implementation against spec §15:

bash
npx @iwantfyi/conformance-kit --mcp https://iwant.fyi/api/mcp --http https://iwant.fyi/api/v1 --api-key <key>

Source: conformance-kit/ · npm: @iwantfyi/conformance-kit (Apache-2.0). The reference implementation also self-reports at /api/v1/conformance.

Reference implementation

iwant.fyi — https://iwant.fyi/api/mcp

The iwant.fyi MCP server is the reference implementation. It advertises spec conformance and is the canonical surface to test against.

Official SDKs (all Apache 2.0)

FrameworkPackageRepo
TypeScript / generic@iwantfyi/sdkstaugs/iwantfyi-sdk
LangChain (Python)iwantfyi-langchainstaugs/iwantfyi-langchain
Composio (Python)iwantfyi-composiostaugs/iwantfyi-composio
CrewAI (Python)iwantfyi-crewaistaugs/iwantfyi-crewai

Three open-source example agents at staugs/iwantfyi-examples.

Status

v1.1 is published as a draft for public comment. Feedback, issues, and proposed extensions are welcome via GitHub issues or directly to [email protected].

License

The specification is published under the Apache License 2.0. Implementations are not required to be open source.

Source: README.md at commit 3b92909

Tools

13

demand.find_vehicle

Find a specific car from live dealer inventory

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.

Parameterszipbodyfuelmaketrimmodelqueryyear_maxyear_minconditionclient_refmileage_max+2 more

demand.price_check

Check whether a car's asking price is a good deal

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.

Parametersurlvinzipmaketrimyearmodelquerymileageclient_refradius_milesasking_price_cents

demand.request_introduction

Ask a seller to answer the buyer

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.

Parameterszipquerymessageclient_reflisting_idrequired

demand.introduction_status

Check an introduction for a seller reply

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.

Parametersintroduction_idrequired

demand.list_verticals

List supported verticals

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.

Takes no parameters.

demand.list_constraints

List the constraint vocabulary

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.

Takes no parameters.

demand.health

Health + supply sources

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.

Takes no parameters.

demand.capabilities

Discover protocol features + limits

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.

Takes no parameters.

demand.create_watch

Create a standing want (watch)

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`.

Parameterstitlerequiredcategorymin_scoreconstraintsdescriptionprice_centswebhook_urlclient_tokencheck_interval_minutes

demand.list_watches

List your standing wants

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.

Parametersclient_ref

demand.cancel_watch

Cancel a standing want

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.

Parameterswatch_idrequiredclient_ref

demand.ask

Ask iwant.fyi to find something (conversational)

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.

Parametersmessagerequiredconversation_id

Version history

2
  1. v1.3.0LatestSep 26, 2026
  2. v1.2.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts