
Eclipse Boomerang
Governed returns for agent purchases: a return is authorized only if it binds to the original purchase receipt + mandate, with condition/serial attestation at return initiation. LOCAL/fixture scope only — authorization is a sealed local record, not a real-world returns/logistics action; nothing is shipped, received, refunded, or restocked, and no merchant or carrier is contacted.
status: in-developmentclass: mcpTrust & ReceiptsAgent Commerce / Procurement
Vendor: Cyan Eclipse Technologies
What it does
- Novel mechanism — return mandate cryptographically bound to the original order receipt, with condition/serial attestation at return initiation (SPEC §3): register_purchase seals order_ref + serial + amount + the full mandate record + the full receipt record together and derives receipt_hash + mandate_hash inside the sealed purchase; initiate_return authorizes only when the sealed purchase exists and its seal recomputes, the presented serial equals the sealed serial, the sealed mandate's scope explicitly includes returns, and a well-formed condition attestation {condition, attested_by, ts} is present. The sealed return record carries receipt_hash + mandate_hash + purchase_seal copied from the sealed purchase, so the return → receipt + mandate binding is recomputable by verify_return without trusting caller assertions. Bench: bindings independently recomputed from fixture data (purchase_id, both hashes, purchase HMAC seal, return HMAC seal — all match server values); seal-transplant forgery onto altered amount/serial/hashes/attestation rejected INVALID x8.
- A receipt-free return can never authorize: no purchase record → DENIED / NO_PURCHASE_RECORD, and there is no override tool, no manual-approve path, and no way to mint a return except through the check chain (existence → seal → serial → mandate scope → attestation, in spec order). Bench N-check: wrong/case-variant/whitespace/empty serial → SERIAL_MISMATCH x4; mandate without returns scope → MANDATE_SCOPE_NO_RETURNS (including smuggled returns-mandate + force flags in the initiate args — the sealed mandate governs); missing/malformed attestation → ATTESTATION_MISSING x9; tampered purchase store (amount edited, mandate edited to ADD returns scope, receipt_hash edited) → SEAL_INVALID, never authorized. Denial is a result, not an exception, with a closed reason-code set (NO_PURCHASE_RECORD · SERIAL_MISMATCH · MANDATE_SCOPE_NO_RETURNS · ATTESTATION_MISSING · SEAL_INVALID); every denial is logged for list_denials. Override audit: tools/list = exactly the 5 spec tools; 10 override-shaped calls (admin_authorize, force_return, manual_approve, refund_now, …) all NO_SUCH_TOOL.
- Process hardening (v0.1.1 fix for bench defect D1, MEDIUM): strict argument-type validation at dispatch against the advertised inputSchemas (ids must be strings; amount must be an integer, booleans rejected; mandate/receipt must be objects) plus store-level backstops and a catch-all tools/call path — no malformed input of any shape may terminate the process. Re-bench: 6/6 original crash vectors clean in fresh processes, 56-case wrong-type fuzz sweep + 15 protocol-garbage cases, server alive and answering tools/list (5 tools) after every case. Spec'd domain semantics preserved under the hardening: a malformed condition_attestation is still DENIED / ATTESTATION_MISSING (not a dispatch error) and null ids keep their §5 domain outcomes.
- Response-shape conformance (v0.1.1 fix for bench defect D2, LOW): every response on every branch — including all verify_return INVALID paths and list_denials (response + stored denial entries) — now carries scope: "LOCAL/fixture" and seal_type: "HMAC-SHA256 demo (local key)" uniformly, per SPEC §5. Re-bench D2 audit reached and checked every INVALID branch via independently re-sealed records.
- Honest scope: LOCAL/fixture only — v0.1.1 operates on caller-supplied fixture purchase records (receipt + mandate); no network calls; no merchant, carrier, payment, or logistics system is contacted. Authorization is a sealed local record, NOT a real-world returns/logistics action: it does not ship, receive, refund, restock, or instruct any third party. Seals are HMAC-SHA256 with a local demo key (runtime-generated into gitignored keys/demo.key, mode 0600; bench hygiene: demo key value absent from tree + full git history). Python 3 standard library only; MCP over stdio; exactly 5 tools; no payment or checkout code — the $1.00/return term is a pricing statement only.
Tools
register_purchase · initiate_return · verify_return · get_return · list_denials
Platforms
- MCP over stdio
Certification
Bench verdict: CERTIFIED (local, fixture)
Certified scope: CERTIFIED (local, fixture) — Verity independent bench 2026-10-26, REBENCH-1 of the v0.1.1 Bench Fix D1/D2 round (repo @ 985fe9f): 57/57 re-bench checks PASS, and the prior full bench suite re-run against v0.1.1 scores 83/83 (v0.1: 80/83). D1 (MEDIUM — unhashable-typed ids crashed the stdio process via uncaught TypeError at store lookups) CLOSED: the bench's crash vectors (list/dict purchase_id / return_id across initiate_return, get_return, verify_return) each return a clean JSON-RPC error in a fresh process with the server alive and answering tools/list afterwards; a 56-case wrong-type fuzz sweep over every advertised argument of all five tools plus 15 protocol-garbage cases killed no process; bool-as-int amount rejected as a type error, never accepted as 1. D2 (LOW — seal_type missing on verify_return INVALID branches and list_denials vs SPEC §5 'all responses carry scope + seal_type') CLOSED: every verify_return branch (VALID and all INVALID paths, reached via independently re-sealed records) and the list_denials response + stored denial entries now carry both fields uniformly. Mechanism spot-check PASS, semantics unshifted: happy path AUTHORIZED with the return record's receipt_hash + mandate_hash + purchase_seal identical to the sealed purchase and verify_return VALID; wrong serial → DENIED / SERIAL_MISMATCH. Prior verdict on v0.1.0 (VERDICT.md): CONDITIONAL (local, fixture), bench suite 80/83, the SPEC §3 novel mechanism passing in full (every bypass denied with the spec'd code, binding independently recomputed, seal-transplant forgery rejected x8, override audit: exactly the 5 spec tools and 10 override-shaped calls all NO_SUCH_TOOL) with defects D1 + D2 — both closed by this re-bench per the prior verdict's stated upgrade path. Scope = LOCAL/fixture only: caller-supplied fixture purchase records (receipt + mandate), stdio transport, HMAC-SHA256 demo seal with a local demo key (keys/demo.key, gitignored, mode 0600). Authorization is a sealed local record, NOT a real-world returns/logistics action — it does not ship, receive, refund, restock, or instruct any third party, and no merchant, carrier, payment, or logistics system is contacted; nothing about real merchant/carrier/refund integration is claimed by the product or tested here.
Not tested:
- Real-world returns, logistics, refund, or restock action — not in v0.1.1 by design (SPEC §7 non-goals): no merchant, carrier, payment, or logistics system is contacted and no third party is instructed; authorization is a sealed local record only
- Hosted or remote serving — v0.1.1 is local stdio only, operating on caller-supplied fixture purchase records
- Payment, checkout, or per-return metering enforcement — none exists in v0.1.1 by design: the $1.00/return term is commercial metadata (Procure per-order pattern); no payment or checkout code is in the server
- Production key custody — seals use an HMAC-SHA256 demo key generated locally (gitignored keys/demo.key); no production key claim is made
Live state note: Bench evidence: argus-batch-20261026/bench/boomerang/VERDICT.md + REBENCH-1.md (Verity, independent bench over stdio JSON-RPC only, independent hashlib/hmac recomputation, no repo imports; fresh server process per D1 vector and per fuzz case). This bench issued no test-bench/results scorecard; scorecard_ref is null and no scorecard is claimed or hosted for this product.
Pricing
PRICED — $1.00/return (per executed return, Procure per-order pattern), via the Eclipse Bazaar bench-order path only. No checkout, payment, or buy-now link exists for this product; v0.1.1 contains no payment or checkout code (the price is a stated term only). Repository is PRIVATE (priced-product policy).
Install / verify
No install command is published for this product in the catalog or its registry record.
Official MCP Registry name: io.github.CYAN-ECLIPSE-TECHNOLOGIES-LLC/eclipse-boomerang-mcp
Registry listing: https://registry.modelcontextprotocol.io/v0.1/servers/io.github.CYAN-ECLIPSE-TECHNOLOGIES-LLC%2Feclipse-boomerang-mcp/versions/0.1.1
Repository: https://github.com/CYAN-ECLIPSE-TECHNOLOGIES-LLC/eclipse-boomerang-mcp
Verify any MCP server in your client configs against this catalog with bazaar check (Eclipse Bazaar MCP / CLI — see llms.txt).