Hey, this is a known BYOK bug when a custom base URL is set. In this case, the backend builds the payload in the Responses API format (input plus the flat tools format), but sends it to /v1/chat/completions, which expects the Chat Completions format (messages plus {type: "function", function: {...}}). The provider correctly rejects the request with a 400.
It’s tracked here, with details: Cursor Agent sends Responses API format to /chat/completions endpoint
This is on our side. I can’t share an ETA for the fix yet. We’ll post an update in the canonical thread as soon as I have one.