Skip to main content
Glama

Pinflower — flowers in Prague

Server Details

Order bouquets from independent Prague florists: live prices, delivery times, pay on pinflower.cz.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 44 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
Pinflower

TDQS

A4/5.0

Scored across 9 tools

Disambiguation4/5

The tools map to clearly distinct steps in the buying and post-purchase lifecycle: search, bouquet details, quote, create, status, pay link, cancel, delivery check, and store information. There is some mild overlap around delivery fees and timing across check_delivery, search_bouquets, get_bouquet, and store_info, but the descriptions generally clarify which tool to use.

Naming Consistency4/5

Most names follow a predictable pinflower_ + verb_noun pattern: cancel_order, check_delivery, create_order, get_bouquet, get_order_status, quote_order, search_bouquets. Minor deviations are new_pay_link and store_info, which are not strictly verb_noun, but the overall convention remains easy to read.

Tool Count5/5

Nine tools is well-scoped for a flower ordering server. Each tool covers a meaningful part of the workflow without redundant or filler operations.

Completeness4/5

The surface covers the core customer journey: discovery, bouquet details, delivery checking, quoting, ordering, payment link retrieval, status tracking, cancellation, and store information. Minor gaps exist around order history or modifying an existing order, but the latter is explicitly unsupported rather than an accidental omission.

Available Tools

9 tools
pinflower_cancel_orderCancel an orderA
Destructive
Inspect

Use this when the buyer explicitly asks to cancel an order placed here. 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: order_ref with confirm=true sends a 6-digit code to the e-mail the order was placed with; order_ref with that code then cancels. It cancels eligible orders; changing items, delivery details or the delivery time is not supported.

NameRequiredDescriptionDefault
codeNoThe 6-digit code from the e-mail (second call).
confirmYestrue = the buyer confirmed they want to cancel.
order_refYes

Output Schema

NameRequiredDescription
cancelledYes
order_refYes
code_sent_toNo
refunded_czkNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only flag destructiveHint/openWorldHint; the description adds the substantive behavior: a full refund of any paid amount, the two-step confirmation flow, and that a 6-digit code is sent to the e-mail the order was placed with. It also discloses the eligibility constraint that determines whether the cancel succeeds at all.

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-loaded with the trigger condition, then rules, then the two-step mechanism, then exclusions. Every sentence carries distinct information; there is no filler or restatement 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?

With an output schema present, return values need no explanation, and the description covers the remaining gaps: eligibility, refund outcome, the code-delivery step, and unsupported operations. An agent has everything needed to execute the two-call sequence 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?

Schema coverage is 67% (order_ref is undocumented there). The description compensates by explaining the sequencing semantics: order_ref + confirm=true issues the code, then order_ref + code completes the cancel. That flow meaning is not derivable from the schema alone, though it never describes the order_ref format.

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 ('cancel an order placed here') and immediately scopes the trigger to an explicit buyer request. None of the siblings (check_delivery, create_order, get_order_status, etc.) perform cancellation, so the agent can route unambiguously.

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 explicit when-to-use ('buyer explicitly asks to cancel') plus eligibility windows (free until florist confirmation; later-day orders until the cut-off) and a when-not ('changing items, delivery details or the delivery time is not supported'). It stops short of naming which sibling to use for those unsupported changes, so the routing half is implicit rather than explicit.

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 placeA
Read-onlyIdempotent
Inspect

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. Takes the place as the buyer said it. Bouquet search results already include this for their place.

NameRequiredDescriptionDefault
dateNoDelivery/pickup day: 'today', 'tomorrow' or YYYY-MM-DD (Prague). Omit for as soon as possible.
whereYesWhere 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.
localeNoThe buyer's language for names, texts and links: cs, en, ru or uk (default cs).

Output Schema

NameRequiredDescription
placeNo
earliestNo
floristsNo
can_deliverYes
night_deliveryNo
delivery_fee_from_czkNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered without help. The description usefully discloses the overlap with bouquet search results and that the place is taken verbatim, but says nothing about auth, rate limits, or failure behavior; an output schema exists so return format is not needed. This is modest added value over 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.

Conciseness4/5

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

