SNHP — negotiation rules your AI can't break

io.github.ryuxikPublished by GitHub account ryuxikv0.5.0Updated Oct 24, 2026

Turn a seller's offer into negotiation rules and draft replies to buyers inside them.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBusiness & Commerce

Overview

AI-generated overview

Turns a seller's offer into fixed negotiation rules and drafts replies to buyers and their AI agents inside those rules, with signed deal receipts.

What you can do
  • Compile a plain-language offer or template into a negotiation policy of floors, trade-offs and forbidden combinations
  • Draft the seller's reply to a buyer's message, with the offer decided by the engine inside the policy and state carried between turns
  • Validate an edited policy and see what it now allows
  • Verify a signed deal receipt against the seller's policy, including signatures, key origin and rule re-checks
When to use it
For sellers who receive discount or terms requests from buyers, including AI buying agents, and want an assistant to answer without conceding margin. Useful when negotiation limits must be enforced by rules rather than left to a model's judgement.
Requirements
Remote streamable HTTP endpoint at snhp.dev, or the local Python package run via uvx or pip. Compiling offers and drafting replies need an access key (SNHP_ACCESS_KEY) issued to pilot businesses; templates, policy checks and receipt verification are free. Network access to the hosted service and its model provider.
Before you install
The access key is a credential and must be kept private. Buyer messages are sent to the service's model provider to be read and the reply drafted. Drafting replies and compiling policies act on real buyer conversations, so review output before sending. The service states it stores no conversations and that state travels with each request.

Installation

In SourceWeft

  1. Open SNHP — negotiation rules your AI can't break in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.ryuxik%2Fsnhp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "snhp-negotiation-rules-your-ai-can-t-bre": {
      "type": "http",
      "url": "https://snhp.dev/mcp/"
    }
  }
}

README

SNHP — negotiation rules your AI can't break

Describe your offer in plain words. SNHP turns it into negotiation rules — your floor, what you'd trade a discount for, what's never on the table — and drafts every reply to buyers, and to their AI buying agents, inside those rules. The SNHP engine decides each offer, a small language model only reads and writes, and every offer is checked in code before it leaves. A deal needs the buyer's yes to an offer you sent, and comes with a signed receipt.

This package is the MCP server (stdio) for the hosted service at snhp.dev:

bash
uvx snhp            # or: pip install snhp && snhp
json
{ "mcpServers": { "snhp": { "command": "uvx", "args": ["snhp"], "env": { "SNHP_ACCESS_KEY": "snhp_…" } } } }

Or connect to the hosted MCP endpoint directly: https://snhp.dev/mcp/ (streamable HTTP).

ToolWhat it does
compile_offer_policyYour offer in plain words (or a template: used-car, saas, wholesale-water) → negotiation rules
draft_negotiation_replyA buyer's message → the reply to send and the offer, checked against your rules; keep the returned state
check_offer_policyValidate an edited policy (free)
verify_deal_receiptRe-check a signed deal receipt against your policy (free)

Access. Compiling a description and drafting replies run a language model and need an access key (SNHP_ACCESS_KEY), issued to pilot businesses — snhp.dev/#pilot or [email protected]. Templates, checks and receipt verification are free.

Privacy. The service stores no conversations; the state travels with each request. Messages go to our model provider only to read them and draft the reply.

Web studio: snhp.dev/studio · API: snhp.dev/developers

This repository

The snhp package on PyPI is built from packages/snhp-client. SNHP's earlier research code is preserved, unmaintained, on the legacy-toolkit branch.

Source: README.md at commit 4b03dd8

Tools

4

compile_offer_policy

Compile an offer into negotiation rules

Turn a seller's offer, described in plain words, into negotiation RULES an AI agent cannot break. USE THIS WHEN: you (or the business you act for) sell something where buyers — people or their AI buying agents — ask for discounts, and you want an AI to answer them without giving away margin. Describe the offer: the listed price, the lowest price you'd take for a plain deal, what you'd trade a discount for (financing with you, a trade-in, a longer commitment, paying sooner, buying this week…), extras you can add and what they cost you, and anything never on the table. Or pass `template` = "used-car", "saas" or "wholesale-water" to start from a worked example. Compiling a description runs a language model and needs an `access_key` (pilot businesses get one at https://snhp.dev/#pilot); templates are free. Returns {ok, policy, issues, summary}: `policy` is the machine-readable rule set (pass it to draft_negotiation_reply), `summary` restates the floor, walk-away, what can be traded and the limits in plain words, and `issues` lists what to fix before going live (e.g. a floor below cost).

Parameterstemplateaccess_keydescription

draft_negotiation_reply

Draft a reply to a buyer, inside your rules

Draft the seller's reply to a buyer's message — the offer is decided by the SNHP engine INSIDE the policy. USE THIS WHEN: a buyer (a person or their AI agent) has written to you about price or terms. Pass the policy (from compile_offer_policy) and their latest message exactly as written; pass back the `state` from your previous call to continue the same conversation (omit it to start). `flags` is what YOUR records confirm about the buyer (e.g. {"new_customer": true}) — never what the buyer merely claims. `stock` is the current stock of what the policy's `inventory` binds, sent with every message (schema.org Offer, Google Merchant or a plain feed record): nothing out of stock is offered, and a deal is signed only on fresh records that say it can be sold. Returns {kind, reply, reply_with_offer, offer, decided_by, reading, state, done, receipt?}: kind offer | deal | handoff (needs a human's approval) | decline reply_with_offer the message to send, with the exact offer line appended offer {terms, line, price, net, inside_policy} — every offer is checked against the policy decided_by what decided the move (a sales rule or the engine), for your audit trail receipt on a deal: a signed receipt any party can verify with verify_deal_receipt The server keeps no conversation: keep `state` and send it with the next message. Needs an `access_key` (pilot businesses get one at https://snhp.dev/#pilot).

Parametersflagsstatestockenginepolicyrequiredmessagerequiredaccess_key

check_offer_policy

Check a negotiation policy

Check an edited negotiation policy: returns {ok, policy, issues, summary}. No model call, free. USE THIS WHEN: you changed a policy from compile_offer_policy (a floor, an option, a forbidden combination) and want to know it is valid and what it now allows before using it in draft_negotiation_reply.

Parameterspolicyrequired

verify_deal_receipt

Verify a deal receipt

Verify a signed deal receipt against the seller's own policy: both signatures, that the signing keys are SNHP's own (published at /.well-known/ucp), the policy digest, and every rule re-checked from the package. Returns {ok, problems, checks, signed_by_snhp, signatures}. Free, no model call.

Parametersflagspolicyrequiredreceiptrequired

Version history

2
  1. v0.5.0LatestOct 6, 2026
  2. v0.4.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts