Bug: ui/message from MCP App posts visible user message but does not trigger model/tool-calling pipeline

I’m seeing a regression/difference in ChatGPT Apps / MCP Apps behavior.

When my widget sends a user-role message using @modelcontextprotocol/ext-apps app.sendMessage(), the message is posted visibly in the ChatGPT transcript and the host returns {}. However, the posted message does not trigger the same model/tool-calling pipeline as an identical message manually entered by the user.

If I copy-paste the exact same text manually into ChatGPT, the expected tool is selected and called.

SDK / API used:

async function sendChatMessage(payload) {
try {
const res = await app.sendMessage(payload);
if (res?.isError) console.error(‘[sendChatMessage] host rejected message’, res);
return res;
} catch (err) {
console.error(‘[sendChatMessage] threw’, err);
throw err;
}
}

Host capabilities include:

message: {}
updateModelContext: {}
serverTools: {}

Payload:

{“role”:“user”,“content”:[{“type”:“text”,“text”:“Muéstrame visualmente las habitaciones del hotel “Hotel Dev Urbano””}]}

Result:

{}

Roundtrip:

~17ms

Observed:

The message appears in the ChatGPT transcript, but no tool is called.

Expected:

The widget-originated user message should trigger the same model/tool-calling pipeline as manually typing the same message.

Additional check:

Manually typing or copy-pasting the exact same message, “Muéstrame visualmente las habitaciones del hotel “Hotel Dev Urbano””, correctly triggers the expected tool call. This suggests the issue is not the prompt text, tool discovery metadata, missing host capability, or malformed payload, but a difference in how ChatGPT handles user-role messages originating from ui/message / app.sendMessage().