Skip to main content
Glama

SNHP — free negotiation math + agent memory

Score a deal against the Pareto frontier

score_deal
Read-only

Score how good a deal is against your floor/target — free, no account or key needed.

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

Args: issues: one dict per issue: {"name": str, "options": [labels], "my_utility": [per-option value to me], "their_utility": [per-option value to them]} — both sides' TRUE per-option values. my_weights: {issue_name: weight} — my true priorities (any scale). their_weights: {issue_name: weight} — their true priorities. package: the settled deal, {issue_name: option_label}. notional: deal size in dollars for the dollars-left framing.

Returns realized joint welfare, the frontier best, the naive middle-split baseline, frontier capture, logroll capture, and dollars_left_on_table.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
issuesYesOne dict per issue: {name, options, my_utility, their_utility} — both sides' TRUE per-option values (one number per option).
packageYesThe settled deal as {issue_name: chosen_option_label}.
notionalNoDeal size in dollars, used for the 'dollars left on the table' framing (default 10000).
my_weightsYes{issue_name: weight} — your true priorities (any scale).
their_weightsYes{issue_name: weight} — their true priorities (any scale).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNo
my_utilityNo
naive_splitNo
frontier_bestNo
joint_welfareNo
their_utilityNo
logroll_captureNo
frontier_captureNo
dollars_left_on_tableNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, and the description confirms this by stating it 'scores' a deal. It adds transparency with 'free, no account or key needed' and details the return values (e.g., 'realized joint welfare', 'dollars_left_on_table'), which go beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose and key usage note ('free, no account or key needed'), followed by structured argument and return sections. It is concise for the complexity, though the argument list could be more compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested objects, metrics), the description covers inputs comprehensively, explains the analytical output, and provides conceptual background (Pareto frontier). It does not mention error scenarios but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, the description enriches parameter meaning, especially for 'issues' by specifying required sub-keys (name, options, my_utility, their_utility) and for weights by clarifying 'true priorities'. This adds nuance beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Score how good a deal is against your floor/target' and 'Score a settled package against the exact Pareto frontier', specifying the verb and resource. It distinguishes from siblings like negotiate and negotiate_bundle, which create deals, but does not explicitly contrast with other scoring tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for post-settlement analysis ('Score a settled package'), but does not explicitly say when not to use it or provide alternatives. The phrase 'free, no account or key needed' indicates ease of use but not comparative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4/5.0
Disambiguation4/5

Most tools have distinct purposes (e.g., auctions, negotiation, pricing, matching, memory). However, negotiate/session_advise and negotiate_bundle/session_bundle overlap in functionality, differing only in payment tier, which could cause confusion.

Naming Consistency4/5

Tool names generally follow a verb_noun pattern in snake_case. 'negotiate' is a lone verb without a noun, but overall the convention is consistent and predictable.

Tool Count4/5

15 tools cover a broad domain of negotiation, auctions, pricing, matching, and memory. While slightly on the higher side, each tool serves a clear purpose and the count is reasonable for the scope.

Completeness4/5

The tool surface covers key negotiation scenarios (single/multi-issue, free/paid, auctions, clearance pricing, stable matching) and adds memory persistence. Minor gap: no explicit tool for managing user preferences or profiles.