Skip to main content
Glama
5uper0

parley-mcp

by 5uper0

parley_decide

Resolve conflicting party preferences by enforcing red lines, rejecting violating options, and using max-min to pick an acceptable outcome or report deadlock.

Instructions

Reach a decision among parties with conflicting interests. Give the options and each party's red lines (hard constraints, checked in code) and soft preferences. An option that crosses any party's red line is rejected outright; among the options acceptable to everyone the max-min rule picks the one whose least-satisfied party is best off, tie-broken by total score. No option acceptable to all parties yields an honest status 'deadlock' with decision null, never a forced choice. Returns JSON: status ('agreed'|'deadlock'), decision (the winning option object or null), transcript (every option with each party's masked verdict), and transcript_sha256 (the receipt hash; keep it to verify the transcript later with parley_verify_receipt). HONESTY NOTE: in this mode you, the caller, hold every party's spec and pass them all in one call, so there is no privacy between parties or from you. What still holds: red lines reject an option deterministically (a violating option cannot win), the max-min rule picks among options feasible for everyone, and the returned transcript is tamper-evident via transcript_sha256, provided the hash is kept by someone other than whoever might edit the transcript (it is unsigned and this server does not store it). For private sheets run one process per owner: examples/run_env.py.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ruleNoSelection rule. Only 'egalitarian' (max-min) exists.egalitarian
specYesA DecisionSpec: the shared options plus every party's position, the same JSON as examples/demo/recipe_*.json. Extra keys are ignored.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses critical behavior: deterministic red-line rejection, max-min selection among feasible options, honest 'deadlock' status with null decision (no forced choice), and that the transcript is tamper-evident via hash. It also states limitations: no privacy in this mode, hash is unsigned and not stored by server. Missing: whether red-line rejection is one violating option per party or any violating option (it says 'any party's red line is rejected outright', which is clear), and what happens with missing attributes (schema says fails closed). It doesn't mention performance or limits (e.g., max 500 options, 50 parties) but these are in schema. Overall very strong, but not quite 5 because it doesn't explain what 'masked verdict' means in the transcript (only says 'masked verdict' without defining).

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

Conciseness3/5

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

The description is long and dense, with a detailed honesty note that is valuable but could be more front-loaded. It mixes purpose, mechanics, return values, and caveats in one block. While every sentence is informative, the structure could be improved by separating the return-value details and honesty note into clearer sections. It's not egregiously verbose, but it's not concise either.

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

Completeness5/5

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

Given the complexity (nested spec with options, parties, hard/soft constraints), no output schema, and no annotations, the description covers everything an agent needs: what the tool does, when to use it, the algorithm, return format, verification path, and honesty limitations. It even points to an example file. Complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters in detail (including enums, nested structures, defaults). The description adds context about the overall spec structure ('Give the options and each party's red lines... and soft preferences') but no additional syntax or semantics beyond what's in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The first sentence states the exact purpose: 'Reach a decision among parties with conflicting interests.' It specifies the mechanism (red lines + max-min) and outcome types, making it clearly distinguishable from siblings parley_verify_receipt (checks hashes) and parley_check_party (validates a single party).

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

Usage Guidelines5/5

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

Explicitly states when to use this mode ('you, the caller, hold every party's spec and pass them all in one call') and when not to ('For private sheets run one process per owner: examples/run_env.py'). It also directs to parley_verify_receipt for later verification. This is comprehensive alternative routing.

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