Building and customizing solutions using Microsoft 365 Copilot APIs and tools
Yes. This behavior matches a citation-mapping problem, not the expected clickable citation experience.
For MCP or API-based content, clickable citations require:
- The tool response to include an end-user-openable URL.
-
response_semanticsin the plugin definition to tell Copilot where the citable items are in the JSON (data_path). - Property mappings for each item, especially
titleandurl.
If that mapping is missing or incorrect, Copilot can still show a citation, but only as a representative pill or icon instead of a clickable source. A missing url also makes the citation non-clickable.
The raw JSON showing up in the citation area strongly suggests Copilot is not resolving the returned payload into citation fields correctly. The most likely checks are:
- Verify
response_semanticsis declared on the specific function inside that function’scapabilities, not at the plugin root. - Verify
data_pathmatches the actual MCP JSON shape.- If the response is
{ "results": [ ... ] }, use$.results. - If the MCP response is raw stringified JSON inside
content[0].text, parse that shape and use the correct root or inner array path.
- If the response is
- Verify each result item has a non-empty
urlfield that points to a canonical, user-openable Microsoft Learn page. - If the response is deeply nested, flatten it to a single
results: [...]array where possible. - For MCP tools, confirm the
textfield insideTextContentBlockis valid JSON.
A minimal expected pattern is:
- tool returns JSON with items containing
titleandurl -
response_semantics.propertiesmaps those fields -
data_pathselects the result items
If the Learn MCP connector is returning stringified JSON like {"results":[...]} and Copilot Studio is rendering that literal payload as the citation label, that indicates the citation contract is not being interpreted correctly for that function.
To troubleshoot in Copilot Studio:
- Enable developer mode with
-developer on. - Run the prompt again.
- Inspect the debug information card and confirm the MCP tool is invoked.
- Compare the raw tool payload with the configured
data_pathand property mappings.
Based on the documented behavior, this is not the intended citation UX. The supported behavior is clickable citations when the MCP response includes openable URLs and the function-level response_semantics is configured correctly.