Tanatasa Beauty
Server Details
Search Singapore skincare and beauty, build guest carts, and prepare buyer checkout links.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 17 tools
Most tools map to distinct resources and workflow stages, but the checkout entry points overlap: checkout_session, start_checkout, and create_checkout all initiate checkout from different starting points, and create_cart plus checkout_session can both be guest entry paths. Descriptions clarify the sequence, but an agent could still misselect between the shortcut tools.
Nearly all names are snake_case verb_noun patterns such as create_cart, get_checkout, set_cart_item, and search_products_batch. checkout_session deviates as a noun phrase, and create_checkout/start_checkout/checkout_session form a slightly less predictable cluster.
17 tools is at the heavy end of the borderline 16-25 range. The purchase lifecycle justifies many of them, but checkout_session and start_checkout are redundant shortcut tools that could be consolidated.
The surface covers discovery (search, batch search, get product), cart lifecycle (create, get, update, quote), checkout (create, details, payment), orders (get, list), account sign-in, and post-purchase cancellation/return requests. No significant lifecycle gaps are apparent for guest or signed-in shopping flows.
Available Tools
17 toolscheckout_sessionAInspect
Shortcut from product feed items to a checkout: send feed item ids (tanatasa-variant-) 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.
| Name | Required | Description | Default |
|---|---|---|---|
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| idempotency_key | No | A new random key per purchase; retry with the same key. | |
| checkout_session | Yes | The items to buy: up to 20 feed items with quantities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: submitted names and prices are ignored, the Tanatasa catalogue is authoritative, and the call returns a checkout and review link. It does not add much about idempotency or permissions, but annotations already cover safety and idempotency hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four efficient sentences, front-loads the purpose, then gives prerequisites, input behavior, and next steps. Every sentence adds useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested checkout-creation tool with no output schema, the description covers what the tool does, the guest prerequisite, the authoritative catalogue behavior, the return value, and the continuation workflow. Remaining details such as item limits are already supplied by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents parameters well. The description adds meaningful semantics by explaining that item names and prices are ignored and that the catalogue is authoritative, though it does not clarify the role of all optional nested item fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and input source: creating a checkout from product feed items by sending item ids and quantities. It implies a distinct shortcut path, but does not explicitly compare itself with the sibling create_checkout, so sibling differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context, including the guest prerequisite to call create_cart first and pass guest_token, and names the follow-up tools set_checkout_details and prepare_payment. It lacks an explicit statement of when to use this instead of create_checkout or other alternatives, so guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cartAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | 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. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly=false, destructive=false, openWorld=true), and the description adds substantive context beyond them: the returned fields (cart_id, version, quote, guest_token), the guest_token lifecycle requirement to pass it on every later call, and a confidentiality warning never to share it. This is exactly the security/usage context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the alternative, and every clause carries information. It is a single dense run-on with nested parentheses, though, so the return-value and guest_token guidance would scan better as separate sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating what is returned (cart_id, version, quote with prices/free delivery/total, guest_token). Combined with the account-free note and token handling, an agent has everything needed to call it and use the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents items and guest_token. The description still adds value by showing the items shape inline and, more importantly, explaining that guest_token comes from create_cart and must be supplied on subsequent cart/checkout calls — semantics the schema field description only partially captures.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Start a cart'), explains what it does in one line, and explicitly contrasts with the sibling start_checkout for the one-shot purchase case. An agent can distinguish it from create_checkout/start_checkout without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: build step by step with this tool, or use start_checkout to buy in one call, and pass items to avoid repeated set_cart_item calls. It also states 'no account needed', removing a prerequisite the agent might otherwise look for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_checkoutAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cart_id | Yes | cart_id from create_cart. | |
| details | No | 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 before prepare_payment. | |
| version | Yes | The version from the quote_cart result you are checking out. | |
| use_credit | No | Use the signed-in customer's cashback credit (default true). | |
| coupon_code | No | A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| account_token | No | 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. | |
| expected_total | Yes | The total from that quote, in SGD cents. Checkout refuses if the total changed. | |
| idempotency_key | Yes | A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only declare non-readOnly, idempotent, non-destructive, open-world): it discloses that checkout refuses if the total changed, that the review link is valid 24 hours, that nothing is charged, and that the idempotency key must be reused only on retry of the same purchase. These are exactly the operational facts an agent needs and none are in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action, then requirements, then return values, then the explicit next step. The telegraphic style is dense but every clause carries a distinct operational fact; nothing is restated from the schema gratuitously.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter mutation with nested objects and no output schema, the description compensates by naming the return fields (checkout_id, details_version, buyer_summary, review link) and their 24-hour validity. Combined with full schema coverage, an agent has everything needed to call this correctly and hand off to prepare_payment.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds real signal by pinning expected_total to "that quote's total" and framing coupon_code as apply-here/preview-in-quote_cart and details as a substitute for a separate set_checkout_details call. It does not explain use_credit or the token choice (guest_token vs account_token), which remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Lock the quoted cart for purchase") and immediately positions it against the siblings that surround it: quote_cart computes the total, create_checkout locks it, prepare_payment comes after. An agent can distinguish it from start_checkout/quote_cart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the prerequisite ("Send the quote's version, its total as expected_total... collect them first") and the explicit successor workflow ("Next: show the buyer buyer_summary, then prepare_payment"). It also carves out the negative case: "Does not charge anything," so the agent knows this is not the payment step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cartARead-onlyIdempotentInspect
Read a cart's items, codes, current version and whether a checkout has locked it. Use quote_cart for prices and totals.
| Name | Required | Description | Default |
|---|---|---|---|
| cart_id | Yes | cart_id from create_cart. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered structurally. The description adds value beyond that by disclosing the shape of the returned state, notably the current version and whether a checkout has locked the cart — a lock indicator an agent would not otherwise anticipate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the read scope is front-loaded and the sibling routing follows immediately. Every clause carries information an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned fields (items, codes, version, lock status). Both parameters are documented at 100% coverage, so nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so cart_id (sourced from create_cart) and guest_token (64-hex guest session token) are already fully documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (cart) and enumerates what is retrieved: items, codes, current version, and checkout lock state. It also explicitly separates this from quote_cart, so an agent can distinguish it from the pricing sibling without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use quote_cart for prices and totals" gives an explicit alternative and the condition that selects it, which is exactly the routing an agent needs. It stops short of stating when a cart would not be found or when guest_token is required versus optional, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_checkoutARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| checkout_id | Yes | checkout_id from create_checkout or checkout_session. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds useful context beyond annotations by stating that the checkout details and completion links are private to the buyer, which is an access/privacy constraint not captured in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then lists the key returned data in a compact sentence. The privacy note is short and earns its place by adding access context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description enumerates the important return values (contact/delivery details, details_version, total, status, review and payment links) and notes their privacy. Annotations cover safety and idempotency, and the input schema covers parameters, so the definition is complete enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both checkout_id and guest_token are already well documented in the input schema. The description does not add parameter-specific meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Read) and resource (checkout), then enumerates the fields returned: contact and delivery details, details_version, total, status, and completion links. It is clear what the tool does, but it does not explicitly distinguish itself from siblings like get_cart, get_order, or checkout_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as checkout_session, get_order, or get_cart. The description implies a read operation on a checkout, but it does not name alternatives or provide conditions for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | order_id from prepare_payment, get_checkout or list_orders, e.g. TN-… | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| account_token | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description still adds genuine value the annotations don't: the auth-token prerequisites and, critically, the referral presentation rules (show referral.display_text exactly, never address share_message to the buyer). It doesn't cover error/invalid-token behavior, which keeps it just below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and auth rules are front-loaded, and the conditional (for paying/paid) referral guidance follows logically. The referral sentences are dense but each carries actionable presentation rules, so the length is largely justified rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must summarize returns, which it does by enumerating status, items, tracking, cancellation/return, and referral data. Combined with the auth guidance, an agent has enough to call it correctly; only error-condition behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are documented in the schema, setting the baseline at 3. The description reinforces the guest_token/account_token distinction in prose and ties order_id to the flow, adding a bit of accessible context beyond the raw schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check an order') and enumerates exactly what is returned: payment/delivery status, items, tracking, cancellation/return requests. It also explicitly names the sibling request_order_change for cancel/return actions, so an agent can distinguish it from that tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when each auth path applies: guest_token for orders placed this session, account_token for any of the signed-in customer's orders. It names the alternative (request_order_change) and the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | A product ID, product slug, variant slug or SKU, e.g. from search_products. | |
| guest_token | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds real behavioral value by naming the enriched sections returned (variant-level stock, estimated delivery date, offer_terms with free Singapore delivery/returns/authenticity), which tells the agent this is a heavy read rather than a thin lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource leading; the long field enumeration earns its place because there is no output schema. Slightly dense but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content and does so thoroughly, including variant and offer_terms detail. Minor gaps remain — no mention of error behavior for an unresolvable identifier or handling of unavailable products — but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's note that product accepts an ID, product slug, variant slug or SKU essentially restates the schema's own description, adding emphasis on identifier flexibility but no new syntax or format guidance; guest_token is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one product in full') and then enumerates the payload — description, ingredients, usage, images, all variants with price/unit pricing/stock/delivery, plus offer_terms. This is unmistakably the single-product detail tool, distinct from search_products and the cart/checkout siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'one product in full' framing makes the usage context clear: retrieve complete detail for a single already-identified product, rather than browse or search. It does not explicitly say 'use search_products first to find the ID' or state exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page; use next_page from the previous result. | |
| limit | No | Orders per page (default 10, up to 50). | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| account_token | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is fully covered. The description usefully adds ordering (newest first), the returned fields (status, total, items, tracking, change requests) and the auth requirement, but adds little else about rate limits or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the core operation front-loaded and no redundancy. The clause 'from the website or any assistant' is mildly vague filler, keeping it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by enumerating the returned fields, and it covers auth and pagination. A reader still has to infer whether guest sessions can call it, a small remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented, including the guest_token/account_token distinction. The description only echoes the account_token prerequisite and the next_page mechanic, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the signed-in customer's paid orders') with scope ('newest first') and the fields returned. It never names a sibling such as get_order for single-order lookup, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ('Needs account_token from sign_in (or an account-linked connection)') and pagination direction ('Follow next_page for older orders'). It doesn't state when to prefer get_order or whether guest_token alone is valid here, so no exclusions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_paymentAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| checkout_id | Yes | checkout_id from create_checkout or checkout_session. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| expected_total | Yes | The total the buyer confirmed, in SGD cents. | |
| buyer_confirmed | Yes | true only after the buyer confirmed these details and this total. | |
| details_version | Yes | The details_version the buyer confirmed. | |
| idempotency_key | Yes | A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the side effect (creates an unpaid order), that no money moves until payment on Stripe, that the response carries a link expiry, and how the idempotency key behaves on retries versus an expired link. The phrasing about reusing the key to obtain a fresh link after expiry is slightly compressed and could be misread, which keeps this just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the action and the gate, and nearly every clause carries information (precondition, side effect, expiry, retry rule, next step). The nested parenthetical about the idempotency key is the one spot where compression costs a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with no output schema, it covers the critical unknowns: the confirmation prerequisite, that nothing is charged, that a link with an expiry is returned, and what to call next. It leaves stale details_version / error behavior implicit, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns more by explaining the cross-parameter relationship — that buyer_confirmed, details_version and expected_total must all reflect the same buyer approval. It adds intent rather than repeating field formats, though the exact mismatch/error semantics are not covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the hosted Stripe payment link') plus the precondition that gates it, so the agent knows exactly what this call produces. The follow-up pointer to get_order, plus the fact that it consumes buyer_summary, differentiates it from the checkout/cart siblings without needing their schemas opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when: only after the buyer approved buyer_summary, with buyer_confirmed=true matching that details_version and total. It also gives sequencing ('Then check get_order') and retry guidance for the idempotency_key, so the ordering against siblings is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_cartARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cart_id | Yes | cart_id from create_cart. | |
| use_credit | No | Use the signed-in customer's cashback credit (default true). | |
| coupon_code | No | A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| account_token | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations by disclosing that stock is not reserved, that a coupon is previewed without being saved, and that cashback credit is applied only when account_token is present unless use_credit is false. These are exactly the side-effect nuances an agent needs before pricing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the outcome and packed with useful detail, but the single dense run-on sentence with a trailing 'Next:' cue is slightly crowded. Every clause still carries information, so waste is minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates what comes back (prices, discounts, stock, shipping 0, total in SGD cents, buyer_summary) and tells the agent the next call. Nothing material is missing for a 5-param quote tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds behavioral meaning the schema cannot: use_credit only matters with account_token, and coupon_code is preview-only here. cart_id and guest_token handling are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Price the cart now') plus the exact outputs: current prices, discounts, stock, Singapore delivery, delivered total in SGD cents, and buyer_summary. This differentiates it cleanly from siblings like get_cart (read state) and create_checkout (commits the order).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says coupon_code only previews here while create_checkout applies it, and closes with 'Next: create_checkout with this version and total', giving clear sequencing. It stops short of naming get_cart or explaining when a quote is unnecessary, but the routing is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_order_changeAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | cancel: a paid order that hasn't shipped. return: a shipped or delivered order. | |
| items | No | For a return of only some items: variant_id and quantity from get_order. Omit for the whole order. | |
| reason | Yes | The customer's reason, in their words. | |
| order_id | Yes | order_id from prepare_payment, get_checkout or list_orders, e.g. TN-… | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| account_token | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the approval workflow (staff review, email to customer), that no refund or state change occurs until review, and that repeated calls return the existing open request. This gives real safety/expectation context for a non-read-only tool whose destructiveHint=false could otherwise mislead about immediate effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, each front-loading the essential fact (what it does, the two kinds, the review gate, retry behavior, unpaid edge case). No filler and no repetition of schema content beyond what is needed for context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what happens on success (open request returned, staff review pending) and the retry semantics. Combined with a fully documented 6-parameter schema, nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the enum meanings, partial-return items, and token patterns are already documented in the schema. The description only restates the kind split and that the reason is the customer's own words, adding minimal meaning beyond the schema — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a concrete verb ('Ask Tanatasa to cancel... or take back') and names both the resource (order) and the two operating modes (cancel vs return) with their eligibility conditions. An agent can distinguish this from checkout/order-read siblings like get_order or list_orders without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes between the two modes ('cancel' for paid-not-shipped, 'return' for shipped/delivered) and adds a genuine exclusion: 'Unpaid orders need no cancellation: they are never charged.' It also tells the agent what happens on repeat invocation, removing ambiguity about retries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search words, e.g. "cerave cleanser" or "gift for dad under $40". A price phrase sets max_price when it is absent. | |
| page | No | Result page; use next_page from the previous result. | |
| sort | No | 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). | relevance |
| brand | No | Brand name or slug. | |
| limit | No | Results per page (1-50). | |
| purpose | No | What it is for, e.g. "sensitive-skin". | |
| category | No | Category name or slug, e.g. "pantry" or "skincare". | |
| in_stock | No | Only variants available now. | |
| max_price | No | Highest price in SGD cents (S$40 is 4000). | |
| min_price | No | Lowest price in SGD cents. | |
| skin_type | No | e.g. "oily", "dry", "sensitive". | |
| ingredient | No | A key ingredient, e.g. "ceramides". | |
| guest_token | No | 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. | |
| max_delivery_days | No | Only items delivered within this many Singapore working days (each result shows its estimated_delivery_date). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the description's job is to add commerce semantics — and it does: free delivery with no minimum spend, prices are delivered prices, currency is SGD cents, and it names the result fields (variant_id, price, unit pricing, stock, estimated_delivery_date) plus offer_terms for store-wide terms. It stops short of disclosing result caps, empty-result behavior, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then capabilities, then output shape, then pagination — a logical order with essentially no filler. It is delivered as one dense block, which slightly hurts scannability for a 14-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameter-heavy search tool with no output schema, the description compensates well by naming the returned fields and the offer_terms block, so the agent knows what comes back. Remaining gaps are behavioral edge cases (no-results handling, page ceiling of 1000, when guest_token matters) rather than core omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the parameter list (words, brand, category, purpose, skin type, ingredient, stock, price, delivery time) and clarifies that prices are in SGD cents and are delivered prices, but adds no filtering syntax or interaction rules beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Find Tanatasa products to buy for Singapore delivery") and enumerates the domains covered (pantry, household, health, personal care, beauty). What's missing is explicit differentiation from siblings like get_product (single-item lookup) or search_products_batch, so an agent must infer which search surface to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the enumeration of searchable facets (words, brand, category, purpose, skin type, ingredient, stock, price, delivery time), and pagination guidance is given ("Follow next_page for more"). However, there is no statement of when NOT to use it or when to prefer get_product / search_products_batch instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_products_batchARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | 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. | |
| guest_token | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the burden is lighter. The description adds genuinely useful non-obvious context: delivery is free anywhere in Singapore with no minimum spend, so listed prices are delivered prices — information that affects how an agent interprets results and compares across queries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core capability, then the cost/pricing caveat, then the follow-up action. Nothing is repeated or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what the tool does, its batching limits, the free-delivery/pricing implication, and the next step in the workflow. Return shape is left to the schema (which is rich) and there is no output schema, so the description is nearly complete, though it could mention result ordering or failure behavior across mixed queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter (q, sort, brand, limit, max_price, guest_token, etc.) is already documented in the schema. The description only restates the query cap and default limit, adding no meaning beyond the structured definitions — a baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search for a whole shopping list in one call') plus concrete scope: up to 10 queries, each carrying the search_products filter set with 5 results by default. An agent can immediately distinguish this batch tool from the singular search_products sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the batch-vs-single relationship by saying each query takes 'the search_products filters', and gives the downstream step ('Then start_checkout with the chosen variant_ids'). It does not state an explicit exclusion like 'use search_products for a single item', so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cart_itemADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cart_id | Yes | cart_id from create_cart. | |
| version | Yes | The cart's current version, from the last cart result. Each edit increments it. | |
| quantity | Yes | The total quantity wanted (not an increment); 0 removes the item. | |
| variant_id | Yes | variant_id from search_products or get_product. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it settles the set-vs-increment semantics (supporting idempotentHint), states exactly what a successful call returns (new version + fresh quote), and documents two distinct error payloads with their recovery fields (current_cart; available_quantity and alternatives). The 20-variant / 99-per-item limits are an extra operational constraint not fully expressed in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, zero filler, front-loaded with the core action and then ordered by what an agent hits next: semantics, prerequisite, return, failure modes, limits. Nothing repeats the annotations verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by describing the return payload and both error shapes. Combined with the schema's parameter docs, an agent has everything needed to call it and to handle the two likely failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters, including the total-not-increment quantity rule and where cart_id/variant_id come from. The description largely restates the quantity and version semantics; its only genuinely additive parameter insight is the stale-version error contract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition names a specific resource (one item in an existing cart) and covers all three modes -- add, change, remove -- in a single verb set. 'Existing cart' implicitly distinguishes it from create_cart, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: it must be an existing cart and you must supply the current version, and the return of a 'fresh quote' hints that a separate quote_cart call is unnecessary. There is no explicit when-to-use / when-not / use-alternative routing an agent can pattern-match on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_checkout_detailsADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| details | Yes | Contact and Singapore delivery details exactly as the buyer gave them. | |
| checkout_id | Yes | checkout_id from create_checkout or checkout_session. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| details_version | Yes | The checkout's current details_version from get_checkout (0 before any details are saved). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds non-obvious behavior: no charge is made, the write is version-guarded, and the record becomes immutable once payment preparation begins.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, roughly 40 words, front-loaded with the action and then the version contract and the locking rule. Every sentence carries distinct information with no restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (the new details_version) and when the write is refused (post payment-preparation). It stops short of saying what happens on a version mismatch or whether guest_token is required, but those gaps are small for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the field-level meaning of contact/delivery is already carried by the schema. The description still adds real value by explaining the optimistic-concurrency contract: send the current details_version and the result carries the new one, which is more than the schema's 'from get_checkout' note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'Save the buyer's contact and Singapore delivery details on a checkout.' It also draws a boundary against the payment sibling by stating 'Does not charge anything', so an agent can tell it apart from prepare_payment without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-not condition ('Details can't change once payment preparation starts') and the required precondition of passing the current details_version. It does not explicitly name prepare_payment as the next step, but the 'does not charge' clause strongly implies the handoff.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_inAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | The 6-digit code the customer read from their email. | |
| No | The customer's email. Alone: Tanatasa emails them a 6-digit code. With code: signs them in. | ||
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| account_token | No | 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. |
TDQS
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.
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.
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.
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.
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.
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.
start_checkoutAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | The whole basket: up to 20 variants. A variant listed twice is added together. | |
| details | No | The buyer's contact and Singapore delivery details. Include them: the result is then ready for the buyer's approval and prepare_payment. | |
| use_credit | No | Use the signed-in customer's cashback credit (default true). | |
| coupon_code | No | A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it. | |
| guest_token | No | Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed. | |
| account_token | No | 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. | |
| idempotency_key | Yes | A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: no account is needed, free Singapore delivery with no minimum spend, prices are delivered prices, nothing is charged at this stage, and guest users receive a private guest_token for later calls. It also describes the return shape and the approval workflow, which is substantial context for a non-read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core value proposition and then proceeds through inputs, return values, pricing behavior, and next steps. The sentences are dense but purposeful, with no irrelevant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex checkout-start tool with nested inputs and no output schema, the description is complete enough: it explains the one-call flow, key constraints, return values, guest token handling, no-charge behavior, and the next action. Missing details such as idempotency are covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all seven parameters in detail. The description reinforces the high-level meaning of items and details and mentions the guest_token, but it mostly repeats structured schema information rather than adding new parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: it takes the whole basket and buyer details, creates the cart, quotes it, and starts checkout in one call. This clearly distinguishes it from multi-step siblings such as create_cart, quote_cart, and create_checkout by emphasizing the one-call, fastest-to-buy flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use it when you have the whole basket and buyer details and want the fastest one-call checkout, with no account needed. It also describes the next step after approval (prepare_payment), but it does not explicitly name when to prefer sibling tools like create_cart or create_checkout instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
17 tool updates
- Changed
checkout_session1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "buyer_details": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "contact": { - "additionalProperties": true, - "properties": { - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "phone": { - "type": "string" - } - }, - "required": [ - "name", - "email", - "phone" - ], - "type": "object" - }, - "delivery": { - "additionalProperties": true, - "properties": { - "address_line1": { - "type": "string" - }, - "postal_code": { - "type": "string" - }, - "unit_number": { - "type": "string" - } - }, - "required": [ - "address_line1", - "postal_code" - ], - "type": "object" - } - }, - "required": [ - "contact", - "delivery" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "buyer_summary": { - "type": "string" - }, - "cart_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "checkout_id": { - "type": "string" - }, - "checkout_status": { - "enum": [ - "cancelled", - "confirmed", - "cart_changed", - "payment_pending", - "ready_for_payment", - "details_required" - ], - "type": "string" - }, - "checkout_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "confirmation_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "details_version": { - "type": "integer" - }, - "expires_at": { - "format": "date-time", - "type": "string" - }, - "handoff_options": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "buyer_action": { - "type": "string" - }, - "path": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "path", - "available" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "order_id": { - "type": "string" - }, - "payment_confirmed": { - "type": "boolean" - }, - "payment_status": { - "type": "string" - }, - "payment_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "payment_url_expires_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "checkout_id", - "order_id", - "checkout_url", - "cart_url", - "details_version", - "checkout_status", - "payment_url", - "payment_url_expires_at", - "payment_confirmed", - "confirmation_url", - "expires_at", - "total", - "payment_status", - "buyer_summary", - "next_action", - "buyer_details", - "handoff_options" - ], - "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
- Changed
create_cart1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "cart_id": { - "type": "string" - }, - "guest_token": { - "type": "string" - }, - "lines": { - "items": { - "additionalProperties": true, - "properties": { - "quantity": { - "type": "integer" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "quantity" - ], - "type": "object" - }, - "type": "array" - }, - "next_action": { - "type": "string" - }, - "quote": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "buyer_summary": { - "type": "string" - }, - "cart_id": { - "type": "string" - }, - "checkout_id": { - "type": [ - "string", - "null" - ] - }, - "coupon_code": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_estimate": { - "additionalProperties": true, - "properties": { - "estimated_delivery_date": { - "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", - "type": "string" - }, - "working_days": { - "additionalProperties": true, - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "working_days", - "estimated_delivery_date" - ], - "type": "object" - }, - "discount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "discounts": { - "items": { - "additionalProperties": true, - "properties": { - "amount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "amount", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "free_delivery": { - "const": true, - "type": "boolean" - }, - "lines": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "brand": { - "type": [ - "string", - "null" - ] - }, - "compare_at_price": { - "anyOf": [ - { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Integer SGD cents; 1690 means S$16.90." - }, - "condition": { - "type": "string" - }, - "condition_label": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_working_days": { - "type": "integer" - }, - "expiry": { - "type": [ - "string", - "null" - ] - }, - "fulfilment": { - "additionalProperties": true, - "properties": { - "code": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "code", - "label" - ], - "type": "object" - }, - "gtin": { - "type": [ - "string", - "null" - ] - }, - "image": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "image_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "line_total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "max_quantity": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "option_name": { - "type": "string" - }, - "product_id": { - "type": "integer" - }, - "product_name": { - "type": "string" - }, - "quantity": { - "type": "integer" - }, - "sku": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "stock_source": { - "type": "string" - }, - "tanatasa_pick": { - "type": "boolean" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "unit_pricing": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "basis": { - "enum": [ - "ml", - "g" - ], - "type": "string" - }, - "per_100": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000_label": { - "type": "string" - }, - "per_100_label": { - "type": "string" - }, - "total_quantity": { - "type": "number" - } - }, - "required": [ - "basis", - "total_quantity", - "per_100", - "per_1000", - "per_100_label", - "per_1000_label" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "product_id", - "slug", - "sku", - "name", - "option_name", - "product_name", - "brand", - "currency", - "unit_price", - "compare_at_price", - "available", - "max_quantity", - "url", - "image_url", - "image", - "gtin", - "condition", - "condition_label", - "expiry", - "stock_source", - "fulfilment", - "tanatasa_pick", - "unit_pricing", - "quantity", - "line_total", - "delivery_working_days" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "quoted_at": { - "format": "date-time", - "type": "string" - }, - "return_policy": { - "additionalProperties": true, - "properties": { - "condition": { - "type": "string" - }, - "policy_url": { - "format": "uri", - "type": "string" - }, - "summary": { - "type": "string" - }, - "window_days": { - "type": "integer" - } - }, - "required": [ - "window_days", - "condition", - "summary", - "policy_url" - ], - "type": "object" - }, - "shipping": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - }, - "subtotal": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "version": { - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "cart_id", - "version", - "lines", - "coupon_code", - "discounts", - "subtotal", - "discount", - "shipping", - "free_delivery", - "total", - "checkout_id", - "stock_reserved", - "quoted_at", - "delivery_estimate", - "return_policy", - "buyer_summary", - "next_action" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "version": { - "type": "integer" - } - }, - "required": [ - "cart_id", - "version", - "lines", - "quote", - "next_action" - ], - "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
- Changed
create_checkout1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "buyer_details": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "contact": { - "additionalProperties": true, - "properties": { - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "phone": { - "type": "string" - } - }, - "required": [ - "name", - "email", - "phone" - ], - "type": "object" - }, - "delivery": { - "additionalProperties": true, - "properties": { - "address_line1": { - "type": "string" - }, - "postal_code": { - "type": "string" - }, - "unit_number": { - "type": "string" - } - }, - "required": [ - "address_line1", - "postal_code" - ], - "type": "object" - } - }, - "required": [ - "contact", - "delivery" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "buyer_summary": { - "type": "string" - }, - "cart_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "checkout_id": { - "type": "string" - }, - "checkout_status": { - "enum": [ - "cancelled", - "confirmed", - "cart_changed", - "payment_pending", - "ready_for_payment", - "details_required" - ], - "type": "string" - }, - "checkout_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "confirmation_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "details_version": { - "type": "integer" - }, - "expires_at": { - "format": "date-time", - "type": "string" - }, - "handoff_options": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "buyer_action": { - "type": "string" - }, - "path": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "path", - "available" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "order_id": { - "type": "string" - }, - "payment_confirmed": { - "type": "boolean" - }, - "payment_status": { - "type": "string" - }, - "payment_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "payment_url_expires_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "checkout_id", - "order_id", - "checkout_url", - "cart_url", - "details_version", - "checkout_status", - "payment_url", - "payment_url_expires_at", - "payment_confirmed", - "confirmation_url", - "expires_at", - "total", - "payment_status", - "buyer_summary", - "next_action", - "buyer_details", - "handoff_options" - ], - "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
- Changed
get_cart1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "cart_id": { - "type": "string" - }, - "lines": { - "items": { - "additionalProperties": true, - "properties": { - "quantity": { - "type": "integer" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "quantity" - ], - "type": "object" - }, - "type": "array" - }, - "version": { - "type": "integer" - } - }, - "required": [ - "cart_id", - "version", - "lines" - ], - "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
- Changed
get_checkout1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "buyer_details": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "contact": { - "additionalProperties": true, - "properties": { - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "phone": { - "type": "string" - } - }, - "required": [ - "name", - "email", - "phone" - ], - "type": "object" - }, - "delivery": { - "additionalProperties": true, - "properties": { - "address_line1": { - "type": "string" - }, - "postal_code": { - "type": "string" - }, - "unit_number": { - "type": "string" - } - }, - "required": [ - "address_line1", - "postal_code" - ], - "type": "object" - } - }, - "required": [ - "contact", - "delivery" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "buyer_summary": { - "type": "string" - }, - "cart_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "checkout_id": { - "type": "string" - }, - "checkout_status": { - "enum": [ - "cancelled", - "confirmed", - "cart_changed", - "payment_pending", - "ready_for_payment", - "details_required" - ], - "type": "string" - }, - "checkout_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "confirmation_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "details_version": { - "type": "integer" - }, - "expires_at": { - "format": "date-time", - "type": "string" - }, - "handoff_options": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "buyer_action": { - "type": "string" - }, - "path": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "path", - "available" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "order_id": { - "type": "string" - }, - "payment_confirmed": { - "type": "boolean" - }, - "payment_status": { - "type": "string" - }, - "payment_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "payment_url_expires_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "checkout_id", - "order_id", - "checkout_url", - "cart_url", - "details_version", - "checkout_status", - "payment_url", - "payment_url_expires_at", - "payment_confirmed", - "confirmation_url", - "expires_at", - "total", - "payment_status", - "buyer_summary", - "next_action", - "buyer_details", - "handoff_options" - ], - "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
- Changed
get_order1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "currency": { - "const": "SGD", - "type": "string" - }, - "items": { - "items": { - "additionalProperties": true, - "properties": { - "name": { - "type": [ - "string", - "null" - ] - }, - "quantity": { - "type": "integer" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "name", - "quantity", - "unit_price" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "order_id": { - "type": "string" - }, - "payment_confirmed": { - "type": "boolean" - }, - "status": { - "type": "string" - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "order_id", - "status", - "total" - ], - "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
- Changed
get_product1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "brand": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "name": { - "type": "string" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "name", - "slug" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "catalog_observed_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "description": { - "type": [ - "string", - "null" - ] - }, - "freshness": { - "additionalProperties": true, - "properties": { - "catalog_cache_max_age_seconds": { - "type": "integer" - }, - "revalidation": { - "type": "string" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - } - }, - "required": [ - "catalog_cache_max_age_seconds", - "stock_reserved", - "revalidation" - ], - "type": "object" - }, - "generated_at": { - "description": "Response generation time, not the supplier's stock-verification time.", - "format": "date-time", - "type": "string" - }, - "good_to_know": { - "type": [ - "string", - "null" - ] - }, - "how_to_use": { - "type": [ - "string", - "null" - ] - }, - "images": { - "items": { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "name": { - "type": "string" - }, - "next_action": { - "type": "string" - }, - "offer_terms": { - "additionalProperties": true, - "properties": { - "account_required": { - "type": "boolean" - }, - "authentic": { - "type": "boolean" - }, - "delivery_area": { - "type": "string" - }, - "free_delivery": { - "type": "boolean" - }, - "minimum_spend": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "return_policy": { - "additionalProperties": true, - "properties": { - "condition": { - "type": "string" - }, - "policy_url": { - "format": "uri", - "type": "string" - }, - "summary": { - "type": "string" - }, - "window_days": { - "type": "integer" - } - }, - "required": [ - "window_days", - "condition", - "summary", - "policy_url" - ], - "type": "object" - }, - "seller": { - "type": "string" - }, - "shipping_cost": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "seller", - "free_delivery", - "delivery_area", - "minimum_spend", - "shipping_cost", - "return_policy", - "authentic", - "account_required" - ], - "type": "object" - }, - "product_id": { - "type": "integer" - }, - "short_description": { - "type": [ - "string", - "null" - ] - }, - "slug": { - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - }, - "variants": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "brand": { - "type": [ - "string", - "null" - ] - }, - "category": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "name": { - "type": "string" - }, - "path": { - "items": { - "type": "string" - }, - "type": "array" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name", - "path" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "compare_at_price": { - "anyOf": [ - { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Integer SGD cents; 1690 means S$16.90." - }, - "condition": { - "type": "string" - }, - "condition_label": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_estimate": { - "additionalProperties": true, - "properties": { - "estimated_delivery_date": { - "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", - "type": "string" - }, - "working_days": { - "additionalProperties": true, - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "working_days", - "estimated_delivery_date" - ], - "type": "object" - }, - "expiry": { - "type": [ - "string", - "null" - ] - }, - "fulfilment": { - "additionalProperties": true, - "properties": { - "code": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "code", - "label" - ], - "type": "object" - }, - "gtin": { - "type": [ - "string", - "null" - ] - }, - "image": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "image_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "images": { - "items": { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - "type": "array" - }, - "max_quantity": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "option_name": { - "type": "string" - }, - "product_id": { - "type": "integer" - }, - "product_name": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "stock_source": { - "type": "string" - }, - "tanatasa_pick": { - "type": "boolean" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "unit_pricing": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "basis": { - "enum": [ - "ml", - "g" - ], - "type": "string" - }, - "per_100": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000_label": { - "type": "string" - }, - "per_100_label": { - "type": "string" - }, - "total_quantity": { - "type": "number" - } - }, - "required": [ - "basis", - "total_quantity", - "per_100", - "per_1000", - "per_100_label", - "per_1000_label" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "product_id", - "slug", - "sku", - "name", - "option_name", - "product_name", - "brand", - "currency", - "unit_price", - "compare_at_price", - "available", - "max_quantity", - "url", - "image_url", - "image", - "gtin", - "condition", - "condition_label", - "expiry", - "stock_source", - "fulfilment", - "tanatasa_pick", - "unit_pricing", - "category", - "delivery_estimate", - "images" - ], - "type": "object" - }, - "type": "array" - }, - "who_for": { - "type": [ - "string", - "null" - ] - }, - "why_people_like_it": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "currency", - "money_unit", - "generated_at", - "catalog_observed_at", - "freshness", - "product_id", - "slug", - "name", - "url", - "description", - "short_description", - "images", - "brand", - "who_for", - "how_to_use", - "why_people_like_it", - "good_to_know", - "variants", - "offer_terms", - "next_action" - ], - "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
- Changed
list_orders1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "email": { - "type": "string" - }, - "next_page": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "note": { - "type": "string" - }, - "orders": { - "items": { - "additionalProperties": true, - "properties": { - "currency": { - "const": "SGD", - "type": "string" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "order_id": { - "type": "string" - }, - "status": { - "type": "string" - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "order_id", - "status", - "total" - ], - "type": "object" - }, - "type": "array" - }, - "page": { - "type": "integer" - } - }, - "required": [ - "email", - "orders", - "page", - "next_page", - "note" - ], - "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
- Changed
prepare_payment1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "checkout_id": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "order_id": { - "type": "string" - }, - "payment_confirmed": { - "const": false, - "type": "boolean" - }, - "payment_status": { - "const": "pending", - "type": "string" - }, - "payment_url": { - "format": "uri", - "type": "string" - }, - "payment_url_expires_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "checkout_id", - "order_id", - "payment_url", - "payment_url_expires_at", - "total", - "payment_status", - "payment_confirmed", - "next_action" - ], - "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
- Changed
quote_cart1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "buyer_summary": { - "type": "string" - }, - "cart_id": { - "type": "string" - }, - "checkout_id": { - "type": [ - "string", - "null" - ] - }, - "coupon_code": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_estimate": { - "additionalProperties": true, - "properties": { - "estimated_delivery_date": { - "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", - "type": "string" - }, - "working_days": { - "additionalProperties": true, - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "working_days", - "estimated_delivery_date" - ], - "type": "object" - }, - "discount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "discounts": { - "items": { - "additionalProperties": true, - "properties": { - "amount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "amount", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "free_delivery": { - "const": true, - "type": "boolean" - }, - "lines": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "brand": { - "type": [ - "string", - "null" - ] - }, - "compare_at_price": { - "anyOf": [ - { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Integer SGD cents; 1690 means S$16.90." - }, - "condition": { - "type": "string" - }, - "condition_label": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_working_days": { - "type": "integer" - }, - "expiry": { - "type": [ - "string", - "null" - ] - }, - "fulfilment": { - "additionalProperties": true, - "properties": { - "code": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "code", - "label" - ], - "type": "object" - }, - "gtin": { - "type": [ - "string", - "null" - ] - }, - "image": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "image_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "line_total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "max_quantity": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "option_name": { - "type": "string" - }, - "product_id": { - "type": "integer" - }, - "product_name": { - "type": "string" - }, - "quantity": { - "type": "integer" - }, - "sku": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "stock_source": { - "type": "string" - }, - "tanatasa_pick": { - "type": "boolean" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "unit_pricing": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "basis": { - "enum": [ - "ml", - "g" - ], - "type": "string" - }, - "per_100": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000_label": { - "type": "string" - }, - "per_100_label": { - "type": "string" - }, - "total_quantity": { - "type": "number" - } - }, - "required": [ - "basis", - "total_quantity", - "per_100", - "per_1000", - "per_100_label", - "per_1000_label" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "product_id", - "slug", - "sku", - "name", - "option_name", - "product_name", - "brand", - "currency", - "unit_price", - "compare_at_price", - "available", - "max_quantity", - "url", - "image_url", - "image", - "gtin", - "condition", - "condition_label", - "expiry", - "stock_source", - "fulfilment", - "tanatasa_pick", - "unit_pricing", - "quantity", - "line_total", - "delivery_working_days" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "quoted_at": { - "format": "date-time", - "type": "string" - }, - "return_policy": { - "additionalProperties": true, - "properties": { - "condition": { - "type": "string" - }, - "policy_url": { - "format": "uri", - "type": "string" - }, - "summary": { - "type": "string" - }, - "window_days": { - "type": "integer" - } - }, - "required": [ - "window_days", - "condition", - "summary", - "policy_url" - ], - "type": "object" - }, - "shipping": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - }, - "subtotal": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "version": { - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "cart_id", - "version", - "lines", - "coupon_code", - "discounts", - "subtotal", - "discount", - "shipping", - "free_delivery", - "total", - "checkout_id", - "stock_reserved", - "quoted_at", - "delivery_estimate", - "return_policy", - "buyer_summary", - "next_action" - ], - "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
- Changed
request_order_change1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "already_requested": { - "type": "boolean" - }, - "next_action": { - "type": "string" - }, - "order_id": { - "type": "string" - }, - "request": { - "additionalProperties": true, - "properties": { - "created_at": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "request_id": { - "type": "integer" - }, - "status": { - "type": "string" - } - }, - "required": [ - "request_id", - "kind", - "status", - "reason", - "created_at" - ], - "type": "object" - } - }, - "required": [ - "order_id", - "already_requested", - "request", - "next_action" - ], - "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
- Changed
search_products1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "catalog_observed_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "freshness": { - "additionalProperties": true, - "properties": { - "catalog_cache_max_age_seconds": { - "type": "integer" - }, - "revalidation": { - "type": "string" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - } - }, - "required": [ - "catalog_cache_max_age_seconds", - "stock_reserved", - "revalidation" - ], - "type": "object" - }, - "generated_at": { - "description": "Response generation time, not the supplier's stock-verification time.", - "format": "date-time", - "type": "string" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "next_page": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "offer_terms": { - "additionalProperties": true, - "properties": { - "account_required": { - "type": "boolean" - }, - "authentic": { - "type": "boolean" - }, - "delivery_area": { - "type": "string" - }, - "free_delivery": { - "type": "boolean" - }, - "minimum_spend": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "return_policy": { - "additionalProperties": true, - "properties": { - "condition": { - "type": "string" - }, - "policy_url": { - "format": "uri", - "type": "string" - }, - "summary": { - "type": "string" - }, - "window_days": { - "type": "integer" - } - }, - "required": [ - "window_days", - "condition", - "summary", - "policy_url" - ], - "type": "object" - }, - "seller": { - "type": "string" - }, - "shipping_cost": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "seller", - "free_delivery", - "delivery_area", - "minimum_spend", - "shipping_cost", - "return_policy", - "authentic", - "account_required" - ], - "type": "object" - }, - "page": { - "type": "integer" - }, - "products": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "brand": { - "type": [ - "string", - "null" - ] - }, - "category": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "name": { - "type": "string" - }, - "path": { - "items": { - "type": "string" - }, - "type": "array" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name", - "path" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "compare_at_price": { - "anyOf": [ - { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Integer SGD cents; 1690 means S$16.90." - }, - "condition": { - "type": "string" - }, - "condition_label": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_estimate": { - "additionalProperties": true, - "properties": { - "estimated_delivery_date": { - "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", - "type": "string" - }, - "working_days": { - "additionalProperties": true, - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "working_days", - "estimated_delivery_date" - ], - "type": "object" - }, - "expiry": { - "type": [ - "string", - "null" - ] - }, - "fulfilment": { - "additionalProperties": true, - "properties": { - "code": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "code", - "label" - ], - "type": "object" - }, - "gtin": { - "type": [ - "string", - "null" - ] - }, - "image": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "image_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "max_quantity": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "option_name": { - "type": "string" - }, - "product_id": { - "type": "integer" - }, - "product_name": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "stock_source": { - "type": "string" - }, - "tanatasa_pick": { - "type": "boolean" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "unit_pricing": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "basis": { - "enum": [ - "ml", - "g" - ], - "type": "string" - }, - "per_100": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000_label": { - "type": "string" - }, - "per_100_label": { - "type": "string" - }, - "total_quantity": { - "type": "number" - } - }, - "required": [ - "basis", - "total_quantity", - "per_100", - "per_1000", - "per_100_label", - "per_1000_label" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "product_id", - "slug", - "sku", - "name", - "option_name", - "product_name", - "brand", - "currency", - "unit_price", - "compare_at_price", - "available", - "max_quantity", - "url", - "image_url", - "image", - "gtin", - "condition", - "condition_label", - "expiry", - "stock_source", - "fulfilment", - "tanatasa_pick", - "unit_pricing", - "category", - "delivery_estimate" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "currency", - "money_unit", - "generated_at", - "catalog_observed_at", - "freshness", - "offer_terms", - "products", - "page", - "next_page", - "next_action" - ], - "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
- Changed
search_products_batch1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "catalog_observed_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "freshness": { - "additionalProperties": true, - "properties": { - "catalog_cache_max_age_seconds": { - "type": "integer" - }, - "revalidation": { - "type": "string" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - } - }, - "required": [ - "catalog_cache_max_age_seconds", - "stock_reserved", - "revalidation" - ], - "type": "object" - }, - "generated_at": { - "description": "Response generation time, not the supplier's stock-verification time.", - "format": "date-time", - "type": "string" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "offer_terms": { - "additionalProperties": true, - "properties": { - "account_required": { - "type": "boolean" - }, - "authentic": { - "type": "boolean" - }, - "delivery_area": { - "type": "string" - }, - "free_delivery": { - "type": "boolean" - }, - "minimum_spend": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "return_policy": { - "additionalProperties": true, - "properties": { - "condition": { - "type": "string" - }, - "policy_url": { - "format": "uri", - "type": "string" - }, - "summary": { - "type": "string" - }, - "window_days": { - "type": "integer" - } - }, - "required": [ - "window_days", - "condition", - "summary", - "policy_url" - ], - "type": "object" - }, - "seller": { - "type": "string" - }, - "shipping_cost": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "seller", - "free_delivery", - "delivery_area", - "minimum_spend", - "shipping_cost", - "return_policy", - "authentic", - "account_required" - ], - "type": "object" - }, - "results": { - "items": { - "additionalProperties": true, - "properties": { - "catalog_observed_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "freshness": { - "additionalProperties": true, - "properties": { - "catalog_cache_max_age_seconds": { - "type": "integer" - }, - "revalidation": { - "type": "string" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - } - }, - "required": [ - "catalog_cache_max_age_seconds", - "stock_reserved", - "revalidation" - ], - "type": "object" - }, - "generated_at": { - "description": "Response generation time, not the supplier's stock-verification time.", - "format": "date-time", - "type": "string" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_page": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "page": { - "type": "integer" - }, - "products": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "brand": { - "type": [ - "string", - "null" - ] - }, - "category": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "name": { - "type": "string" - }, - "path": { - "items": { - "type": "string" - }, - "type": "array" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name", - "path" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "compare_at_price": { - "anyOf": [ - { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Integer SGD cents; 1690 means S$16.90." - }, - "condition": { - "type": "string" - }, - "condition_label": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_estimate": { - "additionalProperties": true, - "properties": { - "estimated_delivery_date": { - "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", - "type": "string" - }, - "working_days": { - "additionalProperties": true, - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "working_days", - "estimated_delivery_date" - ], - "type": "object" - }, - "expiry": { - "type": [ - "string", - "null" - ] - }, - "fulfilment": { - "additionalProperties": true, - "properties": { - "code": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "code", - "label" - ], - "type": "object" - }, - "gtin": { - "type": [ - "string", - "null" - ] - }, - "image": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "image_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "max_quantity": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "option_name": { - "type": "string" - }, - "product_id": { - "type": "integer" - }, - "product_name": { - "type": "string" - }, - "sku": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "stock_source": { - "type": "string" - }, - "tanatasa_pick": { - "type": "boolean" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "unit_pricing": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "basis": { - "enum": [ - "ml", - "g" - ], - "type": "string" - }, - "per_100": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000_label": { - "type": "string" - }, - "per_100_label": { - "type": "string" - }, - "total_quantity": { - "type": "number" - } - }, - "required": [ - "basis", - "total_quantity", - "per_100", - "per_1000", - "per_100_label", - "per_1000_label" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "product_id", - "slug", - "sku", - "name", - "option_name", - "product_name", - "brand", - "currency", - "unit_price", - "compare_at_price", - "available", - "max_quantity", - "url", - "image_url", - "image", - "gtin", - "condition", - "condition_label", - "expiry", - "stock_source", - "fulfilment", - "tanatasa_pick", - "unit_pricing", - "category", - "delivery_estimate" - ], - "type": "object" - }, - "type": "array" - }, - "query": { - "type": "string" - } - }, - "required": [ - "currency", - "money_unit", - "generated_at", - "catalog_observed_at", - "freshness", - "products", - "page", - "next_page", - "query" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "currency", - "money_unit", - "generated_at", - "catalog_observed_at", - "freshness", - "offer_terms", - "results", - "next_action" - ], - "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
- Changed
set_cart_item1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "cart_id": { - "type": "string" - }, - "guest_token": { - "type": "string" - }, - "lines": { - "items": { - "additionalProperties": true, - "properties": { - "quantity": { - "type": "integer" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "quantity" - ], - "type": "object" - }, - "type": "array" - }, - "next_action": { - "type": "string" - }, - "quote": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "buyer_summary": { - "type": "string" - }, - "cart_id": { - "type": "string" - }, - "checkout_id": { - "type": [ - "string", - "null" - ] - }, - "coupon_code": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_estimate": { - "additionalProperties": true, - "properties": { - "estimated_delivery_date": { - "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", - "type": "string" - }, - "working_days": { - "additionalProperties": true, - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "working_days", - "estimated_delivery_date" - ], - "type": "object" - }, - "discount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "discounts": { - "items": { - "additionalProperties": true, - "properties": { - "amount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "amount", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "free_delivery": { - "const": true, - "type": "boolean" - }, - "lines": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "brand": { - "type": [ - "string", - "null" - ] - }, - "compare_at_price": { - "anyOf": [ - { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Integer SGD cents; 1690 means S$16.90." - }, - "condition": { - "type": "string" - }, - "condition_label": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_working_days": { - "type": "integer" - }, - "expiry": { - "type": [ - "string", - "null" - ] - }, - "fulfilment": { - "additionalProperties": true, - "properties": { - "code": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "code", - "label" - ], - "type": "object" - }, - "gtin": { - "type": [ - "string", - "null" - ] - }, - "image": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "image_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "line_total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "max_quantity": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "option_name": { - "type": "string" - }, - "product_id": { - "type": "integer" - }, - "product_name": { - "type": "string" - }, - "quantity": { - "type": "integer" - }, - "sku": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "stock_source": { - "type": "string" - }, - "tanatasa_pick": { - "type": "boolean" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "unit_pricing": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "basis": { - "enum": [ - "ml", - "g" - ], - "type": "string" - }, - "per_100": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000_label": { - "type": "string" - }, - "per_100_label": { - "type": "string" - }, - "total_quantity": { - "type": "number" - } - }, - "required": [ - "basis", - "total_quantity", - "per_100", - "per_1000", - "per_100_label", - "per_1000_label" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "product_id", - "slug", - "sku", - "name", - "option_name", - "product_name", - "brand", - "currency", - "unit_price", - "compare_at_price", - "available", - "max_quantity", - "url", - "image_url", - "image", - "gtin", - "condition", - "condition_label", - "expiry", - "stock_source", - "fulfilment", - "tanatasa_pick", - "unit_pricing", - "quantity", - "line_total", - "delivery_working_days" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "quoted_at": { - "format": "date-time", - "type": "string" - }, - "return_policy": { - "additionalProperties": true, - "properties": { - "condition": { - "type": "string" - }, - "policy_url": { - "format": "uri", - "type": "string" - }, - "summary": { - "type": "string" - }, - "window_days": { - "type": "integer" - } - }, - "required": [ - "window_days", - "condition", - "summary", - "policy_url" - ], - "type": "object" - }, - "shipping": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - }, - "subtotal": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "version": { - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "cart_id", - "version", - "lines", - "coupon_code", - "discounts", - "subtotal", - "discount", - "shipping", - "free_delivery", - "total", - "checkout_id", - "stock_reserved", - "quoted_at", - "delivery_estimate", - "return_policy", - "buyer_summary", - "next_action" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "version": { - "type": "integer" - } - }, - "required": [ - "cart_id", - "version", - "lines", - "quote", - "next_action" - ], - "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
- Changed
set_checkout_details1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "buyer_details": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "contact": { - "additionalProperties": true, - "properties": { - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "phone": { - "type": "string" - } - }, - "required": [ - "name", - "email", - "phone" - ], - "type": "object" - }, - "delivery": { - "additionalProperties": true, - "properties": { - "address_line1": { - "type": "string" - }, - "postal_code": { - "type": "string" - }, - "unit_number": { - "type": "string" - } - }, - "required": [ - "address_line1", - "postal_code" - ], - "type": "object" - } - }, - "required": [ - "contact", - "delivery" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "buyer_summary": { - "type": "string" - }, - "cart_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "checkout_id": { - "type": "string" - }, - "checkout_status": { - "enum": [ - "cancelled", - "confirmed", - "cart_changed", - "payment_pending", - "ready_for_payment", - "details_required" - ], - "type": "string" - }, - "checkout_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "confirmation_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "details_version": { - "type": "integer" - }, - "expires_at": { - "format": "date-time", - "type": "string" - }, - "handoff_options": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "buyer_action": { - "type": "string" - }, - "path": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "path", - "available" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "order_id": { - "type": "string" - }, - "payment_confirmed": { - "type": "boolean" - }, - "payment_status": { - "type": "string" - }, - "payment_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "payment_url_expires_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "checkout_id", - "order_id", - "checkout_url", - "cart_url", - "details_version", - "checkout_status", - "payment_url", - "payment_url_expires_at", - "payment_confirmed", - "confirmation_url", - "expires_at", - "total", - "payment_status", - "buyer_summary", - "next_action", - "buyer_details", - "handoff_options" - ], - "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
- Changed
sign_in1 field changed- changed
Output 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
- Changed
start_checkout1 field changed- changed
Output schema / (root)Previous value: -{ - "anyOf": [ - { - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": true, - "properties": { - "buyer_details": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "contact": { - "additionalProperties": true, - "properties": { - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "phone": { - "type": "string" - } - }, - "required": [ - "name", - "email", - "phone" - ], - "type": "object" - }, - "delivery": { - "additionalProperties": true, - "properties": { - "address_line1": { - "type": "string" - }, - "postal_code": { - "type": "string" - }, - "unit_number": { - "type": "string" - } - }, - "required": [ - "address_line1", - "postal_code" - ], - "type": "object" - } - }, - "required": [ - "contact", - "delivery" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "buyer_summary": { - "type": "string" - }, - "cart_id": { - "type": "string" - }, - "cart_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "checkout_id": { - "type": "string" - }, - "checkout_status": { - "enum": [ - "cancelled", - "confirmed", - "cart_changed", - "payment_pending", - "ready_for_payment", - "details_required" - ], - "type": "string" - }, - "checkout_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "confirmation_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "details_version": { - "type": "integer" - }, - "expires_at": { - "format": "date-time", - "type": "string" - }, - "guest_token": { - "type": "string" - }, - "handoff_options": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "buyer_action": { - "type": "string" - }, - "path": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "path", - "available" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "order_id": { - "type": "string" - }, - "payment_confirmed": { - "type": "boolean" - }, - "payment_status": { - "type": "string" - }, - "payment_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "payment_url_expires_at": { - "anyOf": [ - { - "format": "date-time", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "quote": { - "additionalProperties": true, - "properties": { - "buyer_summary": { - "type": "string" - }, - "cart_id": { - "type": "string" - }, - "checkout_id": { - "type": [ - "string", - "null" - ] - }, - "coupon_code": { - "type": [ - "string", - "null" - ] - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_estimate": { - "additionalProperties": true, - "properties": { - "estimated_delivery_date": { - "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", - "type": "string" - }, - "working_days": { - "additionalProperties": true, - "properties": { - "max": { - "type": "integer" - }, - "min": { - "type": "integer" - } - }, - "required": [ - "min", - "max" - ], - "type": "object" - } - }, - "required": [ - "working_days", - "estimated_delivery_date" - ], - "type": "object" - }, - "discount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "discounts": { - "items": { - "additionalProperties": true, - "properties": { - "amount": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "amount", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "free_delivery": { - "const": true, - "type": "boolean" - }, - "lines": { - "items": { - "additionalProperties": true, - "properties": { - "available": { - "type": "boolean" - }, - "brand": { - "type": [ - "string", - "null" - ] - }, - "compare_at_price": { - "anyOf": [ - { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Integer SGD cents; 1690 means S$16.90." - }, - "condition": { - "type": "string" - }, - "condition_label": { - "type": "string" - }, - "currency": { - "const": "SGD", - "type": "string" - }, - "delivery_working_days": { - "type": "integer" - }, - "expiry": { - "type": [ - "string", - "null" - ] - }, - "fulfilment": { - "additionalProperties": true, - "properties": { - "code": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "code", - "label" - ], - "type": "object" - }, - "gtin": { - "type": [ - "string", - "null" - ] - }, - "image": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "alt": { - "type": [ - "string", - "null" - ] - }, - "height": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mime_type": { - "description": "MIME type inferred from the stored image URL extension; null when unknown.", - "type": [ - "string", - "null" - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "width": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "url", - "alt", - "width", - "height", - "mime_type" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "image_url": { - "anyOf": [ - { - "format": "uri", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "line_total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "max_quantity": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "option_name": { - "type": "string" - }, - "product_id": { - "type": "integer" - }, - "product_name": { - "type": "string" - }, - "quantity": { - "type": "integer" - }, - "sku": { - "type": "string" - }, - "slug": { - "type": "string" - }, - "stock_source": { - "type": "string" - }, - "tanatasa_pick": { - "type": "boolean" - }, - "unit_price": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "unit_pricing": { - "anyOf": [ - { - "additionalProperties": true, - "properties": { - "basis": { - "enum": [ - "ml", - "g" - ], - "type": "string" - }, - "per_100": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "per_1000_label": { - "type": "string" - }, - "per_100_label": { - "type": "string" - }, - "total_quantity": { - "type": "number" - } - }, - "required": [ - "basis", - "total_quantity", - "per_100", - "per_1000", - "per_100_label", - "per_1000_label" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "url": { - "format": "uri", - "type": "string" - }, - "variant_id": { - "type": "integer" - } - }, - "required": [ - "variant_id", - "product_id", - "slug", - "sku", - "name", - "option_name", - "product_name", - "brand", - "currency", - "unit_price", - "compare_at_price", - "available", - "max_quantity", - "url", - "image_url", - "image", - "gtin", - "condition", - "condition_label", - "expiry", - "stock_source", - "fulfilment", - "tanatasa_pick", - "unit_pricing", - "quantity", - "line_total", - "delivery_working_days" - ], - "type": "object" - }, - "type": "array" - }, - "money_unit": { - "const": "cents", - "type": "string" - }, - "next_action": { - "type": "string" - }, - "quoted_at": { - "format": "date-time", - "type": "string" - }, - "return_policy": { - "additionalProperties": true, - "properties": { - "condition": { - "type": "string" - }, - "policy_url": { - "format": "uri", - "type": "string" - }, - "summary": { - "type": "string" - }, - "window_days": { - "type": "integer" - } - }, - "required": [ - "window_days", - "condition", - "summary", - "policy_url" - ], - "type": "object" - }, - "shipping": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "stock_reserved": { - "const": false, - "type": "boolean" - }, - "subtotal": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - }, - "version": { - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "cart_id", - "version", - "lines", - "coupon_code", - "discounts", - "subtotal", - "discount", - "shipping", - "free_delivery", - "total", - "checkout_id", - "stock_reserved", - "quoted_at", - "delivery_estimate", - "return_policy", - "buyer_summary", - "next_action" - ], - "type": "object" - }, - "total": { - "description": "Integer SGD cents; 1690 means S$16.90.", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "currency", - "money_unit", - "checkout_id", - "order_id", - "checkout_url", - "cart_url", - "details_version", - "checkout_status", - "payment_url", - "payment_url_expires_at", - "payment_confirmed", - "confirmation_url", - "expires_at", - "total", - "payment_status", - "buyer_summary", - "next_action", - "buyer_details", - "handoff_options", - "cart_id", - "quote" - ], - "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
17 tool updates
- Changed
checkout_session1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "buyer_details": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "contact": { + "additionalProperties": true, + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + } + }, + "required": [ + "name", + "email", + "phone" + ], + "type": "object" + }, + "delivery": { + "additionalProperties": true, + "properties": { + "address_line1": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "unit_number": { + "type": "string" + } + }, + "required": [ + "address_line1", + "postal_code" + ], + "type": "object" + } + }, + "required": [ + "contact", + "delivery" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "buyer_summary": { + "type": "string" + }, + "cart_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "checkout_id": { + "type": "string" + }, + "checkout_status": { + "enum": [ + "cancelled", + "confirmed", + "cart_changed", + "payment_pending", + "ready_for_payment", + "details_required" + ], + "type": "string" + }, + "checkout_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "confirmation_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "details_version": { + "type": "integer" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "handoff_options": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "buyer_action": { + "type": "string" + }, + "path": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "path", + "available" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_confirmed": { + "type": "boolean" + }, + "payment_status": { + "type": "string" + }, + "payment_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "payment_url_expires_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "checkout_id", + "order_id", + "checkout_url", + "cart_url", + "details_version", + "checkout_status", + "payment_url", + "payment_url_expires_at", + "payment_confirmed", + "confirmation_url", + "expires_at", + "total", + "payment_status", + "buyer_summary", + "next_action", + "buyer_details", + "handoff_options" + ], + "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" +}
- Changed
create_cart1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "cart_id": { + "type": "string" + }, + "guest_token": { + "type": "string" + }, + "lines": { + "items": { + "additionalProperties": true, + "properties": { + "quantity": { + "type": "integer" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "quantity" + ], + "type": "object" + }, + "type": "array" + }, + "next_action": { + "type": "string" + }, + "quote": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "buyer_summary": { + "type": "string" + }, + "cart_id": { + "type": "string" + }, + "checkout_id": { + "type": [ + "string", + "null" + ] + }, + "coupon_code": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_estimate": { + "additionalProperties": true, + "properties": { + "estimated_delivery_date": { + "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", + "type": "string" + }, + "working_days": { + "additionalProperties": true, + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "working_days", + "estimated_delivery_date" + ], + "type": "object" + }, + "discount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "discounts": { + "items": { + "additionalProperties": true, + "properties": { + "amount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "amount", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "free_delivery": { + "const": true, + "type": "boolean" + }, + "lines": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "compare_at_price": { + "anyOf": [ + { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Integer SGD cents; 1690 means S$16.90." + }, + "condition": { + "type": "string" + }, + "condition_label": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_working_days": { + "type": "integer" + }, + "expiry": { + "type": [ + "string", + "null" + ] + }, + "fulfilment": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "gtin": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line_total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "max_quantity": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "option_name": { + "type": "string" + }, + "product_id": { + "type": "integer" + }, + "product_name": { + "type": "string" + }, + "quantity": { + "type": "integer" + }, + "sku": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "stock_source": { + "type": "string" + }, + "tanatasa_pick": { + "type": "boolean" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "unit_pricing": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "basis": { + "enum": [ + "ml", + "g" + ], + "type": "string" + }, + "per_100": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000_label": { + "type": "string" + }, + "per_100_label": { + "type": "string" + }, + "total_quantity": { + "type": "number" + } + }, + "required": [ + "basis", + "total_quantity", + "per_100", + "per_1000", + "per_100_label", + "per_1000_label" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "product_id", + "slug", + "sku", + "name", + "option_name", + "product_name", + "brand", + "currency", + "unit_price", + "compare_at_price", + "available", + "max_quantity", + "url", + "image_url", + "image", + "gtin", + "condition", + "condition_label", + "expiry", + "stock_source", + "fulfilment", + "tanatasa_pick", + "unit_pricing", + "quantity", + "line_total", + "delivery_working_days" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "quoted_at": { + "format": "date-time", + "type": "string" + }, + "return_policy": { + "additionalProperties": true, + "properties": { + "condition": { + "type": "string" + }, + "policy_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "type": "string" + }, + "window_days": { + "type": "integer" + } + }, + "required": [ + "window_days", + "condition", + "summary", + "policy_url" + ], + "type": "object" + }, + "shipping": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + }, + "subtotal": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "version": { + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "cart_id", + "version", + "lines", + "coupon_code", + "discounts", + "subtotal", + "discount", + "shipping", + "free_delivery", + "total", + "checkout_id", + "stock_reserved", + "quoted_at", + "delivery_estimate", + "return_policy", + "buyer_summary", + "next_action" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "version": { + "type": "integer" + } + }, + "required": [ + "cart_id", + "version", + "lines", + "quote", + "next_action" + ], + "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" +}
- Changed
create_checkout1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "buyer_details": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "contact": { + "additionalProperties": true, + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + } + }, + "required": [ + "name", + "email", + "phone" + ], + "type": "object" + }, + "delivery": { + "additionalProperties": true, + "properties": { + "address_line1": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "unit_number": { + "type": "string" + } + }, + "required": [ + "address_line1", + "postal_code" + ], + "type": "object" + } + }, + "required": [ + "contact", + "delivery" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "buyer_summary": { + "type": "string" + }, + "cart_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "checkout_id": { + "type": "string" + }, + "checkout_status": { + "enum": [ + "cancelled", + "confirmed", + "cart_changed", + "payment_pending", + "ready_for_payment", + "details_required" + ], + "type": "string" + }, + "checkout_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "confirmation_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "details_version": { + "type": "integer" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "handoff_options": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "buyer_action": { + "type": "string" + }, + "path": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "path", + "available" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_confirmed": { + "type": "boolean" + }, + "payment_status": { + "type": "string" + }, + "payment_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "payment_url_expires_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "checkout_id", + "order_id", + "checkout_url", + "cart_url", + "details_version", + "checkout_status", + "payment_url", + "payment_url_expires_at", + "payment_confirmed", + "confirmation_url", + "expires_at", + "total", + "payment_status", + "buyer_summary", + "next_action", + "buyer_details", + "handoff_options" + ], + "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" +}
- Changed
get_cart1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "cart_id": { + "type": "string" + }, + "lines": { + "items": { + "additionalProperties": true, + "properties": { + "quantity": { + "type": "integer" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "quantity" + ], + "type": "object" + }, + "type": "array" + }, + "version": { + "type": "integer" + } + }, + "required": [ + "cart_id", + "version", + "lines" + ], + "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" +}
- Changed
get_checkout1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "buyer_details": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "contact": { + "additionalProperties": true, + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + } + }, + "required": [ + "name", + "email", + "phone" + ], + "type": "object" + }, + "delivery": { + "additionalProperties": true, + "properties": { + "address_line1": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "unit_number": { + "type": "string" + } + }, + "required": [ + "address_line1", + "postal_code" + ], + "type": "object" + } + }, + "required": [ + "contact", + "delivery" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "buyer_summary": { + "type": "string" + }, + "cart_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "checkout_id": { + "type": "string" + }, + "checkout_status": { + "enum": [ + "cancelled", + "confirmed", + "cart_changed", + "payment_pending", + "ready_for_payment", + "details_required" + ], + "type": "string" + }, + "checkout_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "confirmation_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "details_version": { + "type": "integer" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "handoff_options": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "buyer_action": { + "type": "string" + }, + "path": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "path", + "available" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_confirmed": { + "type": "boolean" + }, + "payment_status": { + "type": "string" + }, + "payment_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "payment_url_expires_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "checkout_id", + "order_id", + "checkout_url", + "cart_url", + "details_version", + "checkout_status", + "payment_url", + "payment_url_expires_at", + "payment_confirmed", + "confirmation_url", + "expires_at", + "total", + "payment_status", + "buyer_summary", + "next_action", + "buyer_details", + "handoff_options" + ], + "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" +}
- Changed
get_order1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "currency": { + "const": "SGD", + "type": "string" + }, + "items": { + "items": { + "additionalProperties": true, + "properties": { + "name": { + "type": [ + "string", + "null" + ] + }, + "quantity": { + "type": "integer" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "name", + "quantity", + "unit_price" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_confirmed": { + "type": "boolean" + }, + "status": { + "type": "string" + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "order_id", + "status", + "total" + ], + "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" +}
- Changed
get_product1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "brand": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "name", + "slug" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "catalog_observed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "freshness": { + "additionalProperties": true, + "properties": { + "catalog_cache_max_age_seconds": { + "type": "integer" + }, + "revalidation": { + "type": "string" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + } + }, + "required": [ + "catalog_cache_max_age_seconds", + "stock_reserved", + "revalidation" + ], + "type": "object" + }, + "generated_at": { + "description": "Response generation time, not the supplier's stock-verification time.", + "format": "date-time", + "type": "string" + }, + "good_to_know": { + "type": [ + "string", + "null" + ] + }, + "how_to_use": { + "type": [ + "string", + "null" + ] + }, + "images": { + "items": { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "name": { + "type": "string" + }, + "next_action": { + "type": "string" + }, + "offer_terms": { + "additionalProperties": true, + "properties": { + "account_required": { + "type": "boolean" + }, + "authentic": { + "type": "boolean" + }, + "delivery_area": { + "type": "string" + }, + "free_delivery": { + "type": "boolean" + }, + "minimum_spend": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "return_policy": { + "additionalProperties": true, + "properties": { + "condition": { + "type": "string" + }, + "policy_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "type": "string" + }, + "window_days": { + "type": "integer" + } + }, + "required": [ + "window_days", + "condition", + "summary", + "policy_url" + ], + "type": "object" + }, + "seller": { + "type": "string" + }, + "shipping_cost": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "seller", + "free_delivery", + "delivery_area", + "minimum_spend", + "shipping_cost", + "return_policy", + "authentic", + "account_required" + ], + "type": "object" + }, + "product_id": { + "type": "integer" + }, + "short_description": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + }, + "variants": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "category": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + }, + "path": { + "items": { + "type": "string" + }, + "type": "array" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name", + "path" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "compare_at_price": { + "anyOf": [ + { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Integer SGD cents; 1690 means S$16.90." + }, + "condition": { + "type": "string" + }, + "condition_label": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_estimate": { + "additionalProperties": true, + "properties": { + "estimated_delivery_date": { + "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", + "type": "string" + }, + "working_days": { + "additionalProperties": true, + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "working_days", + "estimated_delivery_date" + ], + "type": "object" + }, + "expiry": { + "type": [ + "string", + "null" + ] + }, + "fulfilment": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "gtin": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "images": { + "items": { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + "type": "array" + }, + "max_quantity": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "option_name": { + "type": "string" + }, + "product_id": { + "type": "integer" + }, + "product_name": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "stock_source": { + "type": "string" + }, + "tanatasa_pick": { + "type": "boolean" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "unit_pricing": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "basis": { + "enum": [ + "ml", + "g" + ], + "type": "string" + }, + "per_100": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000_label": { + "type": "string" + }, + "per_100_label": { + "type": "string" + }, + "total_quantity": { + "type": "number" + } + }, + "required": [ + "basis", + "total_quantity", + "per_100", + "per_1000", + "per_100_label", + "per_1000_label" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "product_id", + "slug", + "sku", + "name", + "option_name", + "product_name", + "brand", + "currency", + "unit_price", + "compare_at_price", + "available", + "max_quantity", + "url", + "image_url", + "image", + "gtin", + "condition", + "condition_label", + "expiry", + "stock_source", + "fulfilment", + "tanatasa_pick", + "unit_pricing", + "category", + "delivery_estimate", + "images" + ], + "type": "object" + }, + "type": "array" + }, + "who_for": { + "type": [ + "string", + "null" + ] + }, + "why_people_like_it": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "currency", + "money_unit", + "generated_at", + "catalog_observed_at", + "freshness", + "product_id", + "slug", + "name", + "url", + "description", + "short_description", + "images", + "brand", + "who_for", + "how_to_use", + "why_people_like_it", + "good_to_know", + "variants", + "offer_terms", + "next_action" + ], + "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" +}
- Changed
list_orders1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "email": { + "type": "string" + }, + "next_page": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "note": { + "type": "string" + }, + "orders": { + "items": { + "additionalProperties": true, + "properties": { + "currency": { + "const": "SGD", + "type": "string" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "order_id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "order_id", + "status", + "total" + ], + "type": "object" + }, + "type": "array" + }, + "page": { + "type": "integer" + } + }, + "required": [ + "email", + "orders", + "page", + "next_page", + "note" + ], + "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" +}
- Changed
prepare_payment1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "checkout_id": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_confirmed": { + "const": false, + "type": "boolean" + }, + "payment_status": { + "const": "pending", + "type": "string" + }, + "payment_url": { + "format": "uri", + "type": "string" + }, + "payment_url_expires_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "checkout_id", + "order_id", + "payment_url", + "payment_url_expires_at", + "total", + "payment_status", + "payment_confirmed", + "next_action" + ], + "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" +}
- Changed
quote_cart1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "buyer_summary": { + "type": "string" + }, + "cart_id": { + "type": "string" + }, + "checkout_id": { + "type": [ + "string", + "null" + ] + }, + "coupon_code": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_estimate": { + "additionalProperties": true, + "properties": { + "estimated_delivery_date": { + "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", + "type": "string" + }, + "working_days": { + "additionalProperties": true, + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "working_days", + "estimated_delivery_date" + ], + "type": "object" + }, + "discount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "discounts": { + "items": { + "additionalProperties": true, + "properties": { + "amount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "amount", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "free_delivery": { + "const": true, + "type": "boolean" + }, + "lines": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "compare_at_price": { + "anyOf": [ + { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Integer SGD cents; 1690 means S$16.90." + }, + "condition": { + "type": "string" + }, + "condition_label": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_working_days": { + "type": "integer" + }, + "expiry": { + "type": [ + "string", + "null" + ] + }, + "fulfilment": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "gtin": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line_total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "max_quantity": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "option_name": { + "type": "string" + }, + "product_id": { + "type": "integer" + }, + "product_name": { + "type": "string" + }, + "quantity": { + "type": "integer" + }, + "sku": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "stock_source": { + "type": "string" + }, + "tanatasa_pick": { + "type": "boolean" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "unit_pricing": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "basis": { + "enum": [ + "ml", + "g" + ], + "type": "string" + }, + "per_100": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000_label": { + "type": "string" + }, + "per_100_label": { + "type": "string" + }, + "total_quantity": { + "type": "number" + } + }, + "required": [ + "basis", + "total_quantity", + "per_100", + "per_1000", + "per_100_label", + "per_1000_label" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "product_id", + "slug", + "sku", + "name", + "option_name", + "product_name", + "brand", + "currency", + "unit_price", + "compare_at_price", + "available", + "max_quantity", + "url", + "image_url", + "image", + "gtin", + "condition", + "condition_label", + "expiry", + "stock_source", + "fulfilment", + "tanatasa_pick", + "unit_pricing", + "quantity", + "line_total", + "delivery_working_days" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "quoted_at": { + "format": "date-time", + "type": "string" + }, + "return_policy": { + "additionalProperties": true, + "properties": { + "condition": { + "type": "string" + }, + "policy_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "type": "string" + }, + "window_days": { + "type": "integer" + } + }, + "required": [ + "window_days", + "condition", + "summary", + "policy_url" + ], + "type": "object" + }, + "shipping": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + }, + "subtotal": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "version": { + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "cart_id", + "version", + "lines", + "coupon_code", + "discounts", + "subtotal", + "discount", + "shipping", + "free_delivery", + "total", + "checkout_id", + "stock_reserved", + "quoted_at", + "delivery_estimate", + "return_policy", + "buyer_summary", + "next_action" + ], + "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" +}
- Changed
request_order_change1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "already_requested": { + "type": "boolean" + }, + "next_action": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "request": { + "additionalProperties": true, + "properties": { + "created_at": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "request_id": { + "type": "integer" + }, + "status": { + "type": "string" + } + }, + "required": [ + "request_id", + "kind", + "status", + "reason", + "created_at" + ], + "type": "object" + } + }, + "required": [ + "order_id", + "already_requested", + "request", + "next_action" + ], + "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" +}
- Changed
search_products1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "catalog_observed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "freshness": { + "additionalProperties": true, + "properties": { + "catalog_cache_max_age_seconds": { + "type": "integer" + }, + "revalidation": { + "type": "string" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + } + }, + "required": [ + "catalog_cache_max_age_seconds", + "stock_reserved", + "revalidation" + ], + "type": "object" + }, + "generated_at": { + "description": "Response generation time, not the supplier's stock-verification time.", + "format": "date-time", + "type": "string" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "next_page": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "offer_terms": { + "additionalProperties": true, + "properties": { + "account_required": { + "type": "boolean" + }, + "authentic": { + "type": "boolean" + }, + "delivery_area": { + "type": "string" + }, + "free_delivery": { + "type": "boolean" + }, + "minimum_spend": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "return_policy": { + "additionalProperties": true, + "properties": { + "condition": { + "type": "string" + }, + "policy_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "type": "string" + }, + "window_days": { + "type": "integer" + } + }, + "required": [ + "window_days", + "condition", + "summary", + "policy_url" + ], + "type": "object" + }, + "seller": { + "type": "string" + }, + "shipping_cost": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "seller", + "free_delivery", + "delivery_area", + "minimum_spend", + "shipping_cost", + "return_policy", + "authentic", + "account_required" + ], + "type": "object" + }, + "page": { + "type": "integer" + }, + "products": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "category": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + }, + "path": { + "items": { + "type": "string" + }, + "type": "array" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name", + "path" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "compare_at_price": { + "anyOf": [ + { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Integer SGD cents; 1690 means S$16.90." + }, + "condition": { + "type": "string" + }, + "condition_label": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_estimate": { + "additionalProperties": true, + "properties": { + "estimated_delivery_date": { + "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", + "type": "string" + }, + "working_days": { + "additionalProperties": true, + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "working_days", + "estimated_delivery_date" + ], + "type": "object" + }, + "expiry": { + "type": [ + "string", + "null" + ] + }, + "fulfilment": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "gtin": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "max_quantity": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "option_name": { + "type": "string" + }, + "product_id": { + "type": "integer" + }, + "product_name": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "stock_source": { + "type": "string" + }, + "tanatasa_pick": { + "type": "boolean" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "unit_pricing": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "basis": { + "enum": [ + "ml", + "g" + ], + "type": "string" + }, + "per_100": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000_label": { + "type": "string" + }, + "per_100_label": { + "type": "string" + }, + "total_quantity": { + "type": "number" + } + }, + "required": [ + "basis", + "total_quantity", + "per_100", + "per_1000", + "per_100_label", + "per_1000_label" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "product_id", + "slug", + "sku", + "name", + "option_name", + "product_name", + "brand", + "currency", + "unit_price", + "compare_at_price", + "available", + "max_quantity", + "url", + "image_url", + "image", + "gtin", + "condition", + "condition_label", + "expiry", + "stock_source", + "fulfilment", + "tanatasa_pick", + "unit_pricing", + "category", + "delivery_estimate" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "currency", + "money_unit", + "generated_at", + "catalog_observed_at", + "freshness", + "offer_terms", + "products", + "page", + "next_page", + "next_action" + ], + "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" +}
- Changed
search_products_batch1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "catalog_observed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "freshness": { + "additionalProperties": true, + "properties": { + "catalog_cache_max_age_seconds": { + "type": "integer" + }, + "revalidation": { + "type": "string" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + } + }, + "required": [ + "catalog_cache_max_age_seconds", + "stock_reserved", + "revalidation" + ], + "type": "object" + }, + "generated_at": { + "description": "Response generation time, not the supplier's stock-verification time.", + "format": "date-time", + "type": "string" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "offer_terms": { + "additionalProperties": true, + "properties": { + "account_required": { + "type": "boolean" + }, + "authentic": { + "type": "boolean" + }, + "delivery_area": { + "type": "string" + }, + "free_delivery": { + "type": "boolean" + }, + "minimum_spend": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "return_policy": { + "additionalProperties": true, + "properties": { + "condition": { + "type": "string" + }, + "policy_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "type": "string" + }, + "window_days": { + "type": "integer" + } + }, + "required": [ + "window_days", + "condition", + "summary", + "policy_url" + ], + "type": "object" + }, + "seller": { + "type": "string" + }, + "shipping_cost": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "seller", + "free_delivery", + "delivery_area", + "minimum_spend", + "shipping_cost", + "return_policy", + "authentic", + "account_required" + ], + "type": "object" + }, + "results": { + "items": { + "additionalProperties": true, + "properties": { + "catalog_observed_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "When catalogue rows were read, retained on cache hits. Null for a batch (see each result) or a query needing no catalogue read. Not supplier verification time." + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "freshness": { + "additionalProperties": true, + "properties": { + "catalog_cache_max_age_seconds": { + "type": "integer" + }, + "revalidation": { + "type": "string" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + } + }, + "required": [ + "catalog_cache_max_age_seconds", + "stock_reserved", + "revalidation" + ], + "type": "object" + }, + "generated_at": { + "description": "Response generation time, not the supplier's stock-verification time.", + "format": "date-time", + "type": "string" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_page": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "page": { + "type": "integer" + }, + "products": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "category": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "name": { + "type": "string" + }, + "path": { + "items": { + "type": "string" + }, + "type": "array" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name", + "path" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "compare_at_price": { + "anyOf": [ + { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Integer SGD cents; 1690 means S$16.90." + }, + "condition": { + "type": "string" + }, + "condition_label": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_estimate": { + "additionalProperties": true, + "properties": { + "estimated_delivery_date": { + "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", + "type": "string" + }, + "working_days": { + "additionalProperties": true, + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "working_days", + "estimated_delivery_date" + ], + "type": "object" + }, + "expiry": { + "type": [ + "string", + "null" + ] + }, + "fulfilment": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "gtin": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "max_quantity": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "option_name": { + "type": "string" + }, + "product_id": { + "type": "integer" + }, + "product_name": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "stock_source": { + "type": "string" + }, + "tanatasa_pick": { + "type": "boolean" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "unit_pricing": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "basis": { + "enum": [ + "ml", + "g" + ], + "type": "string" + }, + "per_100": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000_label": { + "type": "string" + }, + "per_100_label": { + "type": "string" + }, + "total_quantity": { + "type": "number" + } + }, + "required": [ + "basis", + "total_quantity", + "per_100", + "per_1000", + "per_100_label", + "per_1000_label" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "product_id", + "slug", + "sku", + "name", + "option_name", + "product_name", + "brand", + "currency", + "unit_price", + "compare_at_price", + "available", + "max_quantity", + "url", + "image_url", + "image", + "gtin", + "condition", + "condition_label", + "expiry", + "stock_source", + "fulfilment", + "tanatasa_pick", + "unit_pricing", + "category", + "delivery_estimate" + ], + "type": "object" + }, + "type": "array" + }, + "query": { + "type": "string" + } + }, + "required": [ + "currency", + "money_unit", + "generated_at", + "catalog_observed_at", + "freshness", + "products", + "page", + "next_page", + "query" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "currency", + "money_unit", + "generated_at", + "catalog_observed_at", + "freshness", + "offer_terms", + "results", + "next_action" + ], + "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" +}
- Changed
set_cart_item1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "cart_id": { + "type": "string" + }, + "guest_token": { + "type": "string" + }, + "lines": { + "items": { + "additionalProperties": true, + "properties": { + "quantity": { + "type": "integer" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "quantity" + ], + "type": "object" + }, + "type": "array" + }, + "next_action": { + "type": "string" + }, + "quote": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "buyer_summary": { + "type": "string" + }, + "cart_id": { + "type": "string" + }, + "checkout_id": { + "type": [ + "string", + "null" + ] + }, + "coupon_code": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_estimate": { + "additionalProperties": true, + "properties": { + "estimated_delivery_date": { + "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", + "type": "string" + }, + "working_days": { + "additionalProperties": true, + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "working_days", + "estimated_delivery_date" + ], + "type": "object" + }, + "discount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "discounts": { + "items": { + "additionalProperties": true, + "properties": { + "amount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "amount", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "free_delivery": { + "const": true, + "type": "boolean" + }, + "lines": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "compare_at_price": { + "anyOf": [ + { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Integer SGD cents; 1690 means S$16.90." + }, + "condition": { + "type": "string" + }, + "condition_label": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_working_days": { + "type": "integer" + }, + "expiry": { + "type": [ + "string", + "null" + ] + }, + "fulfilment": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "gtin": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line_total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "max_quantity": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "option_name": { + "type": "string" + }, + "product_id": { + "type": "integer" + }, + "product_name": { + "type": "string" + }, + "quantity": { + "type": "integer" + }, + "sku": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "stock_source": { + "type": "string" + }, + "tanatasa_pick": { + "type": "boolean" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "unit_pricing": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "basis": { + "enum": [ + "ml", + "g" + ], + "type": "string" + }, + "per_100": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000_label": { + "type": "string" + }, + "per_100_label": { + "type": "string" + }, + "total_quantity": { + "type": "number" + } + }, + "required": [ + "basis", + "total_quantity", + "per_100", + "per_1000", + "per_100_label", + "per_1000_label" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "product_id", + "slug", + "sku", + "name", + "option_name", + "product_name", + "brand", + "currency", + "unit_price", + "compare_at_price", + "available", + "max_quantity", + "url", + "image_url", + "image", + "gtin", + "condition", + "condition_label", + "expiry", + "stock_source", + "fulfilment", + "tanatasa_pick", + "unit_pricing", + "quantity", + "line_total", + "delivery_working_days" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "quoted_at": { + "format": "date-time", + "type": "string" + }, + "return_policy": { + "additionalProperties": true, + "properties": { + "condition": { + "type": "string" + }, + "policy_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "type": "string" + }, + "window_days": { + "type": "integer" + } + }, + "required": [ + "window_days", + "condition", + "summary", + "policy_url" + ], + "type": "object" + }, + "shipping": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + }, + "subtotal": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "version": { + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "cart_id", + "version", + "lines", + "coupon_code", + "discounts", + "subtotal", + "discount", + "shipping", + "free_delivery", + "total", + "checkout_id", + "stock_reserved", + "quoted_at", + "delivery_estimate", + "return_policy", + "buyer_summary", + "next_action" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "version": { + "type": "integer" + } + }, + "required": [ + "cart_id", + "version", + "lines", + "quote", + "next_action" + ], + "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" +}
- Changed
set_checkout_details1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "buyer_details": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "contact": { + "additionalProperties": true, + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + } + }, + "required": [ + "name", + "email", + "phone" + ], + "type": "object" + }, + "delivery": { + "additionalProperties": true, + "properties": { + "address_line1": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "unit_number": { + "type": "string" + } + }, + "required": [ + "address_line1", + "postal_code" + ], + "type": "object" + } + }, + "required": [ + "contact", + "delivery" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "buyer_summary": { + "type": "string" + }, + "cart_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "checkout_id": { + "type": "string" + }, + "checkout_status": { + "enum": [ + "cancelled", + "confirmed", + "cart_changed", + "payment_pending", + "ready_for_payment", + "details_required" + ], + "type": "string" + }, + "checkout_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "confirmation_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "details_version": { + "type": "integer" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "handoff_options": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "buyer_action": { + "type": "string" + }, + "path": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "path", + "available" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_confirmed": { + "type": "boolean" + }, + "payment_status": { + "type": "string" + }, + "payment_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "payment_url_expires_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "checkout_id", + "order_id", + "checkout_url", + "cart_url", + "details_version", + "checkout_status", + "payment_url", + "payment_url_expires_at", + "payment_confirmed", + "confirmation_url", + "expires_at", + "total", + "payment_status", + "buyer_summary", + "next_action", + "buyer_details", + "handoff_options" + ], + "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" +}
- Changed
sign_in1 field changed- changed
Output 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" +}
- Changed
start_checkout1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "anyOf": [ + { + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "properties": { + "buyer_details": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "contact": { + "additionalProperties": true, + "properties": { + "email": { + "type": "string" + }, + "name": { + "type": "string" + }, + "phone": { + "type": "string" + } + }, + "required": [ + "name", + "email", + "phone" + ], + "type": "object" + }, + "delivery": { + "additionalProperties": true, + "properties": { + "address_line1": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "unit_number": { + "type": "string" + } + }, + "required": [ + "address_line1", + "postal_code" + ], + "type": "object" + } + }, + "required": [ + "contact", + "delivery" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "buyer_summary": { + "type": "string" + }, + "cart_id": { + "type": "string" + }, + "cart_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "checkout_id": { + "type": "string" + }, + "checkout_status": { + "enum": [ + "cancelled", + "confirmed", + "cart_changed", + "payment_pending", + "ready_for_payment", + "details_required" + ], + "type": "string" + }, + "checkout_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "confirmation_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "details_version": { + "type": "integer" + }, + "expires_at": { + "format": "date-time", + "type": "string" + }, + "guest_token": { + "type": "string" + }, + "handoff_options": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "buyer_action": { + "type": "string" + }, + "path": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "path", + "available" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "order_id": { + "type": "string" + }, + "payment_confirmed": { + "type": "boolean" + }, + "payment_status": { + "type": "string" + }, + "payment_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "payment_url_expires_at": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "quote": { + "additionalProperties": true, + "properties": { + "buyer_summary": { + "type": "string" + }, + "cart_id": { + "type": "string" + }, + "checkout_id": { + "type": [ + "string", + "null" + ] + }, + "coupon_code": { + "type": [ + "string", + "null" + ] + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_estimate": { + "additionalProperties": true, + "properties": { + "estimated_delivery_date": { + "description": "Estimated Singapore delivery date, YYYY-MM-DD; not a guarantee.", + "type": "string" + }, + "working_days": { + "additionalProperties": true, + "properties": { + "max": { + "type": "integer" + }, + "min": { + "type": "integer" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "working_days", + "estimated_delivery_date" + ], + "type": "object" + }, + "discount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "discounts": { + "items": { + "additionalProperties": true, + "properties": { + "amount": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "amount", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "free_delivery": { + "const": true, + "type": "boolean" + }, + "lines": { + "items": { + "additionalProperties": true, + "properties": { + "available": { + "type": "boolean" + }, + "brand": { + "type": [ + "string", + "null" + ] + }, + "compare_at_price": { + "anyOf": [ + { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Integer SGD cents; 1690 means S$16.90." + }, + "condition": { + "type": "string" + }, + "condition_label": { + "type": "string" + }, + "currency": { + "const": "SGD", + "type": "string" + }, + "delivery_working_days": { + "type": "integer" + }, + "expiry": { + "type": [ + "string", + "null" + ] + }, + "fulfilment": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "gtin": { + "type": [ + "string", + "null" + ] + }, + "image": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "alt": { + "type": [ + "string", + "null" + ] + }, + "height": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "mime_type": { + "description": "MIME type inferred from the stored image URL extension; null when unknown.", + "type": [ + "string", + "null" + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "width": { + "anyOf": [ + { + "exclusiveMinimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "url", + "alt", + "width", + "height", + "mime_type" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "image_url": { + "anyOf": [ + { + "format": "uri", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "line_total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "max_quantity": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "option_name": { + "type": "string" + }, + "product_id": { + "type": "integer" + }, + "product_name": { + "type": "string" + }, + "quantity": { + "type": "integer" + }, + "sku": { + "type": "string" + }, + "slug": { + "type": "string" + }, + "stock_source": { + "type": "string" + }, + "tanatasa_pick": { + "type": "boolean" + }, + "unit_price": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "unit_pricing": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "basis": { + "enum": [ + "ml", + "g" + ], + "type": "string" + }, + "per_100": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "per_1000_label": { + "type": "string" + }, + "per_100_label": { + "type": "string" + }, + "total_quantity": { + "type": "number" + } + }, + "required": [ + "basis", + "total_quantity", + "per_100", + "per_1000", + "per_100_label", + "per_1000_label" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "url": { + "format": "uri", + "type": "string" + }, + "variant_id": { + "type": "integer" + } + }, + "required": [ + "variant_id", + "product_id", + "slug", + "sku", + "name", + "option_name", + "product_name", + "brand", + "currency", + "unit_price", + "compare_at_price", + "available", + "max_quantity", + "url", + "image_url", + "image", + "gtin", + "condition", + "condition_label", + "expiry", + "stock_source", + "fulfilment", + "tanatasa_pick", + "unit_pricing", + "quantity", + "line_total", + "delivery_working_days" + ], + "type": "object" + }, + "type": "array" + }, + "money_unit": { + "const": "cents", + "type": "string" + }, + "next_action": { + "type": "string" + }, + "quoted_at": { + "format": "date-time", + "type": "string" + }, + "return_policy": { + "additionalProperties": true, + "properties": { + "condition": { + "type": "string" + }, + "policy_url": { + "format": "uri", + "type": "string" + }, + "summary": { + "type": "string" + }, + "window_days": { + "type": "integer" + } + }, + "required": [ + "window_days", + "condition", + "summary", + "policy_url" + ], + "type": "object" + }, + "shipping": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "stock_reserved": { + "const": false, + "type": "boolean" + }, + "subtotal": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + }, + "version": { + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "cart_id", + "version", + "lines", + "coupon_code", + "discounts", + "subtotal", + "discount", + "shipping", + "free_delivery", + "total", + "checkout_id", + "stock_reserved", + "quoted_at", + "delivery_estimate", + "return_policy", + "buyer_summary", + "next_action" + ], + "type": "object" + }, + "total": { + "description": "Integer SGD cents; 1690 means S$16.90.", + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "currency", + "money_unit", + "checkout_id", + "order_id", + "checkout_url", + "cart_url", + "details_version", + "checkout_status", + "payment_url", + "payment_url_expires_at", + "payment_confirmed", + "confirmation_url", + "expires_at", + "total", + "payment_status", + "buyer_summary", + "next_action", + "buyer_details", + "handoff_options", + "cart_id", + "quote" + ], + "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" +}
6 tool updates
- Changed
create_checkout9 fields changed- added
Input schema / properties / details / properties / contact / descriptionAdded value: +"The buyer's name, email and phone." - added
Input schema / properties / details / properties / delivery / properties / address_line1 / descriptionAdded value: +"Block/house number and street, e.g. \"123 Tampines Street 11\"." - added
Input schema / properties / details / properties / delivery / properties / address_line2 / descriptionAdded value: +"Optional building or estate name." - added
Input schema / properties / details / properties / delivery / properties / city / descriptionAdded value: +"Defaults to Singapore." - added
Input schema / properties / details / properties / delivery / properties / country / descriptionAdded value: +"Defaults to SG; Singapore delivery only." - changed
Input schema / properties / details / properties / delivery / properties / no_unit_number / descriptionPrevious value: -"true for a landed house or other address with no unit number."New value: +"Set true only for a landed house or other address with no unit number." - added
Input schema / properties / details / properties / delivery / properties / recipient_name / descriptionAdded value: +"Defaults to contact.name." - added
Input schema / properties / details / properties / delivery / properties / recipient_phone / descriptionAdded value: +"Defaults to contact.phone." - changed
Input schema / properties / details / properties / delivery / requiredPrevious value: -[ - "recipient_name", - "recipient_phone", - "address_line1", - "no_unit_number", - "postal_code", - "country" -]New value: +[ + "address_line1", + "postal_code" +]
- Changed
search_products2 fields changed- added
Input schema / properties / max_delivery_daysAdded value: +{ + "description": "Only items delivered within this many Singapore working days (each result shows its estimated_delivery_date).", + "maximum": 30, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / sortAdded value: +{ + "default": "relevance", + "description": "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).", + "enum": [ + "relevance", + "price", + "price_desc", + "unit_price", + "delivery" + ], + "type": "string" +}
- Added
search_products_batch - Removed
set_cart_coupon - Changed
set_checkout_details9 fields changed- added
Input schema / properties / details / properties / contact / descriptionAdded value: +"The buyer's name, email and phone." - added
Input schema / properties / details / properties / delivery / properties / address_line1 / descriptionAdded value: +"Block/house number and street, e.g. \"123 Tampines Street 11\"." - added
Input schema / properties / details / properties / delivery / properties / address_line2 / descriptionAdded value: +"Optional building or estate name." - added
Input schema / properties / details / properties / delivery / properties / city / descriptionAdded value: +"Defaults to Singapore." - added
Input schema / properties / details / properties / delivery / properties / country / descriptionAdded value: +"Defaults to SG; Singapore delivery only." - changed
Input schema / properties / details / properties / delivery / properties / no_unit_number / descriptionPrevious value: -"true for a landed house or other address with no unit number."New value: +"Set true only for a landed house or other address with no unit number." - added
Input schema / properties / details / properties / delivery / properties / recipient_name / descriptionAdded value: +"Defaults to contact.name." - added
Input schema / properties / details / properties / delivery / properties / recipient_phone / descriptionAdded value: +"Defaults to contact.phone." - changed
Input schema / properties / details / properties / delivery / requiredPrevious value: -[ - "recipient_name", - "recipient_phone", - "address_line1", - "no_unit_number", - "postal_code", - "country" -]New value: +[ + "address_line1", + "postal_code" +]
- Added
start_checkout
2 tool updates
- Changed
get_product1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "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.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
search_products1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "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.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
2 tool updates
- Changed
create_cart1 field changed- added
Input schema / properties / itemsAdded value: +{ + "description": "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.", + "items": { + "additionalProperties": false, + "properties": { + "quantity": { + "description": "How many to buy.", + "maximum": 99, + "minimum": 1, + "type": "integer" + }, + "variant_id": { + "description": "variant_id from search_products or get_product.", + "exclusiveMinimum": 0, + "type": "integer" + } + }, + "required": [ + "variant_id", + "quantity" + ], + "type": "object" + }, + "maxItems": 20, + "minItems": 1, + "type": "array" +}
- Changed
create_checkout1 field changed- added
Input schema / properties / detailsAdded value: +{ + "additionalProperties": false, + "description": "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 before prepare_payment.", + "properties": { + "contact": { + "additionalProperties": false, + "properties": { + "email": { + "maxLength": 254, + "minLength": 1, + "type": "string" + }, + "name": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "phone": { + "maxLength": 32, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name", + "email", + "phone" + ], + "type": "object" + }, + "delivery": { + "additionalProperties": false, + "properties": { + "address_line1": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "address_line2": { + "maxLength": 200, + "type": "string" + }, + "city": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "country": { + "const": "SG", + "type": "string" + }, + "no_unit_number": { + "description": "true for a landed house or other address with no unit number.", + "type": "boolean" + }, + "postal_code": { + "description": "The 6-digit Singapore postal code.", + "maxLength": 6, + "minLength": 1, + "type": "string" + }, + "recipient_name": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "recipient_phone": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "unit_number": { + "description": "e.g. #12-34. Required unless no_unit_number is true.", + "maxLength": 30, + "type": "string" + } + }, + "required": [ + "recipient_name", + "recipient_phone", + "address_line1", + "no_unit_number", + "postal_code", + "country" + ], + "type": "object" + } + }, + "required": [ + "contact", + "delivery" + ], + "type": "object" +}
15 tool updates
- Changed
checkout_session3 fields changed- added
Input schema / properties / checkout_session / descriptionAdded value: +"The items to buy: up to 20 feed items with quantities." - added
Input schema / properties / checkout_session / properties / items / items / properties / id / descriptionAdded value: +"The product feed item id, tanatasa-variant-<variant_id>." - added
Input schema / properties / idempotency_key / descriptionAdded value: +"A new random key per purchase; retry with the same key."
- Changed
create_checkout5 fields changed- changed
Input schema / properties / account_token / descriptionPrevious 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." - added
Input schema / properties / cart_id / descriptionAdded value: +"cart_id from create_cart." - added
Input schema / properties / expected_total / descriptionAdded value: +"The total from that quote, in SGD cents. Checkout refuses if the total changed." - added
Input schema / properties / idempotency_key / descriptionAdded value: +"A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase." - added
Input schema / properties / version / descriptionAdded value: +"The version from the quote_cart result you are checking out."
- Changed
get_cart1 field changed- added
Input schema / properties / cart_id / descriptionAdded value: +"cart_id from create_cart."
- Changed
get_checkout1 field changed- added
Input schema / properties / checkout_id / descriptionAdded value: +"checkout_id from create_checkout or checkout_session."
- Changed
get_order2 fields changed- added
Input schema / properties / account_tokenAdded value: +{ + "description": "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.", + "pattern": "^tak_[a-f0-9]{64}$", + "type": "string" +} - added
Input schema / properties / order_id / descriptionAdded value: +"order_id from prepare_payment, get_checkout or list_orders, e.g. TN-…"
- Changed
get_product1 field changed- added
Input schema / properties / product / descriptionAdded value: +"A product ID, product slug, variant slug or SKU, e.g. from search_products."
- Added
list_orders - Changed
prepare_payment5 fields changed- added
Input schema / properties / buyer_confirmed / descriptionAdded value: +"true only after the buyer confirmed these details and this total." - added
Input schema / properties / checkout_id / descriptionAdded value: +"checkout_id from create_checkout or checkout_session." - added
Input schema / properties / details_version / descriptionAdded value: +"The details_version the buyer confirmed." - added
Input schema / properties / expected_total / descriptionAdded value: +"The total the buyer confirmed, in SGD cents." - added
Input schema / properties / idempotency_key / descriptionAdded value: +"A new random key per purchase. Retry with the same key and exact input; never reuse it for a different purchase."
- Changed
quote_cart2 fields changed- changed
Input schema / properties / account_token / descriptionPrevious 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." - added
Input schema / properties / cart_id / descriptionAdded value: +"cart_id from create_cart."
- Added
request_order_change - Changed
search_products11 fields changed- added
Input schema / properties / brand / descriptionAdded value: +"Brand name or slug." - added
Input schema / properties / category / descriptionAdded value: +"Category name or slug, e.g. \"pantry\" or \"skincare\"." - added
Input schema / properties / in_stock / descriptionAdded value: +"Only variants available now." - added
Input schema / properties / ingredient / descriptionAdded value: +"A key ingredient, e.g. \"ceramides\"." - added
Input schema / properties / limit / descriptionAdded value: +"Results per page (1-50)." - added
Input schema / properties / max_price / descriptionAdded value: +"Highest price in SGD cents (S$40 is 4000)." - added
Input schema / properties / min_price / descriptionAdded value: +"Lowest price in SGD cents." - added
Input schema / properties / page / descriptionAdded value: +"Result page; use next_page from the previous result." - added
Input schema / properties / purpose / descriptionAdded value: +"What it is for, e.g. \"sensitive-skin\"." - added
Input schema / properties / q / descriptionAdded value: +"Search words, e.g. \"cerave cleanser\" or \"gift for dad under $40\". A price phrase sets max_price when it is absent." - added
Input schema / properties / skin_type / descriptionAdded value: +"e.g. \"oily\", \"dry\", \"sensitive\"."
- Changed
set_cart_coupon3 fields changed- added
Input schema / properties / cart_id / descriptionAdded value: +"cart_id from create_cart." - added
Input schema / properties / coupon_code / descriptionAdded value: +"A coupon code or a friend's referral code; null removes both." - added
Input schema / properties / version / descriptionAdded value: +"The cart's current version, from the last cart result. Each edit increments it."
- Changed
set_cart_item4 fields changed- added
Input schema / properties / cart_id / descriptionAdded value: +"cart_id from create_cart." - added
Input schema / properties / quantity / descriptionAdded value: +"The total quantity wanted (not an increment); 0 removes the item." - added
Input schema / properties / variant_id / descriptionAdded value: +"variant_id from search_products or get_product." - added
Input schema / properties / version / descriptionAdded value: +"The cart's current version, from the last cart result. Each edit increments it."
- Changed
set_checkout_details6 fields changed- added
Input schema / properties / checkout_id / descriptionAdded value: +"checkout_id from create_checkout or checkout_session." - added
Input schema / properties / details / descriptionAdded value: +"Contact and Singapore delivery details exactly as the buyer gave them." - added
Input schema / properties / details / properties / delivery / properties / no_unit_number / descriptionAdded value: +"true for a landed house or other address with no unit number." - added
Input schema / properties / details / properties / delivery / properties / postal_code / descriptionAdded value: +"The 6-digit Singapore postal code." - added
Input schema / properties / details / properties / delivery / properties / unit_number / descriptionAdded value: +"e.g. #12-34. Required unless no_unit_number is true." - added
Input schema / properties / details_version / descriptionAdded value: +"The checkout's current details_version from get_checkout (0 before any details are saved)."
- Changed
sign_in1 field changed- changed
Input schema / properties / account_token / descriptionPrevious 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."
7 tool updates
- Changed
create_checkout2 fields changed- changed
Input schema / properties / account_token / descriptionPrevious value: -"Private account token from verify_login_code, 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." - added
Input schema / properties / coupon_codeAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it." +}
- Removed
get_account - Changed
quote_cart2 fields changed- changed
Input schema / properties / account_token / descriptionPrevious value: -"Private account token from verify_login_code, 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." - added
Input schema / properties / coupon_codeAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "A coupon code or a friend's referral code to apply; null removes both. quote_cart previews it; create_checkout applies it." +}
- Removed
request_login_code - Added
sign_in - Removed
sign_out - Removed
verify_login_code
6 tool updates
- Changed
create_checkout2 fields changed- added
Input schema / properties / account_tokenAdded value: +{ + "description": "Private account token from verify_login_code, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit.", + "pattern": "^tak_[a-f0-9]{64}$", + "type": "string" +} - added
Input schema / properties / use_creditAdded value: +{ + "description": "Use the signed-in customer's cashback credit (default true).", + "type": "boolean" +}
- Added
get_account - Changed
quote_cart2 fields changed- added
Input schema / properties / account_tokenAdded value: +{ + "description": "Private account token from verify_login_code, after the customer gave you the code from their email. Lets quotes and checkout use their cashback credit.", + "pattern": "^tak_[a-f0-9]{64}$", + "type": "string" +} - added
Input schema / properties / use_creditAdded value: +{ + "description": "Use the signed-in customer's cashback credit (default true).", + "type": "boolean" +}
- Added
request_login_code - Added
sign_out - Added
verify_login_code
3 tool updates
- Added
get_checkout - Added
prepare_payment - Added
set_checkout_details
8 tool updates
- Changed
checkout_session1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
create_cart1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
create_checkout1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
get_cart1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
get_order1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
quote_cart1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
set_cart_coupon1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
- Changed
set_cart_item1 field changed- added
Input schema / properties / guest_tokenAdded value: +{ + "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", + "pattern": "^[a-f0-9]{64}$", + "type": "string" +}
8 tool updates
- Changed
checkout_session1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
- Changed
create_cart1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
- Changed
create_checkout1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
- Changed
get_cart1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
- Changed
get_order1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
- Changed
quote_cart1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
- Changed
set_cart_coupon1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
- Changed
set_cart_item1 field changed- removed
Input schema / properties / guest_tokenRemoved value: -{ - "description": "Private guest session token from create_cart. Retain for cart, checkout and purchase-status calls; no account login needed.", - "pattern": "^[a-f0-9]{64}$", - "type": "string" -}
10 tool updates
- First observed
checkout_session - First observed
create_cart - First observed
create_checkout - First observed
get_cart - First observed
get_order - First observed
get_product - First observed
quote_cart - First observed
search_products - First observed
set_cart_coupon - First observed
set_cart_item
Publisher details
- Operator
- WELL IN STYLE PTE. LTD. · Publisher source
- Operator website
- https://tanatasa.sg · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://tanatasa.sg/ai-agent-docs · Publisher source
- Trust center
- Unknown
- Restrictions
- Delivery is within Singapore only. Catalog and guest shopping require no account or API key. The buyer reviews and pays on tanatasa.sg. · Publisher source
Related MCP Connectors
Search ProtoClinical's current K-beauty catalog and manage buyer-approved carts and checkouts.
Search lifestyle, beauty, and tech products with live stock checks and 1-click checkout.
AI-powered commerce API for luxury skincare shopping. Enables AI agents to search products, browse collections, manage shopping carts, and generate checkout URLs for the Regenique Elegance Shopify store.
Agent-native commerce for SEA/China/global. 43 brands. 6 tools. 9-language search.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables users to search for beauty products, manage shopping baskets, and complete purchases on Sephora via an AI assistant. It also provides functionality to check Beauty Insider reward points and tier status using browser automation.67 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to browse product catalogs, search products with filters, and initiate checkouts, generating order summaries and checkout URLs.-
- AlicenseAqualityAmaintenanceEnables AI assistants to shop on Lazada/RedMart by reusing a shared login, comparing product choices, and requiring user approval before checkout.254MIT
- AlicenseAqualityBmaintenanceCross-border product catalog for AI agents. Search and compare products from US and South East Asian markets via Model Context Protocol.6209 npm15MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.