Skip to main content
Glama

Server Details

teas.co.uk is an independent UK shop with more than 600 teas, coffees and hot chocolates from 60 brands. This connector searches the live catalogue in plain words, such as a strong breakfast tea or something caffeine free for bedtime, with filters for type, caffeine, milk, time of day, strength, pack size, price per cup and organic, Fairtrade or vegan labels, and shows live prices and stock. Open any product for tasting notes, a brewing guide and recipe ideas, or compare up to four side by side. Build a basket and get a secure checkout link: payment always happens on teas.co.uk, never in the chat, and the connector cannot place an order. Customers who link their teas.co.uk account (OAuth) can see orders and courier tracking, buy again, manage repeat deliveries, check reward points and start a return. teas.co.uk delivers to the UK, the Channel Islands, the Isle of Man and many European countries; prices are in pounds including VAT.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 18 tools

Disambiguation5/5

Every tool has an explicitly distinct purpose, and descriptions actively disambiguate the risky pairs (checkout_link vs checkout_session, find_products vs get_product vs compare_products, add_to_basket vs reorder). Each description names the alternative tool to use in adjacent cases, leaving virtually no room for misselection.

Naming Consistency4/5

The set largely follows a consistent snake_case verb_noun pattern (add_to_basket, update_basket, view_basket, find_products, get_product, compare_products, track_order, start_return, change_subscription). A few names break the pattern with possessive/noun forms (my_orders, my_subscriptions, rewards_balance) and the lone verb reorder, but these are readable and minor deviations.

Tool Count4/5

18 tools is on the heavier side but each covers a distinct step in a real e-commerce journey (discovery, detail, comparison, basket, checkout, orders, subscriptions, rewards, returns, policy). Nothing feels redundant, though the basket/checkout cluster could arguably be consolidated.

Completeness4/5

The surface covers the full browse-to-pay lifecycle plus post-purchase order tracking, subscriptions, rewards and returns, with read-only policy coverage. Minor gaps exist (no order cancellation, no subscription detail/frequency edit), but customers can work around these via existing returns and subscription-change flows.

Available Tools

18 tools
add_to_basketAdd to basketAInspect

Use this when someone asks to add teas.co.uk products to their basket. Adds the products (ids from find_products) to a basket kept on teas.co.uk and returns the basket with the live subtotal and a delivery estimate. Nothing is bought or charged; the customer pays later on teas.co.uk. If the result includes basket_id, pass that basket_id to every later basket tool in this conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesProducts and quantities to add.
basket_idNoOnly for hosts that do not identify the user: the basket_id returned by an earlier basket tool in this conversation. Leave it out otherwise.

Output Schema

ParametersJSON Schema
NameRequiredDescription
addedNoHow many products were added.
itemsYesNumber of items in the basket.
linesYes
deliveryYes
messagesYesAnything that could not be added or changed, in plain words.
subtotalNoPounds including VAT, before delivery.
basket_idNoPresent only when the host did not identify the user: pass it to later basket tools.
subtotal_textYes

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false), the description discloses the crucial behavioral fact that 'Nothing is bought or charged; the customer pays later on teas.co.uk', and describes what comes back (basket, live subtotal, delivery estimate). It does not cover failure modes or whether repeated adds merge or duplicate quantities, so it is strong but not exhaustive.

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

Conciseness5/5

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

Four sentences, each carrying distinct information: trigger, action/return, non-purchase guarantee, and state-chaining rule. The most important routing information is front-loaded and there is no filler.

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

Completeness5/5

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

Although an output schema exists, the description still gives the agent the essential framing (products are added, not purchased, and a basket_id may need to be threaded through subsequent calls). Combined with 100% schema coverage and full annotations, nothing needed to invoke this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine cross-call semantics by explaining that a returned basket_id must be passed to every later basket tool in the conversation. That is meaning the schema cannot express on its own, lifting it above baseline.

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

Purpose5/5

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

The description states a specific verb and resource ('Adds the products ... to a basket kept on teas.co.uk') and scopes it to teas.co.uk products, which cleanly separates it from siblings like view_basket and update_basket. An agent can identify the operation 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.

Usage Guidelines4/5

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

It gives a clear trigger ('Use this when someone asks to add teas.co.uk products to their basket') and names the prerequisite source of ids ('ids from find_products'), plus the chaining rule for basket_id in later calls. It never states an explicit when-not or names an alternative tool, so it falls 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.

change_subscriptionChange a subscriptionA
Destructive
Inspect

Use this only when a signed in customer clearly asks to pause, resume or cancel one of their teas.co.uk tea subscriptions. Check which subscription and which change with the customer first. Returns the subscription as it is afterwards. To see their subscriptions first use my_subscriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYespause stops deliveries until resumed; resume restarts a paused subscription; cancel ends it, and a cancelled subscription cannot be resumed here.
subscription_idYesThe id from my_subscriptions.

Output Schema

ParametersJSON Schema
NameRequiredDescription
doneYes
subscriptionNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the signed-in-customer requirement, the mandatory customer confirmation, and the post-state ('Returns the subscription as it is afterwards'). It does not, however, spell out irreversibility or failure behavior in its own text.

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

