{
  "schema_version": "1.0",
  "name": "ListLoco API Tools",
  "description": "ListLoco localizes e-commerce product listings into marketplace-compliant text and verifies them with a deterministic quality gate. Send a source-language listing; ListLoco applies harness-owned marketplace rules (currently the Amazon DE template), localizes it, and runs deterministic gates (title length, banned words, required attributes, preservation of numbers/model numbers/units, glossary, back-translation drift), returning one structured, machine-checkable result. Hard facts (model numbers, sizes, units) and your brand glossary are preserved. No card data or secrets are handled by this API.",
  "hosted_api_url": "https://listloco.hayasaka.app",
  "openapi_url": "https://listloco.hayasaka.app/openapi.json",
  "rapidapi_url": "https://rapidapi.com/sakaiwork259601/api/listloco",
  "pricing_url": "https://listloco.hayasaka.app/pricing",
  "disclaimer": "Not affiliated with or endorsed by Amazon. Marketplace rule enforcement is based on ListLoco’s own compliance template, not an official Amazon policy.",
  "tools": [
    {
      "name": "localize_listing",
      "description": "Accepts either (1) a bare listing object, or (2) a { listing, ...deps } wrapper. Marketplace rules are always the harness-owned Amazon DE template and are never read from untrusted input. Returns HTTP 200 even when a gate fails (pass=false); the verdict lives in the response body's `pass` field. Requires authentication: via RapidAPI subscription (recommended) or a direct backend API key.",
      "parameters": {
        "type": "object",
        "required": [
          "listing"
        ],
        "properties": {
          "listing": {
            "type": "object",
            "description": "A source-language product listing: localizable text fields (title/description) plus structured attributes (brand/quantity, etc.). Additional properties are allowed.",
            "properties": {
              "title": {
                "type": "string",
                "description": "Product title (subject to the title-length gate)."
              },
              "description": {
                "type": "string",
                "description": "Product description."
              },
              "brand": {
                "type": "string",
                "description": "Brand name (may be a required attribute / glossary-preserved term)."
              },
              "material": {
                "type": "string"
              },
              "size": {
                "type": "string"
              },
              "color": {
                "type": "string"
              },
              "quantity": {
                "type": "number"
              }
            },
            "additionalProperties": true
          },
          "marketplace": {
            "type": "string",
            "description": "Target marketplace id (informational; rules are always the harness-owned template)."
          },
          "sourceLang": {
            "type": "string",
            "description": "Source language (informational)."
          },
          "targetLang": {
            "type": "string",
            "description": "Target language (informational)."
          },
          "glossary": {
            "type": "object",
            "description": "Customer glossary: preserve (terms kept verbatim) and forceTranslations (forced translations).",
            "properties": {
              "preserve": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "forceTranslations": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": true
          },
          "dictionary": {
            "type": "object",
            "description": "Source->target word map used by the default translator.",
            "additionalProperties": {
              "type": "string"
            }
          },
          "backTranslationThreshold": {
            "type": "number",
            "description": "Max back-translation divergence allowed to pass (0-1).",
            "minimum": 0,
            "maximum": 1
          }
        },
        "additionalProperties": false
      }
    }
  ]
}