Front-loaded with the usage trigger, followed by two short supporting sentences; the total is appropriately sized for the tool's scope. The "Takes the place as the buyer said it" sentence is slight redundancy against the schema but cheap and reinforcing.

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

Completeness4/5

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

Covers purpose, triggering questions, ordering relative to bouquet selection, and the overlap with search results, which is the main ambiguity an agent would face. Since an output schema exists, the lack of return-value detail is not a gap.

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 schema already documents `where`, `date` and `locale`. The description's only parameter-relevant statement, "Takes the place as the buyer said it," repeats the schema's own wording rather than adding format or edge-case guidance. Baseline 3 is correct.

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 action (check delivery availability/cost/timing) for a specific resource (a place in Prague), and the phrasing "whether Pinflower delivers to a place in Prague, how much delivery costs, how soon it can arrive" enumerates the exact questions it answers. It also distinguishes itself from sibling pinflower_search_bouquets by noting search results already embed this data.

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 ("Use this when the buyer asks whether...") plus a sequencing constraint ("before choosing a bouquet") and a de-duplication rule ("Bouquet search results already include this for their place"), which implicitly tells the agent not to call it redundantly. It stops short of naming the alternative tool explicitly or stating other when-not conditions.

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)A
DestructiveIdempotent
Inspect

Use this when the buyer has agreed to the quoted total: it creates the order exactly like the website's checkout and returns the secure payment link on pinflower.cz. Takes the quote's details plus terms_accepted, confirmed_total_czk (the agreed total) and order_intent; if the total has changed meanwhile, nothing is created and it returns the new breakdown instead. Takes: 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; the recipient's name and phone when someone else receives the flowers; the date and a time (one of the bouquet's offered times, or 'asap'); the buyer's name, e-mail and phone (+420…); an optional card message and note for the florist; the buyer's promo code if they have one. Above 10 000 Kč the buyer's billing address is required. Also on offer: address_mode 'ask_recipient' when the florist should agree the address with the recipient by phone — a surprise (the recipient's name and phone are then required); time 'agree_with_recipient' when the florist should agree the time with the recipient by phone (the recipient's name and phone are then required); add-ons per bouquet (listed in the bouquet details); recipient.care_reminder=true — the free (0 Kč) care reminder for the recipient, offered once when someone else receives the flowers; company details (IČO) for a purchase by a company. Nothing is charged here and the florist is not told until the buyer pays.

NameRequiredDescriptionDefault
dateYes'today', 'tomorrow' or YYYY-MM-DD.
timeYesHH:MM from the offered times, or 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only).
unitNoApartment, floor, company at the door.
buyerYes
itemsNoSeveral bouquets from the SAME florist, with quantities.
localeNo
addressNoDelivery to a known address: street and house number in Prague.
companyNoBuying for a company — the invoice is issued to it.
recipientNoWho receives the flowers, when it is someone else than the buyer — the courier calls them.
bouquet_idNoOne bouquet (shortcut for items with a single line).
florist_idNoThe florist — required when the order is a custom bouquet alone.
fulfilmentNo
promo_codeNoThe buyer's promo code, if they have one — works for guests and signed-in buyers alike; the checkout checks it.
address_modeNoask_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_messageNo
courier_noteNoBell name, entrance, gate code.
florist_noteNo
order_intentYesThe quote's order_intent. The same order_intent always returns the same order (a lost answer is safe to retry); each quote issues a new one.
terms_acceptedYestrue = the buyer agreed to the terms.
billing_addressNoThe buyer's billing address — required by Czech tax rules when the order is over 10 000 Kč (unless buying for a company).
marketing_opt_inNotrue = the buyer asked for news and offers.
confirmed_total_czkYesThe quoted total_czk the buyer agreed to — a different total refuses the order.

Output Schema

NameRequiredDescription
pay_urlYes
order_refYes
total_czkYes
order_numberNo

TDQS

A4.7/5.0
Behavior5/5

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

The annotations say this writes (readOnlyHint=false, destructiveHint=true, idempotentHint=true), and the description adds real behavior on top: nothing is charged here, the florist is not told until the buyer pays, and a mismatched confirmed_total_czk aborts the creation. It also explains the safety retry semantics of order_intent and the 0 Kč care_reminder, none of which the annotations convey.

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

