Pinflower — flowers in Prague
Server Details
Order bouquets from independent Prague florists: live prices, delivery times, pay on pinflower.cz.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
Each tool targets a distinct stage or concern: searching, viewing details, quoting, creating, canceling, checking status, refreshing a payment link, checking delivery, and reading store policy. Closely related tools are explicitly differentiated in their descriptions, such as check_delivery being unnecessary once search already covers a place.
Most names follow a clear pinflower_ + verb_noun pattern: search_bouquets, get_bouquet, quote_order, create_order, cancel_order, get_order_status. Minor deviations are new_pay_link and store_info, which do not start with a verb, but the overall snake_case prefix convention keeps the set predictable.
With 9 tools, the set is well-scoped for a flower ordering service: it covers discovery, details, pricing, ordering, payment link recovery, status, cancellation, and store policies. There is no redundancy or excessive granularity.
The lifecycle is nearly complete for an order-based flower shop: search, detail, quote, create, pay-link refresh, status, cancel, and delivery checks are all present. The only notable gap is the lack of an order modification tool, but the descriptions explicitly direct users to cancel and reorder instead.
Available Tools
9 toolspinflower_cancel_orderCancel an orderADestructiveIdempotentInspect
Use this when the buyer explicitly asks to cancel an order placed through pinflower_create_order. The website's rules apply: free while the florist has not confirmed, and for a later-day order until the cut-off before its time window; a paid amount is refunded in full. Two steps: call with order_ref and confirm=true — a 6-digit code goes to the e-mail the order was placed with; then call again with the code the buyer reads from that e-mail. Not for changing an order — cancel and order again.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | The 6-digit code from the e-mail (second call). | |
| confirm | Yes | true only after the buyer confirmed they want to cancel. | |
| order_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| cancelled | Yes | |
| order_ref | Yes | |
| code_sent_to | No | |
| refunded_czk | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool as destructive and non-read-only, and the description reinforces and expands on that by explaining the two-step confirmation flow, the emailed 6-digit code, refund behavior, and time-window rules. This adds meaningful context beyond the annotations and contradicts none of them.
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?
Every sentence serves a purpose: trigger condition, policy rules, step-by-step procedure, and exclusion of order changes. The content is dense but well organized and front-loaded with the most important usage signal.
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?
The description fully covers when to use the tool, the ordered invocation steps, the policy constraints, and the key exclusion. With an output schema present and annotations covering safety, nothing necessary for an agent to call this tool 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?
Although schema description coverage is 67%, the description explains how order_ref, confirm, and code are used across the two calls, including which parameters belong to the first versus second invocation. This adds substantial meaning beyond the raw 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 action (cancel an order) with a clear trigger condition (buyer explicitly asks) and ties it to the related create-order tool. It also explicitly distinguishes itself from order modification, making it easy for an agent to select correctly among the sibling tools.
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?
Provides explicit when-to-use guidance: only when the buyer asks to cancel, and not for changing an order. It also details the cancellation rules and the exact two-step invocation flow, leaving no ambiguity about how to proceed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_check_deliveryCheck delivery to a placeARead-onlyIdempotentInspect
Use this when the buyer asks whether Pinflower delivers to a place in Prague, how much delivery costs, how soon it can arrive, or whether flowers can come tonight — before choosing a bouquet. Pass the place as the buyer said it. Not needed when you are already searching bouquets for that place.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Delivery/pickup day: 'today', 'tomorrow' or YYYY-MM-DD (Prague). Omit for as soon as possible. | |
| where | Yes | Where the flowers go, as the buyer said it: a Prague district ('Praha 5'), a quarter ('Vinohrady', 'Smíchov') or a street address. Omit when unknown. | |
| locale | No | The buyer's language for names, texts and links: cs, en, ru or uk (default cs). |
Output Schema
| Name | Required | Description |
|---|---|---|
| place | No | |
| earliest | No | |
| florists | No | |
| can_deliver | Yes | |
| night_delivery | No | |
| delivery_fee_from_czk | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds behavioral context about the scope of queries it handles (delivery feasibility, cost, timing), which goes beyond annotations. It doesn't describe return format, but an output schema exists, so this is adequate.
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 three sentences, front-loaded with the primary use case and ending with a clear exclusion. There is no wasted wording, and it reads naturally while being efficiently structured.
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?
Given the tool's simplicity (3 params, 1 required), existing output schema, and annotations covering safety, the description covers all necessary context: when to use, what it does, and when not to use. Nothing essential is missing for an agent 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 description coverage is 100%, so the schema already documents all parameters. The description adds one nuance: 'Pass the place as the buyer said it', reinforcing the 'where' parameter's semantics, but this is minor and doesn't significantly enhance understanding beyond 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?
The description clearly states the tool checks delivery to a place, answering whether delivery is available, cost, arrival time, and tonight availability. It explicitly distinguishes from bouquet search by saying it's not needed when already searching bouquets, and it ties usage to pre-bouquet selection, differentiating it from other siblings like quote or order tools.
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 provides explicit when-to-use conditions: when the buyer asks about delivery to a place, cost, timing, or tonight delivery before choosing a bouquet. It also gives a clear when-not-to-use: when already searching bouquets for that place, which directly references the sibling search_bouquets tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_create_orderOrder bouquets (pay on pinflower.cz)AInspect
Use this when the buyer has agreed to the total from pinflower_quote_order: it creates the order exactly like the website's checkout and returns the secure payment link on pinflower.cz. Pass the same arguments as the quote, terms_accepted=true and confirmed_total_czk = the total the buyer agreed to; if the total has changed meanwhile, nothing is created and you get the new breakdown to read back. Collect first: the bouquet(s) (bouquet_id from search; several bouquets of ONE florist with quantities in items); delivery or pickup; for delivery the street address with house number in Prague (or address_mode 'ask_recipient' when the courier should agree the address with the recipient — a surprise); the recipient's name and phone when someone else receives the flowers; the date and a time (one of the times pinflower_get_bouquet offers, or 'asap', or 'agree_with_recipient'); the buyer's name, e-mail and phone (+420…); an optional card message and note for the florist; and ask whether they have a promo code; ask whether it is a purchase for a company (IČO). Above 10 000 Kč the buyer's billing address is required. Nothing is charged here and the florist is not told until the buyer pays.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | 'today', 'tomorrow' or YYYY-MM-DD. | |
| time | Yes | HH:MM from the offered times, 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only). | |
| unit | No | Apartment, floor, company at the door. | |
| buyer | Yes | ||
| items | No | Several bouquets from the SAME florist, with quantities. | |
| locale | No | ||
| address | No | Delivery to a known address: street and house number in Prague. | |
| company | No | Buying for a company — the invoice is issued to it. | |
| recipient | No | Who receives the flowers, when it is someone else than the buyer — the courier calls them; required when the address or the time is agreed with the recipient. | |
| bouquet_id | No | One bouquet (shortcut for items with a single line). | |
| florist_id | No | The florist — needed only when the order is a custom bouquet alone. | |
| fulfilment | No | ||
| promo_code | No | The buyer's promo code, if they have one — works for guests and signed-in buyers alike; the checkout checks it. | |
| address_mode | No | ask_recipient = the courier/florist agrees the address with the recipient by phone (a surprise); no address needed, delivery priced at the whole-city rate. | |
| card_message | No | ||
| courier_note | No | Bell name, entrance, gate code. | |
| florist_note | No | ||
| order_intent | Yes | order_intent from pinflower_quote_order. Retrying this call (e.g. the answer got lost) keeps it — the same order comes back; a new purchase needs a new quote. | |
| terms_accepted | Yes | true only after the buyer agreed to the terms. | |
| billing_address | No | The buyer's billing address — required by Czech tax rules when the order is over 10 000 Kč (unless buying for a company). | |
| marketing_opt_in | No | Only true if the buyer asked for news and offers. | |
| confirmed_total_czk | Yes | total_czk from pinflower_quote_order that the buyer agreed to — a different total refuses the order. |
Output Schema
| Name | Required | Description |
|---|---|---|
| pay_url | Yes | |
| order_ref | Yes | |
| total_czk | Yes | |
| order_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses important side effects beyond sparse annotations: nothing is charged, the florist is not told until the buyer pays, a changed total creates nothing, and retrying with the same order_intent returns the same order. This is exactly the behavioral context an agent needs before invoking a checkout-creating 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?
Though long, the description is dense and well organized: trigger, arguments, mismatch behavior, collection checklist, conditional requirement, and side-effect safety. Every sentence carries operational value for a 22-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 complex purchase-creating tool with sparse annotations, the description covers when to call it, what to collect, how to confirm the agreed total, what happens on mismatch, and what side effects occur. An output schema exists, so the return value does not need to be spelled out in prose.
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?
The description adds significant meaning beyond the schema: pass the same arguments as the quote, set terms_accepted=true, and set confirmed_total_czk to the agreed total. It also explains that a mismatch blocks creation, lists what to collect first, and calls out the conditional billing-address requirement over 10,000 Kč.
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 names a specific action with a clear resource: it creates the order like the website's checkout and returns the secure payment link on pinflower.cz. It also ties the tool to a precise precondition (agreement on the quote total), which distinguishes it from quote and search 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 trigger is explicit: use this when the buyer has agreed to the total from pinflower_quote_order. It gives collection steps and the total-change fallback, but does not explicitly name alternatives or state 'do not use before quoting'; the when-to-use is clear, but exclusion guidance is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_get_bouquetBouquet details and timesARead-onlyIdempotentInspect
Use this when the buyer is interested in one bouquet from pinflower_search_bouquets: what is inside, its size, photos, the florist's rating, the exact price with delivery and every time it can arrive on a given day. Needs bouquet_id from a search. Not for comparing many bouquets — search does that.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Delivery/pickup day: 'today', 'tomorrow' or YYYY-MM-DD (Prague). Omit for as soon as possible. | |
| where | No | Where the flowers go, as the buyer said it: a Prague district ('Praha 5'), a quarter ('Vinohrady', 'Smíchov') or a street address. Omit when unknown. | |
| locale | No | The buyer's language for names, texts and links: cs, en, ru or uk (default cs). | |
| bouquet_id | Yes | ||
| fulfilment | No | delivery (default) or pickup at the florist's shop. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| slots | No | |
| bouquet_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds useful behavioral context beyond that: it computes exact delivery prices and all arrival slots for a given day, and depends on a prior search result. No contradiction with 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 compact and front-loaded with the primary use case, then the required input, then the key exclusion. Every sentence earns its place without redundancy or 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?
Given the output schema exists and annotations cover read-only/idempotent behavior, the description completes the picture: trigger condition, prerequisite, scope, and what results to expect. Nothing essential 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 80%, so the baseline is 3. The description adds extra meaning by explaining that bouquet_id comes specifically from a search and by linking the date parameter to arrival-time and delivery-price computation, which is not fully captured in 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?
The description names a specific verb and resource: getting details for one bouquet selected from pinflower_search_bouquets. It also enumerates the returned content — contents, size, photos, florist rating, exact delivery price, and arrival times — and explicitly contrasts with the search sibling for comparing many bouquets.
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 description states exactly when to use this tool ('when the buyer is interested in one bouquet'), the prerequisite ('Needs bouquet_id from a search'), and the exclusion ('Not for comparing many bouquets — search does that'). This gives the agent clear routing guidance versus its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_get_order_statusOrder statusARead-onlyIdempotentInspect
Use this when the buyer asks what is happening with an order placed through pinflower_create_order — whether it is paid, confirmed by the florist, on the way or delivered. Needs the order_ref that pinflower_create_order returned. It changes nothing — for a new payment link use pinflower_new_pay_link, to cancel pinflower_cancel_order.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | The buyer's language for names, texts and links: cs, en, ru or uk (default cs). | |
| order_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| paid | Yes | |
| step | Yes | |
| order_ref | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile. The description reinforces 'It changes nothing' (redundant) but adds the prerequisite that order_ref must come from pinflower_create_order, which is useful context beyond 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?
Two sentences, front-loaded with the use case, then the prerequisite and exclusions. No filler or 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 simple read-only status tool with an output schema present, the description covers purpose, required parameter, and differentiation from siblings. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (locale documented, order_ref not). The description compensates for order_ref by explaining its origin ('the order_ref that pinflower_create_order returned'), which is essential. It doesn't add extra detail for locale, but the schema already covers it.
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 clear, specific purpose: checking the status of an order (paid, confirmed, on the way, delivered) and ties it to a prior creation step. It explicitly names alternatives (pinflower_new_pay_link, pinflower_cancel_order) that it is not, distinguishing it from 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?
It gives a direct when-to-use condition ('when the buyer asks what is happening with an order'), requires a specific prerequisite (order_ref from pinflower_create_order), and explicitly lists exclusions for two other tools. This is clear, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_new_pay_linkPayment link againAIdempotentInspect
Use this when the buyer has not paid yet and the payment link from pinflower_create_order expired or got lost: it returns the order's payable link on pinflower.cz — the same one while it is still open (never a second payable link). Needs the order_ref. Not for paid or cancelled orders.
| Name | Required | Description | Default |
|---|---|---|---|
| order_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| pay_url | Yes | |
| order_ref | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. The description adds valuable behavioral detail beyond that: it returns the same link while the order is open and never issues a second payable link. This clarifies side-effect expectations well, though it does not discuss potential edge cases like what happens when a link is truly expired.
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 sentences convey the trigger condition, the result, the key behavioral constraint, the required parameter, and an exclusion. Every clause earns its place and the most important guidance is front-loaded.
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 single-parameter tool with an output schema, the description fully covers when to call it, what it returns, and what it avoids doing. The only slight gap is order_ref provenance, but the sibling context and output schema make this tool sufficiently self-contained.
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 0%, so the description must compensate. It does say 'Needs the order_ref' and implies it identifies the order, but it does not explain the format, origin, or how the agent should obtain a valid order_ref. The property name is self-explanatory, but the description adds only marginal semantic value beyond 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?
The description states a specific verb and resource: it returns the payable link for an order on pinflower.cz. It also distinguishes itself from pinflower_create_order by clarifying it does not create a second payable link, which makes the tool's purpose unmistakable.
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 description explicitly says when to use it (buyer has not paid and the original link expired or got lost) and when not to use it (paid or cancelled orders). This gives clear routing guidance without needing to inspect sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_quote_orderPrice the orderARead-onlyIdempotentInspect
Use this when the buyer has chosen what to order and you have the details: it prices the order exactly as the checkout will charge it — the bouquet(s), add-ons, the shop's launch discount or the buyer's promo code, the delivery fee — and checks the time, without creating anything. Collect first: the bouquet(s) (bouquet_id from search; several bouquets of ONE florist with quantities in items); delivery or pickup; for delivery the street address with house number in Prague (or address_mode 'ask_recipient' when the courier should agree the address with the recipient — a surprise); the recipient's name and phone when someone else receives the flowers; the date and a time (one of the times pinflower_get_bouquet offers, or 'asap', or 'agree_with_recipient'); the buyer's name, e-mail and phone (+420…); an optional card message and note for the florist; and ask whether they have a promo code; ask whether it is a purchase for a company (IČO). Above 10 000 Kč the buyer's billing address is required. Read the breakdown and the terms link back to the buyer; after their yes call pinflower_create_order with the same arguments, terms_accepted=true and confirmed_total_czk. Call it again after any change.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | 'today', 'tomorrow' or YYYY-MM-DD. | |
| time | Yes | HH:MM from the offered times, 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only). | |
| unit | No | Apartment, floor, company at the door. | |
| buyer | Yes | ||
| items | No | Several bouquets from the SAME florist, with quantities. | |
| locale | No | ||
| address | No | Delivery to a known address: street and house number in Prague. | |
| company | No | Buying for a company — the invoice is issued to it. | |
| recipient | No | Who receives the flowers, when it is someone else than the buyer — the courier calls them; required when the address or the time is agreed with the recipient. | |
| bouquet_id | No | One bouquet (shortcut for items with a single line). | |
| fulfilment | No | ||
| promo_code | No | The buyer's promo code, if they have one — works for guests and signed-in buyers alike; the checkout checks it. | |
| address_mode | No | ask_recipient = the courier/florist agrees the address with the recipient by phone (a surprise); no address needed, delivery priced at the whole-city rate. | |
| card_message | No | ||
| courier_note | No | Bell name, entrance, gate code. | |
| florist_note | No | ||
| billing_address | No | The buyer's billing address — required by Czech tax rules when the order is over 10 000 Kč (unless buying for a company). | |
| marketing_opt_in | No | Only true if the buyer asked for news and offers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| discount | No | |
| goods_czk | Yes | |
| next_step | Yes | |
| terms_url | Yes | |
| total_czk | Yes | |
| delivery_fee_czk | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive; the description adds that it mirrors the checkout's final price (including launch discount or promo code and delivery fee) and validates the requested time. It also discloses that the call returns a breakdown with a terms link for the buyer, which is useful and not contradictory to 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?
The description is front-loaded with trigger and behavior, then procedurally lists required information. It is dense but not padded; the only structural weakness is the long run-on collection checklist that would be easier to scan as bullets.
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?
Given the tool's complexity (18 parameters, nested objects, enums) and the existence of an output schema, the description is complete: it covers triggers, prerequisites, conditional requirements, next steps, and re-invocation. Minor unmentioned parameters like locale and unit are sufficiently documented in 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?
Even though the schema covers 72% of parameters, the description adds crucial semantics: items must be from ONE florist, address is 'street and house number in Prague,' address_mode='ask_recipient' is linked to a surprise and whole-city rate, recipient is required when someone else receives flowers, and billing_address is required above 10 000 Kč. It also prescribes the order and manner of collecting buyer, company, and promo-code data, effectively compensating for schema gaps.
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 specifies a concrete action ('prices the order exactly as the checkout will charge it'), names the resource (the order), and enumerates the pricing components (bouquets, add-ons, discounts/promo, delivery fee). It also differentiates from the sibling pinflower_create_order by stating 'without creating anything' and referring the buyer's 'yes' to that tool.
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 leads with an explicit trigger condition ('when the buyer has chosen what to order and you have the details') and lays out the information to collect before calling. It names pinflower_get_bouquet as the source for valid times and instructs to call pinflower_create_order with the same arguments after acceptance, and to 'Call it again after any change' – giving clear when-to-use and when-to-recall guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_search_bouquetsFind bouquetsARead-onlyIdempotentInspect
Use this when the buyer wants flowers delivered in Prague (or picked up there) and you need concrete bouquets: it returns only bouquets that can really arrive at the given place and time, with price, delivery fee, total and the earliest delivery time, in the storefront's recommended order. Pass what the buyer said: free text, occasion, budget, where, date and a deliver-by time. Do not use it for general flower advice or for orders outside Prague. Show 3–6 results; then use pinflower_get_bouquet for details or pinflower_create_order to order.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Delivery/pickup day: 'today', 'tomorrow' or YYYY-MM-DD (Prague). Omit for as soon as possible. | |
| sort | No | recommended (default, the storefront's order), cheapest, most expensive, or soonest arrival. | |
| limit | No | How many results (default 6). | |
| query | No | Free text in any language: flower, colour or bouquet name, e.g. 'red roses', 'tulipány', 'пионы'. | |
| style | No | as_pictured = looks like the photo; florists_style = composed fresh by the florist in that spirit. | |
| where | No | Where the flowers go, as the buyer said it: a Prague district ('Praha 5'), a quarter ('Vinohrady', 'Smíchov') or a street address. Omit when unknown. | |
| detail | No | full adds composition and a short description (default short). | |
| locale | No | The buyer's language for names, texts and links: cs, en, ru or uk (default cs). | |
| category | No | A category slug as results show it (e.g. roses, tulips). | |
| currency | No | Add an approximate EUR/USD preview for a buyer abroad (default czk). The charge is always in CZK. | |
| occasion | No | Only when the buyer named the occasion. Never assume 'sympathy'. | |
| ready_now | No | Only bouquets already made and waiting (fastest). | |
| deliver_by | No | HH:MM (24 h): must arrive by then. Without date it means today. | |
| fulfilment | No | delivery (default) or pickup at the florist's shop. | |
| free_delivery | No | Only bouquets with free delivery. | |
| budget_max_czk | No | Bouquet price limit in CZK (delivery not included). | |
| budget_min_czk | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| empty | No | |
| results | Yes | |
| currency | No | |
| interpreted | Yes | |
| total_found | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call as read-only and idempotent, and the description adds a concrete behavioral contract: only bouquets that can actually arrive at the given place/time, with price, delivery fee, total, earliest delivery time, and the storefront's recommended order. No contradiction with 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 four purposeful, information-dense sentences with no filler. It front-loads the trigger condition and behavioral guarantee, then gives input guidance, exclusions, and next steps efficiently.
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?
Despite 17 parameters, the description plus 94% schema coverage and an output schema cover the full calling context: when to use it, what to pass, what results contain, and what to do next. Nothing essential for selecting and invoking the tool 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 coverage is 94%, so the schema already documents the parameters well. The description adds useful guidance by telling the agent to pass the buyer's own words for free text, occasion, budget, where, date, and deliver-by time, plus an explicit result-count expectation of 3–6.
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 — returning concrete, deliverable bouquets — and scopes it to Prague delivery/pickup. It clearly distinguishes the tool from general flower advice and from other tools like get_bouquet or store_info.
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 says when to use this tool (buyer wants flowers delivered/picked up in Prague and needs concrete bouquets) and when not to ('Do not use it for general flower advice or for orders outside Prague'). It also routes follow-up actions to pinflower_get_bouquet and pinflower_create_order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinflower_store_infoHow Pinflower worksARead-onlyIdempotentInspect
Use this when the buyer asks how ordering works: payment and when the card is charged, delivery area and fees, anonymous delivery and the card message, what happens if nobody is home, returns and complaints, or how to contact Pinflower. Answers come from the shop's own pages, with links. Not for bouquet availability — use search for that.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | The buyer's language for names, texts and links: cs, en, ru or uk (default cs). |
Output Schema
| Name | Required | Description |
|---|---|---|
| faq | Yes | |
| facts | No | |
| links | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable context that answers come from the shop's own pages with links, which informs the agent about the response format and source. No contradiction with 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?
Two sentences, front-loaded with the primary use case, then the exclusion. Zero filler, every clause earns its place.
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 read-only informational tool with a single well-documented parameter and an output schema, the description covers the key decision factors: when to invoke, what it returns (links from shop pages), and what it excludes. Nothing an agent needs 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%, with the locale parameter fully documented via enum and description. The description doesn't need to add param detail, and it doesn't – a baseline 3 is appropriate since schema carries the meaning.
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 verb ('use this when') and resource ('how ordering works'), and explicitly excludes bouquet availability, naming the alternative tool. It clearly distinguishes from siblings like pinflower_search_bouquets and pinflower_get_bouquet.
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 says when to use (buyer asks about ordering mechanics) and when not to use (bouquet availability), pointing to 'search'. This leaves no ambiguity about routing to the correct tool.
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.
9 tool updates
- First observed
pinflower_cancel_order - First observed
pinflower_check_delivery - First observed
pinflower_create_order - First observed
pinflower_get_bouquet - First observed
pinflower_get_order_status - First observed
pinflower_new_pay_link - First observed
pinflower_quote_order - First observed
pinflower_search_bouquets - First observed
pinflower_store_info
Related MCP Connectors
Find flower arrangements, check US florist delivery by ZIP and date, get a purchase link + pricing
Instagram and TikTok services: live CZK quotes, orders and customer-authorized prepaid purchases.
Find, compare, and book local service businesses: live availability, prices, reviews, booking.
Prague apartment prices from the Czech land registry: median CZK/m2 by district, estimates, rankings
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to order flowers from a Munich florist, including search, availability check, cart creation, and checkout link generation.41 npmMIT
- AlicenseBqualityCmaintenanceCompare parcel and letter delivery prices across 60+ carriers in 27 European countries.1MIT
- AlicenseAqualityCmaintenanceEnables searching products, retrieving product details, listing stores, checking stock availability, and comparing prices across Czech DIY retailers.5MIT
- AlicenseNot gradedqualityDmaintenanceSearch product catalogs across thousands of Central European e-shops. Semantic search, keyword matching, GTIN/EAN lookup — via REST API or MCP. \~2,500 e-shops | ~8.5M products | 7 countries (CZ, SK, PL, HU, RO, DE, AT)MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.