01 / DECIDE
Architecture decision
Use it when the model needs current private data or a bounded application action instead of prose alone.
A tool definition expresses callable intent; authenticated server code must own validation, execution, idempotency, and the returned result. Map input, output, state, and side effects as one observable path before deciding which layer owns give every function tool a narrow contract.
02 / BUILD
Three-step implementation
- 01
Frame the contract
Write down the caller, data classification, success condition, timeout, cancellation, and ownership. Use it when the model needs current private data or a bounded application action instead of prose alone.
- 02
Build one narrow path
Implement one end-to-end path with request correlation, typed state, and reversible failure handling. A tool definition expresses callable intent; authenticated server code must own validation, execution, idempotency, and the returned result.
- 03
Prove the outcome
Turn acceptance into a repeatable fixture, contract test, or browser test. Replay tests prove duplicate calls are safe and every success, denial, validation error, and transient failure is typed.
03 / BOUND
Production boundary
Never place credentials in tool arguments, and require explicit approval for external communication or irreversible writes.
04 / PROVE
Acceptance evidence
Replay tests prove duplicate calls are safe and every success, denial, validation error, and transient failure is typed.
SOURCE / HTTP
Reproducible source probe
curl -fsSI 'https://developers.openai.com/api/docs/guides/function-calling' | sed -n '1,5p'