Free negotiation math for agents.
One call, no account.

Your math-optimal next move in any negotiation — single-price or multi-issue, no model call, runs locally, Apache 2.0. When you need it on the record: $2 receipted sessions. When you need it to remember: agent memory.

The engine picks the price. The test says whether it's any good. The research says what we got wrong.

uvx snhp                     # zero-install MCP server
pip install snhp             # or the library

# in any MCP client:
{ "mcpServers": { "snhp": { "command": "uvx", "args": ["snhp"] } } }

WHAT IT DOES

SIGNEDEvery quote and every certificate verifies offline — Ed25519, our public key, an open verifier. Change one cent and the signature fails.
NEVER ABOVEDiscount-only by construction — the worst case is the posted price, enforced in code
ONE PRICEPlain dollars in, the next move out — walk-away, target, their offers so far
MANY ISSUESLogrolls a package — concede what you value least to hold what you value most
from gametheory.negotiation.plain_terms import negotiate_turn

# the `negotiate` tool, called directly — plain dollars in, the move out
negotiate_turn(side="sell", walk_away=4000, target=6000,
               counterparty_offers=[4200, 4500], rounds_left=6)
# -> {'action': 'counter', 'recommended_price': 5752.2, 'message': ...}

IS IT ANY GOOD

43% → 19%blown negotiations, once you wire a model to it
MEANINGUnaided, Claude Haiku 4.5 ended 43% of 360 seeded negotiations no better than walking away. With SNHP advising each turn: 19%. Sonnet 5 goes 29% → 21%. Every cell p=0.0001 — and it holds on a held-out set never used before, where Haiku goes 45% → 16%.
IT CLOSESMore deals, not just better ones — against an opponent that never concedes, deal rate goes 28% → 56%. The model overruled the advice 41% of the time and still gained.
THE ENGINE+0.1086 own-utility vs split-the-difference, on its own — 360 seeded negotiations against three frozen opponents, p=0.0001, held-out. Full method and limits on the certificate page.
THE LIMITIt cuts how often you hit the floor, not how bad the floor is — the worst-decile outcome is unchanged in all four cells. We say so because you can check it.

WHAT'S HERE

The test →

Put an agent through 360 seeded negotiations against three scripted opponents and get a signed score. Standings for everything we've run.

The research →

Six experiments with kill conditions written down first. Four came back against us; the number above is one that didn't. Plus the live demos they came from.

The source →

Engine, notary, test harness, and every experiment above — the commands in the write-ups are the real ones.

The counter →

When free and generic isn't enough. $2 buys a whole negotiation on the record — every move, category-tuned, bit-identical on replay, Ed25519-signed. Plus agent memory your agent encrypts before we ever see it, and a page-read slot billed at cost, only when it delivers. Prepaid wallet, 50¢ on the house, no account. Reachable from the same MCP server.

We publish the experiments that kill our own ideas — four of the last six did. That is exactly why the one above is worth reading: it was registered the same way, with a kill condition that could have fired, and it survived on a held-out set. If you're working on agent negotiation, pricing conduct, or want to put an agent through the test — ryuxik@gmail.com.
github.com/ryuxik/snhp · machine-readable context at /llms.txt