Conciseness3/5

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

It front-loads the decision condition well, but then turns into a long single-paragraph inventory of fields that the schema already documents at 77% coverage. The core value (when to call, what aborts, what happens with payment) is buried inside that list.

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 22-parameter, nested, open-world write operation with an output schema, the description covers purpose, preconditions, failures and side effects sufficiently. The return values (payment link vs. re-quote breakdown) are described as well, so nothing an agent needs in order to call it safely 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 description adds cross-field rules the schema does not state: recipient name/phone are required for ask_recipient and agree_with_recipient, billing address is required above 10 000 Kč, add-ons are per bouquet, and care_reminder is free and offered once. Some of this restates schema descriptions verbatim, but the conditional dependencies are genuine added meaning.

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 first sentence states a specific verb and resource (creates the order) plus its precondition (the buyer has agreed to the quoted total) and its outcome (returns the secure payment link on pinflower.cz). That clearly separates it from the sibling pinflower_quote_order, which only quotes.

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 explicit when-to-use guidance tied to the quote being accepted, and implicit but clear when-not guidance: if the total changed, nothing is created and the new breakdown comes back instead. It also names the concrete prerequisites and alternatives (address_mode ask_recipient vs known address, time agree_with_recipient, custom bouquet vs bouquet_id), so the agent can decide between the options without guessing.

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 timesA
Read-onlyIdempotent
Inspect

Use this when the buyer is interested in one bouquet from the search results: what is inside, its size, photos, the florist's rating, the price with delivery (exact for a street address — delivery_fee_exact says so; otherwise the shop's typical fee) and every time it can arrive on a given day. Needs a bouquet_id as search results show it. Covers one bouquet at a time.

NameRequiredDescriptionDefault
dateNoDelivery/pickup day: 'today', 'tomorrow' or YYYY-MM-DD (Prague). Omit for as soon as possible.
whereNoWhere 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.
localeNoThe buyer's language for names, texts and links: cs, en, ru or uk (default cs).
bouquet_idYes
fulfilmentNodelivery (default) or pickup at the florist's shop.

Output Schema

NameRequiredDescription
nameYes
slotsNo
bouquet_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuine behavioral context beyond that: whether the returned price is exact depends on supplying a street address versus falling back to the shop's typical fee, and the lookup is scoped to one bouquet per call.

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?

Two sentences, with the usage trigger front-loaded and the returned fields following. The long parenthetical about delivery_fee_exact is slightly convoluted but every clause carries information; nothing is padding.

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