Conciseness5/5

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

Four short sentences, front-loaded with the usage restriction and confirmation requirement before the return note and the sibling pointer. Each sentence carries a distinct piece of information with no filler.

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

Completeness5/5

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

With an output schema present, return-value detail is optional, yet the description still notes the post-state. Between the annotations (destructive, non-idempotent), the fully documented schema, and the description's preconditions and alternative-tool routing, an agent has everything needed to invoke this correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the enum for 'action' is richly documented, including that a cancelled subscription cannot be resumed. The description's only parameter-related contribution is the instruction to confirm the subscription and action with the customer, which is procedural rather than semantic, so the baseline 3 applies.

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

Purpose5/5

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

The description names a specific verb set (pause/resume/cancel) against a specific resource (teas.co.uk tea subscriptions) and scopes it to signed-in customers. It is clearly distinguishable from my_subscriptions, which it explicitly references as the discovery step.

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

Usage Guidelines5/5

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

It states an explicit precondition ('only when a signed in customer clearly asks'), a required confirmation step ('Check which subscription and which change with the customer first'), and names the alternative tool for seeing subscriptions first. Nothing about when to use it is left to inference.

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

checkout_sessionCheckoutAInspect

Use this when the customer has picked specific teas.co.uk products and wants to buy them straight away, for example from a product result. Puts exactly these items in a fresh basket at live teas.co.uk prices and returns it with a secure link to pay on teas.co.uk; the basket the customer built earlier is not used. Nothing is charged here and no order is placed until the customer pays on teas.co.uk. To check out the basket they have already built, use checkout_link instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkout_sessionYesThe products to buy: items lists each product id (from find_products) and quantity, up to 20 products.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesNumber of items in the basket.
linesYes
deliveryYes
messagesYesAnything that could not be added or changed, in plain words.
subtotalNoPounds including VAT, before delivery.
basket_idNoPresent only when the host did not identify the user: pass it to later basket tools.
unavailableNoItems teas.co.uk could not add.
checkout_urlNoSecure link that opens this basket at teas.co.uk checkout.
how_it_worksNo
subtotal_textYes
link_valid_forNo

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that a fresh basket is created, that live teas.co.uk prices are used, that the earlier basket is ignored, that a secure payment link is returned, and crucially that nothing is charged and no order is placed until payment. Annotations only say it is a non-read-only, non-idempotent, non-destructive write, so this description carries meaningful extra behavioral context.

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

Conciseness5/5

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

Four sentences, front-loaded with the usage trigger, then behavior, then the sibling exclusion. The repeated 'on teas.co.uk' is deliberate scoping emphasis rather than filler; no sentence is redundant.

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

Completeness5/5

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

For a single-parameter, nested-schema tool with an output schema present, the description covers the trigger, the effects, the money/safety semantics, and the routing to a sibling. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description adds a small amount of value by naming the item source ('product id (from find_products)'), the items-per-order bound (up to 20), and the fact that display fields are not used. It stops short of explaining the nested structure or the checkout_session wrapper, but the schema already documents those.

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

Purpose5/5

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

States a specific verb and resource (put these items in a fresh basket and return a payment link) and explicitly separates itself from checkout_link for the pre-built basket case. An agent can distinguish it from add_to_basket and checkout_link without opening any schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('when the customer has picked specific products and wants to buy them straight away, for example from a product result') and an explicit alternative with its selecting condition ('To check out the basket they have already built, use checkout_link instead'). Both when-to-use and when-not are covered.

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

compare_productsCompare productsA
Read-onlyIdempotent
Inspect

Use this whenever someone wants to compare two to four teas.co.uk products, for example on strength, caffeine, price per cup, pack size or brewing. It shows them side by side in one table. Read only. Pass ids from find_products (search for each product first if you only have names); for everything about one product use get_product.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesTwo to four product ids from find_products.

Output Schema

ParametersJSON Schema
NameRequiredDescription
productsYes
not_foundNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description's "Read only" largely restates that. What it does add beyond the structured data is the output shape (side-by-side single table) and the input-provenance rule that ids must come from find_products, which is genuine behavioral context for a read tool.

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

Conciseness4/5

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

Front-loaded with the trigger and sized well for the tool's complexity; every clause about ids, alternatives, and output carries information. Minor redundancy in the standalone "Read only" fragment, which duplicates the annotation, keeps it from a 5.

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

Completeness5/5

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

An output schema exists, so return values need no explanation here. For a one-parameter read tool with full annotation coverage, the description supplies everything an agent needs: trigger condition, id provenance, cardinality limits, and sibling alternatives.

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

Parameters4/5

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

Schema coverage is 100% and the single ids parameter is documented there, so the baseline is 3. The description adds real meaning on top: where the ids come from and the workflow "search for each product first if you only have names," which the schema does not convey.

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

Purpose5/5

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

Specific verb (compare) plus resource (two to four teas.co.uk products), with concrete comparison dimensions named (strength, caffeine, price per cup, pack size, brewing). It also distinguishes itself from the two nearest siblings by name, so an agent can route without opening any schema.

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

