Catalog Attribute Normalizer

com.acjlabs由 acjlabs.com 發布官方發布者v0.1.2更新於 Oct 24, 2026

Catalog attribute normalizer, taxonomy-grounded — no fabricated Google/Shopify category IDs.

已驗證Streamable HTTP可網頁執行資料與分析商業與電商

概覽

AI 產生的概覽

託管型 MCP 伺服器,用來正規化商品目錄屬性,並把商品對應到 Google、Shopify、Amazon 分類體系。

可以做什麼
  • 批次正規化原始商品(標題、描述、原始屬性),輸出統一的尺寸、顏色、材質、性別、袖長等受控詞彙屬性,並標示該值是清理而來還是模型推斷。
  • 依需求把每個商品對應到 Google、Shopify 或 Amazon 分類體系的分類路徑與葉節點 ID,並附上信心分數。
  • 依輸入順序為每個商品回傳一筆結果,單一商品出錯時只回傳該商品的錯誤,不影響整批。
適用情境
適合把來源雜亂、寫法不一的商品資料(Shopify 匯出檔、供應商 CSV、平台擷取資料)整合成一致的屬性與有依據的分類對應,用於商品動態饋給或商家營運工作。
執行需求
遠端 streamable HTTP 端點,不需本機安裝。呼叫工具需要 API 金鑰,透過 Authorization Bearer 標頭傳送;金鑰需以電子郵件自助註冊取得。工具探索不需金鑰。另有選用的 npm 用戶端套件可做具型別的呼叫。
安裝前請注意
API 金鑰在註冊時只顯示一次且無法找回,請立即保存。用量以商品數而非呼叫次數計算:免費額度為每月 500 個商品,超出剩餘額度的整批請求會被直接拒絕並回傳 402。付費方案標示為即將推出。推斷出的屬性值以及低信心或為空的葉節點 ID 應人工確認。Amazon 對應為盡力而為,未經分類體系驗證。商品資料會傳送給第三方託管服務,該服務並非開源。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Catalog Attribute Normalizer,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.acjlabs%2Fcatalog-normalizer/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "catalog-attribute-normalizer": {
      "type": "http",
      "url": "https://catalog-normalizer.acjlabs.com/mcp"
    }
  }
}

README

Catalog Attribute Normalizer

Taxonomy-grounded catalog attribute normalizer — verified against the real Google Product Taxonomy, so it catches the plausible-but-wrong category IDs a generic LLM invents. Messy multi-source catalogs — titles, descriptions, images — in; consistent attributes, units, and grounded category mappings out. For merchant-ops teams and feed-tool developers wrangling a Shopify export, a supplier CSV, and a marketplace scrape that each spell "size" or "material" differently.

What it does

  • Accepts a batch of raw products (title, description, raw_attributes), returns normalized attributes (canonicalized sizes/colors/units) plus category mappings for whichever taxonomies you request (Google Product Taxonomy, Shopify, Amazon).
  • Works as an MCP server (normalize_catalog tool) or a plain HTTPS API.

Example (MCP tool call)

json
{  "tool": "normalize_catalog",  "input": {    "products": [{ "title": "...", "description": "...", "raw_attributes": { "size": "Lrg", "Color": "Navy Blue" } }],    "target_taxonomies": ["google", "shopify"]  }}
json
{  "results": [    {      "schema_version": "2.0",      "source_title": "...",      "category_paths": {        "google": { "path": ["Apparel & Accessories", "Clothing", "Shirts & Tops"], "leaf_id": null, "confidence": 0.9 },        "shopify": { "path": ["Apparel & Accessories", "Clothing", "Tops"], "leaf_id": "aa-3-1", "confidence": 0.85 }      },      "attributes": {        "size": { "value": "L", "provenance": "canonicalized" },        "color": { "value": "navy", "provenance": "canonicalized" }      }    }  ]}

attributes is keyed by a controlled vocabulary (size, color, material, gender, sleeve_length — unrecognized keys are dropped, not passed through under a model-chosen name). Each value's provenance is "canonicalized" when it came from your own raw_attributes input for that product (deterministic cleanup only, no recall) or "extracted" when the model inferred it from the title/description and it wasn't in your input — treat "extracted" values as a suggestion, the same way you'd treat a low-confidence category_paths entry.

Attributes are reliable by construction — canonicalizing values already in your input, not recall. Category classification is retrieval-grounded, not recalled from memory: candidates are retrieved from the real, current Google and Shopify taxonomy files and offered to the model as suggestions, so a leaf_id almost always names a node that actually exists — measured against a 12-product evaluation set, each product checked against both the Google and Shopify taxonomies: 22 of 24 checks (91.7%) exact path + leaf-ID matches. Still treat confidence and a null leaf_id as "worth a quick check," not a guarantee — a leaf_id is only ever returned when the path independently verifies against the real taxonomy file, so a null there is an honest "check this" signal, never a fabricated ID. Amazon has no comprehensive public taxonomy reference file to retrieve candidates from, so it stays best-effort (recall from memory) rather than retrieval-grounded.