Completeness4/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 structure need not be spelled out, and the description still summarizes what comes back. Combined with the annotations and near-complete parameter descriptions, an agent has enough to invoke the tool correctly; only explicit alternative routing 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 80%, so the schema already documents date, where, locale and fulfilment formats. The description nonetheless adds meaning by tying the 'where' parameter to price precision (exact fee for a street address, typical fee otherwise) and by noting bouquet_id must be the value as shown in search results.

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 (fetch one bouquet's details from search results) and enumerates the returned content: contents, size, photos, florist rating, price with delivery, and arrival times. 'Covers one bouquet at a time' cleanly distinguishes it from the bulk-oriented pinflower_search_bouquets sibling.

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

Usage Guidelines4/5

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

The opening clause gives a clear trigger: 'Use this when the buyer is interested in one bouquet from the search results.' It implicitly routes the agent from search to detail and notes the single-bouquet scope, but never explicitly names the alternative to use for multiple bouquets or when not to call it.

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 statusA
Read-onlyIdempotent
Inspect

Use this when the buyer asks what is happening with an order placed here — whether it is paid, confirmed by the florist, on the way or delivered. Needs the order_ref returned when the order was created. Read-only: it changes nothing.

NameRequiredDescriptionDefault
localeNoThe buyer's language for names, texts and links: cs, en, ru or uk (default cs).
order_refYes

Output Schema

NameRequiredDescription
paidYes
stepYes
order_refYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, non-destructive, idempotent and closed-world, so 'Read-only: it changes nothing' adds nothing. The real added value is the prerequisite disclosure that the order_ref comes from order creation, which tells the agent where to source the required input.

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?

Two tight sentences: usage trigger first, prerequisite and safety second. The trailing 'Read-only: it changes nothing' is slightly redundant with the annotations but does little harm.

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 two-parameter read tool with an output schema and full annotation coverage, the description supplies the trigger, the input provenance and the safety profile. Nothing the agent needs before calling 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 only 50%: locale is documented in the schema, but order_ref is bare there. The description compensates by explaining that order_ref is the reference returned at order creation, which is meaningful provenance beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('get order status') and enumerates the states it reports (paid, confirmed, on the way, delivered), so the agent knows exactly what the call answers. It does not, however, differentiate itself from the sibling pinflower_check_delivery, which appears to overlap in scope.

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?

'Use this when the buyer asks what is happening with an order placed here' gives a clear trigger condition and a scope qualifier (orders placed here). No explicit when-not or sibling exclusion against check_delivery is provided, so it stops short of a 5.

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

pinflower_quote_orderPrice the orderA
Read-onlyIdempotent
Inspect

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. Takes: 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; the recipient's name and phone when someone else receives the flowers; the date and a time (one of the bouquet's offered times, or 'asap'); the buyer's name, e-mail and phone (+420…); an optional card message and note for the florist; the buyer's promo code if they have one. Above 10 000 Kč the buyer's billing address is required. Also on offer: address_mode 'ask_recipient' when the florist should agree the address with the recipient by phone — a surprise (the recipient's name and phone are then required); time 'agree_with_recipient' when the florist should agree the time with the recipient by phone (the recipient's name and phone are then required); add-ons per bouquet (listed in the bouquet details); recipient.care_reminder=true — the free (0 Kč) care reminder for the recipient, offered once when someone else receives the flowers; company details (IČO) for a purchase by a company. Returns the breakdown, the total, the terms link and an order_intent; it creates nothing. The total is valid for exactly these details.

NameRequiredDescriptionDefault
dateYes'today', 'tomorrow' or YYYY-MM-DD.
timeYesHH:MM from the offered times, or 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only).
unitNoApartment, floor, company at the door.
buyerYes
itemsNoSeveral bouquets from the SAME florist, with quantities.
localeNo
addressNoDelivery to a known address: street and house number in Prague.
companyNoBuying for a company — the invoice is issued to it.
recipientNoWho receives the flowers, when it is someone else than the buyer — the courier calls them.
bouquet_idNoOne bouquet (shortcut for items with a single line).
fulfilmentNo
promo_codeNoThe buyer's promo code, if they have one — works for guests and signed-in buyers alike; the checkout checks it.
address_modeNoask_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_messageNo
courier_noteNoBell name, entrance, gate code.
florist_noteNo
billing_addressNoThe buyer's billing address — required by Czech tax rules when the order is over 10 000 Kč (unless buying for a company).
marketing_opt_inNotrue = the buyer asked for news and offers.

Output Schema

NameRequiredDescription
discountNo
goods_czkYes
next_stepYes
terms_urlYes
total_czkYes
delivery_fee_czkYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavior: what the price is composed of (bouquets, add-ons, launch discount or promo code, delivery fee), the Czech tax rule requiring a billing address above 10 000 Kč, and the caveat that the total is valid for exactly these details. It also discloses the return shape (breakdown, total, terms link, order_intent).

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

Conciseness3/5

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

The usage trigger is front-loaded well, but the body is one long run-on enumeration of parameters, and the no-side-effect point is repeated three times ('without creating anything', 'it creates nothing', 'creates nothing'), which costs space without adding information.

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

Completeness4/5

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

For an 18-parameter, deeply nested pricing tool it covers the conditional dependencies (recipient required for surprise delivery, billing address threshold, company IČO) that an agent would otherwise get wrong. Return values need not be explained given the output schema, though locale and marketing_opt_in are never addressed.

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?

With 18 params at 72% schema coverage, the description still contributes rule-level meaning the schema cannot: several bouquets only from ONE florist, address_mode 'ask_recipient' requiring recipient name and phone, time 'agree_with_recipient' being delivery-only, and care_reminder being free and delivery-only. It leaves locale, unit, courier_note and marketing_opt_in unmentioned, but those are minor.

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 — prices/quotes the order exactly as checkout will charge it — and explicitly distinguishes itself from order creation ('without creating anything', 'it creates nothing'), which separates it cleanly from pinflower_create_order in the sibling list.

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?