Usage Guidelines5/5

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

Explicit trigger ("whenever someone wants to compare two to four products") plus explicit alternatives: find_products to obtain ids, get_product "for everything about one product." The when-to-use and when-not-to-use are both stated.

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

delivery_and_returnsDelivery and returnsA
Read-onlyIdempotent
Inspect

Use this when someone asks about teas.co.uk delivery prices, free delivery, dispatch times, which countries it delivers to, or how returns and refunds work. Policy information only and read only: it does not look at any order. To ask for a return on an order use start_return, and to see where an order is use track_order.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksYes
returnsYes
deliveryYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds genuinely new context beyond them: it is 'policy information only' and 'does not look at any order', which tells the agent not to expect order-specific data. It stops short of describing the response shape, though an output schema exists.

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

Conciseness5/5

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

Three tight sentences: the trigger and topic list first, then the behavioral constraint, then the sibling routing. No filler, and the most decision-relevant content is front-loaded.

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

Completeness5/5

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

For a zero-parameter, read-only policy tool with an output schema and rich annotations, nothing an agent needs is missing. Scope, safety, and alternative tools are all accounted for.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The schema is trivially complete with additionalProperties=false.

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

Purpose5/5

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

The description names a specific resource (teas.co.uk delivery and returns policy) and enumerates the exact question types it answers: prices, free delivery, dispatch times, destination countries, returns and refunds. An agent can distinguish this from every sibling 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.

Usage Guidelines5/5

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

It states the triggering condition ('when someone asks about...') and explicitly routes to the correct alternatives: start_return for requesting a return on an order and track_order for locating an order. When-to-use and when-not-to-use are both covered.

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

find_productsSearch teas.co.ukA
Read-onlyIdempotent
Inspect

Use this when someone wants to find, browse or choose tea, coffee, hot chocolate or other drinks to buy from teas.co.uk, a UK online tea shop. Searches the live teas.co.uk catalogue by words and filters and returns matching products with live prices in pounds including VAT, stock, price per cup and links. Read only: it changes nothing. When no product matches every filter, the softer filters are relaxed and the result says which in note. For the full details of one product use get_product, to set two to four products side by side use compare_products, and to buy use add_to_basket. Do not use it for general tea knowledge that does not involve choosing a product.

ParametersJSON Schema
NameRequiredDescriptionDefault
icedNoSuits iced tea or cold brew.
kindNoType of drink.
sortNoOrder of results: best_match (the default), cheapest_per_cup, price_low_to_high, price_high_to_low or strongest.
limitNoHow many products to return (default 6).
queryNoWhat the customer wants in their own words, for example "strong breakfast tea", "Yorkshire Gold" or "something for bedtime". Leave out to browse with filters only.
veganNoOnly products labelled vegan.
formatNoHow it comes: tea_bags, loose_leaf, instant, pods_or_capsules, sachets, ground or whole_beans (coffee), powder, coffee_bags or ready_to_drink.
organicNoOnly organic products.
caffeineNoCaffeine: caffeinated, decaf (caffeine taken out), caffeine_free (none to begin with, such as rooibos and most herbal teas) or low_or_none (decaf or caffeine free).
strengthNoHow strong the cup is: light, medium or strong.
fairtradeNoOnly Fairtrade products.
max_priceNoHighest pack price in pounds.
with_milkNoOnly products that suit milk.
time_of_dayNoWhen it suits best: morning, afternoon, evening or bedtime.
include_out_of_stockNoAlso include products that are out of stock (they are left out by default).
max_price_per_cup_penceNoHighest price per cup in pence.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNoPresent when filters were left out: tell the customer, in your own words.
totalYesHow many products matched before the limit.
filtersNoThe filters that were applied.
relaxedNoPresent when no product matched every filter: the filters left out to find these.
productsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint, and the description adds genuinely non-obvious behavior beyond them: the softer filters are relaxed when nothing matches and the result flags this in a note, plus the returned fields (live prices incl. VAT, stock, price per cup, links). The read-only sentence largely restates the annotation, so it falls 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.

Conciseness5/5

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

Front-loads purpose and source, then return contents, safety, the fallback behavior, and finally routing and the exclusion. Every sentence carries distinct information with no filler.

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

Completeness5/5

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

For a 16-parameter filtered search with full schema coverage and an output schema, nothing an agent needs to call it correctly is missing: routing, safety, result shape and the filter-relaxation caveat are all present.

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

Parameters3/5

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

Schema coverage is 100% with 16 well-documented parameters and six enums, so the schema does the heavy lifting. The description only gestures at 'words and filters' and adds no filter syntax, defaults or interaction semantics beyond what the schema already states.

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

Purpose5/5

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

States a specific verb (find/browse/choose) and resource (drinks to buy from teas.co.uk) with scope (live catalogue, UK shop) and explicitly differentiates from siblings get_product, compare_products and add_to_basket. An agent can route without opening any schema.

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

Usage Guidelines5/5

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

Names the alternatives and their selecting conditions (details, comparison, purchase), and adds an explicit negative case: 'Do not use it for general tea knowledge that does not involve choosing a product.' Both when-to-use and when-not are covered.

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

find_recipesFind recipesA
Read-onlyIdempotent
Inspect

Use this to find drink and food recipes from the teas.co.uk recipe library, such as iced teas, lattes, chai or baking with tea. Drinks made with alcohol are not included. Read only. Optionally pass a product id to find recipes that use that product; to find products to buy use find_products.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many recipes (default 5).
queryNoWhat kind of recipe, for example "iced peach tea" or "chai latte".
product_idNoOptional product id from find_products.

Output Schema

ParametersJSON Schema
NameRequiredDescription
recipesYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the description's "Read only" line is redundant with structured data. It does add a genuine result-scope constraint (no alcohol-based drinks) and the product_id linking behavior, but the return format and pagination are not addressed; a 3 is appropriate given annotations carry the safety profile.

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

Conciseness5/5

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

Three tight sentences: purpose first, scope exclusion second, parameter/alternative routing last. No filler and the most decision-relevant information is front-loaded.

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

Completeness5/5

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

An output schema exists, so return-value details are unnecessary here. For a read-only search tool with three fully documented optional parameters, the description covers purpose, scope limits, and sibling routing adequately.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (limit, query, product_id) are already documented in the schema. The description only restates the optional product_id linkage to find_products and adds nothing about limit or query, so it meets the baseline rather than exceeding it.

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

Purpose5/5

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

States a specific verb (find) and resource (drink and food recipes) with the source library and concrete examples (iced teas, lattes, chai, baking with tea). It also defines the content boundary (no alcohol) and distinguishes itself from find_products by naming that sibling.

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

Usage Guidelines5/5

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

Explicit about when to use it (finding recipes), one explicit exclusion (alcohol drinks are not included), and an explicit alternative routing (to find products to buy, use find_products). The optional product_id usage path is also spelled out.

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

get_productProduct detailsA
Read-onlyIdempotent
Inspect

Use this whenever someone asks how to brew a teas.co.uk product, about its caffeine, taste, ingredients or allergy advice, or wants its full details: summary, taste, brewing guide with a timer, caffeine, what it suits, pack size, price per cup, labels, allergy note and recipes that use it. Read only. Pass an id from find_products or a teas.co.uk product link; if you only have a name, search with find_products first. To set several products side by side use compare_products.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProduct id from find_products, or a teas.co.uk product link.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesThe product id (SKU) every tool accepts.
urlYesProduct page on teas.co.uk.
brewNo
kindNoType of drink, for example Black tea.
nameYes
packNoPack size, for example 80 bags, 250 g.
brandNo
imageNo
priceYesLive price in pounds including VAT.
tasteNo
formatNoTea bags, loose leaf, pods and so on.
labelsNo
originNo
recipesNo
summaryNo
caffeineNo
good_forNo
in_stockYes
strengthNo
with_milkNoSuits milk.
price_textYes
pack_detailNo
allergy_noteNo
curator_scoreNoA teas.co.uk curator score, not a customer review.
flavour_notesNo
was_price_textNoThe usual price when the product is on offer.
caffeine_detailNo
price_per_cup_penceNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered; the description reinforces 'Read only' without contradicting it. It adds behavioral context beyond the hints: the mandatory provenance of the id, the search-first workflow when only a name exists, and the rich field set returned.

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

Conciseness4/5

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

Front-loaded with the trigger condition, then the id requirement, then the disambiguation to compare_products. It is a single dense sentence plus two short ones; the long enumeration of return fields is somewhat redundant given a full output schema exists, which keeps it from a perfect score.

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

Completeness5/5

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

With one required parameter, an output schema, and full annotation coverage, the description supplies everything an agent needs: how to obtain the id, what triggers the call, and which sibling handles comparison. Nothing material is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter is already documented as 'Product id from find_products, or a teas.co.uk product link.' The description restates the same id-source rule and adds no syntax or format detail the schema lacks, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('get product details') and enumerates exactly what is returned: summary, taste, brewing guide, caffeine, price per cup, allergy note, recipes. It explicitly names what it is not (search with find_products; use compare_products for side-by-side), so an agent can route correctly 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.

Usage Guidelines5/5

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

Gives explicit trigger conditions ('whenever someone asks how to brew... caffeine, taste, ingredients or allergy advice'), states the required input origin (an id from find_products or a link), and prescribes the fallback when only a name is known. It also names the sibling to use for comparison, so when-not is covered.

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

get_profileteas.co.uk accountA
Read-only
Inspect

Use this to confirm which teas.co.uk account is linked, for example before account tools such as my_orders, my_subscriptions or rewards_balance. Read only. Returns an opaque account id that stays the same across sign ins, with a display name and email for showing to the customer. Needs a linked teas.co.uk account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesOpaque profile identifier, unique within this app and unchanged across token refresh, reconnection and display changes. Never reassigned to another profile.
nameNoDisplay name for the authenticated profile.
emailNoEmail address for display; not used as the profile identity.
nicknameNoA useful label that helps users distinguish connected profiles.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description still adds meaningful context beyond that: the account id is opaque and stable across sign-ins, and it returns a display name and email suitable for showing to a customer — plus the linked-account prerequisite, which is a real failure mode.

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

