This is Part 3 of a series documenting a non-engineer CEO's attempts to connect Copilot Studio to LDX hub's StructFlow API.
Part 1 — It didn't work yet. Part 2 — REST API, 8 errors, 3 hours, finally working.
In Part 2, I got the REST API route working through Power Automate. It took 3 hours and 8 errors. The moment it worked, I immediately wondered: is there a simpler path?
There is. It's called MCP.
Instead of building a Power Automate flow, configuring polling loops, and debugging HTTP connectors — I connected LDX hub's MCP server directly to the Copilot Studio agent. The whole thing took about 2 hours, and most of that was figuring out two non-obvious settings.
Here's the full account.
Environment
- Microsoft Copilot Studio (Kawamura International tenant)
- LDX hub MCP Server (
https://gw.ldxhub.io/mcp) - Existing agent: Minutes Assistant (議事録アシスタント)
- Time required: ~2 hours
Why MCP instead of Power Automate?
The REST API route in Part 2 works. But it required:
- Building a Do Until polling loop
- Debugging HTTP connector confusion (white vs green)
- Dealing with triggerBody() reference errors
- Managing variable types for async results
MCP eliminates all of that. The agent calls the tool directly — no middleware, no flow to maintain. If the tradeoff is acceptable for your use case, it's a significantly faster path to get running.
The tradeoff: MCP is better suited for interactive, single-record use cases. For batch processing 20 files, Power Automate is still the right answer. More on that in Part 4.
Background
At Kawamura International, we're building generative AI-driven business processes across the company. This verification focused on integrating LDX hub's StructFlow (structured data extraction) into our "Minutes Assistant" Copilot Studio agent — automatically extracting the following from meeting transcripts:
- Tasks & action items (with assignee and due date)
- Decisions made
- Per-speaker summaries
- Next meeting agenda candidates
Architecture
User (pastes meeting transcript)
↓
Copilot Studio "Minutes Assistant"
↓ MCP tools/call (Streamable HTTP)
LDX hub MCP Server (https://gw.ldxhub.io/mcp)
↓ createStructFlowJob
StructFlow Engine (async job)
↓ getStructFlowJob (polling)
Structured JSON result
↓
Copilot Studio formats and responds
Step 1: Verify the Endpoint Before Connecting
Before touching Copilot Studio, verify that the LDX hub MCP endpoint meets the requirements.
⚠️ Important: SSE transport is deprecated after August 2025
Copilot Studio dropped SSE support and now requires Streamable HTTP only. Always verify the protocol before attempting a connection.
Run this in PowerShell to check:
$headers = @{
"Content-Type" = "application/json"
"Accept" = "application/json, text/event-stream"
"Authorization" = "Bearer YOUR_API_KEY"
}
$body = '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
$r = Invoke-WebRequest -UseBasicParsing `
-Uri "https://gw.ldxhub.io/mcp" `
-Method POST -Headers $headers -Body $body
Write-Host "Status:" $r.StatusCode # → 200
Write-Host "Content-Type:" $r.Headers["Content-Type"] # → application/json
Write-Host "Body:" $r.Content # → protocolVersion: 2025-03-26, 26 tools
What to look for:
| Check | Expected | Meaning |
|---|---|---|
| HTTP Status | 200 | Endpoint reachable |
| Content-Type | application/json |
✅ Streamable HTTP |
| protocolVersion | 2025-03-26 |
✅ Latest protocol |
| tools count | 26 | createStructFlowJob, getStructFlowJob, etc. |
If you get HTTP 405 or 404, the server may only support the old SSE transport — which Copilot Studio no longer accepts.
Step 2: Add the MCP Server in Copilot Studio
① Enable Generative Orchestration first
Agent settings → Generative AI → Select "Yes, use available tools and knowledge dynamically".
Without this, MCP tools will never be called — no matter what you configure.
② Add the MCP Tool
Agent → Tools tab → Add a tool → New MCP tool → Fill in the wizard:
| Field | Value |
|---|---|
| Server URL | https://gw.ldxhub.io/mcp |
| Authentication | API Key |
| API Key value |
Bearer {your_api_key} ← include the prefix
|
| Header name | Authorization |
③ Create the connection
Click "Not connected" dropdown → "Create new connection" → Enter the API key → "Create".
A green dot confirms a successful connection.
⚠️ The #1 gotcha: Bearer prefix
The API Key field in Copilot Studio sends the value as-is in the Authorization header. If you enter just the raw key withoutBearer, LDX hub returns a 403 error. Always enterBearer {key}.
Step 3: Add the System Prompt
In the agent's overview tab, paste this into the Instructions field:
You are an assistant that structures meeting minutes.
When the user provides meeting transcript text, always call the
createStructFlowJob tool from LDX hub MCP test to extract:
- Tasks and action items (with assignee and due date)
- Decisions made
- Per-speaker summaries
- Next meeting agenda candidates
After creating the job, poll using getStructFlowJob until status
is "completed", then format and display the results.
Respond in Japanese using tables and lists for readability.
Note: You don't need to manually specify
system_promptorexample_outputfor StructFlow here — the agent's LLM generates those automatically at runtime.
Results
We fed in a real sales team monthly review transcript (5 participants, ~600 characters in Japanese). Here's what came back:
| Category | Count | Quality |
|---|---|---|
| Tasks & action items | 3 | ✅ Assignees and deadlines accurate |
| Decisions | 3 | ✅ All correct |
| Per-speaker summaries | 5 | ✅ Roles and contributions reflected |
| Next agenda candidates | 4 | ✅ Inferred implicit items too |
Confirmed MCP execution via activity log:
The activity log showed "LDX hub MCP — Working / Initialized" with createStructFlowJob and getStructFlowJob call records — confirming that StructFlow was actually invoked via MCP, not just processed by Copilot Studio's internal LLM.
Key Takeaways
1. Verify SSE vs Streamable HTTP before connecting
Copilot Studio dropped SSE after August 2025. Send an initialize request first and confirm protocolVersion: 2025-03-26 in the response.
2. API Key needs the Bearer prefix
The API Key field passes its value directly as the Authorization header value. Omitting Bearer causes a 403 on the LDX hub side.
3. Generative Orchestration must be on
Check this before anything else. It's the gate that controls whether MCP tools get called at all.
4. Verify actual MCP calls via the activity log
You can confirm whether the agent truly called an MCP tool (vs. just using its internal LLM) by checking the activity log. Look for the tool name and "Working" status.
MCP vs REST API: Which should you use?
| MCP | REST API (Power Automate) | |
|---|---|---|
| Setup time | ~2 hours | ~3 hours |
| Errors encountered | 2 | 8 |
| Middleware required | None | Power Automate flow |
| Best for | Interactive, single-record | Batch processing |
| 20-file batch processing | ❌ Not practical | ✅ Right tool |
For a single record in a chat interface, MCP is the simpler path. For batch processing 20 meeting minutes files from SharePoint — that's Part 4.
What's Next
Part 4: Batch processing 20 meeting minutes files from SharePoint via Power Automate — building a cross-departmental management dashboard as the output.
The MCP route works well for one record at a time. But when you need to process 20 Word files, extract structured data from each, and synthesize them into a single company-wide view, Power Automate is the right tool. That's what we're building next.
Kawamura International LDX Lab — 2026.05.08
United States
NORTH AMERICA
Related News
What Does "Building in Public" Actually Mean in 2026?
20h ago
The Agentic Headless Backend: What Vibe Coders Still Need After the UI Is Done
20h ago
Why I’m Still Learning to Code Even With AI
22h ago
Students Boo Commencement Speaker After She Calls AI the 'Next Industrial Revolution'
5h ago

Testing for ‘Bad Cholesterol’ Doesn’t Tell the Whole Story
5h ago