We have a copilot agent set up to use MCP tools and it prompts for confirmation when it's supposed to use the connected MCP tools. The agent responded with the following example:
{
"jsonrpc": "2.0",
"id": "dummyId",
"result": {
"task": {
"id": "taskId",
"contextId": "contextId",
"status": {
"state": "TASK_STATE_INPUT_REQUIRED",
"message": {
"role": "ROLE_AGENT",
"parts": [
{
"text": "Additional input is required."
},
{
"data": {
"input-required": {
"type": "confirmation_required",
"sourceRequestId": "dummyId",
"actionId": "[{\"function\":{\"arguments\":\"{\\\"param_2\\\":\\\"dummyValue\\\",\"id\":\"dummyId\",\"type\":\"function\"}]",
"adaptiveCard": {
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{
"type": "TextBlock",
"text": "I'll connect to XXX to process your query. Create items from a MCP tool.",
"wrap": true
},
{
"type": "Container",
"items": [
{
"type": "Container",
"id": "previewContainer",
"items": [
{
"type": "FactSet",
"facts": [
{
"title": "example_url",
"value": "https://example.com/app/item/esdfsdf1231=/"
},
{
"title": "is_repository",
"value": "False"
}
]
}
]
}
],
"style": "emphasis"
}
],
"actions": [
{
"type": "Action.Submit",
"data": {
"message": {
"actionId": "[{\"function\":{\"arguments\":\"{\\\"param_2\\\":\\\"dummyValue\\\",\"id\":\"dummyId\",\"type\":\"function\"}]",
"action": "[{\"function\":{\"arguments\":\"{\\\"param_2\\\":\\\"dummyValue\\\",\"id\":\"dummyId\",\"type\":\"function\"}]",
"sourceRequestId": "dummyId",
"confirmationOption": 1,
"isCancelOption": false,
"isConsequential": true,
"pauseResumeStoreRegion": "https://ObjectStoreBingFD.Prod.WestUS2.binginternal.com:443/sds",
"text": "Yes, proceed with action 'Create items from a MCP tool.'",
"author": "user",
"createdAt": "2026-10-30T08:35:37.6109312+00:00",
"timestamp": "2026-10-30T08:35:37.6109312+00:00",
"messageId": "dummyMessageId",
"messageType": "InvokeAction",
"offense": "None",
"contentOrigin": "TuringBot",
"pluginInfo": {
"id": "CopilotPlugins.GPTActionOpenAIPlugin==",
"source": "MOS3",
"data": {
"PluginType": "OpenAIPlugin",
"MetaOSAppId": "MetaOSAppId",
"MetaOSTitleId": "MetaOSTitleId",
"MetaOSBotId": "",
"GptId": "ms-teams-example",
"GptActionId": "examplePlugin",
"TitleIndex": "0",
"PluginName": "Example",
"AcquisitionContext": "Tenant",
"CatalogName": "MOS3",
"AppKind": "Public_ThirdParty"
},
"version": "3.0.0",
"isThirdPartyPluginSource": true,
"isGraphConnectorPluginType": false
}
}
},
"title": "Confirm"
},
{
"type": "Action.Submit",
"data": {
"message": {
"actionId": "[{\"function\":{\"arguments\":\"{\\\"param_2\\\":\\\"dummyValue\\\",\"id\":\"dummyId\",\"type\":\"function\"}]",
"action": "[{\"function\":{\"arguments\":\"{\\\"param_2\\\":\\\"dummyValue\\\",\"id\":\"dummyId\",\"type\":\"function\"}]",
"sourceRequestId": "dummyId",
"confirmationOption": 3,
"isCancelOption": true,
"isConsequential": false,
"pauseResumeStoreRegion": "https://ObjectStoreBingFD.Prod.WestUS2.binginternal.com:443/sds",
"text": "No, don't proceed with action 'Create items from a MCP tool.'",
"author": "user",
"createdAt": "2026-10-30T08:35:37.6109312+00:00",
"timestamp": "2026-10-30T08:35:37.6109312+00:00",
"messageId": "dummyMessageId",
"messageType": "InvokeAction",
"offense": "None",
"contentOrigin": "TuringBot",
"pluginInfo": {
"id": "CopilotPlugins.GPTActionOpenAIPlugin==",
"source": "MOS3",
"data": {
"PluginType": "OpenAIPlugin",
"MetaOSAppId": "MetaOSAppId",
"MetaOSTitleId": "MetaOSTitleId",
"MetaOSBotId": "",
"GptId": "ms-teams-example",
"GptActionId": "examplePlugin",
"TitleIndex": "0",
"PluginName": "Example",
"AcquisitionContext": "Tenant",
"CatalogName": "MOS3",
"AppKind": "Public_ThirdParty"
},
"version": "3.0.0",
"isThirdPartyPluginSource": true,
"isGraphConnectorPluginType": false
}
}
},
"title": "Cancel"
}
],
"msTeams": {
"width": "full"
}
}
}
},
"mediaType": "application/vnd.ms-workiq.interaction+json"
}
],
"messageId": "",
"contextId": "contextId"
},
"timestamp": "2026-10-30T08:35:40.9655035+00:00"
}
}
}
}
How does the response Json structure look like as the follow-up message to confirm the tool use? It is not documented on Work IQ A2A documentation, I wonder if anyone able to crack this. Been trying several Json shapes including the taskId, contextId, message.parts fields, but fail with such error -32602 The interaction response is missing, invalid, or does not match the pending task. No action was resumed.