SNHP (ryuxik/snhp) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 32 tools. No publisher has claimed this listing.

C
Warning
74/100

SNHP

Free negotiation math for AI agents. Provides optimal next moves in any negotiation, single-price and multi-issue, runs locally, with optional paid receipted sessions and encrypted agent memory.

Warning. Serious findings were identified. Review the full report before connecting. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

ryuxik

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
🚨
Code appears obfuscated
1 file are unreadable to a human reviewer. Cannot audit what they do.
🔐
You'll be asked for 5 credentials: ARENA_ADMIN_TOKEN, ANTHROPIC_API_KEY, SNHP_REQUIRE_PERSISTENT_KEY, GOOGLE_API_KEY, EBAY_CLIENT_SECRET
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes46 tools · 15 behind config

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

advise_price

One single-issue negotiation turn, entirely in real dollars.

advise_bundle

Recommend a multi-issue package by logrolling (concede where you care little, win where you care much — the trade that beats splitting every issue down the middle).

score_deal

Score a settled package against the exact Pareto frontier — the SNHP leaderboard metric ("dollars left on the table") for YOUR negotiation.

_wrapped
negotiate

Your math-optimal next move in any price negotiation — free, no account or key needed.

negotiate_bundle

Negotiate several linked issues at once by logrolling — free, no account or key needed.

auction_bid

The optimal bid when you're bidding in an auction — free, no account or key needed.

auction_reserve

The revenue-optimal reserve price when you're selling — free, no account or key needed.

clearance_price

Best price plus markdown schedule to clear stock by a deadline — free, no account or key needed.

stable_match

Match two groups by their rankings so no pair wants to swap — free, no account or key needed.

gt_negotiation_sell_next_offer

Sell-side next-offer recommendation.

gt_negotiation_buy_next_offer

Buy-side next-offer recommendation with a defense bundle.

gt_negotiation_detect_anchor_attack

Z-score the opponent's opening offer against a market prior {mu, sigma}. Recommends ignore / counter_with_market / walk_away.

gt_negotiation_declare_first_strike

Cryptographically commit to a buyer reservation. Returns an EdDSA-signed JWT attestation the buyer shows the seller. Use SHA-256 over (reservation || nonce || salt || buyer_id || seller_id), base64url-encoded without padding, as `reservation_hash`.

gt_negotiation_reveal_first_strike

Reveal a previous first-strike to obtain the binding offer.

gt_negotiation_trust_anchor_public_key

ASCII PEM of the server's first-strike attestation public key.

gt_auction_format_recommendation

Recommend format from {first_price, vickrey, english} given weights.

gt_auction_simulate

Monte Carlo auction revenue + efficiency.

gt_mechanism_optimal_auction_design

Myerson revenue-optimal mechanism for asymmetric IPV. Per-bidder reserves; collapses to second-price-with-reserve under symmetric IPV.

gt_a2a_register_operator

Register your operator identity — STEP 0 of the verified-peer deal flow.

gt_a2a_request_domain_challenge

Get the DNS-TXT record to publish to prove control of `domain` (sybil- resistant, domain-level identity).

gt_a2a_verify_domain

Verify the published DNS-TXT challenge and register `domain` as a domain-verified operator.

gt_a2a_build_peer_proof

STEP 1 of the A2A flow — sign a per-negotiation peer proof, LOCALLY.

gt_a2a_open_session

STEP 3 of the A2A flow — verify BOTH peer proofs and open a session.

gt_a2a_next_offer

STEP 4 of the A2A flow — your next move, using the SESSION's verified peer_mode.

gt_a2a_settle

STEP 5 (final) of the A2A flow — mint the signed deal record.

gt_negotiate_open_session

Open a stateful price-negotiation session that PONDERS on the other side's clock.

gt_negotiate_propose

Make your next move in a pondering session and kick off background speculation.

gt_negotiate_respond

Feed the counterparty's latest dollar offer and get your next move.

gt_negotiate_close_session

Close a pondering session and cancel any in-flight background speculation.

store_fetch

PAID from your wallet at wholesale passthrough (typically well under the 2¢ admission cap): one clean read of a stubborn page → markdown, proxy/anti-bot handling included, automatic failover across backends. url must be http(s), <= 2048 chars.

