{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_kx8t7kpff42z","handle":"productindex-2","url":"https://wellknown.network/agents/productindex-2","links":{"self":"https://wellknown.network/agents/productindex-2/record.json","html":"https://wellknown.network/agents/productindex-2","markdown":"https://wellknown.network/agents/productindex-2/record.md","api":"https://wellknown.network/api/v1/agents/productindex-2","status":"https://wellknown.network/api/v1/agents/productindex-2/status","claim":"https://wellknown.network/agents/productindex-2/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/productindex-2/claim.json","badge":"https://wellknown.network/agents/productindex-2/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/productindex-2/history","tools":"https://wellknown.network/api/v1/agents/productindex-2/tools"},"ard":{"identifier":"urn:air:productindex.ai:agent:productindex-2","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"ProductIndex","summary":"AI-powered product intelligence and deal broker. 882+ synthesized product profiles across 31 consumer categories — air fryers, espresso machines, headphones, robot vacuums, standing desks, mechanical keyboards, coffee grinders, adjustable dumbbells, barbells, 3D printers, camera lenses, electric bi…","description":"AI-powered product intelligence and deal broker. 882+ synthesized product profiles across 31 consumer categories — air fryers, espresso machines, headphones, robot vacuums, standing desks, mechanical keyboards, coffee grinders, adjustable dumbbells, barbells, 3D printers, camera lenses, electric bikes, vinyl record players, and more. Supports real-time price negotiation via request-for-quote, saved product lists for authenticated users, and multi-category bundle curation.","publisher":{"name":null,"url":"https://productindex.ai"},"homepage":"https://productindex.ai","repository":null,"version":"1.0.0","license":null,"protocols":["a2a"],"tags":["products","recommendations","espresso","keyboards","fitness","home-gym","coffee","specs","reviews","lookup","categories","comparison","browse","offers","promotions","pricing","deals","rfq","marketplace","comparison-shopping","sync","updates","changelog","new-products","save","favorites","list","bookmark","bundle","curator","multi-category","setup"],"pricing":null,"endpoints":[{"url":"https://productindex.ai","type":"a2a","auth":"none","probeable":true}],"skills":[{"id":"product-recommendation","name":"Product Recommendation","tags":["products","recommendations","espresso","keyboards","fitness","home-gym","coffee"],"description":"Returns ranked product recommendations matching a stated need, use case, budget, or constraint. Send a natural-language query in message parts text (e.g. 'quiet coffee grinder under $200 for espresso'). Optionally pass explicit filters in metadata.constraints: { maxPrice: number, minPrice: number, category: string }. Valid categories: 3d-printers, adjustable-dumbbells, air-fryers, air-purifiers, barbells, camera-lenses, coffee-grinders, coffee-scales, cordless-power-tools, dart-boards, electric…"},{"id":"product-lookup","name":"Product Lookup","tags":["products","specs","reviews","lookup"],"description":"Returns the best-matching synthesized profile for a specific product by name or model. Send the product name or model number in message parts text (e.g. 'Baratza Encore ESP' or 'BES870'). Response artifact.parts[0].metadata.products returns up to 5 ranked matches — same shape as product-recommendation: slug, title, category, priceRange, verdict, verificationStatus, url, mdUrl, jsonUrl, offersEndpoint, score. Fetch mdUrl for the full markdown profile (verdict, comparisons, reviewer themes, specs…"},{"id":"category-browse","name":"Category Browse","tags":["categories","comparison","browse"],"description":"Lists products in a category with verdicts, prices, and review counts. Send a category name or browse query in message parts text. For a complete category listing rather than a relevance-ranked search, pass metadata.constraints.category explicitly. Response artifact.parts[0].metadata.products follows the same shape as product-recommendation. To retrieve the full category in one call, fetch https://productindex.ai/c/{category}.md — valid category slugs: 3d-printers, adjustable-dumbbells, air-fry…"},{"id":"product-offers","name":"Product Offers","tags":["offers","promotions","pricing","deals"],"description":"Returns current promotional offers including advertiser, headline, price, and a short-lived attribution claim_url. Offers are sorted by price + shipping ascending. Three invocation patterns: (1) site-wide — pass metadata.allOffers: true (or text like 'show me all deals') to list every active offer across the catalog with pagination (metadata.limit default 50 max 200, metadata.offset), unsorted; (2) product-specific natural language — send text like 'deals on Baratza Encore ESP' and the best-mat…"},{"id":"request-for-quote","name":"Request for Quote","tags":["rfq","pricing","marketplace","deals","comparison-shopping"],"description":"Submit a product need and receive competitive real-time quotes from multiple verified producers. ProductIndex resolves the product using its intelligence layer, fans out to registered producer agents, and returns ranked offers with prices, availability, shipping terms, and claim URLs. Pass the product name or slug in message parts text. Optional metadata: { product_slug, quantity, delivery_region (ISO 3166, e.g. US-CA or US-CA-941), deadline_iso (date), maxPrice (per-unit budget; quotes above i…"},{"id":"what-changed","name":"What Changed","tags":["sync","updates","changelog","new-products"],"description":"Returns products added or updated since a given date or time window — useful for agents that cache product data and need to sync only what has changed. Send a natural-language time reference in message parts text ('last 7 days', 'since 2026-04-01', 'this week') or pass metadata.since as an ISO 8601 date string. Defaults to the last 7 days when no time reference is found. Pagination: metadata.limit (default 50, max 200) and metadata.offset (default 0). Response artifact.parts[0].metadata: { sinc…"},{"id":"save-product","name":"Save Product","tags":["save","favorites","list","bookmark"],"description":"Save a product to the authenticated user's server-side saved list for later reference. Requires OAuth authentication. Pass the full product slug in message parts text (e.g. 'espresso-machines/breville-bambino-plus'). Optional metadata.list_name to save to a named list. Response confirms save or reports if already saved."},{"id":"list-saved-products","name":"List Saved Products","tags":["save","favorites","list","bookmark"],"description":"List the authenticated user's saved products. Requires OAuth authentication. Optional metadata.list_name to filter to a specific list. Response artifact.parts[0].metadata.products follows the same shape as product-recommendation."},{"id":"remove-saved-product","name":"Remove Saved Product","tags":["save","favorites","list","bookmark"],"description":"Remove a product from the authenticated user's saved list. Requires OAuth authentication. Pass the full product slug in message parts text."},{"id":"product-curator","name":"Product Curator","tags":["bundle","curator","multi-category","setup"],"description":"Multi-category product curation for bundle requests. Accepts a natural-language bundle request with optional budget and returns a curated set across multiple categories. Requires OAuth authentication. Response time is 15–30 seconds. Pass the request in message parts text (e.g. 'full home gym setup for $2000'). Optional metadata.budget overrides budget in query text."}],"tools":["Product Recommendation","Product Lookup","Category Browse","Product Offers","Request for Quote","What Changed","Save Product","List Saved Products","Remove Saved Product","Product Curator"],"extra":{"inputModes":["text/plain"],"outputModes":["text/plain","application/json"],"capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false}},"attribution":{"kind":"a2a_card","name":"a2a_card","summary":"a2a_card","version":"a2a_card","description":"a2a_card","homepageUrl":"a2a_card","publisherUrl":"a2a_card"}},"derived":{"capabilities":[{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":1,"provenance":"declared"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":1,"provenance":"declared"},{"slug":"infra.desktop","name":"Desktop Control","confidence":1,"provenance":"derived"},{"slug":"code.review","name":"Code Review","confidence":0.638,"provenance":"derived"}],"categories":["code","commerce","infra"],"language":"fr"},"observed":{"status":"live","statusReason":"Responded 43m ago.","lastOkAt":"2026-10-22T05:32:28.702Z","lastProbedAt":"2026-10-22T05:32:28.702Z","statusComputedAt":"2026-10-22T05:35:33.140Z","reliability30d":{"probes":4,"successRate":1,"p50Ms":27,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":4,"ok":4,"authBoundaryOk":0,"serviceOk":4,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-22T05:32:28.702Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"name":"ProductIndex","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":10}},{"at":"2026-10-21T22:32:14.339Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":160,"error":null,"detail":{"name":"ProductIndex","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":10}},{"at":"2026-10-21T16:34:51.471Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":20,"error":null,"detail":{"name":"ProductIndex","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":10}},{"at":"2026-10-21T04:27:40.009Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":30,"error":null,"detail":{"name":"ProductIndex","signed":false,"version":"1.0.0","cardPath":"/.well-known/agent-card.json","skillCount":10}}],"tools":null,"package":null,"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"a2a_card","key":"https://productindex.ai/.well-known/agent-card.json","url":"https://productindex.ai/.well-known/agent-card.json","firstSeenAt":"2026-10-21T04:19:37.232Z","fetchedAt":"2026-10-21T04:19:37.232Z","normalizedAt":"2026-10-21T04:19:37.232Z"}]},"firstSeenAt":"2026-10-21T04:19:37.232Z","updatedAt":"2026-10-21T04:19:47.534Z"}