'Use this when the buyer has chosen what to order and you have the details' gives an explicit trigger condition, and it points to search as the source of bouquet_id. It never names the follow-up tool (create_order) as the next step, so the routing to alternatives is implied rather than stated.

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

pinflower_search_bouquetsFind bouquetsA
Read-onlyIdempotent
Inspect

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. Takes what the buyer said: free text, occasion, budget, where, date and a deliver-by time; without date and deliver_by every result carries its earliest time. Each call displays its results to the buyer as a carousel. Not for general flower advice or for orders outside Prague.

NameRequiredDescriptionDefault
dateNoDelivery/pickup day: 'today', 'tomorrow' or YYYY-MM-DD (Prague). Omit for as soon as possible.
sortNorecommended (default, the storefront's order), cheapest, most expensive, or soonest arrival.
limitNoHow many results (default 6).
queryNoFree text in any language: flower, colour or bouquet name, e.g. 'red roses', 'tulipány', 'пионы'.
styleNoas_pictured = looks like the photo; florists_style = composed fresh by the florist in that spirit.
whereNoWhere 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.
detailNofull adds composition and a short description (default short).
localeNoThe buyer's language for names, texts and links: cs, en, ru or uk (default cs).
flowersNoPlant ids the bouquet must hold ANY of, as results show them under `flowers` (e.g. ["rosa"], ["rosa", "hydrangea"]). A plant covers its forms (spray roses are roses).
categoryNoA category slug as results show it (e.g. roses, tulips).
currencyNoAdd an approximate EUR/USD preview for a buyer abroad (default czk). The charge is always in CZK.
occasionNoThe occasion the buyer named.
ready_nowNoOnly bouquets already made and waiting (fastest).
deliver_byNoHH:MM (24 h): must arrive by then. Without date it means today.
fulfilmentNodelivery (default) or pickup at the florist's shop.
free_deliveryNoOnly bouquets whose delivery can be free: free for the address's zone when a place is given; before one, bouquets with a free path at some zone (the result's free_delivery says whether it IS free).
budget_max_czkNoBouquet price limit in CZK (delivery not included).
budget_min_czkNo

Output Schema

NameRequiredDescription
emptyNo
resultsYes
currencyNo
interpretedYes
total_foundYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/open-world safety, and the description adds genuinely non-obvious behavior: results render to the buyer as a carousel, results are ordered by the storefront's recommendation, and with no date/deliver_by every result carries its earliest time. That is real context beyond the structured fields.

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?

Scope, return contents, input shape, side effect and exclusions are packed into four dense sentences with the most decision-relevant information (Prague, concrete bouquets, carousel) front-loaded. No sentence is 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 18 params but an output schema and rich annotations, the definition still covers what an agent needs: eligibility guarantees, ordering, the empty-date fallback, the carousel side effect, and geographic bounds. Nothing material is missing for correct invocation.

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

Parameters4/5

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

Schema description coverage is 94%, so the baseline is 3, but the description adds a useful framing of the input groups ('free text, occasion, budget, where, date and a deliver-by time') that helps an agent map buyer speech onto parameters. It doesn't add per-parameter syntax beyond the schema, keeping it below a 5.

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 concrete verb and resource ('returns only bouquets that can really arrive at the given place and time') and pins the geography to Prague, immediately separating it from sibling tools like get_bouquet or quote_order. An agent can tell exactly what this returns 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?

Explicitly frames the trigger ('Use this when the buyer wants flowers delivered in Prague... and you need concrete bouquets') and gives exclusions ('Not for general flower advice or for orders outside Prague'). It does not name a specific sibling to use instead for detail/advice, so it stops just 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.

pinflower_store_infoHow Pinflower worksA
Read-onlyIdempotent
Inspect

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. Does not cover bouquet availability.

NameRequiredDescriptionDefault
localeNoThe buyer's language for names, texts and links: cs, en, ru or uk (default cs).

Output Schema

