Building a Type-Safe Tool Framework for LLMs in Scala