Pricing

The free tier is self-serve today; paid plans are opening soon.

  • Free — 500 products/month, no card required. Self-serve today.
  • Pay-as-you-go (opening soon) — $0.01/product, no minimum.
  • Pro (opening soon) — $29/month for 5,000 products (~$0.0058/product effective).

Want a paid plan now? Register your interest and we'll set you up first.

What counts as one unit: one product, not one call. A normalize_catalog call carrying 40 products uses 40 of your monthly allowance; batching is a convenience, not a discount. A batch is all-or-nothing — if it is larger than your remaining balance, the whole call is refused with 402 (the body names required and remaining) and nothing is classified, so you are never billed for a partial result that looks complete. A call that fails outright costs nothing.

Getting a key

The MCP server is live at https://catalog-normalizer.acjlabs.com/mcp (the alternate https://acjlabs-catalog-normalizer.acjlabs.workers.dev/mcp address reaches the same deployment and keeps working, so existing configurations need no change). Free-tier keys self-serve — POST /v1/signup with { "email": "[email protected]" } returns your key directly in the response, good for 500 products/month, no card required. Store it immediately — it is shown once and cannot be recovered if lost (re-signup for a new one). See https://acjlabs-catalog.pages.dev for the same steps plus pricing and a comparison against alternatives. Paid keys provision the same way via a one-time claim link once Pro/pay-as-you-go billing is live.

Connecting it to an MCP client

With Claude Code:

bash
claude mcp add --transport http catalog-normalizer \  https://catalog-normalizer.acjlabs.com/mcp \  --header "Authorization: Bearer YOUR_API_KEY"

Any other MCP client that supports a remote HTTP server with a custom header (Cursor, Cline, VS Code, etc.) works the same way: point it at the URL above with an Authorization: Bearer YOUR_API_KEY header. A gateway or scanner that can only forward the raw key value (no Bearer prefix) also works — both forms authenticate. Tool discovery (initialize/tools/list) doesn't require a key at all; only calling normalize_catalog does.

See docs/quickstart.md for a full copy-paste walkthrough (getting a key, per-client configs, confirming the connection with curl) if you'd rather follow one linear guide.

npm client

Prefer a typed function over hand-rolling MCP JSON-RPC calls? @acjlabs/catalog-attribute-normalizer-client (live on npm) wraps the normalize_catalog tool call:

sh
npm install @acjlabs/catalog-attribute-normalizer-client
ts
import { createCatalogNormalizerClient } from "@acjlabs/catalog-attribute-normalizer-client";
const client = createCatalogNormalizerClient({  baseUrl: "https://catalog-normalizer.acjlabs.com",  apiKey: "...",});const results = await client.normalizeCatalog(products, ["google", "shopify"]);

Why not just use a category classifier?

Category-classification APIs tell you what a product is. They don't touch the messier problem: standardizing attributes across sources that each spell them differently. The vendors that do take on the broader job are enterprise sales-led — demo request, annual contract, no self-serve signup and no public price. See the full comparison, or read why "clean product data" is actually two different problems (canonicalization vs. classification, and why they fail differently).

Source availability & support

This repository hosts the documentation for the hosted service. The service implementation is not open source. Bug reports and feature requests are welcome in this repo's Issues; you can also reach us at [email protected].

來源:README.md,提交 0307ab0

工具

1

normalize_catalog

Normalize Catalog

Normalizes a batch of catalog products (attribute canonicalization/extraction + category-path mapping into the requested target taxonomies: google, shopify, amazon). Returns one result per input product, same order: a NormalizedProduct on success, or { error, source_title } if that specific product's classification failed — one product's failure never voids the rest of the batch. attributes is keyed by a controlled vocabulary (size, color, material, gender, sleeve_length — unrecognized keys are dropped, not passed through under a model-chosen name) and each value carries provenance: "canonicalized" means it came from your own raw_attributes input for that product (deterministic cleanup only, no recall); "extracted" means the model inferred it from the title/description and it wasn't in your input — treat extracted values as a suggestion, not a confirmed fact about the product, the same way you'd treat a low-confidence category_paths entry. category_paths for google and shopify is retrieval-grounded against the real, current taxonomy files (not recalled from memory) — measured at 22/24 (91.7%) exact path+leaf_id matches on a 12-product evaluation set; amazon has no comparable public reference file, so it stays best-effort. Each entry's confidence (0-1) and leaf_id (null when not confident it matches a real node) are the honest signal regardless of taxonomy — treat a low-confidence or null-leaf_id result as a suggestion worth a quick human check, not a confirmed classification.

輸入參數products必填target_taxonomies必填

版本歷史

1
  1. v0.1.2最新Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Acjlabs 整合