← Catalog

Cyan Eclipse Feedforge

Converts a merchant's messy catalog into an agent-grade product feed with per-attribute lineage: every attribute records {value, source_field, rule_id, source_value} and verify_feed recomputes each byte-for-byte from the source rows and the documented deterministic rule set. LOCAL/fixture scope only — local engine over caller-supplied rows/CSV/JSON + bundled fixtures; deterministic transforms only, no LLM calls, no network calls; attributes no rule can produce are absent, never invented, and unmapped source fields are reported.

In developmentMCP serverCERTIFIED (local, fixture)Trust & Receipts Commerce Readiness

Vendor: Cyan Eclipse Technologies · Platforms: MCP over stdio

Certification scope

CERTIFIED (local, fixture) — Verity independent re-bench 2026-10-26, REBENCH-1 of the v0.1.1 Bench Fix D1 round (repo @ 1e41e3f): full prior suite 98/98 PASS, 0 FAIL (P1 11/11 · P2 14/14 · P3 6/6 · P4 3/3 · P5 55/55 · P6 6/6 · P7 3/3), defects list empty, plus expanded wrong-type fuzz 156/156 PASS on one persistent server process with a liveness ping (list_rules → 12 rules) after every vector. D1 (HIGH — the verify_feed supplied-feed path performed no type validation; five malformed feed objects raised unhandled TypeError/AttributeError and killed the server process) CLOSED: the 5 original crash vectors (list/dict catalog_id; entries:[123]; entries:"abc"; attributes-as-string) all return clean ToolErrors with no process death, verified in the prior suite AND verbatim in the expanded fuzz (supplied-feed deep shapes 23 vectors; 8 wrong value types × every argument of all 5 tools = 80 vectors; raw protocol attacks — non-string tool names, non-dict arguments, malformed/truncated JSON lines — server keeps answering after each). Behavior preservation PASS: fixture transform seals to feed_18337452aa65cc76 (full hash 18337452aa65cc76eb57c986e0d8f3ff58f2d6b389a09cf16df9d33cee9e94a5) over catalog cat_5820376e0fc71b86 — exactly SPEC §4.1 — and deep-equals the bench's independent recompute (85 attributes, 9 entries; CSV fixture also deep-equals + VERIFIED); spot recompute of SHOE-001/price_cents, MUG-002/availability, BAG-009/category, LAP-003/weight_grams, TEE-004/category matches feed values + explain_attribute provenance; tamper semantics preserved 9/9 (missing entries/attributes/unmapped_fields/feed_hash and partial provenance records are MISMATCH, never validation errors; untampered copies by-object and by-feed_id VERIFIED). Prior verdict on v0.1.0 (VERDICT.md): CONDITIONAL (local, fixture), 93/98 — the novel mechanism itself passed without exception (byte-for-byte independent recompute of all 85 fixture attributes, provenance always resolving to the real raw source value, absent-never-invented, tamper naming on value AND provenance, determinism, complete 99-call explain sweep); the sole condition was the D1 fix + P5 re-bench, now closed. Informational carry-overs, non-blocking (unchanged from v0.1): currency tokenization is a substring match ("100 EURO" yields EUR; SPEC does not define tokenization — recommend SPEC v0.2 state the token rule explicitly); duplicate product ids are both kept and explain_attribute resolves a duplicated product_key to the first entry; ragged-CSV extra cells beyond the header are discarded by the csv.DictReader restkey path (no field name, nothing to report). Scope = LOCAL/fixture only: local engine over caller-supplied rows/CSV/JSON + bundled fixtures; deterministic transforms only — no LLM calls, no network calls; no live catalogs benched or implied; $49/mo is a pricing term for the future hosted form only — no payment/checkout/hosting code.

What it does

Tools

ingest_cataloglist_rulestransform_feedverify_feedexplain_attribute

Problems it addresses

Not tested

Evaluation-intake listing

This listing records the tool's place in the Bazaar's evaluation and monitoring pipeline, with the evidence gathered so far printed above — verdict, scope, and not-tested items included. It is not sold on this site, and its presence in the catalog is not a claim beyond that evidence. The service behind every verdict is the bench: what a bench run buys →