snhp
SNHP
Documentation
SNHP
Free negotiation math for AI agents. One call, no account. Your agent brings
the LLM; SNHP brings the game theory โ your math-optimal next move in any
negotiation, single-price *and* multi-issue, LLM-free, runs locally. When you
need it on the record: $2 receipted sessions. When you need it to
remember: agent memory (blind custody โ you encrypt before saving; we store
only ciphertext and cannot read it).
ยท snhp.dev ยท Manifesto
๐ The Negotiation Leaderboard
**arena.snhp.dev/leaderboard.html** โ
which AI walks away with the most money? Claude models, a naive
splitter, a genome evolved in a live sim, and community bots all negotiate the
same held-out multi-issue deals against the SNHP engine, scored against the
exact Pareto frontier. Every match is a real recorded negotiation, replayable
in the browser. Headline result: **frontier models, solo, lose to the naive
split-the-difference bot** โ wired to the engine mid-deal, they're near-optimal.
Put your bot on the board: expose one HTTP endpoint speaking
`snhp-gauntlet/1` and DM
@ryuxik the URL. The runner lives in
`arena/gauntlet/` โ protocol, seats, scoring, and the
25-line starter bot. Machine-readable
spec: arena.snhp.dev/llms.txt.
Install
uvx snhp # zero-install: runs the stdio MCP server on demand
# or
pip install snhpWire it into any MCP client (Claude Desktop, Cursor, Cline, โฆ):
{ "mcpServers": { "snhp": { "command": "uvx", "args": ["snhp"] } } }Or call the math directly โ plain dollars in, the move out (the `negotiate` tool):
from gametheory.negotiation.plain_terms import negotiate_turn
negotiate_turn(
side="sell", walk_away=4000, target=6000,
counterparty_offers=[4200, 4500], rounds_left=6,
)
# -> {'action': 'counter', 'recommended_price': 5752.2,
# 'message': 'Thanks for the offer. The best I can do on this is $5,752.20.', ...}Multi-issue deals logroll automatically โ SNHP infers the other side's priorities
and proposes the package that maximises joint surplus (concede what you value
least to hold what you value most):
from gametheory.negotiation.bundle import negotiate_bundle
negotiate_bundle(
issues=[
{"name": "price", "options": [100, 120, 140], "my_utility": [1.0, 0.5, 0.0], "their_utility": [0.0, 0.5, 1.0]},
{"name": "support", "options": ["basic", "priority"], "my_utility": [1.0, 0.0], "their_utility": [0.0, 1.0]},
],
my_priorities={"price": 0.8, "support": 0.2},
)
# -> recommended_offer {'price': 100, 'support': 'priority'} + the trade logic behind itHosted agent card, streamable MCP, and a live demo: **snhp.dev**.
What's here
snhp/ Core algorithm + NegMAS agent + B2B tournament harness
gametheory/ Productization layer (FastAPI, MCP, Tier 1/2/3 endpoints)
gametheory/negotiation/ Plain-terms single- + multi-issue (logrolling) engines
gametheory/server/ HTTP + MCP entry points
gametheory/tests/ pytest suite
SNHP_Whitepaper/ Protocol description + 3 component PRDsDevelop from source
git clone https://github.com/ryuxik/snhp && cd snhp
python -m venv venv && source venv/bin/activate
pip install -e ".[test]"
python -m pytest gametheory/tests/ # test suite
uvicorn gametheory.server.http:app --reload # local API (catalog at /v1/catalog)
snhp # stdio MCP serverEmpirical anchor
Several different numbers โ keep them straight
These are distinct measurements; conflating them is the easy mistake. **They are
ordered by how much weight they can carry, not by when we ran them.** The first was
pre-registered and validated on data it had never seen; the rest were not, and are
reported here with the caveats that implies.
1. The certification gauntlet (pre-registered, held-out) โ the number to trust.
A certified agent's mean own-utility beats a split-the-difference baseline by
+0.1086 across n=360 seeded negotiations (60 scenarios ร 2 roles ร 3 frozen
scripted opponents: naive, hardball, conceder), p=0.0001, separating on both the
public set *and* a held-out set that had never been used. The counterparty pool and
the statistic were frozen in `arena/gauntlet/PREREG-pool.md` **before the code
existed**. It carries the most weight precisely because it could have failed on the
record โ and an earlier cut of this certificate *did* fail (three statistics saturated
against a fixed counterparty; see `arena/gauntlet/certs/SEPARATION.md`), which is why
the protocol was re-registered rather than re-tuned. Scope is exactly the declared
pool and no wider.
2. Head-to-head competitive margin (not registered in advance). In a
SNHP-scaffolded LLM vs a non-SNHP LLM, how much more of the surplus does the SNHP
side capture? On the committed cross-vendor run (`gametheory/server/static/e6_cross_vendor.json`,
Sonnet+SNHP vs Haiku, n=20 paired seeds) the pooled margin is ~+12.5%
(`mean h3_margin โ 0.125`, 29/40 positive signs). Some shipped copy still cites this
as "~12% better head-to-head." Read it with the caveats: n=20, LLM-vs-LLM,
single-issue price, no pre-registration, and the opponent is a *general* vanilla
prompt โ against a competent one the edge roughly halves (see the strong-baseline test
below). Where this and (1) disagree, prefer (1).
3. Joint-welfare lift in self-play (a cooperation metric, NOT the same thing).
Two-Sonnet B2B contract negotiation, n=20 paired seeds:
| Condition | Joint welfare (frontier โ 1.57, estimated) |
|---|---|
| Vanilla Sonnet (general prompt, no SNHP) | 1.40 |
| Pure SNHP-vs-SNHP (math only) | 1.45 |
| Sonnet + SNHP MCP tool (both sides) | 1.59 |
| Haiku + SNHP MCP tool (cross-model) | 1.61 |
Lift from both sides adopting the SNHP tool: +0.186 joint welfare, sign test
18/20, p=0.0004. (The 1.59/1.61 slightly exceed the 1.57 frontier *estimate* โ
the frontier was estimated on a coarse grid, so treat these as "at the frontier,"
not "beyond it.") Cost: $0.025 per matchup at 2026-04 pricing.
4. The build-vs-buy test: SNHP vs a STRONG production prompt
Numbers (2) and (3) above are vs a *general* vanilla prompt. The sharper question โ "why not
just prompt the LLM well?" โ is answered by running SNHP against a strong production
prompt (`snhp/llm_strong_baseline.py`, whose system prompt even includes logrolling
advice). On the 4-issue contract, Haiku+SNHP-tool vs Haiku+strong-prompt, n=12 paired
seeds (`python -m snhp.strong_baseline_headtohead`, result committed at
`gametheory/server/static/strong_baseline_headtohead.json`):
| Metric | Value |
|---|---|
| Utility margin (SNHP โ strong baseline) | +0.077, 95% CI [+0.039, +0.115] (excludes 0) |
| SNHP share of joint surplus | 54% (CI [52%, 56%]) |
| Sign test | 8/12 positive, 0 negative |
SNHP beats even a strong production prompt โ but by roughly half the edge it shows
against a weak one. Caveats: n=12, Haiku (not Sonnet), one contract domain; re-run at
larger n / a stronger model to tighten the CI.
Network effect: the cooperation premium requires both sides to be
SNHP-staked. Asymmetric matchups (Sonnet+SNHP vs vanilla Sonnet) lose 0.11
utility vs symmetric scaffolded play. Peer-mode advisor only fires when
counterparty has posted a verifiable SNHP attestation.
Live demo (replay of the actual API trace at seed=42): https://snhp.dev/demo.html
Tournament rank (honest, per-market)
In the committed round-robin (`leaderboard/results/leaderboard.json`, `n_rounds=20`),
SNHP's rank by average utility depends on the market:
| Market (BATNA) | SNHP rank | Top of field |
|---|---|---|
| Buyer's market (asymmetric) | #1 of 21 | SNHP 0.508 |
| Seller's market (asymmetric) | #1 of 21 | SNHP 0.520 |
| Symmetric (neutral) | 5th of 21 | Logroller 0.525, The Closer, Cialdini, Principled, then SNHP 0.512 |
So SNHP is #1 in the asymmetric markets and mid-pack in the symmetric one โ
do not read this as "#1 overall." Its variance is the smallest in the field. At
`n_rounds=100` the symmetric field restabilizes further and Aspiration leads.
This NegMAS agent (`snhp/negmas_agent.py`) is a **research artifact and is NOT the
shipped product recommender** โ the product claims below are measured on the
shipped code, not on this tournament.
See `gametheory/evals/README.md` for the eval/tuning runbook.
Tiers
- Tier 1 โ Negotiation: sell-side + buy-side recommenders, anchor-attack
detection, cryptographic first-strike commit-reveal, LLM-drafted reply
emails (paid).
- Tier 2 โ Auctions: Vickrey / first-price BNE / English ascending,
Myerson optimal reserve, format recommendation, MC simulation.
- Tier 3 โ Mechanism design: Gale-Shapley, asymmetric Myerson optimal
auction, Gallego-van Ryzin posted-price.
Tier 4 (coalition games) deferred until a paying buyer asks for it.
mcp-name: io.github.ryuxik/snhp-negotiation
Frequently asked questions
What is snhp?
snhp is SNHP
How do I install snhp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is snhp open source?
Yes โ it is hosted on GitHub at https://github.com/ryuxik/snhp.
Related MCP tools
Cognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.
Automate browser based workflows with AI
Hindsight: Agent Memory That Learns
A privacy-first app that strips AI watermarks from content you own.
Agent framework and applications built upon Qwen>=3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.
The power of Claude Code / GeminiCLI / CodexCLI + [Gemini / OpenAI / OpenRouter / Azure / Grok / Ollama / Custom Model / All Of The Above] working as one.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP