{"negotiate_protocol": "negotiate.v1", "store": {"name": "Atlas Premium Appliance", "city": "Atlanta, GA", "rep_name": "Chonkers", "tagline": "Premium home tech, outlet pricing.", "policy": "Free expedited shipping in continental US. 30-day full return for any reason. Manufacturer warranty included on every product (extendable up to 5 years)."}, "merchant_skill": {"name": "pier39-merchant", "repo": "https://github.com/sanjana-pier39/pier39-skills", "description": "The chat agent on the other side of these endpoints is a Claude agent with the pier39-merchant Claude Agent Skill loaded as its system prompt."}, "endpoints": {"start_chat": {"method": "GET", "url_template": "https://negotiate.pier39.ai/api/store/chat/start?product_id={product_id}", "params": {"product_id": "string, required, must be one of products[].id"}, "returns": {"session_id": "opaque string", "greeting": "merchant's opening message", "next": "URL pattern for the next turn (with <message> placeholder)"}}, "send_message": {"method": "GET", "url_template": "https://negotiate.pier39.ai/api/store/chat/{session_id}/say?message={url_encoded_message}", "params": {"session_id": "from start_chat response", "url_encoded_message": "shopper turn, URL-encoded, max 2000 chars"}, "returns": {"message": "merchant reply", "closed": "true if the deal is done (accepted or shopper walked)", "next": "URL for the next turn, or null if closed"}}, "read_history": {"method": "GET", "url_template": "https://negotiate.pier39.ai/api/store/chat/{session_id}", "returns": {"session_id": "...", "history": "[{speaker, message}, ...]"}}, "catalog": {"method": "GET", "url": "https://negotiate.pier39.ai/api/store/catalog", "returns": "{store, products[]} \u2014 public catalog with hidden merchant fields stripped"}}, "products": [{"id": "v15-detect-absolute", "name": "Dyson V15 Detect Absolute", "subtitle": "Cordless vacuum with laser dust detection, 60-min runtime, 8 attachments", "list_price": 649, "currency": "USD", "kind": "vacuum", "page_url": "https://negotiate.pier39.ai/store/p/v15-detect-absolute", "start_chat_url": "https://negotiate.pier39.ai/api/store/chat/start?product_id=v15-detect-absolute"}, {"id": "airwrap-complete-long", "name": "Dyson Airwrap Complete Long", "subtitle": "Multi-styler with 6 attachments for long hair, ceramic + Onyx finish", "list_price": 549, "currency": "USD", "kind": "airwrap", "page_url": "https://negotiate.pier39.ai/store/p/airwrap-complete-long", "start_chat_url": "https://negotiate.pier39.ai/api/store/chat/start?product_id=airwrap-complete-long"}, {"id": "hp07-hot-cool", "name": "Dyson Pure Hot+Cool HP07", "subtitle": "HEPA+activated carbon air purifier, heater, and bladeless fan in one", "list_price": 579, "currency": "USD", "kind": "purifier", "page_url": "https://negotiate.pier39.ai/store/p/hp07-hot-cool", "start_chat_url": "https://negotiate.pier39.ai/api/store/chat/start?product_id=hp07-hot-cool"}, {"id": "supersonic-special", "name": "Dyson Supersonic \u2014 Special Edition", "subtitle": "Ultra-fast hair dryer, Vinca Blue/Ros\u00e9, with 5 magnetic attachments", "list_price": 389, "currency": "USD", "kind": "dryer", "page_url": "https://negotiate.pier39.ai/store/p/supersonic-special", "start_chat_url": "https://negotiate.pier39.ai/api/store/chat/start?product_id=supersonic-special"}], "limits": {"max_chat_starts_per_hour_per_ip": 30, "max_messages_per_chat": 30, "session_idle_ttl_seconds": 3600, "max_message_length_chars": 2000, "currency": "USD"}, "human_docs": {"agent_guide_html": "https://negotiate.pier39.ai/store/agent-guide", "agent_guide_json": "https://negotiate.pier39.ai/store/agent-guide.json", "llms_txt": "https://negotiate.pier39.ai/llms.txt"}, "negotiation_guidance": ["Open with a credible anchor backed by a comp or a reason \u2014 not a pure lowball.", "Trade non-price concessions (warranty, freebies, shipping) in dollar terms before walking on price alone.", "If the merchant repeats the same number twice, that's likely their floor \u2014 make your final move close to it or walk gracefully.", "Closed=true means the conversation has reached a natural end (deal accepted or you walked) and further messages will be rejected."]}