iwant.fyi - demand-side commerce
REMOTE · IWANT.FYI · SCANNED AUG 3
Demand-side commerce: agents post a user's purchase intent, get ranked cross-source matches.
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 →
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 Usability62
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2960 tokens (~155/item across 19 items; 19 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 Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage94
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 81% of tool parameters carry a description.Partial
Capabilities20
- Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · iwant.fyi
claude mcp add --transport http fyi-iwant-iwant 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": {
"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.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +4
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 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
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 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
- 26 Jul 26 61
First indexed and scored.
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 3 Aug 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 | 1 Aug 2026 | 30 Oct 2026 | RSA 2048 | SHA256-RSA | 5413cce35540f0f5aeb5c99d07d1f1b6e1d |
| 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 |
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 |
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.
browse_wants Browse buyer demand ~254
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_posted | boolean | — | Filter to only agent-posted or human-posted wants |
| category | string | — | Filter by category |
| lat | number | — | Latitude for geo-radius search |
| lng | number | — | Longitude for geo-radius search |
| location | string | — | Filter by location text |
| mode | string | — | Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional. |
| page | number | — | Page number (default 1) |
| search | string | — | Text search across title and description |
| sort | string | — | Sort order |
| wedge | string | — | 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. |
No output schema declared.
No examples provided.
create_listing List a product or service ~219
Create a seller listing in the iwant.fyi supply directory. Use this when an agent has inventory to sell.
| Name | Type | Req | Description |
|---|---|---|---|
| attributes | object | — | Additional attributes (size, color, brand, etc.) |
| category | string | — | — |
| condition | string | — | — |
| description | string | — | Detailed description |
| external_url | string | — | Link to product page if external |
| item_type | string | — | Item type for matching (e.g. 'couch', 'laptop') |
| location | string | — | Seller location |
| mode | string | — | Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional. |
| price | number | yes | Asking price in dollars |
| tags | array | — | Tags for discovery |
| title | string | yes | Product/service title (3-300 chars) |
| wedge | string | — | 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. |
No output schema declared.
No examples provided.
create_want Post a want (buy request) ~214
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | — |
| constraints | object | — | Structured constraints for agent matching |
| description | string | — | Additional details (optional, max 2000 chars) |
| location | string | yes | Where you need it |
| mode | string | — | Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional. |
| price | number | yes | Budget in dollars (minimum $5) |
| title | string | yes | What you are looking for (5-200 chars) |
| wedge | string | — | 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. |
No output schema declared.
No examples provided.
demand.cancel_watch Cancel a standing want ~48
Cancel (deactivate) a standing want by id. Only your own watches can be cancelled.
| Name | Type | Req | Description |
|---|---|---|---|
| watch_id | string | yes | The watch id from demand.create_watch / demand.list_watches |
No output schema declared.
No examples provided.
demand.capabilities Discover protocol features + limits ~82
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
demand.create_want Buy a product / save a standing want ~434
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | — |
| client_token | string | — | 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) |
| constraints | object | — | Machine-evaluable constraints. See spec §5. |
| description | string | — | Additional details (optional, max 2000) |
| expires_at | string | — | ISO 8601 timestamp |
| location | object | — | Buyer location and search radius |
| mode | string | — | Buyer's supply mode preference |
| origin | object | — | Identifies the originating agent. Required for outcome attribution. |
| price_cents | integer | yes | Buyer budget in smallest currency unit (e.g. 15000 = $150 USD) |
| price_currency | string | — | ISO 4217 currency code |
| title | string | yes | What the user is looking for (5-200 chars) |
| vertical | string | — | 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. |
No output schema declared.
No examples provided.
demand.create_watch Create a standing want (watch) ~279
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | — |
| check_interval_minutes | integer | — | How often to re-check (>=5, default 60) |
| 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 | — | — |
| min_score | number | — | Only notify on matches at/above this relevance (0..1, default 0.5) |
| price_cents | integer | — | Budget ceiling in the smallest currency unit |
| title | string | yes | What to keep watching for (3-200 chars) |
| webhook_url | string | — | https URL we POST new matches to (type: want.matches) |
No output schema declared.
No examples provided.
demand.get_want Get a Want with its matches ~51
iwant.fyi demand-side protocol v1.0 §8.1: retrieve a Want by ID, including its current matches and constraints.
| Name | Type | Req | Description |
|---|---|---|---|
| want_id | string | yes | UUID of the want |
No output schema declared.
No examples provided.
demand.health Health + supply sources ~43
iwant.fyi demand-side protocol v1.0 §8.2: liveness and readiness check. Returns server info, protocol version, and active supply source list.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
demand.list_constraints List the constraint vocabulary ~43
iwant.fyi demand-side protocol v1.0 §8.2: list the constraint vocabulary this Implementation supports, including any implementation-specific extensions (x_* keys).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
demand.list_verticals List supported verticals ~47
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
demand.list_watches List your standing wants ~34
List this agent's standing wants (active watches), with how many matches each has surfaced and when it was last checked.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
demand.record_outcome Report an outcome event ~188
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.
| Name | Type | Req | Description |
|---|---|---|---|
| event | string | yes | — |
| match_id | string | yes | Identifier of the specific match this outcome applies to |
| match_source | string | — | Optional: source of the match (e.g., 'ebay', 'shopify', 'cj') |
| metadata | object | — | Freeform; e.g., reason for not_purchased |
| timestamp | string | — | ISO 8601 timestamp; defaults to now |
| value_cents | integer | — | Realized value, required for 'purchased' events |
| want_id | string | yes | — |
No output schema declared.
No examples provided.
demand.search Find products to buy ~304
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 | — | — |
| constraints | object | — | — |
| 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 | — | — |
| location | object | — | — |
| mode | string | — | — |
| price_cents | integer | — | — |
| price_currency | string | — | — |
| title | string | yes | What to search for (same shape as demand.create_want) |
| vertical | string | — | — |
No output schema declared.
No examples provided.
get_want Get want details ~36
Get details of a specific want by ID, including its responses and constraints.
| Name | Type | Req | Description |
|---|---|---|---|
| want_id | string | yes | UUID of the want |
No output schema declared.
No examples provided.
my_agent_profile View agent profile ~22
View the authenticated agent's profile, trust score, and stats.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
respond_to_want Respond to a want ~116
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).
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | Your offer message (10-2000 chars) |
| mode | string | — | Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional. |
| offerPrice | number | yes | Offer price in dollars |
| want_id | string | yes | UUID of the want to respond to |
No output schema declared.
No examples provided.
search_listings Search the supply directory ~230
Search the iwant.fyi supply directory for listings posted by sellers. Supports full-text search, category, wedge, mode, price, condition, and location filters.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | — |
| condition | string | — | — |
| item_type | string | — | Specific item type (e.g. 'couch', 'laptop', 'plumber') |
| location | string | — | Location text filter |
| max_price | number | — | Maximum price in dollars |
| min_price | number | — | Minimum price in dollars |
| mode | string | — | Supply mode: new (catalog-driven) or used (reverse-auction-driven). Optional. |
| page | number | — | Page number (default 1) |
| search | string | yes | Full-text search across listing titles and descriptions |
| source | string | — | Filter by source (native, shopify, ebay, etsy) |
| wedge | string | — | 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. |
No output schema declared.
No examples provided.
search_products Search products to buy ~202
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).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | Product category |
| condition | string | — | Item condition filter |
| location | string | — | Preferred location |
| max_price | number | — | Maximum price in dollars |
| min_price | number | — | Minimum price in dollars |
| query | string | yes | What to search for (e.g. 'mid-century modern desk', 'wireless headphones') |
| wedge | string | — | 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. |
No output schema declared.
No examples provided.