Redeal
Neutral fairness computation for agents: fair division, verifiable random, Shapley shares.
使うべきか
品質と安全性
検出事項(2)
- HIGH
- MEDIUMget_deal 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"redeal": {
"url": "https://api.redeal.dev/mcp"
}
}
}リモートエンドポイント
https://api.redeal.dev/mcpstreamable-httpできること
ツール一覧
ツール(12)
⚪commit_input(commitment, deal_id, idempotency_key, invite_token)
Commit your sealed input as a hash (sealed mode). Nobody — including redeal — can see your input until all parties have committed. After the last commitment the deal opens for reveals immediately.
入力スキーマ
{
"type": "object",
"properties": {
"commitment": {
"description": "\"sha256:\" + hex of sha256(JCS(your input JSON) ++ your salt bytes). Compute it locally; the server sees only this hash until everyone has committed.",
"type": "string"
},
"deal_id": {
"description": "The deal id (d_...).",
"type": "string"
},
"idempotency_key": {
"description": "Optional: retries with the same key + same arguments replay the original response.",
"type": [
"string",
"null"
]
},
"invite_token": {
"description": "The invite token for YOUR party, from create_deal's response.",
"type": "string"
}
},
"required": [
"invite_token",
"deal_id",
"commitment"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢compute_commitment_tool(input, salt)
Compute a commitment string for (input, salt): sha256(JCS(input) ++ salt_bytes), prefixed 'sha256:'. Convenience only — the rule is public and you can compute it yourself.
入力スキーマ
{
"type": "object",
"properties": {
"input": {
"description": "Your algorithm input (any JSON value)."
},
"salt": {
"description": "Your hex salt (even length, e.g. 32+ random bytes hex-encoded). Keep it secret until reveal.",
"type": "string"
}
},
"required": [
"input",
"salt"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡create_deal(algorithm, algorithm_params, api_key, commit_deadline, external_ref, ...)
Create a fairness deal. You are party 0 (initiator). Returns a deal id and one invite token per party — give each counterparty their own token. Sealed mode: everyone commits a hash, then reveals; certificate is issued automatically when the deal computes or goes VOID.
入力スキーマ
{
"type": "object",
"properties": {
"algorithm": {
"description": "Algorithm id from list_algorithms: \"split.v1\" (fixed 1,000-point budget) | \"random.v1\" | \"shapley.v1\" | \"auction.v1\".",
"type": "string"
},
"algorithm_params": {
"description": "Algorithm-specific params from list_algorithms. split.v1: {\"items\": [...]}; random.v1: {\"drand_round\": N}; shapley.v1: {\"coalition_values\": {...}}; auction.v1: {\"item\": \"...\", \"unit\": \"GBP\", \"reserve\": N}."
},
"api_key": {
"description": "Your redeal API key (get one free with create_key — no signup form).",
"type": "string"
},
"commit_deadline": {
"description": "Commit deadline as unix seconds UTC. Missed → deal EXPIRES (no certificate).",
"format": "int64",
"type": "integer"
},
"external_ref": {
"description": "Optional: your own identifier for this deal, e.g. \"campaign-4821\" (echoed into the certificate).",
"type": [
"string",
"null"
]
},
"idempotency_key": {
"description": "Optional: retries with the same key + same arguments replay the original response.",
"type": [
"string",
"null"
]
},
"mode": {
"description": "\"sealed\" (default, commit/reveal) or \"open\" (single round trip, low stakes).",
"type": [
"string",
"null"
]
},
"party_labels": {
"description": "One label per party, e.g. [\"alice\", \"bob\"] — or objects {\"label\", \"weight\"?, \"statement_hash\"?} (weight defaults to 1; statement_hash is \"sha256:<hex>\" of a declaration you want bound into the certificate). Party 0 is you (the initiator). Labels go on the public certificate permanently: use nicknames, never real names or emails.",
"items": true,
"type": "array"
},
"retention": {
"description": "\"standard\" (inputs retained encrypted) or \"purge\" (destroyed 7 days after certification).",
"type": [
"string",
"null"
]
},
"reveal_deadline": {
"description": "Reveal deadline as unix seconds UTC (after commit_deadline). Missed → deal goes VOID and a non-participation certificate names whoever didn't reveal.",
"format": "int64",
"type": "integer"
},
"supersedes": {
"description": "Optional: certificate id (c_<16 hex>) this deal's certificate replaces (re-draw after VOID etc.).",
"type": [
"string",
"null"
]
},
"terms_hash": {
"description": "Optional: \"sha256:<hex>\" of the deal's terms (echoed into the certificate; we never see the terms).",
"type": [
"string",
"null"
]
},
"visibility": {
"description": "Optional: \"public\" (default — anyone can fetch the certificate at its id) or \"parties\" (only you and your invite-token holders). Certificates never contain inputs, only the outcome; choose \"parties\" when the outcome itself is sensitive.",
"type": [
"string",
"null"
]
}
},
"required": [
"api_key",
"algorithm",
"party_labels",
"commit_deadline",
"reveal_deadline"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡create_key
Get a free redeal API key. No signup, no email — this is the entire onboarding. The key is shown once; store it. Use it as api_key in create_deal.
入力スキーマ
{
"type": "object",
"properties": {}
}🟢get_certificate(credential, deal_id)
Fetch the signed fairness certificate for a finished deal (state CERTIFIED). Includes the labelled signature (es256 or ed25519) and transparency-log inclusion proof. Verify it with verify_certificate.
入力スキーマ
{
"type": "object",
"properties": {
"credential": {
"description": "Your API key (initiator) or any party's invite token for this deal.",
"type": "string"
},
"deal_id": {
"description": "The deal id (d_...).",
"type": "string"
}
},
"required": [
"credential",
"deal_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_deal(credential, deal_id)
Read a deal's public state: protocol state (OPEN/COMMITTING/REVEALING/CERTIFIED/VOID/EXPIRED), who has committed/revealed, deadlines, result, and certificate_id once issued. Inputs of other parties are never exposed.
入力スキーマ
{
"type": "object",
"properties": {
"credential": {
"description": "Your API key (initiator) or any party's invite token for this deal.",
"type": "string"
},
"deal_id": {
"description": "The deal id (d_...).",
"type": "string"
}
},
"required": [
"credential",
"deal_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_entropy(credential, deal_id)
Finish a random.v1 deal once every party has revealed: redeal fetches the deal's pre-declared drand round from the public League of Entropy beacon (fixed at creation, publicly cross-checkable), computes the draw, and issues the certificate. Call this after the last reveal_input; the deal rests in REVEALING until you do. Idempotent — safe to retry.
入力スキーマ
{
"type": "object",
"properties": {
"credential": {
"description": "Your API key (initiator) or any party's invite token for this deal.",
"type": "string"
},
"deal_id": {
"description": "The deal id (d_...).",
"type": "string"
}
},
"required": [
"credential",
"deal_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_public_certificate(cert_id)
Fetch a certificate's full JSON (outcome included) by id. Works for public deals (the default). Parties-only deals and unknown ids both return NOT_FOUND. To re-verify the computation itself, use verify_certificate (checks) or the CLI re-runner with the parties' inputs.
入力スキーマ
{
"type": "object",
"properties": {
"cert_id": {
"description": "The certificate id (c_...). Verification is free and always will be.",
"type": "string"
}
},
"required": [
"cert_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_algorithms
List redeal's algorithms (split.v1 fixed-budget fair division, random.v1 verifiable random selection, shapley.v1 Shapley shares, auction.v1 sealed-bid second-price auctions) with their input contracts and the published test vectors (served inline — the same fixtures the engine test suite runs). Read this before creating a deal.
入力スキーマ
{
"type": "object",
"properties": {}
}🟢reveal_input(deal_id, idempotency_key, input, invite_token, salt)
Reveal your committed input. It must hash to your earlier commitment. When the last party reveals, the deal computes and the fairness certificate is issued automatically — fetch it with get_certificate.
入力スキーマ
{
"type": "object",
"properties": {
"deal_id": {
"description": "The deal id (d_...).",
"type": "string"
},
"idempotency_key": {
"description": "Optional: retries with the same key + same arguments replay the original response.",
"type": [
"string",
"null"
]
},
"input": {
"description": "Your algorithm input exactly as committed (any JSON value). split.v1: {\"valuations\": {...}} — your valuations must sum to exactly 1000; random.v1: {\"nonce\": \"<hex>\"}; shapley.v1: {\"accept\": true|false}; auction.v1: {\"bid\": <integer>}."
},
"invite_token": {
"description": "The invite token for YOUR party, from create_deal's response.",
"type": "string"
},
"salt": {
"description": "Your hex salt from commitment time. Omit (or empty) for open-mode deals.",
"type": [
"string",
"null"
]
}
},
"required": [
"invite_token",
"deal_id",
"input"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢validate_input(deal_id, input, invite_token)
Validate your algorithm input against the deal's contract BEFORE you commit. A commitment binds the exact input bytes — a contract-violating input (e.g. split.v1 valuations not summing to exactly 1000) can never be corrected afterwards and the deal will VOID at the reveal deadline. Always validate first, then compute_commitment_tool, then commit_input. Read-only: nothing is stored or changed.
入力スキーマ
{
"type": "object",
"properties": {
"deal_id": {
"description": "The deal id (d_...).",
"type": "string"
},
"input": {
"description": "The algorithm input you plan to commit (e.g. {\"valuations\": {\"<item_id>\": <points>}} for split.v1 — every party's valuations must sum to exactly 1000). Validated against the deal's algorithm and declared params; nothing is stored."
},
"invite_token": {
"description": "The invite token for YOUR party, from create_deal's response.",
"type": "string"
}
},
"required": [
"invite_token",
"deal_id",
"input"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢verify_certificate(cert_id)
Verify a redeal certificate by id: signature check (current or published legacy key) + transparency-log inclusion check, reported per check. Free, no credential required, always.
入力スキーマ
{
"type": "object",
"properties": {
"cert_id": {
"description": "The certificate id (c_...). Verification is free and always will be.",
"type": "string"
}
},
"required": [
"cert_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス