makeup.land

by edwinux

248 downloads
Not rated
GitHub

About

Israeli professional cosmetics retailer. MCP server exposes ΔE-ranked shade matching, customer wallet lookup, cart and order tools, and gift-card validation. Catalog tools work anonymously; customer-data tools require a bearer token issued via shop@makeup.land.

Details

Author
edwinux
Downloads
248
Categories
Other, Search

- Catalog browse with ΔE‑ranked shade matching, tag/brand filters, and sort.
- Gift‑card balance validation by code.
- Brand directory of 140+ brands (Yossi Bitton, da Vinci, INGLOT, NYX, etc.).
- Customer profile, ℳ‑credit wallet, and M Club tier.
- Most‑recent cart retrieval with reward projection.
- Order history with 6‑axis status.
- Pending payment links and personalised deal suggestions.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name makeup.land
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Call the API endpoint with JSON‑RPC requests. Anonymous catalog browsing works without a token; for authenticated tools you need a Bearer token issued out‑of‑band by emailing shop@makeup.land. See the quickstart curl example in the README for an anonymous list_products call.

list_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).

list_brands

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

validate_gift_card

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

get_customer

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

get_cart

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

list_orders

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

list_payment_links

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

get_customer_best_deals

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

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "makeup.land": {
            "makeup.land": {
                "command": "npx",
                "args": [
                    "-y",
                    "mcp-remote",
                    "https://makeup.land/api/mcp"
                ]
            }
        }
    }
}

McpServers

{
    "makeup.land": {
        "command": "npx",
        "args": [
            "-y",
            "mcp-remote",
            "https://makeup.land/api/mcp"
        ]
    }
}

Public metadata + integrator guide for themakeup.landModel Context Protocol server.

makeup.land is an Israeli professional cosmetics retailer. Our MCP server lets AI agents (Claude Desktop, Cursor, ChatGPT browsing, LangGraph apps, custom integrations) browse our catalog, look up customers, fetch carts, and check gift cards — all through the Model Context Protocol's standard JSON-RPC interface.

The MCP server is hosted athttps://makeup.land/api/mcpas a Streamable-HTTP endpoint (protocol version 2025-06-18, stateless). The catalog tools work anonymously; the customer-data tools require a bearer token issued viashop@makeup.land.

This repo is thepublic faceof the integration — the server runs from our private storefront codebase, but everything an integrator needs (tool inventory, auth model, connection snippets, error envelopes) lives here.

# Anonymous catalog browse — find lipsticks similar to a target shade curl -X POST https://makeup.land/api/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "list_products", "arguments": { "near_hex": "#C2185B", "q": "lipstick", "limit": 5 } } }' # List all Yossi Bitton (B Cosmic) products — bearer required curl -X POST https://makeup.land/api/mcp \ -H 'Authorization: Bearer ml_<your-token>' \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "list_products", "arguments": { "brand": "yossi-bitton", "limit": 20 } } }'

Use themcp-remotebridge (Claude Desktop reads MCP via stdio; this bridges to our HTTP endpoint):

{ "mcpServers": { "makeup.land": { "command": "npx", "args": [ "-y", "mcp-remote", "https://makeup.land/api/mcp", "--header", "Authorization:Bearer ml_<your-token>" ] } } }

Anonymous catalog-only access (skip the bearer):

{ "mcpServers": { "makeup.land": { "command": "npx", "args": ["-y", "mcp-remote", "https://makeup.land/api/mcp"] } } }

Cursor reads from~/.cursor/mcp.json(or per-workspace.cursor/mcp.json). Same shape as Claude Desktop above.

The catalog spans ~150 brands. Some highlights:

- Yossi Bitton (B Cosmic)— Israeli professional makeup line by stylistYossi Bitton. makeup.land is the official online store.
- da Vinci (Defet)— Authorised Israeli distributor for
da Vinci'sGerman-made professional cosmetic brushes.
- Yarin Shahaf— Cross-catalog partner (
yarin-shahaf.co.il/מייקאפלנד).
- INGLOT, NYX, Bourjois, Maybelline, L'Oréal, and 140+ more.

