Just to report back here, I have resolved this for myself.
The problem was that my app was imitating the format the body being sent to the submit_tool_outputs API by the OpenAI Assistant Playground:
{"functionResponses":{"tool_outputs":[{"tool_call_id":"call_1fmgRc6y3A8aJ9NRO0ezLLTs","output":"true"}]},"threadId":"thread_YWk2lEK3v2gVW8a9br7sXzvp","runId":"run_rV4MbBU1cNTrSH2oyvSCthlO"}
But according to the documentation of that API, the body should look like this:
{"tool_outputs":[{"tool_call_id":"call_sMiqYNSQFdhSxWRdHpwADUhs","output":"true"}]}
Once I changed my post body to the format as documented, it worked for me. This was highly counterintuitive. Usually it’s the documentation that’s behind reality, not the working example…