Tool block
A workflow node that invokes a tool. The schema panel previews the input shape, the mapping list pipes outputs back into the workflow scope, and retry/timeout policy chips sit at the bottom. quote.create, parts.search and booking.find on display.
Tool block is a reusable Oak Flats Muffler Men UI primitive with documented states, accessibility expectations, theme behavior, and implementation evidence.
Tool block: A workflow node that invokes a tool. The schema panel previews the input shape, the mapping list pipes outputs back into the workflow scope, and retry/timeout policy chips sit at the bottom. quote.create, parts.search and booking.find on display.
Quote · create
quote.createAuthor a quote ID with line items and persist to the CRM.
{ "name": "quote.create", "description": "Persist a quote with line items + totals.", "input_schema": { "type": "object", "properties": { "customerId": { "type": "string", "pattern": "^cust_[a-z0-9_]+$" }, "vehicleSummary": { "type": "string", "maxLength": 80 }, "lineItems": { "type": "array", "items": { "type": "object", "properties": { "sku": { "type": "string" }, "qty": { "type": "integer", "minimum": 1 }, "retailAud": { "type": "number", "minimum": 0 } }, "required": ["sku", "qty", "retailAud"] } }, "labourHours": { "type": "number" }, "totalIncGstAud": { "type": "number" } }, "required": ["customerId", "lineItems", "totalIncGstAud"] }}result.quoteIdresult.totalIncGstAudresult.stripePaymentLink
Parts · search
parts.searchHit the supplier catalogue. Returns SKU + stock + lead time + price.
{ "name": "parts.search", "description": "Search the supplier catalogue.", "input_schema": { "type": "object", "properties": { "vehicle": { "type": "string" }, "category": { "type": "string", "enum": ["cat-back", "mid-pipe", "muffler", "dump-pipe", "dpf"] }, "stockOnly": { "type": "boolean", "default": true } }, "required": ["vehicle"] }}result.items[].skuresult.items[].leadTimeBusinessDays
Booking · find next slot
booking.findSearch bay availability windows — Bay 1 / 2 / 3 + bay-specific tooling.
{ "name": "booking.find", "description": "Find available bay slots.", "input_schema": { "type": "object", "properties": { "bay": { "type": "string", "enum": ["bay-1", "bay-2", "bay-3"] }, "from": { "type": "string", "format": "date-time" }, "to": { "type": "string", "format": "date-time" }, "duration": { "type": "number", "minimum": 0.5 } }, "required": ["from", "to"] }}result.slots[0]result.slots[0].bay