Skip to main content
Glama

Tanatasa Beauty

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.

Input Schema

NameRequiredDescriptionDefault
codeNoThe 6-digit code the customer read from their email.
emailNoThe customer's email. Alone: Tanatasa emails them a 6-digit code. With code: signs them in.
guest_tokenNoPrivate guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.
account_tokenNoPrivate 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "anyOf": [
      -    {
      -      "$schema": "http://json-schema.org/draft-07/schema#",
      -      "additionalProperties": true,
      -      "properties": {
      -        "account_token": {
      -          "description": "Private session credential; never display or log.",
      -          "type": "string"
      -        },
      -        "code_sent": {
      -          "type": "boolean"
      -        },
      -        "credit": {
      -          "additionalProperties": true,
      -          "properties": {
      -            "available": {
      -              "description": "Integer SGD cents; 1690 means S$16.90.",
      -              "minimum": 0,
      -              "type": "integer"
      -            },
      -            "currency": {
      -              "const": "SGD",
      -              "type": "string"
      -            },
      -            "lots": {
      -              "items": {
      -                "additionalProperties": true,
      -                "properties": {
      -                  "amount": {
      -                    "description": "Integer SGD cents; 1690 means S$16.90.",
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "expires_at": {
      -                    "type": "string"
      -                  },
      -                  "status": {
      -                    "type": "string"
      -                  },
      -                  "usable_from": {
      -                    "type": [
      -                      "string",
      -                      "null"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "amount",
      -                  "status",
      -                  "usable_from",
      -                  "expires_at"
      -                ],
      -                "type": "object"
      -              },
      -              "type": "array"
      -            },
      -            "money_unit": {
      -              "const": "cents",
      -              "type": "string"
      -            },
      -            "note": {
      -              "type": "string"
      -            },
      -            "pending": {
      -              "description": "Integer SGD cents; 1690 means S$16.90.",
      -              "minimum": 0,
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "currency",
      -            "money_unit",
      -            "available",
      -            "pending",
      -            "lots",
      -            "note"
      -          ],
      -          "type": "object"
      -        },
      -        "email": {
      -          "type": "string"
      -        },
      -        "expires_in_seconds": {
      -          "type": "integer"
      -        },
      -        "signed_in": {
      -          "type": "boolean"
      -        }
      -      },
      -      "required": [
      -        "signed_in"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "additionalProperties": true,
      -      "properties": {
      -        "error": {
      -          "additionalProperties": true,
      -          "properties": {
      -            "code": {
      -              "type": "string"
      -            },
      -            "message": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "code",
      -            "message"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "error"
      -      ],
      -      "type": "object"
      -    }
      -  ],
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "$schema": "http://json-schema.org/draft-07/schema#",
      +      "additionalProperties": true,
      +      "properties": {
      +        "account_token": {
      +          "description": "Private session credential; never display or log.",
      +          "type": "string"
      +        },
      +        "code_sent": {
      +          "type": "boolean"
      +        },
      +        "credit": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "available": {
      +              "description": "Integer SGD cents; 1690 means S$16.90.",
      +              "minimum": 0,
      +              "type": "integer"
      +            },
      +            "currency": {
      +              "const": "SGD",
      +              "type": "string"
      +            },
      +            "lots": {
      +              "items": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "amount": {
      +                    "description": "Integer SGD cents; 1690 means S$16.90.",
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "expires_at": {
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "type": "string"
      +                  },
      +                  "usable_from": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "amount",
      +                  "status",
      +                  "usable_from",
      +                  "expires_at"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "money_unit": {
      +              "const": "cents",
      +              "type": "string"
      +            },
      +            "note": {
      +              "type": "string"
      +            },
      +            "pending": {
      +              "description": "Integer SGD cents; 1690 means S$16.90.",
      +              "minimum": 0,
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "currency",
      +            "money_unit",
      +            "available",
      +            "pending",
      +            "lots",
      +            "note"
      +          ],
      +          "type": "object"
      +        },
      +        "email": {
      +          "type": "string"
      +        },
      +        "expires_in_seconds": {
      +          "type": "integer"
      +        },
      +        "signed_in": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "signed_in"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": true,
      +      "properties": {
      +        "error": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "code",
      +            "message"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "error"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / account_token / description
      Previous value: -"Private account token from sign_in, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit."New value: +"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."
  4. Added

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond annotations: the account_token is private, valid 24 hours and scoped to this session, and only the token-bearing calls can touch credit and orders. The annotations already declare readOnlyHint=false and idempotentHint=false, and the description is consistent with a side-effecting call, but it doesn't warn that re-sending the email triggers another code email or what happens on an invalid code.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the three-mode enumeration is efficient, with every clause carrying payload (token lifetime, what it unlocks, the no-guessing rule). The phrasing of '1) Send email: Tanatasa emails them…' is slightly awkward — the imperative reads like an agent action when it describes the service's response — but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with no output schema and no required parameters, the description covers what each invocation returns (an emailed code, an account_token, referral code plus cashback with expiry dates) and the lifetime of the credential. An agent can select a mode and call it correctly without further information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further by documenting the meaning of parameter combinations (email alone vs. email+code vs. account_token alone) and the different outcome each yields. That combinatorial semantics is not fully spelled out in the schema, particularly the account_token-only mode returning referral code and cashback.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Sign the customer in') and then enumerates the three exact call modes, so an agent knows precisely what each invocation does. It also names the sibling tools whose behavior the resulting token unlocks (quote_cart, create_checkout, list_orders, get_order), which differentiates it from the rest of the toolset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The numbered modes (email only → code is sent; email + code → token returned; token only → referral/cashback shown) function as explicit when-to-use branches, and 'Never guess a code' is a clear prohibition. What is missing is guidance on the alternative path — when an agent should stay on the guest_token flow (create_cart) instead of signing the customer in.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources