Catalog Attribute Normalizer

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

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
80%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,037Tokens (tool definitions)
~9.0 KBTypical response size
Moderate attention impact (0.81% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "catalog-normalizer": {
      "url": "https://acjlabs-catalog-normalizer.acjlabs.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://acjlabs-catalog-normalizer.acjlabs.workers.dev/mcpstreamable-http
https://catalog-normalizer.acjlabs.com/mcpstreamable-http

What it can do

Tool inventory

Tools (1)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢normalize_catalog(products, target_taxonomies)

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.

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#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "schema_version": {
                "type": "string",
                "const": "2.0"
              },
              "source_title": {
                "type": "string"
              },
              "category_paths": {
                "type": "object",
                "properties": {
                  "google": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "leaf_id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "confidence": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "path",
                      "leaf_id",
                      "confidence"
                    ],
                    "additionalProperties": false
                  },
                  "shopify": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "leaf_id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "confidence": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "path",
                      "leaf_id",
                      "confidence"
                    ],
                    "additionalProperties": false
                  },
                  "amazon": {
                    "type": "object",
                    "properties": {
                      "path": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "leaf_id": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "confidence": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "path",
                      "leaf_id",
                      "confidence"
                    ],
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              },
              "attributes": {
                "type": "object",
                "properties": {
                  "size": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string"
                      },
                      "provenance": {
                        "type": "string",
                        "enum": [
                          "canonicalized",
                          "extracted"
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "provenance"
                    ],
                    "additionalProperties": false
                  },
                  "color": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string"
                      },
                      "provenance": {
                        "type": "string",
                        "enum": [
                          "canonicalized",
                          "extracted"
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "provenance"
                    ],
                    "additionalProperties": false
                  },
                  "material": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string"
                      },
                      "provenance": {
                        "type": "string",
                        "enum": [
                          "canonicalized",
                          "extracted"
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "provenance"
                    ],
                    "additionalProperties": false
                  },
                  "gender": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string"
                      },
                      "provenance": {
                        "type": "string",
                        "enum": [
                          "canonicalized",
                          "extracted"
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "provenance"
                    ],
                    "additionalProperties": false
                  },
                  "sleeve_length": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "type": "string"
                      },
                      "provenance": {
                        "type": "string",
                        "enum": [
                          "canonicalized",
                          "extracted"
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "provenance"
                    ],
                    "additionalProperties": false
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "schema_version",
              "source_title",
              "category_paths",
              "attributes"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "error": {
                "type": "string"
              },
              "source_title": {
                "type": "string"
              }
            },
            "required": [
              "error",
              "source_title"
            ],
            "additionalProperties": false
          }
        ]
      }
    }
  },
  "required": [
    "results"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded1 tools
verifiedversion not recorded1 tools
verifiedversion not recorded1 tools
verifiedversion not recorded1 tools