place_order
guarded
Dry-run first. Confirm second. No silent charges — the first call returns a full quote and a one-time token; only an explicit confirm places a real Florist One order.
MCP server · real florists · real delivery
Petal is an MCP server that turns a chat message into a real bouquet. Search arrangements, check ZIP + date, dry-run the order, then confirm — all from Claude, Cursor, or any MCP client.
dry-run by default · confirm-gated checkout · Florist One network
Built for agents that already have your trust.
You say it like a text message. Your agent does the rest. A simulated conversation — nothing is charged, nothing is sent.
Found 3 spring arrangements deliverable to 10014 on Friday, all under $75:
Dry-run complete — nothing charged yet.
Reply CONFIRM to place this order.
One JSON block. Restart. Ask for flowers. Local over stdio, or remote over HTTP with OAuth.
{
"mcpServers": {
"petal": {
"command": "npx",
"args": ["-y", "@petal/mcp-server"],
"env": {
"PETAL_API_KEY": "your_key_here",
"PETAL_DEFAULT_ZIP": "10014"
}
}
}
}
{
"mcpServers": {
"petal": {
"command": "npx",
"args": ["-y", "@petal/mcp-server"],
"env": {
"PETAL_API_KEY": "your_key_here",
"PETAL_ENV": "sandbox"
}
}
}
}
{
"servers": {
"petal": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@petal/mcp-server"],
"env": {
"PETAL_API_KEY": "your_key_here",
"PETAL_DEFAULT_ZIP": "10014"
}
}
}
}
{
"mcpServers": {
"petal": {
"type": "http",
"url": "https://mcp.florist/mcp"
}
}
}
The hosted remote server authenticates with OAuth — your client opens a sign-in flow, so there is no API key to paste or manage.
Get an API key. One key works across every MCP client you run.
Paste the config into your client and set PETAL_API_KEY.
Restart the client. Petal's six tools appear in your agent's tool list.
Each tool is a typed capability your agent can call — live catalog, live pricing, real Florist One fulfillment underneath.
place_order
guarded
Dry-run first. Confirm second. No silent charges — the first call returns a full quote and a one-time token; only an explicit confirm places a real Florist One order.
search_flowers
Query real arrangements by occasion, budget, and color — live catalog, live pricing.
check_delivery_availability
ZIP + date before you promise Friday. Returns windows, cutoffs, and same-day flags.
list_categories
Occasions and collections, straight from the florist catalog.
get_flower_details
Stems, palette, vase options, and florist notes for one SKU.
get_order_status
Placed → confirmed → out for delivery → delivered.
“The bouquet is real. The florist is real. Only the errand disappears.”
Petal spends real money on real flowers — so the guardrails are part of the protocol, not a promise in a blog post.
place_order never charges on first call. It returns items, delivery window, and total with requires_confirm: true.
The agent must surface the total and delivery window, then wait. Only an explicit CONFIRM plus a one-time order token places the order.
Every order is queryable with get_order_status — id, status, tracking. No black-box checkout.
Florist One handles fulfillment. Petal handles agent protocol + order safety.
Delivery across the US and Canada. Not for bulk corporate gifting workflows — Petal is for personal, agent-driven sends.
Install Petal. Keep your agent. Ship the bouquet.
petal · MCP for real flowers