
Hi all — I’m testing an integration between Asana’s V2 MCP server and a Copilot Studio agent. I created an Asana MCP app, connected it to Copilot Studio with OAuth, and the server appears reachable. Asana documents that the V2 MCP server uses OAuth, and Copilot Studio documents that MCP tool inputs/outputs come from the connected MCP server.
The main problem is with task creation, not auth. When the agent tries to call create_tasks, I get this error:
MCP error -32602: Input validation error: Invalid arguments for tool create_tasks:
[
{
"code": "invalid_type",
"expected": "array",
"received": "object",
"path": ["tasks"],
"message": "Expected array, received object"
}
]
In the Copilot Studio test pane, the tool input shows tasks(table) as required, which matches the validation error. The agent seems to be sending tasks as an object instead of an array/table inside the expected payload.
What’s confusing is that the model reasoning sometimes explicitly says it knows tasks should be an array, but the final call still fails validation. That makes this feel more like a request-shaping / tool-binding issue than an OAuth or endpoint issue. Copilot Studio says MCP tool schemas are surfaced from the MCP server, so I’m wondering whether anyone has seen a mismatch between the displayed tool schema and the actual payload being sent.
A few questions:
create_tasks tool?create_tasks in this environment?tasks incorrectly even when the tool input shows tasks(table)?Any help would be appreciated — especially from anyone who has gotten write actions working reliably with the Asana MCP server in Copilot Studio.
Hi there! Great question — this is a nuanced MCP schema-binding issue.
Copilot Studio surfaces MCP tool schemas directly from the connected MCP server (Asana's V2 MCP). When the tool schema declares tasks as a table (array), Copilot Studio should pass it as a JSON array. However, the generative orchestration layer sometimes serialises a single-item construct as a JSON object instead of a single-element array, which triggers Asana's -32602 validation error.
According to the Extend your agent with Model Context Protocol documentation, tool inputs and outputs are shaped by the schema advertised by the MCP server, and Copilot Studio passes tool arguments based on that schema type.
⚠️ The precise request shape required by Asana's V2 MCP server is vendor-specific. For definitive schema documentation, refer to Asana's MCP server docs directly.
Found this helpful? Please mark ✅ "Does this answer your question?" so others searching for the same issue can find it quickly. A 👍 on "Was this reply helpful?" or a ♥ Like is also much appreciated!
Raghav Mishra — LinkedIn | PowerAI Labs