NameRequiredDescription
faqYes
factsNo
linksYes

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, non-destructive and openWorldHint=false, so the safety profile is covered. The description still adds useful context: answers are sourced from the shop's own pages and returned with links, which tells the agent the response is authoritative and link-bearing rather than a generic generation.

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, front-loaded with the trigger condition, then the coverage list, then the exclusion. The enumeration is long but every item is a distinct routing cue rather than filler, and there is no redundant or decorative prose.

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. For a read-only informational lookup, what an agent needs (when to call it, what topics it resolves, what it does not resolve, and that responses include links) is 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?

The single parameter (locale) is fully documented in the schema, including its enum values and default. The description adds nothing about locale or language behavior, so per the high-coverage baseline this is a minimum-viable 3.

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 resource (Pinflower's own informational pages) and enumerates exactly what it covers: payment timing, delivery area/fees, anonymous delivery and card message, absence handling, returns/complaints, and contact. It explicitly excludes bouquet availability, which cleanly separates it from pinflower_get_bouquet and pinflower_search_bouquets.

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?

Opens with an explicit trigger ('Use this when the buyer asks how ordering works...') followed by an exhaustive topic list, and closes with a negative scope ('Does not cover bouquet availability') that routes the agent elsewhere. Both when-to-use and when-not-to-use are stated, 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedpinflower_quote_order1 field changed
      • addedInput schema / properties / items / items / properties / addons
        Added value: +{
        +  "description": "Add-on keys the bouquet offers (its details list them as addons).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  2. 1 tool update
    • Changedpinflower_search_bouquets1 field changed
      • addedInput schema / properties / flowers
        Added value: +{
        +  "description": "Plant ids the bouquet must hold ANY of, as results show them under `flowers` (e.g. [\"rosa\"], [\"rosa\", \"hydrangea\"]). A plant covers its forms (spray roses are roses).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  3. 1 tool update
    • Changedpinflower_search_bouquets3 fields changed
      • changedInput schema / properties / free_delivery / description
        Previous value: -"Only bouquets with free delivery."New value: +"Only bouquets whose delivery can be free: free for the address's zone when a place is given; before one, bouquets with a free path at some zone (the result's free_delivery says whether it IS free)."
      • addedOutput schema / properties / results / items / properties / delivery_fee_exact
        Added value: +{
        +  "description": "The fee is the address's zone price; false = a 'from' lower bound until an address is known.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / results / items / properties / time_exact
        Added value: +{
        +  "description": "The times are for the address; false = an estimate for a district's centre (a street address confirms them).",
        +  "type": "boolean"
        +}
  4. 2 tool updates
    • Changedpinflower_create_order2 fields changed
      • addedInput schema / properties / recipient / properties / care_reminder
        Added value: +{
        +  "description": "«A little extra care», free (0 Kč), off unless the buyer wants it: after the delivery Pinflower texts the recipient once (the sender ordered a care reminder; STOP opts out), and 3 days later sends one care tip. Delivery only, for a named recipient (recipient.phone is where the texts go — whose number it is does not matter); the recipient's language is unknown, the texts are Czech.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / recipient / properties / sms_opt_out / description
        Previous value: -"true = no SMS to the recipient (keeps a surprise)."New value: +"Legacy, ignored — the recipient is texted only for care_reminder."
    • Changedpinflower_quote_order1 field changed
      • addedInput schema / properties / recipient / properties / care_reminder
        Added value: +{
        +  "description": "«A little extra care», free (0 Kč), off unless the buyer wants it: after the delivery Pinflower texts the recipient once (the sender ordered a care reminder; STOP opts out), and 3 days later sends one care tip. Delivery only, for a named recipient (recipient.phone is where the texts go — whose number it is does not matter); the recipient's language is unknown, the texts are Czech.",
        +  "type": "boolean"
        +}
  5. 4 tool updates
    • Changedpinflower_cancel_order1 field changed
      • changedInput schema / properties / confirm / description
        Previous value: -"true only after the buyer confirmed they want to cancel."New value: +"true = the buyer confirmed they want to cancel."
    • Changedpinflower_create_order8 fields changed
      • changedInput schema / properties / confirmed_total_czk / description
        Previous value: -"total_czk from pinflower_quote_order that the buyer agreed to — a different total refuses the order."New value: +"The quoted total_czk the buyer agreed to — a different total refuses the order."
      • changedInput schema / properties / florist_id / description
        Previous value: -"The florist — needed only when the order is a custom bouquet alone."New value: +"The florist — required when the order is a custom bouquet alone."
      • changedInput schema / properties / items / items / properties / addons / description
        Previous value: -"Add-on keys the bouquet offers (pinflower_get_bouquet → addons)."New value: +"Add-on keys the bouquet offers (its details list them as addons)."
      • changedInput schema / properties / items / items / properties / bouquet_id / description
        Previous value: -"From pinflower_search_bouquets / pinflower_get_bouquet."New value: +"A bouquet_id as search results and bouquet details show it."
      • changedInput schema / properties / items / items / properties / custom_budget_czk / description
        Previous value: -"A bouquet composed by the florist to a budget (390–2400 Kč) instead of bouquet_id; put the wishes into florist_note."New value: +"A bouquet composed by the florist to a budget (390–2400 Kč) instead of bouquet_id; the wishes go in florist_note."
      • changedInput schema / properties / marketing_opt_in / description
        Previous value: -"Only true if the buyer asked for news and offers."New value: +"true = the buyer asked for news and offers."
      • changedInput schema / properties / order_intent / description
        Previous value: -"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."New value: +"The quote's order_intent. The same order_intent always returns the same order (a lost answer is safe to retry); each quote issues a new one."
      • changedInput schema / properties / terms_accepted / description
        Previous value: -"true only after the buyer agreed to the terms."New value: +"true = the buyer agreed to the terms."
    • Changedpinflower_quote_order2 fields changed
      • changedInput schema / properties / items / items / properties / bouquet_id / description
        Previous value: -"From pinflower_search_bouquets / pinflower_get_bouquet."New value: +"A bouquet_id as search results and bouquet details show it."
      • changedInput schema / properties / marketing_opt_in / description
        Previous value: -"Only true if the buyer asked for news and offers."New value: +"true = the buyer asked for news and offers."
    • Changedpinflower_search_bouquets1 field changed
      • changedInput schema / properties / occasion / description
        Previous value: -"Only when the buyer named the occasion. Never assume 'sympathy'."New value: +"The occasion the buyer named."
  6. 2 tool updates
    • Changedpinflower_check_delivery1 field changed
      • changedOutput schema / properties / earliest / properties / day / enum
        Previous value: -[
        -  "today",
        -  "tomorrow",
        -  "later"
        -]New value: +[
        +  "today",
        +  "tonight",
        +  "tomorrow",
        +  "later"
        +]
    • Changedpinflower_search_bouquets1 field changed
      • changedOutput schema / properties / results / items / properties / earliest / properties / day / enum
        Previous value: -[
        -  "today",
        -  "tomorrow",
        -  "later"
        -]New value: +[
        +  "today",
        +  "tonight",
        +  "tomorrow",
        +  "later"
        +]
  7. 2 tool updates
    • Changedpinflower_create_order2 fields changed
      • changedInput schema / properties / recipient / description
        Previous value: -"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."New value: +"Who receives the flowers, when it is someone else than the buyer — the courier calls them."
      • changedInput schema / properties / time / description
        Previous value: -"HH:MM from the offered times, 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only)."New value: +"HH:MM from the offered times, or 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only)."
    • Changedpinflower_quote_order2 fields changed
      • changedInput schema / properties / recipient / description
        Previous value: -"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."New value: +"Who receives the flowers, when it is someone else than the buyer — the courier calls them."
      • changedInput schema / properties / time / description
        Previous value: -"HH:MM from the offered times, 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only)."New value: +"HH:MM from the offered times, or 'asap', or 'agree_with_recipient' (the florist agrees the time with the recipient by phone; delivery only)."
  8. 9 tool updates
    • First observedpinflower_cancel_order
    • First observedpinflower_check_delivery
    • First observedpinflower_create_order
    • First observedpinflower_get_bouquet
    • First observedpinflower_get_order_status
    • First observedpinflower_new_pay_link
    • First observedpinflower_quote_order
    • First observedpinflower_search_bouquets
    • First observedpinflower_store_info

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources