You can definitely use tools or any kind of structured output with O1.
We have a working demo live right here: https://www.boundaryml.com/blog/openai-o1
It uses our prompting DSL called BAML: https://github.com/BoundaryML/baml
The way it works is we just serialize your tools into the prompt as a string, and parse the output for you, guaranteeing the output matches the schema of one of your tools. It's just as reliable as any tool-use APIs.