MCP Server

makeup.land

land.makeup/v1
Commerce & Retail Public & reachable MCP 2025-11-25

What this MCP does

Provides a cosmetics catalog with shade matching and customer-specific carts, orders, rewards, deals, and gift-card validation.

get_cart
Fetch a customer's cart
Return the customer's most-recently-updated cart with per-line and total reward projection. Bearer + phone required.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['phone'], 'properties': {'phone': {'type': 'string', 'pattern': '^\\+\\d{6,15}$', 'description': 'E.164 phone selecting the customer whose cart to return.'}}}
get_customer
Lookup customer by phone
Return tags, ℳ-credit balance, M Club tier for the customer with the given E.164 phone. Bearer required.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['phone'], 'properties': {'phone': {'type': 'string', 'pattern': '^\\+\\d{6,15}$', 'description': 'E.164 phone number, e.g. +972501234567.'}}}
get_customer_best_deals
Personalised best deals for a customer
Top deal projections based on the customer's tags + M Club tier. Bearer + phone required.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['phone'], 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Max deals to return.'}, 'phone': {'type': 'string', 'pattern': '^\\+\\d{6,15}$', 'description': 'E.164 phone selecting the customer.'}}}
list_brands
List all brands
Return every brand with product counts and slugs. Bearer required.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
list_orders
List a customer's orders
Recent orders with 6-axis status (order / payment / fulfillment / delivery / return / review). Bearer + phone required.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['phone'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-indexed page number.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Page size.'}, 'phone': {'type': 'string', 'pattern': '^\\+\\d{6,15}$', 'description': 'E.164 phone selecting the customer.'}}}
list_payment_links
List pending payment links
Pending payment_requests on the customer's unpaid orders. Bearer + phone required.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['phone'], 'properties': {'phone': {'type': 'string', 'pattern': '^\\+\\d{6,15}$', 'description': 'E.164 phone selecting the customer.'}}}
list_products
List / search products
Browse the catalog with tag, brand, near_hex (ΔE shade match), hue_family, and sort filters. Bearer becomes required when passing `phone` (rewards projection).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'q': {'type': 'string', 'description': "Natural-language query. Cross-lingual semantic search â\x80\x94 `lipstick`, `שפת×\x95×\x9f`, `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."}, 'tag': {'type': 'string', 'description': 'Filter by an EXACT tag string (case-insensitive, whitespace-trimmed; no translation, no substring). Tags are Hebrew (e.g. שפת×\x95×\x9f, ×\x91×\x99×\x95×\x98×\x99, ×¢×\x99×\xa0×\x99×\x99×\x9d, שפת×\x99×\x99×\x9d). English category names rarely match â\x80\x94 use `q` instead for natural-language queries.'}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': '1-indexed page number.'}, 'sort': {'enum': ['price_asc', 'price_desc', 'popularity', 'rating', 'relevance'], 'type': 'string', 'description': 'Sort order. Default: relevance.'}, 'brand': {'type': 'string', 'description': 'Filter by brand slug or name.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Page size, default 20.'}, 'phone': {'type': 'string', 'pattern': '^\\+\\d{6,15}$', 'description': 'E.164 phone for per-customer rewards projection. REQUIRES bearer auth. Omit for anonymous catalog browse.'}, 'near_hex': {'type': 'string', 'pattern': '^#?[0-9A-Fa-f]{6}$', 'description': "Target hex color for Î\x94E-ranked shade matching. Examples: '#C2185B', 'E8D4B8'. Each returned product carries a `shade_match: {hex, delta_e}` field with the closest variant swatch and its perceptual distance."}, 'hue_family': {'enum': ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'pink', 'brown', 'neutral'], 'type': 'string', 'description': 'Post-filter on hue family. Must be paired with another filter.'}}}
validate_gift_card
Validate a 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', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['code'], 'properties': {'code': {'type': 'string', 'minLength': 1, 'description': 'Gift card code (full string as printed on the card).'}}}
Added
get_customer_best_deals
Sept. 17, 2026, 12:54 p.m.
Added
list_payment_links
Sept. 17, 2026, 12:54 p.m.
Added
list_orders
Sept. 17, 2026, 12:54 p.m.
Added
get_cart
Sept. 17, 2026, 12:54 p.m.
Added
get_customer
Sept. 17, 2026, 12:54 p.m.
Added
validate_gift_card
Sept. 17, 2026, 12:54 p.m.
Added
list_brands
Sept. 17, 2026, 12:54 p.m.
Added
list_products
Sept. 17, 2026, 12:54 p.m.