makeup.land

Israeli cosmetics retailer: ΔE shade matching, customer wallet, cart, orders, gift cards.

Should I use this

Quality & Safety

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

Findings (3)

  • LOWTool 'get_customer' description lacks action verbin get_customer
  • LOWTool 'list_payment_links' description lacks action verbin list_payment_links
  • LOWTool 'get_customer_best_deals' description lacks action verbin get_customer_best_deals

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,261Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (0.99% 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": {
    "v1": {
      "url": "https://makeup.land/api/mcp"
    }
  }
}

Remote endpoints

https://makeup.land/api/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_products(q, tag, brand, near_hex, hue_family, ...)

Browse the catalog with tag, brand, near_hex (color-distance shade match), hue_family, and sort filters. Bearer becomes required when passing `phone` (rewards projection).

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "description": "Natural-language query. Cross-lingual semantic search — `lipstick`, `שפתון`, `lápiz labial` each return Hebrew-tagged lipsticks (the sets may differ across languages but are semantically equivalent). Prefer this over `tag` for any category lookup that isn't already in exact Hebrew.",
      "type": "string"
    },
    "tag": {
      "description": "Filter by an EXACT tag string (case-insensitive, whitespace-trimmed; no translation, no substring). Tags are Hebrew (e.g. שפתון, ביוטי, עיניים, שפתיים). English category names rarely match — use `q` instead for natural-language queries.",
      "type": "string"
    },
    "brand": {
      "description": "Filter by brand slug or name.",
      "type": "string"
    },
    "near_hex": {
      "description": "Target hex color for shade matching ranked by color distance (redmean-weighted RGB, not CIE ΔE). Examples: '#C2185B', 'E8D4B8'. Each returned product carries a `shade_match: {hex, delta_e}` field with the closest variant swatch and its perceptual distance.",
      "type": "string",
      "pattern": "^#?[0-9A-Fa-f]{6}$"
    },
    "hue_family": {
      "description": "Post-filter on hue family. Must be paired with another filter. `neutral` is not a V1 hue family and is ignored.",
      "type": "string",
      "enum": [
        "red",
        "orange",
        "yellow",
        "green",
        "blue",
        "purple",
        "pink",
        "brown",
        "neutral"
      ]
    },
    "sort": {
      "description": "Sort order. Default: relevance.",
      "type": "string",
      "enum": [
        "price_asc",
        "price_desc",
        "popularity",
        "rating",
        "relevance"
      ]
    },
    "limit": {
      "description": "Page size, default 10.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "page": {
      "description": "1-indexed page number.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "phone": {
      "description": "E.164 phone for per-customer rewards projection. REQUIRES bearer auth. Omit for anonymous catalog browse.",
      "type": "string",
      "pattern": "^\\+\\d{6,15}$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_brands

Return every brand with product counts and slugs. Bearer required.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢validate_gift_card(code)

Check a gift card's remaining balance using its code. Public endpoint — no bearer required (gated on knowledge of the code).

Input Schema

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "minLength": 1,
      "description": "Gift card code (full string as printed on the card)."
    }
  },
  "required": [
    "code"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_customer(phone)

Return tags, ℳ-credit balance, M Club tier for the customer with the given E.164 phone. Bearer required.

Input Schema

{
  "type": "object",
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+\\d{6,15}$",
      "description": "E.164 phone number, e.g. +972501234567."
    }
  },
  "required": [
    "phone"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_cart(phone)

Return the customer's most-recently-updated cart with per-line and total reward projection. Bearer + phone required.

Input Schema

{
  "type": "object",
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+\\d{6,15}$",
      "description": "E.164 phone selecting the customer whose cart to return."
    }
  },
  "required": [
    "phone"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_orders(phone, limit, page)

Recent orders with 6-axis status (order / payment / fulfillment / delivery / return / review). Bearer + phone required.

Input Schema

{
  "type": "object",
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+\\d{6,15}$",
      "description": "E.164 phone selecting the customer."
    },
    "limit": {
      "description": "Page size.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "page": {
      "description": "Ignored: /api/v1/orders has no paging and returns the most recent `limit` orders.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "phone"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_payment_links(phone)

Pending payment_requests on the customer's unpaid orders. Bearer + phone required.

Input Schema

{
  "type": "object",
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+\\d{6,15}$",
      "description": "E.164 phone selecting the customer."
    }
  },
  "required": [
    "phone"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_customer_best_deals(phone, limit)

Top deal projections based on the customer's tags + M Club tier. Bearer + phone required.

Input Schema

{
  "type": "object",
  "properties": {
    "phone": {
      "type": "string",
      "pattern": "^\\+\\d{6,15}$",
      "description": "E.164 phone selecting the customer."
    },
    "limit": {
      "description": "Ignored: /api/v1/customers/best-deals takes no limit.",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "phone"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Recommended Prompts

retrieve_data
Get details about [item] from makeup.land
Expected tools: get_customer
fetch_info
Fetch [information type] using makeup.land
Expected tools: get_customer
list_items
List all [items] available in makeup.land
Expected tools: list_products
browse_collection
Show me the [collection] from makeup.land
Expected tools: list_products
explore_workflow
List available [items], then get details for each one using makeup.land
Expected tools: list_productsget_customer

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools