The function calling loop takes an afternoon. These are the parts that bite afterwards: tool descriptions, parallel results, context growth, and idempotency.