# Tanatasa Beauty

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

- name: sg.tanatasa/tanatasa
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 80/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/sg.tanatasa%2Ftanatasa
- tools: https://api.protogrid.dev/v1/servers/sg.tanatasa%2Ftanatasa/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

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


## Trust

- hygiene: 80
- liveness: 98
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-96% +updated-20d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 80/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 17 of 17 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 7,925 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 50 (weight 15)

- warn `stability.changes`: 55 tool changes in 30 days
- fail `stability.rug_pull`: 18 tools kept their name but changed most of their description in 30 days; review before trusting them
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 17, about 7,925 tokens to load them all
- tool set hash: c130a7661f1bc602241f2e10400e8367
- tools last changed: 2026-11-01T08:37:32.628Z
- badge: [![protogrid quality](https://protogrid.dev/badge/sg.tanatasa/tanatasa.svg)](https://protogrid.dev/servers/sg.tanatasa/tanatasa)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-01 `set_cart_coupon` removed
  - Older way to apply a code: saves a coupon or a friend's referral code to the cart (null removes both). Send the current version. Prefer coupon_code on quote_cart and create_checkout. Automatic discounts apply either way.
- 2026-11-01 `get_order` changed (description)
  - before: 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.message: show it to the customer exactly as written. Read-only; to cancel or return, use request_order_change.
  - after: 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.
- 2026-11-01 `prepare_payment` changed (description)
  - before: Get the hosted Stripe payment link, only after the buyer confirmed the saved details and total: send buyer_confirmed=true, that details_version, that total and an idempotency_key (reuse it on retries). Creates an unpaid order; nothing is charged until the buyer, or an agent they explicitly authorized, pays on Stripe. Then poll get_order.
  - after: 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.
- 2026-11-01 `set_checkout_details` changed (inputSchema)
- 2026-11-01 `create_checkout` changed (description, inputSchema)
  - before: Lock the quoted cart for purchase. Send the quote's version, its total as expected_total and a new idempotency_key; coupon_code applies a code. Pass details (the buyer's contact and Singapore delivery details) to save them here instead of calling set_checkout_details. Returns checkout_id, details_version and a review link. Does not charge anything. Next: show the buyer the details and total, then prepare_payment.
  - after: 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.
- 2026-11-01 `quote_cart` changed (description)
  - before: Price the cart now: current prices, discounts, stock, free Singapore delivery and the total, all in SGD cents. 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.
  - after: 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.
- 2026-11-01 `set_cart_item` changed (description)
  - before: 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. If the version is stale, the error includes current_cart. Up to 20 variants and 99 of each; stock is checked.
  - after: 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.
- 2026-11-01 `create_cart` changed (description)
  - before: Start shopping: creates a cart, no account needed. Pass items [{variant_id, quantity}] to start it with the whole basket in one call. Returns cart_id, version and, for guests, a private guest_token: pass guest_token on every later call and never share it. Next: quote_cart.
  - after: 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.
- 2026-11-01 `start_checkout` added
  - 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.
- 2026-11-01 `get_product` changed (description)
  - before: Read one product in full: description, ingredients, usage, images, every variant with price and stock, delivery estimate and return policy. product accepts a product ID, product slug, variant slug or SKU.
  - after: 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.

Full history: https://api.protogrid.dev/v1/servers/sg.tanatasa%2Ftanatasa/changes

## Remotes

- https://tanatasa.sg/mcp (streamable-http, auth none, reachable true, uptime30d 0.96153843)

## Packages

_none_

## Tools (17)

- `checkout_session`: 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.
- `create_cart`: 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.
- `create_checkout`: 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.
- `get_cart`: Read a cart's items, codes, current version and whether a checkout has locked it. Use quote_cart for prices and totals.
- `get_checkout`: 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.
- `get_order`: 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.
- `get_product`: 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.
- `list_orders`: 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.
- `prepare_payment`: 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.
- `quote_cart`: 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.
- `request_order_change`: 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.
- `search_products`: 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.
- `search_products_batch`: 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.
- `set_cart_item`: 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.
- `set_checkout_details`: 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.
- `sign_in`: 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.
- `start_checkout`: 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.