Conciseness5/5

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

Three short sentences, each carrying distinct information: usage trigger, safety/prerequisite, and return contents. The usage trigger is front-loaded and there is no filler.

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

Completeness5/5

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

With zero parameters, an output schema present, and full annotation coverage, the description supplies everything an agent needs: when to call it, that it is a safe read, the prerequisite, and the shape of the returned identity. Nothing material is missing.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly does not waste words inventing parameter semantics, and schema coverage is 100%.

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

Purpose5/5

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

States a specific verb and resource — 'confirm which teas.co.uk account is linked' — and immediately differentiates itself from sibling account tools (my_orders, my_subscriptions, rewards_balance) by positioning itself as the prerequisite check. An agent can distinguish it from every other tool in the list 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.

Usage Guidelines4/5

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

Gives a concrete when-to-use condition ('before account tools such as my_orders, my_subscriptions or rewards_balance') and a prerequisite ('Needs a linked teas.co.uk account'). It stops short of stating when not to call it or what happens on failure, but the sequencing guidance is explicit and actionable.

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

my_ordersMy ordersA
Read-onlyIdempotent
Inspect

Use this when a signed in customer asks about their recent teas.co.uk orders. Returns order numbers, dates, status, totals and items. Read only. To follow one order with its courier tracking use track_order, and to buy an earlier order again use reorder.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many recent orders (default 5).

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
ordersYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Read only' is largely redundant. However, the description adds the authentication prerequisite ('signed in customer') and the returned field set, which the annotations do not cover. No rate limits or ordering guarantees are mentioned, keeping it 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.

Conciseness5/5

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

Three tight sentences, front-loaded with the trigger condition and followed by routing. Every clause earns its place with no repetition or filler.

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

Completeness5/5

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

For a zero-required-param read tool with full annotations and an output schema, the description supplies everything an agent needs: when to call it, the auth precondition, and where to go for tracking or reordering. Return values are covered by the output schema, so they need no elaboration.

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

Parameters3/5

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

Schema coverage is 100% and the single 'limit' parameter already documents its default and bounds, so the description adds nothing about it. Baseline 3 applies when the schema carries the parameter semantics.

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

Purpose5/5

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

States a specific verb+resource ('recent teas.co.uk orders') with a named caller context, and explicitly distinguishes itself from track_order and reorder. An agent can pick this over its siblings without opening any schema.

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

Usage Guidelines5/5

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

Gives the triggering condition ('a signed in customer asks about their recent orders') and routes two adjacent needs to the correct alternatives with the condition that selects each. Nothing is left to inference.

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

my_subscriptionsMy subscriptionsA
Read-onlyIdempotent
Inspect

Use this when a signed in customer asks about their teas.co.uk tea subscriptions (repeat deliveries): what each one sends, how often, the next delivery and whether it is active or paused. Read only. To pause, resume or cancel one use change_subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
subscriptionsYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so the safety profile is covered; the description reinforces it with 'Read only' and adds the useful auth precondition (signed-in customer). It also scopes what information is surfaced. It does not mention pagination or limits, but for a zero-arg read this is minor.

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

Conciseness5/5

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

Two sentences, no waste, front-loaded with the trigger condition and followed immediately by the routing alternative. Every clause earns its place.

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

Completeness5/5

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

With an output schema present, the description need not document return values, yet it still previews the shape of the data for routing purposes. Auth requirement, scope and the sibling escape hatch are all present, so an agent has everything needed to call it correctly.

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

Parameters4/5

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

Zero parameters, so the schema carries no semantic burden and the description needs to add nothing; the baseline is 4. The description correctly focuses on the returned subscription attributes rather than inventing parameter syntax.

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

Purpose5/5

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

States a specific verb+resource ('asks about their teas.co.uk tea subscriptions (repeat deliveries)') and enumerates the content returned: what each sends, how often, next delivery, active/paused status. This clearly separates it from the sibling change_subscription without needing to open any schema.

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

Usage Guidelines5/5

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

Explicitly names the triggering condition ('when a signed in customer asks about their subscriptions') and the exclusion plus alternative ('To pause, resume or cancel one use change_subscription'). Both the when and the when-not are stated.

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

reorderBuy againAInspect

Use this when a signed in customer wants to buy again from an earlier teas.co.uk order. Adds that order's products, or only the ones named, to their basket at today's prices; calling it again adds them again. Nothing is bought or charged until the customer pays on teas.co.uk. To see earlier orders first use my_orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
only_idsNoOptional: only these product ids from that order.
order_numberYesThe earlier order number.

Output Schema

ParametersJSON Schema
NameRequiredDescription
addedNo
itemsYesNumber of items in the basket.
linesYes
deliveryYes
messagesYesAnything that could not be added or changed, in plain words.
subtotalNoPounds including VAT, before delivery.
basket_idNoPresent only when the host did not identify the user: pass it to later basket tools.
from_orderNo
subtotal_textYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, so mutation and repeatability are partially covered. The description adds real value beyond them: it warns that calling again adds items again, that nothing is bought or charged until payment on teas.co.uk, and that items are priced at today's prices.

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