Uselist_brandsto enumerate all of them at runtime.

The flagship feature. Every variant in our catalog carries swatch hex colours; thelist_productstool'snear_hexargument runs a perceptual-distance ranking (CIE ΔE 2000) so an agent can answer "find a lipstick that looks like #C2185B" in one call. Pair withhue_family=warm|cool|neutralto refine.

Each returned product carries ashade_match: {hex, delta_e}field identifying the closest variant swatch and its perceptual distance — so on a 40-shade palette, you know which specific shade was the match (and how close it is), not just which palette.

This is the surface that makes makeup.land's MCP server uniquely useful for shopping agents — no other Israeli cosmetics retailer exposes shade matching through MCP, and very few retailers globally expose it at all.

Sendq(natural language) instead oftagfor category lookups.qis a cross-lingual semantic search —q="lipstick",q="שפתון", andq="lápiz labial"each return Hebrew-tagged lipsticks. The surfaced product set may differ across query languages (the system ranks by semantic relevance, not by language-canonicalisation), but each is a valid lipstick page.tagis a literal-string filter against Hebrew-stored tags only; English category words will not match it.

The bearer auth isNOT OAuthdespite Smithery's autodetection — tokens are issued out-of-band via email. Request one by writing toshop@makeup.landwith your integration use case.

The phone identifier (?phone=+972...) selectswhich customer'sresources to return. The bearer authenticateswhois calling. Neither alone is sufficient — the bearer alone can't enumerate customer records, and a phone alone returns401 Unauthorized. This is the V1 REST API's contract; the MCP server matches it exactly.

Tool errors propagate from our V1 REST error envelope as text content withisError: true:

{ "content": [{ "type": "text", "text": "{ \"error\": \"...\", \"error_code\": \"...\" }" }], "isError": true }

Stableerror_codevalues are documented in the OpenAPI spec (components.schemas.Error). Common codes:

- unauthorized— missing or invalid bearer
- scope_mismatch— token has wrong scope for the tool
- read_only_token— write attempted with a read-only token
- customer_not_found— phone doesn't match any customer
- endpoint_not_found— typo or removed V1 path
- insufficient_stock— variant out of stock (relevant once mutating tools ship)
- insufficient_credits— wallet balance can't cover a credits-tender purchase

- Read-only.No cart writes, no gift-card redeem, no customer registration. v2 adds these.
- Stateless.Every request initialises a fresh MCP session.
- Synchronous.tools/callblocks on the V1 internal fetch. Most calls return <500ms; semantic search can take up to 2s.
- No SSE streamingfor partial results.

- Smithery
-
Official MCP Registry(asland.makeup/v1)
-
makeup.land integrator guide

- Token requests:shop@makeup.land
- Bug reports + feature requests:open an issue on this repo
- General inquiries:shop@makeup.land

The metadata and documentation in this repo are released underMITso they can be redistributed by MCP catalog aggregators.

The underlying MCP server, the makeup.land storefront, and our product catalog remain proprietary — seemakeup.land/terms-of-service.

Real-time product search across Southeast Asia with 3.8M+ items — the first SEA e-commerce MCP server

Personal wine cellar — list, add, recommend, scan and search 100k+ wines. Available via npx and as an OAuth-protected remote MCP at mcp.emile.wine.

Romanian Christian bookstore catalog with 900+ translated books. Search, recommend, devotional access via MCP.

Greetwell curates authentic local experiences in over 500 destinations, and its MCP server lets you search, explore details, check availability, get complementary recommendations, and book activities.

MCP server for Amazon shopping - AI agents can search products, check prices, add to cart, and manage shopping lists.

enables searching and booking car rentals

Paid remote MCP endpoint for persistent AI agent memory, site analytics, pricing, checkout status, and search-readiness operations.

Search and buy products across thousands of online stores using the SearchAgora universal product search engine.

Scrapes and searches for products on Amazon.

Integrates with the Amazon Product Advertising API to search for products.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.