memory_savebehind config

Persistent memory for your agent across sessions — save now, load in any later session.

memory_loadbehind config

Load a memory you saved in an earlier session — retrieval is free.

session_openbehind config

Open a $2 receipted negotiation session: deterministic, replayable, every move signed.

session_advisebehind config

Your next move inside a receipted session (single-issue) — no additional charge (the $2 at session_open covered it).

session_bundlebehind config

Multi-issue logrolled advice inside a receipted session — no additional charge.

session_closebehind config

Close a receipted session and get the signed summary receipt.

store_catalogbehind config

See what's on the shelf — free, no key needed: prices, predicates, receipt scheme, and your balance.

store_requestbehind config

Ask for a capability we don't sell yet — free; filings are public and drive what we stock.

offer_profile_menubehind config

Profile a seller's menu: classify every dimension FREE or LEVER — where the negotiation surface actually is.

offer_quotebehind config

Price a buyer's cart on a menu — a Nash-split, DISCOUNT-ONLY quote (never above list).

nextmove_catalogbehind config

The NEXTMOVE vending machine: what's on the shelf and how to pay. One SKU: a paid NEGOTIATION SESSION — $2 covers every move of one negotiation (up to 10, 7-day window), category-tuned, receipted, and deterministic (fixed 400k-rollout budget + seed: same context in, bit-identical advice out, auditab

nextmove_requestbehind config

Ask the vending machine for ANYTHING it doesn't stock — a negotiation category, a different game, a capability. Free, keyless OK. One intake, two names: this shares the store's demand loop, so a request filed here gets the SAME request_id + status you can return to (GAUNTLET #5). Check it with GET /

store_request_statusbehind config

Check a filed store_request by its id (GAUNTLET #5: the void now has a status to return). Returns {request_id, status, status_note, filed_at, door, text} — status is 'logged' until the shelf-owner acts on it, at which point status_note carries the reason. Unknown id → {found: false}. (Core-door call

store_requestsbehind config

The public demand tally (GAUNTLET #5, the §3 observatory's first increment): {total, distinct, recent[], requests[]}. `requests` is distinct asks with EXACT-MATCH duplicate counts (whitespace/case folded, no fuzzy classification), most-asked first — the mechanical read of what the shelf is missing.

store_my_requestsbehind config

YOUR OWN filings (roadmap: a voter comes back a reachable customer) — the private counterpart to the public store_requests tally, keyed to your api_key. Returns {requests: [{request_id, filed_at, text, status, status_note, status_ts, watch, same_ask_count}]}, newest first; `watch` echoes whether you

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configARENA_RUN_ID
configARENA_PERSIST
configARENA_NO_RUN
🔐 secretARENA_ADMIN_TOKEN
configARENA_DATA_DIR
configBLOCK_LIVE
configBLOCK_LIVE_SECS_PER_DAY
configBLOCK_LIVE_LOG
configARENA_BUNDLE_N_PARTICLES
configARENA_BAYESIAN_N_PARTICLES
🔐 secretANTHROPIC_API_KEY
configFLY_APP_NAME
🔐 secretSNHP_REQUIRE_PERSISTENT_KEY
configSOURCE_VERSION
configSNHP_TOURNAMENT_QUICK
🔐 secretGOOGLE_API_KEY
configLEADERBOARD_USAGE_LOG
configEBAY_CLIENT_ID
🔐 secretEBAY_CLIENT_SECRET
configGT_KEYS_DB
configPAR_DEMO
Deployment configuration, supplied by whoever hosts the server. Users are not asked for these.
deployDATABASE_URL
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

47/47 tools missing one or more hints — advise_price (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); advise_bundle (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); score_deal (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +44 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Readable source code

1 file are minified or bundled, which is usually build output rather than concealment

Ship unminified, readable source.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 3 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/ryuxik/snhp?variant=verified)](https://m8ven.ai/mcp/ryuxik/snhp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: fed01bc87011f539cb1a39b752bd1a7d02244375
code hash: 435d962c642490784939fb544afa894607a1cde00e89564d83c108ed5396b3e0
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client