Conciseness5/5

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

Three sentences, each earning its place: the trigger condition first, then behavior, then the alternative tool. No filler or repetition of the title.

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

Completeness5/5

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

Covers the auth prerequisite, the mutation and repeat-call behavior, and the deferred payment model; an output schema exists so return values need not be described. Nothing an agent needs to invoke this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description nonetheless explains only_ids semantically ('that order's products, or only the ones named'), which is more useful than the schema's bare 'only these product ids from that order.'

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

Purpose5/5

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

States a specific verb and resource: adds products from an earlier teas.co.uk order into the customer's basket. It clearly separates itself from add_to_basket (single-item adds) and my_orders (order history lookup) without the agent needing to open either schema.

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

Usage Guidelines5/5

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

Explicitly scopes usage to a signed-in customer re-buying from a prior order, and names the alternative: 'To see earlier orders first use my_orders.' The only_ids variant is also described as a usage option, 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.

rewards_balanceReward pointsA
Read-onlyIdempotent
Inspect

Use this when a signed in customer asks how many teas.co.uk reward points they have or what they are worth. Read only: points are spent at checkout on teas.co.uk, not here.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
tierNo
pointsYes
how_to_useNo
worth_textNo
spent_lifetimeNo
earned_lifetimeNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds useful context beyond that: it states the caller must be signed in and that redemption happens at checkout rather than via this tool, which prevents misuse.

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

Conciseness5/5

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

Two short sentences, front-loaded with the usage trigger and followed by the read-only scope caveat. No filler and every clause carries information an agent needs.

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

Completeness5/5

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

With an output schema present, return values need not be described, and with zero parameters there are no input details to document. The description covers the trigger, the authentication precondition, and the scope limitation, leaving nothing essential for a correct invocation.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing for the description to disambiguate; baseline for zero-parameter tools applies. Schema and annotations fully cover the (empty) input contract.

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

Purpose5/5

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

Names a specific resource (teas.co.uk reward points) and the exact questions it answers (how many points and what they are worth). This is clearly distinguishable from siblings like view_basket, my_orders, or checkout_link, which deal with different resources.

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

Usage Guidelines4/5

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

Gives an explicit trigger condition: use when a signed-in customer asks about their points balance or value. It also implies a when-not by clarifying that points are spent at checkout, not through this tool. It does not name sibling alternatives, but the triggering context is unambiguous.

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

start_returnStart a returnA
Idempotent
Inspect

Use this only when a signed in customer clearly asks to return items from a teas.co.uk order. Sends a return request to the teas.co.uk team for review; it does not refund or change anything by itself. Check the order, items and reason with the customer first. For the returns policy itself use delivery_and_returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesThe products to return and how many.
reasonYesdamaged, faulty, wrong_item, missing_item, change_of_mind (unused and unopened) or other.
detailsNoWhat happened, in the customer's words.
order_numberYesThe order number the items came from, for example 123456 (from my_orders).

Output Schema

ParametersJSON Schema
NameRequiredDescription
orderYes
statusNo
messageYes
duplicateNoTrue when this exact request was already sent.
referenceNo
submittedYes
returns_urlNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare the write/safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true), and the description adds genuinely useful context beyond them: the request goes to a human team 'for review' and 'does not refund or change anything by itself', plus the signed-in auth requirement. It does not explain what happens after review or how duplicate submissions are handled (relevant given idempotentHint), which keeps this from 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.

Conciseness5/5

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

Three sentences, no filler, with the eligibility constraint front-loaded before the side-effect disclaimer and the sibling pointer. Every sentence carries distinct information.

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

Completeness5/5

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

For a mutation tool with an output schema and full annotation coverage, the description supplies the missing human-facing context: eligibility, prerequisite confirmation with the customer, that the outcome is a reviewed request rather than an instant refund, and where to send policy questions. Nothing an agent needs before invoking it is absent.

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

Parameters3/5

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

Schema description coverage is 100%: order_number, reason enum, items and details are all documented in the schema, including cross-references (find_products, my_orders). The description only reinforces the review step ('Check the order, items and reason with the customer first') and adds no format or syntax detail, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('sends a return request to the teas.co.uk team for review') and immediately differentiates itself from the similarly-named sibling delivery_and_returns. An agent can tell what this tool does and what it does not do 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.

Usage Guidelines5/5

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

Gives an explicit gating condition ('only when a signed in customer clearly asks to return items from a teas.co.uk order'), a pre-call checklist ('Check the order, items and reason with the customer first'), and a named alternative for the adjacent need ('For the returns policy itself use delivery_and_returns'). When-to-use, preconditions and routing are all covered.

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

track_orderTrack an orderA
Read-onlyIdempotent
Inspect

