I’m using the realtime APIs, and I’m able to use my custom MCP server, if I pass the tool configuration when calling client_secretsmethod (among with prompt, etc.), it does its job.
I tried to create a configuration from the dashboard using “Realtime Playground”. Instead to passing instructions, configurations, etc. when POSTing client_secrets, I tried to pass only the reference to that configuration:
{
"session" : {
"type" : "realtime",
"prompt" : {
"id" : "pmpt_68f9ecdee3cc8197a................",
"version" : "4",
"variables" : {
"market" : {
"type" : "input_text",
"text" : "us-ap"
},
"currency" : {
"type" : "input_text",
"text" : "USD"
},
"locale" : {
"type" : "input_text",
"text" : "en-US"
}
}
}
}
}
It works (almost) as expected for configuration, because I receive:
{
"value" : "ek_68fb71dXXXXXXXXXXXXXXXXX",
"expires_at" : 1761309747,
"session" : {
"type" : "realtime",
"object" : "realtime.session",
"id" : "sess_CUB........",
"model" : "gpt-realtime",
"output_modalities" : [ "audio" ],
"instructions" : "🎯 Role & Objective.........",
"tools" : [ {
"type" : "mcp",
"server_label" : "XXXXXXXXX_mpc_server",
"server_url" : "<redacted>",
"connector_id" : null,
"authorization" : null,
"headers" : null,
"allowed_tools" : [ "getAllCategories", "getTemperature", "getActivitiesNearForCategories" ],
"require_approval" : "never"
} ],
"tool_choice" : "auto",
"max_output_tokens" : 4096,
"tracing" : null,
"truncation" : "auto",
"prompt" : {
"id" : "pmpt_68f9ecdee3...........",
"version" : "4",
"variables" : {
"market" : {
"type" : "input_text",
"text" : "us-ap"
},
"currency" : {
"type" : "input_text",
"text" : "USD"
},
"locale" : {
"type" : "input_text",
"text" : "en-US"
}
}
},
"expires_at" : 0,
"audio" : {
"input" : {
"format" : {
"type" : "audio/pcm",
"rate" : 24000
},
"transcription" : null,
"noise_reduction" : null,
"turn_detection" : {
"type" : "server_vad",
"threshold" : 0.5,
"prefix_padding_ms" : 300,
"silence_duration_ms" : 200,
"idle_timeout_ms" : null,
"create_response" : true,
"interrupt_response" : true
}
},
"output" : {
"format" : {
"type" : "audio/pcm",
"rate" : 24000
},
"voice" : "marin",
"speed" : 1.0
}
},
"include" : null
}
}
So ok for behavior, audio configuration, etc., but from datachannel I get “mcp_list_tools.failed” event, and MCP obviously don’t works.