Why give an LLM a dynamically typed language when you could give it a real type system and a compiler that tells it exactly what's wrong? That's the bet behind Tapir, where an endpoint is a value and the compiler guarantees your API, client and docs all agree. Part 1 is up: https://gilwath.com/articles/build_a_rest_api_scala_part1.html
