Gives Claude six tools to discover and negotiate at any store that speaks the negotiate.v1 protocol. You can search a directory of compliant merchants, probe domains for protocol support, browse product catalogs, and drive multi-turn price negotiations through a state machine that tracks offers, counteroffers, and session closure. The maintainers run a hosted endpoint at mcp.pier39.ai/mcp if you want zero-install setup, or you can wire the stdio transport into Claude Desktop with uvx. Three stores are live now: the Atlas reference implementation, Skout Organic snacks, and a ticket resale integration in onboarding. If you want Claude to haggle autonomously or build conversational commerce workflows, this is the wire.
Model Context Protocol (MCP) server for the negotiate.v1 protocol. Once installed in Claude Desktop, Cowork, Claude Code, or any other MCP-aware client, your Claude gains five native tools for negotiating with any negotiate.v1-compliant store.
| Tool | Purpose |
|---|---|
discover_store(domain) | Probe a domain to check if it's negotiable. Returns the protocol descriptor. |
list_products(domain) | Enumerate negotiable products at the store. |
start_negotiation(domain, product_id) | Open a chat session with the merchant agent. |
send_message(next_url, message) | Send one shopper turn. |
read_history(history_url) | Read the running history of a session. |
The agent uses these like a human would use a browser: discover the store, pick a product, start a chat, send turns until the deal closes.
mcp-name: io.github.sanjana-pier39/negotiate-mcp
The recommended path uses uv — no virtualenv plumbing, picks the right Python automatically.
# install uv if you don't have it (macOS):
brew install uv
# then point Claude Desktop / Cowork / Claude Code at it (see below).
# uvx will install the package the first time it's invoked.
If you'd rather use plain pip:
pip install negotiate-mcp
Open your Claude Desktop config:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAdd this entry under mcpServers (creating the file if it doesn't exist):
{
"mcpServers": {
"negotiate-agent": {
"command": "uvx",
"args": ["negotiate-mcp"]
}
}
}
Quit and re-open Claude Desktop. The five tools should appear in any new conversation.
If you installed with plain pip instead of uv, replace the command/args block with:
"command": "negotiate-mcp",
"args": []
Same negotiate-mcp command. Add it to the corresponding MCP config in those clients (consult their docs for exact paths). The tool surface is identical.
Once installed, in a fresh chat:
Negotiate for a Dyson HP07 at negotiate.pier39.ai. Try to get it under $500. Bonus points for the engraved gift box.
Claude will call discover_store("negotiate.pier39.ai"), find the HP07 in the product list, call start_negotiation, then drive the conversation through send_message until closed: true. No prompt acrobatics needed.
# Run the server on stdio:
uvx negotiate-mcp
# Or, if you've used pip:
python -m negotiate_mcp
Most useful when paired with the mcp CLI to inspect tool definitions and exercise them by hand.
The connector works against any negotiate.v1-compliant store, not just the Atlas reference (negotiate.pier39.ai). As stores adopt the protocol, just point your shopper agent at their domain — the same five tools work everywhere.
See PROTOCOL.md for the full spec.
git clone https://github.com/sanjana-pier39/negotiate-mcp
cd negotiate-mcp
pip install -e .
python -m negotiate_mcp # runs on stdio
To publish a new version, see PUBLISH.md.
MIT.