Eclipse Bazaar · products.json · verdicts.json · llms.txt

Eclipse Feedforge

Converts a merchant's messy catalog into an agent-grade product feed with per-attribute provenance: 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.

status: in-developmentclass: mcpTrust & ReceiptsCommerce Readiness

Vendor: Cyan Eclipse Technologies

What it does

Tools

ingest_catalog · list_rules · transform_feed · verify_feed · explain_attribute

Platforms

Certification

Bench verdict: CERTIFIED (local, fixture)

Certified 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.

Not tested:

  • Live merchant catalogs or marketplace/catalog API sync (Shopify etc.) — not in v0.1.1 by design (SPEC §7): local engine over caller-supplied rows/CSV/JSON + bundled fixtures only
  • Hosted or remote serving — v0.1.1 is local stdio only; the $49/mo hosted bundle form is a future commercial shape, not a v0.1 feature, and no hosted service is live or sold in v0.1
  • LLM or network calls of any kind — none exist in v0.1.1 by design: deterministic documented rules (R01–R12, rules.json) only; Python 3 standard library only
  • Payment, checkout, hosting, accounts, or billing — none exists in v0.1.1 by design: the $49/mo figure is commercial metadata / a stated pricing term for the future hosted form only
  • Feed publishing or submission to any platform (Google/UCP endpoints etc.) — none exists in v0.1.1; feeds are sealed locally and verified by recompute only

Live state note: Bench evidence: argus-batch-20261026/bench/feedforge/VERDICT.md + REBENCH-1.md (Verity, independent bench over stdio JSON-RPC only, never importing builder code; recompute.py written from SPEC §3/§4 + rules.json alone; builder suite 29/29). This bench issued no test-bench/results scorecard; scorecard_ref is null and no scorecard is claimed or hosted for this product.

Pricing

PRICED — $49/mo hosted bundle pattern, via the Eclipse Bazaar bench-order path only. No checkout, payment, or buy-now link exists for this product, and no hosted service is being sold as live in v0.1: v0.1.1 is the local engine and contains no payment, checkout, hosting, metering, or billing code (the price is a stated term for the future hosted form 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-feedforge-mcp

Registry listing: https://registry.modelcontextprotocol.io/v0.1/servers/io.github.CYAN-ECLIPSE-TECHNOLOGIES-LLC%2Feclipse-feedforge-mcp/versions/0.1.1

Repository: https://github.com/CYAN-ECLIPSE-TECHNOLOGIES-LLC/eclipse-feedforge-mcp

Verify any MCP server in your client configs against this catalog with bazaar check (Eclipse Bazaar MCP / CLI — see llms.txt).