Why is my Copilot agent returning explanation_of_tool_call JSON instead of topic responses?

Kabilan Rajendiran 30 Reputation points
2025-10-07T12:19:17.7133333+00:00

Hi everyone,

The agent was working fine this morning. However, when I started exploring topic outputs in a structured format—for example, scenarios like meeting prep and company overview—the responses stopped returning the expected topic text.

Instead of the topic response, I’m seeing outputs like:

{"explanation_of_tool_call":"This action needs to be done to acknowledge the user's greeting and initiate the conversation in a polite and professional manner."}

Here’s my setup:

OnRecognizedIntent triggers for greetings.

SetProperty nodes to store topic responses in dialog.topicResponse.

SendActivity nodes referencing these stored responses.

Optional tool/function nodes that return internal metadata like explanation_of_tool_call.

My questions for the community:

Has anyone seen fallback responses appear like this after trying to structure topic outputs in Copilot Studio?

What’s the best way to map a tool or lookup output to a user-facing property without sending internal metadata?

Are there known issues with multi-line expressions or YAML parsing in SetProperty that can cause fallbacks?

I’d appreciate any guidance, examples, or best practices for structuring topic outputs without triggering these fallback responses.

Thanks, Kabilan

Microsoft Copilot | Other
{count} votes

1 answer

Sort by: Most helpful
  1. Karan Shewale 2,385 Reputation points Microsoft External Staff
    2025-10-10T04:47:35.59+00:00

    Hi Kabilan Rajendiran,

    The “explanation_of_tool_call” output appears when Copilot Studio accidentally returns internal reasoning metadata instead of the intended topic response. This usually happens when the tool or function node returns its raw output object instead of the actual text meant for the user. To fix this, ensure that your topic stores only the readable text (for example, dialog.topicResponse = toolResult.responseText) and that your SendActivity node references this text variable directly, not the entire object. Also, double-check your YAML or structured authoring syntax — indentation or variable mapping issues can cause the system to fall back to this JSON response. This behavior started after the October 2025 Copilot Studio update, which changed how structured tool calls are parsed.

    For more details, refer to:

    Use variables and expressions in Copilot Studio

    Create and manage topics in Copilot Studio

    Use actions and connectors safely

    Thank you.

    Karan Shewale.

    If this response resolves your issue, please accept the answer and, if helpful, click the “Upvote” button. Your feedback helps us improve and assist others more effectively.

    1 person found this answer helpful.

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.