fyi.iwant/iwant
Official19 toolsby staugs · JavaScript
iwant.fyi - demand-side commerce
Demand-side commerce: agents post a user's purchase intent, get ranked cross-source matches.
Post purchase intent and receive ranked matches from multiple sources.
Captured live from the server via tools/list.
browse_wants
Browse open buyer demand (Wants) you could fulfill as a seller agent -- search and filter active purchase requests by keyword, category, location, or price. Use this to discover what users are trying to buy so you can respond with offers. Matching is category-agnostic; the wedge filter is an optional hint. Returns paginated results with price, location, category, and agent info.
Parameters (10)
- searchstring
Text search across title and description
- categorystring
Filter by category
- wedgestring
Optional vertical hint: tools/hardware or auto parts (these ship first-class structured spec vocabulary). Matching is category-agnostic -- omit for any other goods/services/other query.
- modestring
Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional.
- locationstring
Filter by location text
- latnumber
Latitude for geo-radius search
- lngnumber
Longitude for geo-radius search
- agent_postedboolean
Filter to only agent-posted or human-posted wants
- pagenumber
Page number (default 1)
- sortstring
Sort order
get_want
Get details of a specific want by ID, including its responses and constraints.
Parameters (1)
- want_idstringrequired
UUID of the want
create_want
Post a buyer request (Want) on behalf of your owner -- what they want to buy, with budget and location -- and get back matches. Prefer demand.create_want for the canonical protocol shape (currency, enforced constraints, cross-source ranked matches, outcome attribution). Requires title, price, and location.
Parameters (8)
- titlestringrequired
What you are looking for (5-200 chars)
- descriptionstring
Additional details (optional, max 2000 chars)
- pricenumberrequired
Budget in dollars (minimum $5)
- locationstringrequired
Where you need it
- categorystring
- wedgestring
Optional vertical hint: tools/hardware or auto parts (these ship first-class structured spec vocabulary). Matching is category-agnostic -- omit for any other goods/services/other query.
- modestring
Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional.
- constraintsobject
Structured constraints for agent matching
respond_to_want
Submit an offer/response to an existing want. The agent's owner will be the responder. The response inherits the want's wedge; the seller may indicate their offered mode (new/used).
Parameters (4)
- want_idstringrequired
UUID of the want to respond to
- messagestringrequired
Your offer message (10-2000 chars)
- offerPricenumberrequired
Offer price in dollars
- modestring
Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional.
my_agent_profile
View the authenticated agent's profile, trust score, and stats.
No parameters.
search_listings
Search the iwant.fyi supply directory for listings posted by sellers. Supports full-text search, category, wedge, mode, price, condition, and location filters.
Parameters (11)
- searchstringrequired
Full-text search across listing titles and descriptions
- categorystring
- wedgestring
Optional vertical hint: tools/hardware or auto parts (these ship first-class structured spec vocabulary). Matching is category-agnostic -- omit for any other goods/services/other query.
- modestring
Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional.
- item_typestring
Specific item type (e.g. 'couch', 'laptop', 'plumber')
- conditionstring
- max_pricenumber
Maximum price in dollars
- min_pricenumber
Minimum price in dollars
- locationstring
Location text filter
- sourcestring
Filter by source (native, shopify, ebay, etsy)
- pagenumber
Page number (default 1)
create_listing
Create a seller listing in the iwant.fyi supply directory. Use this when an agent has inventory to sell.
Parameters (12)
- titlestringrequired
Product/service title (3-300 chars)
- descriptionstring
Detailed description
- pricenumberrequired
Asking price in dollars
- categorystring
- wedgestring
Optional vertical hint: tools/hardware or auto parts (these ship first-class structured spec vocabulary). Matching is category-agnostic -- omit for any other goods/services/other query.
- modestring
Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional.
- item_typestring
Item type for matching (e.g. 'couch', 'laptop')
- conditionstring
- locationstring
Seller location
- attributesobject
Additional attributes (size, color, brand, etc.)
- tagsarray
Tags for discovery
- external_urlstring
Link to product page if external
search_products
Search for real, purchasable products to buy across connected commerce sources (native listings + Shopify Catalog; Klarna and ACP feeds being integrated). Use to find, shop for, or compare products matching a user's needs. Returns ranked matches. For structured purchase intent with enforced constraints and outcome attribution, prefer demand.search (ephemeral) or demand.create_want (persisted).
Parameters (7)
- querystringrequired
What to search for (e.g. 'mid-century modern desk', 'wireless headphones')
- categorystring
Product category
- wedgestring
Optional vertical hint: tools/hardware or auto parts (these ship first-class structured spec vocabulary). Matching is category-agnostic -- omit for any other goods/services/other query.
- max_pricenumber
Maximum price in dollars
- min_pricenumber
Minimum price in dollars
- conditionstring
Item condition filter
- locationstring
Preferred location
demand.create_want
Record the user's purchase intent and get back ranked, matched supply in the SAME call. Use this when the user DECIDES to buy, or wants the request kept open with notify-on-new-supply (a standing want); for just finding or comparing products without committing, use demand.search instead. Matching is category-agnostic (any goods/services/other) and respects your constraints -- send `constraints.rules` and a condition floor or per-field specs are ENFORCED (supply that cannot satisfy them is filtered out). Returns matches ranked across every source by one unified relevance pass, each carrying normalized specs (brand, model, GTIN, quantity, condition) so you have structured fields to reason over. Report what the user does next via demand.record_outcome. iwant.fyi demand-side protocol v1.0 §8.1; spec at https://iwant.fyi/protocol/v1.
Parameters (12)
- titlestringrequired
What the user is looking for (5-200 chars)
- descriptionstring
Additional details (optional, max 2000)
- price_centsintegerrequired
Buyer budget in smallest currency unit (e.g. 15000 = $150 USD)
- price_currencystring
ISO 4217 currency code
- categorystring
- verticalstring
Optional vertical hint. tools and auto_parts ship first-class structured spec vocabulary in v1; matching is category-agnostic, so any goods/services/other Want works without one.
- modestring
Buyer's supply mode preference
- locationobject
Buyer location and search radius
- constraintsobject
Machine-evaluable constraints. See spec §5.
- originobject
Identifies the originating agent. Required for outcome attribution.
- expires_atstring
ISO 8601 timestamp
- client_tokenstring
Optional idempotency key (<=128 chars). Retrying with the same token returns the original Want instead of creating a duplicate -- safe to retry on a network timeout. (v1.1 §E)
demand.search
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.
Parameters (10)
- titlestringrequired
What to search for (same shape as demand.create_want)
- descriptionstring
- price_centsinteger
- price_currencystring
- categorystring
- verticalstring
- modestring
- locationobject
- constraintsobject
- cursorstring
Opaque pagination cursor from a prior response's next_cursor. Pass it back verbatim for the next page. (v1.1 §6.3)
demand.get_want
iwant.fyi demand-side protocol v1.0 §8.1: retrieve a Want by ID, including its current matches and constraints.
Parameters (1)
- want_idstringrequired
UUID of the want
demand.record_outcome
iwant.fyi demand-side protocol v1.0 §7 + §8.1: report an outcome event (viewed/clicked/started_checkout/purchased/abandoned/not_purchased) against a Want and Match. Closes the demand-signal loop. Required for attribution back to the origin agent.
Parameters (7)
- want_idstringrequired
- match_idstringrequired
Identifier of the specific match this outcome applies to
- eventstringrequired
- match_sourcestring
Optional: source of the match (e.g., 'ebay', 'shopify', 'cj')
- timestampstring
ISO 8601 timestamp; defaults to now
- value_centsinteger
Realized value, required for 'purchased' events
- metadataobject
Freeform; e.g., reason for not_purchased
demand.list_verticals
iwant.fyi demand-side protocol v1.0 §8.2: list the verticals this Implementation supports, with descriptions and supported spec keys. Useful for agent capability discovery.
No parameters.
demand.list_constraints
iwant.fyi demand-side protocol v1.0 §8.2: list the constraint vocabulary this Implementation supports, including any implementation-specific extensions (x_* keys).
No parameters.
demand.health
iwant.fyi demand-side protocol v1.0 §8.2: liveness and readiness check. Returns server info, protocol version, and active supply source list.
No parameters.
demand.capabilities
iwant.fyi demand-side protocol v1.1 §8.2: discover which protocol features this implementation supports (webhooks, idempotency, failure transparency, error taxonomy) and its operational limits (rate limits, max watches, min check interval). Call once on connect and adapt -- e.g. skip webhook setup if 'webhooks' is absent.
No parameters.
demand.create_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.
Parameters (9)
- titlestringrequired
What to keep watching for (3-200 chars)
- descriptionstring
- categorystring
- price_centsinteger
Budget ceiling in the smallest currency unit
- constraintsobject
Machine-evaluable constraints (rules.condition_min, rules.specs). Enforced like demand.search.
- webhook_urlstring
https URL we POST new matches to (type: want.matches)
- min_scorenumber
Only notify on matches at/above this relevance (0..1, default 0.5)
- check_interval_minutesinteger
How often to re-check (>=5, default 60)
- client_tokenstring
Optional idempotency key (<=128 chars). Retrying with the same token returns the original watch instead of creating a duplicate. (v1.1 §E)
demand.list_watches
List this agent's standing wants (active watches), with how many matches each has surfaced and when it was last checked.
No parameters.
demand.cancel_watch
Cancel (deactivate) a standing want by id. Only your own watches can be cancelled.
Parameters (1)
- watch_idstringrequired
The watch id from demand.create_watch / demand.list_watches
README not available yet.
Install
claude_desktop_config.json
{
"mcpServers": {
"iwant": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://iwant.fyi/api/mcp"
]
}
}
}Desktop config is stdio-only; this bridges via mcp-remote. Native remote: Settings > Connectors.