# Recipes

Each recipe is one requirement, the pieces it composes, the exact operations
in order with their request bodies, and the shape to avoid. Read
[How it fits together](/how-it-fits) first for the model these follow.

Every recipe page is a test input: `backend/tests/test_recipes.py` reads the
page, sends its bodies over the public API in order, and fails the build if
any call is refused. A recipe that drifts from the API cannot be published.

- [Book an appointment without double-booking](/recipes/book-appointment):
  connection, custom data, two HTTP tools, a custom tool, a flow with a
  conditional edge, the flow as a tool on an agent.
- [Sync a lead to the client's system](/recipes/sync-lead-to-client-system):
  an automation on `record_written` that posts the record through an HTTP
  tool.
- [Push every call to a webhook](/recipes/transcript-to-webhook): an HTTP
  tool as a post hook, and the same as an `interaction_ended` automation.
- [Greet callers by name](/recipes/greet-by-name): a collection with an
  identity field and its lookup tool on a node.
- [Quote from a price list](/recipes/quote-from-price-list): custom data plus
  a custom tool for the formula, composed by a flow.
