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 集成