Use this when a signed in customer asks where their teas.co.uk order is. Returns the status, items and any courier tracking numbers and links. Read only. For a list of recent orders use my_orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_numberYesThe order number, for example 123456.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dateNo
noteNo
itemsNo
numberYes
statusYes
ship_toNoTown and postcode area only.
deliveryNo
trackingYes
view_urlNo
can_returnNoA return request can be started for this order.
item_countNo
total_textNo
has_trackingNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint and openWorldHint, so the safety profile is covered; the description's 'Read only' is largely redundant. It does add genuinely useful context beyond the annotations by stating the auth prerequisite ('signed in customer') and describing the returned payload (status, items, courier tracking links).

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

Conciseness5/5

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

Three short sentences, front-loaded with the triggering scenario, then the return value, then the sibling redirect. No filler or restated boilerplate.

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

Completeness5/5

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

For a single-parameter read tool with an output schema, the description covers the trigger, the auth prerequisite, the sibling boundary, and a brief sense of the result. Nothing an agent needs to call it correctly is missing.

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

Parameters3/5

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

There is a single parameter at 100% schema description coverage, with an example value ('123456') already documented in the schema. The description adds no format, sourcing, or edge-case guidance about order_number, so the schema does all the work — the expected baseline.

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

Purpose5/5

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

The description states a specific verb and resource ('track... where their teas.co.uk order is') and enumerates what comes back (status, items, courier tracking numbers and links). It also explicitly distinguishes itself from the sibling 'my_orders', so an agent can route between the two 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.

Usage Guidelines5/5

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

It gives a concrete triggering condition ('when a signed in customer asks where their order is') and names the alternative plus the condition that selects it ('For a list of recent orders use my_orders'). Both when-to-use and when-to-use-something-else are covered.

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

update_basketChange basketA
DestructiveIdempotent
Inspect

Use this to change the quantity of a product that is already in the teas.co.uk basket; a quantity of 0 removes it. Returns the updated basket with the live subtotal and a delivery estimate. Nothing is bought or charged. To add a new product use add_to_basket, and to see the basket first use view_basket.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProduct id of a line already in the basket (from view_basket or add_to_basket).
quantityYesThe new quantity; 0 removes it.
basket_idNoOnly for hosts that do not identify the user: the basket_id returned by an earlier basket tool in this conversation. Leave it out otherwise.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesNumber of items in the basket.
linesYes
deliveryYes
messagesYesAnything that could not be added or changed, in plain words.
subtotalNoPounds including VAT, before delivery.
basket_idNoPresent only when the host did not identify the user: pass it to later basket tools.
subtotal_textYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-readOnly, but the description adds the concrete destructive condition ('a quantity of 0 removes it') and reassures that 'Nothing is bought or charged'. That materially clarifies the mutation semantics beyond the annotation flags; only idempotency is left to the annotation.

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

Conciseness5/5

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

Three sentences, each load-bearing: purpose and removal semantics first, then the return/charging reassurance, then sibling routing. No filler.

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

Completeness5/5

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

An output schema exists, so the brief return mention suffices, and the description still previews the updated basket with subtotal and delivery estimate. Combined with full schema coverage and destructive annotations, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented in the schema, including the 0-removes rule and the basket_id host caveat. The description restates the quantity semantics without adding syntax or constraints the schema does not already provide, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('change the quantity of a product... in the teas.co.uk basket') and adds the scope edge case that 0 removes the line. It is immediately distinguishable from add_to_basket and view_basket, which it names directly.

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

Usage Guidelines5/5

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

Explicit routing: use add_to_basket to add a new product, view_basket to inspect first. The precondition that the product must already be a line in the basket is stated up front.

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

view_basketView basketA
Read-onlyIdempotent
Inspect

Use this to show what is in the customer's teas.co.uk basket, with the live subtotal and a delivery estimate. Read only: it changes nothing, and an empty basket comes back with no lines. To add products use add_to_basket, to change quantities use update_basket, and to pay use checkout_link.

ParametersJSON Schema
NameRequiredDescriptionDefault
basket_idNoOnly for hosts that do not identify the user: the basket_id returned by an earlier basket tool in this conversation. Leave it out otherwise.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesNumber of items in the basket.
linesYes
deliveryYes
messagesYesAnything that could not be added or changed, in plain words.
subtotalNoPounds including VAT, before delivery.
basket_idNoPresent only when the host did not identify the user: pass it to later basket tools.
subtotal_textYes

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: an empty basket returns no lines, and the output includes a live subtotal and delivery estimate. It does not discuss auth or rate limits, but the schema covers the basket_id context.

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

Conciseness5/5

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

The description is front-loaded with the primary purpose, then adds read-only behavior and empty-basket behavior, then routes to the three most relevant sibling tools. Every sentence earns its place and there is no wasted text.

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

Completeness5/5

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

