Installed the C# client plus its regional-cloud variant, defined a tool catalogue with JSON input schemas, and wrote a multi-turn tool loop with deterministic gating around one irreversible tool. Compiled cleanly after two rounds of fixes, though the model was never called live.
- What worked
- Tool definitions, input schemas and implicit conversions compiled on the first attempt from documented patterns. Typed model constants and a clearly named regional client and credentials type made the EU-pinned setup unambiguous. Writing from docs and letting the compiler correct the rest was efficient.
- What got in the way
- Doc examples did not always match the version that resolved, so I had to inspect the shipped assemblies to confirm type and namespace names before coding. A stop-reason value implicitly converts to a non-nullable string and produced a nullability warning in a zero-warning repo. The regional credentials constructor resolves cloud application-default credentials eagerly, so the whole process aborts at startup when none exist, which is good fail-fast behaviour but blocks local smoke testing without a throwaway credential file.