# Tanatasa Beauty (remote · tanatasa.sg)

Search Singapore skincare and beauty, build guest carts, and prepare buyer checkout links.

- Trust score: 57/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `tanatasa.sg`: 57/100 (this document), [markdown](https://verifymcp.io/servers/sg-tanatasa-tanatasa/tanatasa.md), [page](https://verifymcp.io/servers/sg-tanatasa-tanatasa/tanatasa)

## Channel facts

- Endpoint: `https://tanatasa.sg/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (set_cart_item).
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 40/100
  - 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3952 tokens (~219/item across 18 items; 17 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 25/100
  - Stability check failed: schema churn in the 11 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 8 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 17 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the Tanatasa Beauty MCP server?

Tanatasa Beauty is a hosted endpoint at https://tanatasa.sg/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http sg-tanatasa-tanatasa 'https://tanatasa.sg/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "sg-tanatasa-tanatasa": {
      "url": "https://tanatasa.sg/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sg-tanatasa-tanatasa": {
      "type": "http",
      "url": "https://tanatasa.sg/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.sg-tanatasa-tanatasa]
url = "https://tanatasa.sg/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sg-tanatasa-tanatasa": {
      "type": "remote",
      "url": "https://tanatasa.sg/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sg-tanatasa-tanatasa --url 'https://tanatasa.sg/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  sg-tanatasa-tanatasa:
    url: "https://tanatasa.sg/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "sg-tanatasa-tanatasa": {
      "Transport": "http",
      "Url": "https://tanatasa.sg/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add sg-tanatasa-tanatasa -t streamable-http -u 'https://tanatasa.sg/mcp'
```

### Other

```json
{
  "mcpServers": {
    "sg-tanatasa-tanatasa": {
      "type": "http",
      "url": "https://tanatasa.sg/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 19 to 22.

### 2026-11-02 (score 56, +1)

No change was recorded against any check on this day. Stability & Change Management went from 12 to 15.

### 2026-11-01 (score 55, −2)

- [security regression] Stability: 0.20 → fail
- [security regression] A breaking change shipped without a version bump: still 1.0.0
- [security regression] Tool “set_cart_coupon” was removed
- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “create_cart” rewrote its description, which is the text the model reads
- [security] Tool “create_checkout” rewrote its description, which is the text the model reads
- [security] Tool “get_order” rewrote its description, which is the text the model reads
- [security] Tool “get_product” rewrote its description, which is the text the model reads
- [security] Tool “prepare_payment” rewrote its description, which is the text the model reads
- [security] Tool “quote_cart” rewrote its description, which is the text the model reads
- [security] Tool “search_products” rewrote its description, which is the text the model reads
- [security] Tool “set_cart_item” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 175 → 219
- [functional] New tool “search_products_batch”
- [functional] New tool “start_checkout”
- [cosmetic] “get_product” added an optional parameter “guest_token”
- [cosmetic] “search_products” added an optional parameter “guest_token”
- [cosmetic] “search_products” added an optional parameter “max_delivery_days”
- [cosmetic] “search_products” added an optional parameter “sort”

### 2026-10-31 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 56, +2)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “checkout_session” rewrote its description, which is the text the model reads
- [security] Tool “create_cart” rewrote its description, which is the text the model reads
- [security] Tool “create_checkout” rewrote its description, which is the text the model reads
- [security] Tool “get_cart” rewrote its description, which is the text the model reads
- [security] Tool “get_checkout” rewrote its description, which is the text the model reads
- [security] Tool “get_order” rewrote its description, which is the text the model reads
- [security] Tool “get_product” rewrote its description, which is the text the model reads
- [security] Tool “prepare_payment” rewrote its description, which is the text the model reads
- [security] Tool “quote_cart” rewrote its description, which is the text the model reads
- [security] Tool “search_products” rewrote its description, which is the text the model reads
- [security] Tool “set_cart_coupon” rewrote its description, which is the text the model reads
- [security] Tool “set_cart_item” rewrote its description, which is the text the model reads
- [security] Tool “set_checkout_details” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: pass → fail
- [functional improvement] Tool coverage: 23% → 100%
- [functional] Schema quality: good → excellent
- [functional] New tool “list_orders”
- [functional] New tool “request_order_change”
- [functional] New tool “sign_in”
- [cosmetic] “create_cart” added an optional parameter “items”
- [cosmetic] “create_checkout” added an optional parameter “account_token”
- [cosmetic] “create_checkout” added an optional parameter “coupon_code”
- [cosmetic] “create_checkout” added an optional parameter “details”
- [cosmetic] “create_checkout” added an optional parameter “use_credit”
- [cosmetic] “get_order” added an optional parameter “account_token”
- [cosmetic] “quote_cart” added an optional parameter “account_token”
- [cosmetic] “quote_cart” added an optional parameter “coupon_code”
- [cosmetic] “quote_cart” added an optional parameter “use_credit”
- [cosmetic] “checkout_session” reworded the description of “checkout_session”
- [cosmetic] “checkout_session” reworded the description of “idempotency_key”
- [cosmetic] “create_checkout” reworded the description of “cart_id”
- [cosmetic] “create_checkout” reworded the description of “expected_total”
- [cosmetic] “create_checkout” reworded the description of “idempotency_key”
- [cosmetic] “create_checkout” reworded the description of “version”
- [cosmetic] “get_cart” reworded the description of “cart_id”
- [cosmetic] “get_checkout” reworded the description of “checkout_id”
- [cosmetic] “get_order” reworded the description of “order_id”
- [cosmetic] “get_product” reworded the description of “product”
- [cosmetic] “prepare_payment” reworded the description of “buyer_confirmed”
- [cosmetic] “prepare_payment” reworded the description of “checkout_id”
- [cosmetic] “prepare_payment” reworded the description of “details_version”
- [cosmetic] “prepare_payment” reworded the description of “expected_total”
- [cosmetic] “prepare_payment” reworded the description of “idempotency_key”
- [cosmetic] “quote_cart” reworded the description of “cart_id”
- [cosmetic] “search_products” reworded the description of “brand”
- [cosmetic] “search_products” reworded the description of “category”
- [cosmetic] “search_products” reworded the description of “in_stock”
- [cosmetic] “search_products” reworded the description of “ingredient”
- [cosmetic] “search_products” reworded the description of “limit”
- [cosmetic] “search_products” reworded the description of “max_price”
- [cosmetic] “search_products” reworded the description of “min_price”
- [cosmetic] “search_products” reworded the description of “page”
- [cosmetic] “search_products” reworded the description of “purpose”
- [cosmetic] “search_products” reworded the description of “q”
- [cosmetic] “search_products” reworded the description of “skin_type”
- [cosmetic] “set_cart_coupon” reworded the description of “cart_id”
- [cosmetic] “set_cart_coupon” reworded the description of “coupon_code”
- [cosmetic] “set_cart_coupon” reworded the description of “version”
- [cosmetic] “set_cart_item” reworded the description of “cart_id”
- [cosmetic] “set_cart_item” reworded the description of “quantity”
- [cosmetic] “set_cart_item” reworded the description of “variant_id”
- [cosmetic] “set_cart_item” reworded the description of “version”
- [cosmetic] “set_checkout_details” reworded the description of “checkout_id”
- [cosmetic] “set_checkout_details” reworded the description of “details”
- [cosmetic] “set_checkout_details” reworded the description of “details_version”

### 2026-10-29 (score 54, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 53, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “set_checkout_details”, which the server declares destructive
- [security] Tool “checkout_session” rewrote its description, which is the text the model reads
- [security] Tool “create_cart” rewrote its description, which is the text the model reads
- [security] Tool “create_checkout” rewrote its description, which is the text the model reads
- [security] Tool “get_order” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 61 → 99
- [functional improvement] Tool coverage: 0% → 23%
- [functional] Schema quality: fair → good
- [functional] New tool “get_checkout”
- [functional] New tool “prepare_payment”
- [cosmetic] “checkout_session” added an optional parameter “guest_token”
- [cosmetic] “create_cart” added an optional parameter “guest_token”
- [cosmetic] “create_checkout” added an optional parameter “guest_token”
- [cosmetic] “get_cart” added an optional parameter “guest_token”
- [cosmetic] “get_order” added an optional parameter “guest_token”
- [cosmetic] “quote_cart” added an optional parameter “guest_token”
- [cosmetic] “set_cart_coupon” added an optional parameter “guest_token”
- [cosmetic] “set_cart_item” added an optional parameter “guest_token”

### 2026-10-27 (score 52, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “checkout_session” rewrote its description, which is the text the model reads
- [security] Tool “create_cart” rewrote its description, which is the text the model reads
- [security] Tool “get_order” rewrote its description, which is the text the model reads
- [functional regression] Tool coverage: 22% → 0%
- [functional improvement] Schema quality: 91 → 61
- [functional] Schema quality: good → fair
- [cosmetic] “checkout_session” dropped the optional parameter “guest_token”
- [cosmetic] “create_cart” dropped the optional parameter “guest_token”
- [cosmetic] “create_checkout” dropped the optional parameter “guest_token”
- [cosmetic] “get_cart” dropped the optional parameter “guest_token”
- [cosmetic] “get_order” dropped the optional parameter “guest_token”
- [cosmetic] “quote_cart” dropped the optional parameter “guest_token”
- [cosmetic] “set_cart_coupon” dropped the optional parameter “guest_token”
- [cosmetic] “set_cart_item” dropped the optional parameter “guest_token”

## MCP tools (17)

### `search_products` (~437 tokens)

Find Tanatasa products to buy for Singapore delivery: pantry, household, health, personal care and beauty, 100% authentic. Delivery is free anywhere in Singapore with no minimum spend, so prices shown are delivered prices. Searches by words, brand, category, purpose, skin type, ingredient, stock, price (SGD cents) and delivery time; sort by price, unit_price or delivery. Each result has variant_id, price, unit pricing, stock and estimated_delivery_date; store-wide terms are in offer_terms. Follow next_page for more.

Input parameters:

- `brand` (string): Brand name or slug.
- `category` (string): Category name or slug, e.g. "pantry" or "skincare".
- `guest_token` (string): Optional. Your guest_token from create_cart, if you have one, so this lookup belongs to your shopping session. Not needed to search or read products.
- `in_stock` (boolean): Only variants available now.
- `ingredient` (string): A key ingredient, e.g. "ceramides".
- `limit` (integer): Results per page (1-50).
- `max_delivery_days` (integer): Only items delivered within this many Singapore working days (each result shows its estimated_delivery_date).
- `max_price` (integer): Highest price in SGD cents (S$40 is 4000).
- `min_price` (integer): Lowest price in SGD cents.
- `page` (integer): Result page; use next_page from the previous result.
- `purpose` (string): What it is for, e.g. "sensitive-skin".
- `q` (string): Search words, e.g. "cerave cleanser" or "gift for dad under $40". A price phrase sets max_price when it is absent.
- `skin_type` (string): e.g. "oily", "dry", "sensitive".
- `sort` (string): relevance (default), price (lowest first), price_desc, unit_price (lowest price per 100ml/100g first; items without a comparable size last) or delivery (fastest first).

### `search_products_batch` (~156 tokens)

Search for a whole shopping list in one call: up to 10 queries, each with the search_products filters (5 results each by default). Delivery is free anywhere in Singapore with no minimum spend, so prices shown are delivered prices. Then start_checkout with the chosen variant_ids.

Input parameters:

- `guest_token` (string): Optional. Your guest_token from create_cart, if you have one, so this lookup belongs to your shopping session. Not needed to search or read products.
- `queries` (array, required): One entry per shopping-list item (up to 10), e.g. [{"q": "rice 5kg"}, {"q": "dishwashing liquid", "max_price": 600}]. Each takes the search_products filters.

### `get_product` (~125 tokens)

Read one product in full: description, ingredients, usage, images, every variant with price, unit pricing, stock and estimated delivery date, plus offer_terms (free Singapore delivery, returns, authenticity). product accepts a product ID, product slug, variant slug or SKU.

Input parameters:

- `guest_token` (string): Optional. Your guest_token from create_cart, if you have one, so this lookup belongs to your shopping session. Not needed to search or read products.
- `product` (string, required): A product ID, product slug, variant slug or SKU, e.g. from search_products.

### `start_checkout` (~331 tokens)

Fastest way to buy: send the whole basket (items [{variant_id, quantity}]) and the buyer's details (name, email, phone, Singapore address) in one call. Creates the cart, quotes it and starts checkout; no account needed. Returns checkout_id, details_version, total, buyer_summary and, for guests, a private guest_token to pass on later calls. Delivery is free anywhere in Singapore with no minimum spend, so prices shown are delivered prices. Does not charge anything. Next: show the buyer buyer_summary; after they approve, prepare_payment.

Input parameters:

- `account_token` (string): Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit, and opens their orders.
- `coupon_code`: A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it.
- `details` (object): The buyer's contact and Singapore delivery details. Include them: the result is then ready for the buyer's approval and prepare_payment.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `idempotency_key` (string, required): A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase.
- `items` (array, required): The whole basket: up to 20 variants. A variant listed twice is added together.
- `use_credit` (boolean): Use the signed-in customer's cashback credit (default true).

### `create_cart` (~153 tokens)

Start a cart to build up step by step (or use start_checkout to buy in one call); no account needed. Pass items [{variant_id, quantity}] to fill it at once. Returns cart_id, version, a quote (prices, free delivery, total) and, for guests, a private guest_token: pass guest_token on every later call and never share it.

Input parameters:

- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `items` (array): Optional: start the cart with these items (up to 20 variants), instead of calling set_cart_item for each. A variant listed twice is added together.

### `get_cart` (~78 tokens)

Read a cart's items, codes, current version and whether a checkout has locked it. Use quote_cart for prices and totals.

Input parameters:

- `cart_id` (string, required): cart_id from create_cart.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.

### `set_cart_item` (~193 tokens)

Add, change or remove one item in an existing cart. quantity is the total wanted (not an increment); 0 removes it. Send the cart's current version; the result has the new one and a fresh quote. If the version is stale, the error includes current_cart; if stock is short, it includes available_quantity and alternatives. Up to 20 variants and 99 of each.

Input parameters:

- `cart_id` (string, required): cart_id from create_cart.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `quantity` (integer, required): The total quantity wanted (not an increment); 0 removes the item.
- `variant_id` (integer, required): variant_id from search_products or get_product.
- `version` (integer, required): The cart's current version, from the last cart result. Each edit increments it.

### `quote_cart` (~219 tokens)

Price the cart now: current prices, discounts, stock, free Singapore delivery (shipping 0) and the delivered total in SGD cents, with buyer_summary to show the buyer. Stock is not reserved. coupon_code previews a coupon or a friend's referral code without saving it. With account_token, applies the customer's cashback credit unless use_credit is false. Next: create_checkout with this version and total.

Input parameters:

- `account_token` (string): Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit, and opens their orders.
- `cart_id` (string, required): cart_id from create_cart.
- `coupon_code`: A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `use_credit` (boolean): Use the signed-in customer's cashback credit (default true).

### `create_checkout` (~348 tokens)

Lock the quoted cart for purchase. Send the quote's version, its total as expected_total, a new idempotency_key and details (the buyer's name, email, phone and Singapore address; collect them first). coupon_code applies a code. Returns checkout_id, details_version, buyer_summary and a review link, valid 24 hours. Does not charge anything. Next: show the buyer buyer_summary, then prepare_payment.

Input parameters:

- `account_token` (string): Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit, and opens their orders.
- `cart_id` (string, required): cart_id from create_cart.
- `coupon_code`: A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it.
- `details` (object): Optional: the buyer's contact and Singapore delivery details, saved with the checkout (details_version 1) instead of a separate set_checkout_details call. The buyer still confirms them and the total…
- `expected_total` (integer, required): The total from that quote, in SGD cents. Checkout refuses if the total changed.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `idempotency_key` (string, required): A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase.
- `use_credit` (boolean): Use the signed-in customer's cashback credit (default true).
- `version` (integer, required): The version from the quote_cart result you are checking out.

### `get_checkout` (~93 tokens)

Read a checkout: saved contact and delivery details, details_version, total, status and the ways to finish (review link, payment link). These details and links are private to the buyer.

Input parameters:

- `checkout_id` (string, required): checkout_id from create_checkout or checkout_session.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.

### `set_checkout_details` (~137 tokens)

Save the buyer's contact and Singapore delivery details on a checkout. Send its current details_version; the result has the new one. Does not charge anything. Details can't change once payment preparation starts.

Input parameters:

- `checkout_id` (string, required): checkout_id from create_checkout or checkout_session.
- `details` (object, required): Contact and Singapore delivery details exactly as the buyer gave them.
- `details_version` (integer, required): The checkout's current details_version from get_checkout (0 before any details are saved).
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.

### `prepare_payment` (~230 tokens)

Get the hosted Stripe payment link, only after the buyer approved buyer_summary (details and total): send buyer_confirmed=true, that details_version, that total and an idempotency_key (reuse it on retries, and to get a fresh link if an unpaid link expired). Creates an unpaid order; nothing is charged until the buyer, or an agent they explicitly authorized, pays on Stripe. The result says when the link expires. Then check get_order.

Input parameters:

- `buyer_confirmed` (boolean, required): true only after the buyer confirmed these details and this total.
- `checkout_id` (string, required): checkout_id from create_checkout or checkout_session.
- `details_version` (integer, required): The details_version the buyer confirmed.
- `expected_total` (integer, required): The total the buyer confirmed, in SGD cents.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `idempotency_key` (string, required): A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase.

### `get_order` (~213 tokens)

Check an order: payment and delivery status, items, tracking and any cancellation or return request. Works for orders this session or account connection placed (guest_token for guests) and, with account_token, any of the signed-in customer's orders. Once paid it includes referral: show the buyer referral.display_text exactly as written: it gives them their referral code and a message for them to send to friends and family (referral.share_message); never present that message as addressed to the buyer. Read-only; to cancel or return, use request_order_change.

Input parameters:

- `account_token` (string): Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit, and opens their orders.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `order_id` (string, required): order_id from prepare_payment, get_checkout or list_orders, e.g. TN-…

### `sign_in` (~225 tokens)

Sign the customer in with a code from their email. 1) Send email: Tanatasa emails them a 6-digit code. 2) Send email and the code they read to you: returns a private account_token (24 hours, this session only). 3) Send only account_token: shows their referral code and cashback credit with expiry dates. The token lets quote_cart and create_checkout use their credit and list_orders and get_order open their orders. Never guess a code.

Input parameters:

- `account_token` (string): Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit, and opens their orders.
- `code` (string): The 6-digit code the customer read from their email.
- `email` (string): The customer's email. Alone: Tanatasa emails them a 6-digit code. With code: signs them in.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.

### `list_orders` (~162 tokens)

List the signed-in customer's paid orders, newest first, from the website or any assistant: status, total, items, tracking and change requests. Needs account_token from sign_in (or an account-linked connection). Follow next_page for older orders.

Input parameters:

- `account_token` (string): Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit, and opens their orders.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `limit` (integer): Orders per page (default 10, up to 50).
- `page` (integer): Page; use next_page from the previous result.

### `request_order_change` (~241 tokens)

Ask Tanatasa to cancel a paid order that hasn't shipped (kind cancel) or to take back a shipped or delivered order (kind return), with the customer's reason. Staff review it and email the customer; nothing is refunded or changed until then. Repeating the call returns the open request. Unpaid orders need no cancellation: they are never charged.

Input parameters:

- `account_token` (string): Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit, and opens their orders.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `items` (array): For a return of only some items: variant_id and quantity from get_order. Omit for the whole order.
- `kind` (string, required): cancel: a paid order that hasn't shipped. return: a shipped or delivered order.
- `order_id` (string, required): order_id from prepare_payment, get_checkout or list_orders, e.g. TN-…
- `reason` (string, required): The customer's reason, in their words.

### `checkout_session` (~152 tokens)

Shortcut from product feed items to a checkout: send feed item ids (tanatasa-variant-<id>) and quantities. Guests call create_cart first and pass its guest_token. Item names and prices you send are ignored; Tanatasa's catalogue is authoritative. Returns a checkout and review link; continue with set_checkout_details and prepare_payment.

Input parameters:

- `checkout_session` (object, required): The items to buy: up to 20 feed items with quantities.
- `guest_token` (string): Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
- `idempotency_key` (string): A new random key per purchase; retry with the same key.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/sg-tanatasa-tanatasa/tanatasa#diagnostics

## Score history

- 2026-11-05: 57
- 2026-11-04: 57
- 2026-11-03: 56
- 2026-11-02: 56
- 2026-11-01: 55
- 2026-10-31: 57
- 2026-10-30: 56
- 2026-10-29: 54
- 2026-10-28: 53
- 2026-10-27: 52
- 2026-10-26: 52
- 2026-10-25: 52

## Common questions

### What is the Tanatasa Beauty MCP server?

Tanatasa Beauty is an MCP server listed in the public MCP registry as sg.tanatasa/tanatasa. Search Singapore skincare and beauty, build guest carts, and prepare buyer checkout links. This page covers its hosted endpoint (https://tanatasa.sg/mcp).

### Is the Tanatasa Beauty MCP server safe to use?

Tanatasa Beauty scores 57 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Tanatasa Beauty MCP server expose?

Tanatasa Beauty exposes 17 tools: search_products, search_products_batch, get_product, start_checkout, create_cart, and 12 more. Their descriptions and schemas cost roughly 3,493 tokens of context every time the server is loaded.

### Does the Tanatasa Beauty MCP server require authentication?

No. We connected to Tanatasa Beauty without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Tanatasa Beauty MCP server still maintained?

Tanatasa Beauty is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://tanatasa.sg/mcp
- Website: https://tanatasa.sg/ai-agent-docs
- Changelog RSS feed: https://verifymcp.io/servers/sg-tanatasa-tanatasa/tanatasa.xml
- Changelog JSON feed: https://verifymcp.io/servers/sg-tanatasa-tanatasa/tanatasa.json
- HTML version of this page: https://verifymcp.io/servers/sg-tanatasa-tanatasa/tanatasa