An output schema exists, so the description need not explain return values. With rich annotations, full schema description coverage, and explicit sibling routing, the definition contains everything an agent needs to call this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter basket_id is fully documented in the schema, including when to omit it. The description does not add parameter-level meaning beyond that, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('show what is in') and resource ('customer's teas.co.uk basket'), plus what is returned: live subtotal and delivery estimate. It also names sibling tools for adjacent actions, so an agent can distinguish it from add_to_basket, update_basket, and checkout_link without inspecting their schemas.

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

Usage Guidelines5/5

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

It explicitly tells the agent when to use this tool and provides direct alternatives for adding products, changing quantities, and paying. The routing guidance is complete enough that an agent can select the correct sibling without inference.

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.

  1. 6 tool updates
    • Changedchange_subscription1 field changed
      • addedInput schema / properties / action / description
        Added value: +"pause stops deliveries until resumed; resume restarts a paused subscription; cancel ends it, and a cancelled subscription cannot be resumed here."
    • Changedcheckout_session8 fields changed
      • addedInput schema / properties / checkout_session / description
        Added value: +"The products to buy: items lists each product id (from find_products) and quantity, up to 20 products."
      • addedInput schema / properties / checkout_session / properties / items / description
        Added value: +"Each product and how many, up to 20 products."
      • addedInput schema / properties / checkout_session / properties / items / items / properties / description / description
        Added value: +"Optional, for display only; not used."
      • addedInput schema / properties / checkout_session / properties / items / items / properties / images / description
        Added value: +"Optional image links, for display only; not used."
      • addedInput schema / properties / checkout_session / properties / items / items / properties / merchant_name / description
        Added value: +"Optional, for display only; not used."
      • addedInput schema / properties / checkout_session / properties / items / items / properties / name / description
        Added value: +"Optional product name for display; teas.co.uk uses its own."
      • addedInput schema / properties / checkout_session / properties / items / items / properties / quantity / description
        Added value: +"How many packs, 1 to 99."
      • addedInput schema / properties / checkout_session / properties / items / items / properties / url / description
        Added value: +"Optional product link, for display only; not used."
    • Changedcompare_products1 field changed
      • changedInput schema / properties / ids / description
        Previous value: -"Two to four product ids."New value: +"Two to four product ids from find_products."
    • Changedfind_products9 fields changed
      • addedInput schema / properties / caffeine / description
        Added value: +"Caffeine: caffeinated, decaf (caffeine taken out), caffeine_free (none to begin with, such as rooibos and most herbal teas) or low_or_none (decaf or caffeine free)."
      • addedInput schema / properties / fairtrade / description
        Added value: +"Only Fairtrade products."
      • addedInput schema / properties / format / description
        Added value: +"How it comes: tea_bags, loose_leaf, instant, pods_or_capsules, sachets, ground or whole_beans (coffee), powder, coffee_bags or ready_to_drink."
      • addedInput schema / properties / include_out_of_stock / description
        Added value: +"Also include products that are out of stock (they are left out by default)."
      • addedInput schema / properties / organic / description
        Added value: +"Only organic products."
      • addedInput schema / properties / sort / description
        Added value: +"Order of results: best_match (the default), cheapest_per_cup, price_low_to_high, price_high_to_low or strongest."
      • addedInput schema / properties / strength / description
        Added value: +"How strong the cup is: light, medium or strong."
      • addedInput schema / properties / time_of_day / description
        Added value: +"When it suits best: morning, afternoon, evening or bedtime."
      • addedInput schema / properties / vegan / description
        Added value: +"Only products labelled vegan."
    • Changedstart_return1 field changed
      • addedInput schema / properties / order_number / description
        Added value: +"The order number the items came from, for example 123456 (from my_orders)."
    • Changedupdate_basket1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Product id of a basket line."New value: +"Product id of a line already in the basket (from view_basket or add_to_basket)."
  2. 18 tool updates
    • First observedadd_to_basket
    • First observedchange_subscription
    • First observedcheckout_link
    • First observedcheckout_session
    • First observedcompare_products
    • First observeddelivery_and_returns
    • First observedfind_products
    • First observedfind_recipes
    • First observedget_product
    • First observedget_profile
    • First observedmy_orders
    • First observedmy_subscriptions
    • First observedreorder
    • First observedrewards_balance
    • First observedstart_return
    • First observedtrack_order
    • First observedupdate_basket
    • First observedview_basket

Publisher details

Operator
teas.co.uk · Publisher source
Operator website
https://teas.co.uk/
Vendor relationship
First-party
Trust center
Not available
Restrictions
Free to use. Shopping needs no account. Orders, tracking, repeat deliveries, reward points and returns need a teas.co.uk account, linked by signing in on teas.co.uk (OAuth). teas.co.uk delivers to the UK, the Channel Islands, the Isle of Man and many European countries; prices are in pounds including VAT. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables searching Official Vegan Shop products and managing your shopping cart through natural language, with secure local login.
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Personal UK Tesco grocery account over MCP: search, basket, slots, orders, and on-pack nutrition (search and rank by macros + micros). Catalogue + nutrition tools need no auth; destructive actions require a two-step confirm
    126 npm
    12
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search the catalog, manage a cart and usual orders, find delivery slots, and handle favorites, shopping lists, past orders, and item remarks through the store's API, with login and payment left to the user on the website.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables users to compare and get recommendations across multiple supermarket products, combining curated specifications with realtime price and review lookups.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources