{"name":"com.acjlabs/catalog-normalizer","slug":"acjlabs-catalog-normalizer","title":"Catalog Attribute Normalizer","description":"Catalog attribute normalizer, taxonomy-grounded — no fabricated Google/Shopify category IDs.","url":"https://mcp.market/server/acjlabs-catalog-normalizer","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce"],"presence":{"score":23,"stars":2,"forks":0,"downloads_week":null,"last_push_at":"2026-08-08T08:31:09.000Z","license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T03:40:47.378Z","last_ok_at":"2026-11-04T03:40:47.378Z","latency_ms":45},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/acjlabs/catalog-normalizer","website":"https://acjlabs.com/products","version":"0.1.2","remotes":[{"type":"streamable-http","url":"https://catalog-normalizer.acjlabs.com/mcp"}],"packages":[],"tools":[{"name":"normalize_catalog","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"products":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"title":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":5000},"raw_attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","maxLength":1000}}},"required":["title","description","raw_attributes"]}},"target_taxonomies":{"minItems":1,"type":"array","items":{"type":"string","enum":["google","shopify","amazon"]}}},"required":["products","target_taxonomies"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-24T17:22:17.132Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:22:17.089Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1849ms"]},"poisoning":{"score":15,"max":15,"notes":["1 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":12,"max":15,"notes":["last push 47 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://catalog-normalizer.acjlabs.com/mcp","reachable":true,"authRequired":false,"latencyMs":1849,"serverInfo":{"name":"catalog-attribute-normalizer","version":"0.2.0"}}],"packages":[],"repo":{"found":true,"owner":"acjlabs","repo":"catalog-normalizer","archived":false,"pushedAt":"2026-08-08T08:31:09Z","stars":2,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/269704660?v=4","ownerCreatedAt":"2026-03-20T11:04:37Z"},"icon":{"url":"https://acjlabs.com/images/favicon.png","source":"site","width":512,"height":512},"presence":{"stars":2,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-08-08T08:31:09.000Z","score":23}}}},"grade_history":[],"reviews":[]}